]> git.tdb.fi Git - libs/gui.git/blobdiff - source/graphics/devil/devilloader.cpp
Split image loading into headers and pixels
[libs/gui.git] / source / graphics / devil / devilloader.cpp
index 423b108a5bf6ad13d960099c03070cfe2e30b96b..a6693080748a001b87612615920e477e642b1018 100644 (file)
@@ -101,7 +101,7 @@ bool DevilLoader::detect(const string &sig)
        return type!=IL_TYPE_UNKNOWN;
 }
 
-void DevilLoader::load_(Image::Data &data)
+void DevilLoader::load_headers_(Image::Data &data)
 {
        ilSetRead(0, 0, eof, get, read, seek, tell);
        ilBindImage(id);
@@ -125,13 +125,21 @@ void DevilLoader::load_(Image::Data &data)
        data.width = ilGetInteger(IL_IMAGE_WIDTH);
        data.height = ilGetInteger(IL_IMAGE_HEIGHT);
        data.stride = data.width*ilGetInteger(IL_IMAGE_BYTES_PER_PIXEL);
+
+       ilBindImage(0);
+       ilResetRead();
+}
+
+void DevilLoader::load_pixels_(Image::Data &data)
+{
+       ilBindImage(id);
+
        unsigned data_size = data.stride*data.height;
        data.pixels = new char[data_size];
        ILubyte *il_data = ilGetData();
        copy(il_data, il_data+data_size, data.pixels);
 
        ilBindImage(0);
-       ilResetRead();
 }
 
 } // namespace Graphics