diff options
Diffstat (limited to 'image_darwin.m')
| -rw-r--r-- | image_darwin.m | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/image_darwin.m b/image_darwin.m new file mode 100644 index 0000000..1b77e22 --- /dev/null +++ b/image_darwin.m @@ -0,0 +1,31 @@ +// 16 august 2014 + +#import "objc_darwin.h" +#import <Cocoa/Cocoa.h> + +#define toNSInteger(x) ((NSInteger) (x)) + +id toTableImage(void *pixels, intptr_t width, intptr_t height, intptr_t stride) +{ + NSBitmapImageRep *bitmap; + NSImage *image; + + // we can't just hand it pixels; we need to make a copy + bitmap = [[NSBitmapImageRep alloc] + initWithBitmapDataPlanes:NULL + pixelsWide:toNSInteger(width) + pixelsHigh:toNSInteger(height) + bitsPerSample:8 + samplesPerPixel:4 + hasAlpha:YES + isPlanar:NO + colorSpaceName:NSDeviceRGBColorSpace + bitmapFormat:0 + bytesPerRow:toNSInteger(stride) + bitsPerPixel:32]; + memcpy((void *) [bitmap bitmapData], pixels, [bitmap bytesPerPlane]); + image = [[NSImage alloc] initWithSize:NSMakeSize((CGFloat) width, (CGFloat) height)]; + [image addRepresentation:bitmap]; + // TODO release bitmap? + return (id) image; +} |
