};
-ImageLoader::Register<QuartzLoader> QuartzLoader::reg;
-
QuartzLoader::QuartzLoader(IO::Seekable &io):
priv(new Private)
{
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)
}
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<UInt8 *>(data.data));
- CFRelease(image_data);
-
- CFRelease(image);
}
catch(...)
{
}
}
+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<UInt8 *>(data.pixels));
+ CFRelease(image_data);
+
+ CFRelease(image);
+}
+
} // namespace Graphics
} // namespace Msp