X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fgraphics%2Fbmploader.cpp;h=a3394635611ad93254727fbcae46b508ca54322e;hb=917c43de100807f4397e36b66b1a748dbf44370e;hp=f711dc1e8d66b2c50761ceab07ecdc72a97b8bf9;hpb=b74b0945b2e19c32f05d8bcb016cc9434c99979d;p=libs%2Fgui.git diff --git a/source/graphics/bmploader.cpp b/source/graphics/bmploader.cpp index f711dc1..a339463 100644 --- a/source/graphics/bmploader.cpp +++ b/source/graphics/bmploader.cpp @@ -29,7 +29,8 @@ namespace Graphics { BmpLoader::BmpLoader(IO::Base &i, unsigned sb): io(i), - sig_bytes(sb) + sig_bytes(sb), + invert_row_order(false) { // Image data location is stored at offset 10 and can't be skipped if(sig_bytes>10) @@ -44,7 +45,7 @@ bool BmpLoader::detect(const std::string &sig) return !sig.compare(0, sizeof(bmp_sig), bmp_sig, sizeof(bmp_sig)); } -void BmpLoader::load(Image::Data &data) +void BmpLoader::load_headers_(Image::Data &data) { char bm_header[14]; read_full(io, bm_header+sig_bytes, sizeof(bm_header)-sig_bytes); @@ -92,8 +93,12 @@ void BmpLoader::load(Image::Data &data) skip -= size; } - data.pixels = new char[data.stride*data.height]; - if(height<0) + invert_row_order = (height<0); +} + +void BmpLoader::load_pixels_(Image::Data &data) +{ + if(invert_row_order) { for(unsigned y=0; y