X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fgraphics%2Fdevil%2Fdevilloader.cpp;h=d4c7bfffbcc3d11f21e60709c02e00065c442628;hb=917c43de100807f4397e36b66b1a748dbf44370e;hp=cb6a1b6251764a29fd90cc7c0a36c3e509e9a991;hpb=88814cd5cde0bddb56d299b2edbc48e8351a4311;p=libs%2Fgui.git diff --git a/source/graphics/devil/devilloader.cpp b/source/graphics/devil/devilloader.cpp index cb6a1b6..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); @@ -126,14 +124,22 @@ void DevilLoader::load(Image::Data &data) 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