X-Git-Url: https://git.lukelau.me/?p=opengl.git;a=blobdiff_plain;f=image.cpp;h=02fd60b878ee1122bd9a027e38df10304d681ef8;hp=6c09fa31caaca7335e18f302fb687d6393a85dc5;hb=99d2b81ce5567869469fe2e55722cc212370c7db;hpb=d381f617bef400fc157edf782008cafb018ed594 diff --git a/image.cpp b/image.cpp index 6c09fa3..02fd60b 100644 --- a/image.cpp +++ b/image.cpp @@ -10,9 +10,15 @@ Image::Image(const std::string &path) { CGImageRelease(ref); } -Image::Image(const unsigned char *data, size_t length) { +Image::Image(const unsigned char *data, size_t length, const char *formatHint) { CGDataProviderRef dpRef = CGDataProviderCreateWithData(NULL, data, length, NULL); - CGImageRef ref = CGImageCreateWithJPEGDataProvider(dpRef, NULL, false, kCGRenderingIntentDefault); + 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); }