]> git.tdb.fi Git - libs/gui.git/blobdiff - source/graphics/image_devil.cpp
Implement graphical reporting for uncaught exceptions
[libs/gui.git] / source / graphics / image_devil.cpp
index d355e55c539e54ffd1af51901aff1d0bea41c749..b09ae3dd9078703fa020a2dc52d64fa6e43521a5 100644 (file)
@@ -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<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);
 }