X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fgraphics%2Fquartz%2Fquartzloader.cpp;h=3799bcde6681fe7ccac941f43bc179ceb70392b2;hb=b96dd619fe0bc09f31da8bf23f195a2a9916b839;hp=1fc93ad2b3d36252a1e487e40ac82ad04d80c676;hpb=03f5e11e6bcf9487e396403041f84009ff4eb900;p=libs%2Fgui.git diff --git a/source/graphics/quartz/quartzloader.cpp b/source/graphics/quartz/quartzloader.cpp index 1fc93ad..3799bcd 100644 --- a/source/graphics/quartz/quartzloader.cpp +++ b/source/graphics/quartz/quartzloader.cpp @@ -1,7 +1,5 @@ #include -#include -#include -#include +#include // Avoid messing up sigc++ headers #undef nil #include "quartzloader.h" @@ -57,8 +55,6 @@ struct QuartzLoader::Private }; -ImageLoader::Register QuartzLoader::reg; - QuartzLoader::QuartzLoader(IO::Seekable &io): priv(new Private) { @@ -85,7 +81,7 @@ bool QuartzLoader::detect(const string &sig) return status==kCGImageStatusIncomplete || status==kCGImageStatusReadingHeader; } -void QuartzLoader::load(Image::Data &data) +void QuartzLoader::load_(Image::Data &data) { CGImageRef image = CGImageSourceCreateImageAtIndex(priv->source, 0, 0); if(!image) @@ -113,16 +109,6 @@ void QuartzLoader::load(Image::Data &data) } else throw unsupported_image_format("unknown colorspace"); - - CGDataProviderRef dp = CGImageGetDataProvider(image); - CFDataRef image_data = CGDataProviderCopyData(dp); - data.data = new char[data.height*data.stride]; - unsigned offset = (alpha==kCGImageAlphaNoneSkipFirst); - CFRange range = CFRangeMake(offset, CFDataGetLength(image_data)-offset); - CFDataGetBytes(image_data, range, reinterpret_cast(data.data)); - CFRelease(image_data); - - CFRelease(image); } catch(...) { @@ -131,5 +117,17 @@ void QuartzLoader::load(Image::Data &data) } } +void QuartzLoader::load_(Image::Data &data) +{ + CGDataProviderRef dp = CGImageGetDataProvider(image); + CFDataRef image_data = CGDataProviderCopyData(dp); + unsigned offset = (alpha==kCGImageAlphaNoneSkipFirst); + CFRange range = CFRangeMake(offset, CFDataGetLength(image_data)-offset); + CFDataGetBytes(image_data, range, reinterpret_cast(data.pixels)); + CFRelease(image_data); + + CFRelease(image); +} + } // namespace Graphics } // namespace Msp