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<char> 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<void *>(data), size))
+ if(!ilLoadL(IL_TYPE_UNKNOWN, &data.front(), data.size()))
throw bad_image_data("IL error");
finish_load(priv);
}