]> git.tdb.fi Git - libs/gui.git/blobdiff - source/graphics/quartz/quartzloader.cpp
Split image loading into headers and pixels
[libs/gui.git] / source / graphics / quartz / quartzloader.cpp
index 472e066f49665a64356cf1c50d93fba878589487..e025b66cf4786b852ed2a176ed0ee49b7e7d977c 100644 (file)
@@ -109,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.pixels = 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.pixels));
-               CFRelease(image_data);
-
-               CFRelease(image);
        }
        catch(...)
        {
@@ -127,5 +117,18 @@ void QuartzLoader::load_(Image::Data &data)
        }
 }
 
+void QuartzLoader::load_(Image::Data &data)
+{
+       CGDataProviderRef dp = CGImageGetDataProvider(image);
+       CFDataRef image_data = CGDataProviderCopyData(dp);
+       data.pixels = 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.pixels));
+       CFRelease(image_data);
+
+       CFRelease(image);
+}
+
 } // namespace Graphics
 } // namespace Msp