X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fgraphics%2Fquartz%2Fquartzloader.cpp;h=3799bcde6681fe7ccac941f43bc179ceb70392b2;hb=917c43de100807f4397e36b66b1a748dbf44370e;hp=d1baaef549761aac2b50157ab0f4392dc3f09249;hpb=6ede8137c8247f1f7d82ed7dcaad50d3f4baae0c;p=libs%2Fgui.git diff --git a/source/graphics/quartz/quartzloader.cpp b/source/graphics/quartz/quartzloader.cpp index d1baaef..3799bcd 100644 --- a/source/graphics/quartz/quartzloader.cpp +++ b/source/graphics/quartz/quartzloader.cpp @@ -55,8 +55,6 @@ struct QuartzLoader::Private }; -ImageLoader::Register QuartzLoader::reg; - QuartzLoader::QuartzLoader(IO::Seekable &io): priv(new Private) { @@ -83,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) @@ -111,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(...) { @@ -129,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