- /* if (magic == 0x0a1a0a0d474e5089) // png magic number */
- /* ref = CGImageCreateWithPNGDataProvider(provider, nullptr, false, kCGRenderingIntentDefault); */
- /* else */
- /* ref = CGImageCreateWithJPEGDataProvider(provider, nullptr, false, kCGRenderingIntentDefault); */
+Image::Image(const unsigned char *data, size_t length, const char *formatHint) {
+ CGDataProviderRef dpRef = CGDataProviderCreateWithData(NULL, data, length, NULL);
+ CGImageRef ref;
+ if (strcmp("png", formatHint) == 0)
+ ref = CGImageCreateWithPNGDataProvider(dpRef, NULL, false, kCGRenderingIntentDefault);
+ else if (strcmp("jpg", formatHint) == 0)
+ ref = CGImageCreateWithJPEGDataProvider(dpRef, NULL, false, kCGRenderingIntentDefault);
+ else
+ abort();
+ initWithImageRef(ref);
+ CGImageRelease(ref);
+}