X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fgraphics%2Fimage_devil.cpp;h=b09ae3dd9078703fa020a2dc52d64fa6e43521a5;hb=1ca709deba08e55d95066be564a8fd43a321af19;hp=d355e55c539e54ffd1af51901aff1d0bea41c749;hpb=a50eef72fac4b253bd014a32ec43b90e990b5784;p=libs%2Fgui.git diff --git a/source/graphics/image_devil.cpp b/source/graphics/image_devil.cpp index d355e55..b09ae3d 100644 --- a/source/graphics/image_devil.cpp +++ b/source/graphics/image_devil.cpp @@ -61,10 +61,21 @@ void load_devil_file(const string &fn, Image::Private &priv) finish_load(priv); } -void load_devil_mem(const void *data, unsigned size, Image::Private &priv) +void load_devil_io(IO::Base &io, Image::Private &priv, const char *sig_buf, unsigned sig_len) { + vector data(sig_buf, sig_buf+sig_len); + while(1) + { + unsigned pos = data.size(); + data.resize(pos+16384); + unsigned len = io.read(&data[pos], 16384); + data.resize(pos+len); + if(len==0) + break; + } + init_load(priv); - if(!ilLoadL(IL_TYPE_UNKNOWN, const_cast(data), size)) + if(!ilLoadL(IL_TYPE_UNKNOWN, &data.front(), data.size())) throw bad_image_data("IL error"); finish_load(priv); }