X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fgraphics%2Fdevil%2Fdevilloader.cpp;h=d4c7bfffbcc3d11f21e60709c02e00065c442628;hb=917c43de100807f4397e36b66b1a748dbf44370e;hp=131b6ba1dcfbcebbf1bda7d4e50589dd42ca6033;hpb=7f7f3c7494fe10a91215eaff208465636e9979ab;p=libs%2Fgui.git diff --git a/source/graphics/devil/devilloader.cpp b/source/graphics/devil/devilloader.cpp index 131b6ba..d4c7bff 100644 --- a/source/graphics/devil/devilloader.cpp +++ b/source/graphics/devil/devilloader.cpp @@ -74,8 +74,6 @@ std::string error_string(ILenum err) namespace Msp { namespace Graphics { -ImageLoader::Register DevilLoader::reg; - DevilLoader::DevilLoader(IO::Seekable &i): io(i) { @@ -103,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); @@ -127,13 +125,20 @@ 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.data = new char[data_size]; ILubyte *il_data = ilGetData(); - copy(il_data, il_data+data_size, data.data); + copy(il_data, il_data+data_size, data.pixels); ilBindImage(0); - ilResetRead(); } } // namespace Graphics