namespace Msp {
namespace Graphics {
-ImageLoader::Register<DevilLoader> DevilLoader::reg;
-
DevilLoader::DevilLoader(IO::Seekable &i):
io(i)
{
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);
data.width = ilGetInteger(IL_IMAGE_WIDTH);
data.height = ilGetInteger(IL_IMAGE_HEIGHT);
- unsigned data_size = data.width*data.height*ilGetInteger(IL_IMAGE_BYTES_PER_PIXEL);
- data.data = new char[data_size];
- ILubyte *il_data = ilGetData();
- copy(il_data, il_data+data_size, data.data);
+ 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;
+ ILubyte *il_data = ilGetData();
+ copy(il_data, il_data+data_size, data.pixels);
+
+ ilBindImage(0);
+}
+
} // namespace Graphics
} // namespace Msp