diff --git a/src/_cocoalayer.mm b/src/_cocoalayer.mm new file mode 100644 index 000000000..b8151f498 --- /dev/null +++ b/src/_cocoalayer.mm @@ -0,0 +1,20 @@ +#if defined(__APPLE__) +#import +#import +#include "_cocoalayer.h" +// Example: make a global function you can call +extern "C" void _cocoasetdockicon(unsigned char* data, int width, int height) +{ + NSImage *dockIcon = [[NSImage alloc] initWithSize:NSMakeSize(width, height)]; + CGDataProviderRef provider = CGDataProviderCreateWithData(nullptr, data, width*height*4, nullptr); + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); + CGImageRef cgImage = CGImageCreate(width, height, 8, 32, width*4, colorSpace, + kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big, + provider, nullptr, false, kCGRenderingIntentDefault); + [dockIcon addRepresentation:[[NSBitmapImageRep alloc] initWithCGImage:cgImage]]; + [NSApp setApplicationIconImage:dockIcon]; + CGImageRelease(cgImage); + CGColorSpaceRelease(colorSpace); + CGDataProviderRelease(provider); +} +#endif