diff dstep/appkit/NSBitmapImageRep.d @ 16:19885b43130e

Huge update, the bridge actually works now
author Jacob Carlborg <doob@me.com>
date Sun, 03 Jan 2010 22:06:11 +0100
parents
children b9de51448c6b
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dstep/appkit/NSBitmapImageRep.d	Sun Jan 03 22:06:11 2010 +0100
@@ -0,0 +1,464 @@
+/**
+ * Copyright: Copyright (c) 2009 Jacob Carlborg.
+ * Authors: Jacob Carlborg
+ * Version: Initial created: Sep 24, 2009 
+ * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0)
+ */
+module dstep.appkit.NSBitmapImageRep;
+
+import dstep.appkit.NSColor;
+import dstep.appkit.NSImageRep;
+import dstep.applicationservices.coregraphics.CGImage;
+import dstep.applicationservices.coregraphics.CGBase;
+import dstep.foundation.NSArray;
+import dstep.foundation.NSData;
+import dstep.foundation.NSDictionary;
+import dstep.foundation.NSGeometry;
+import dstep.foundation.NSObjCRuntime;
+import dstep.foundation.NSString;
+import dstep.objc.bridge.Bridge;
+import dstep.objc.objc;
+import dstep.quartzcore.CIImage;
+
+import bindings = dstep.appkit.NSBitmapImageRep_bindings;
+
+alias NSUInteger NSTIFFCompression;
+alias NSUInteger NSBitmapImageFileType;
+alias NSInteger NSImageRepLoadStatus;
+alias NSUInteger NSBitmapFormat;
+
+private
+{
+	NSString NSImageCompressionMethod_;
+	NSString NSImageCompressionFactor_;
+	NSString NSImageDitherTransparency_;
+	NSString NSImageRGBColorTable_;
+	NSString NSImageInterlaced_;
+	NSString NSImageColorSyncProfileData_;
+	NSString NSImageFrameCount_;
+	NSString NSImageCurrentFrame_;
+	NSString NSImageCurrentFrameDuration_;
+	NSString NSImageLoopCount_;
+	NSString NSImageGamma_;
+	NSString NSImageProgressive_;
+	NSString NSImageEXIFData_;
+	NSString NSImageFallbackBackgroundColor_;
+}
+
+NSString NSImageCompressionMethod ()
+{
+	if (NSImageCompressionMethod_)
+		return NSImageCompressionMethod_;
+
+	return NSImageCompressionMethod_ = new NSString(bindings.NSImageCompressionMethod);
+}
+
+NSString NSImageCompressionFactor ()
+{
+	if (NSImageCompressionFactor_)
+		return NSImageCompressionFactor_;
+
+	return NSImageCompressionFactor_ = new NSString(bindings.NSImageCompressionFactor);
+}
+
+NSString NSImageDitherTransparency ()
+{
+	if (NSImageDitherTransparency_)
+		return NSImageDitherTransparency_;
+
+	return NSImageDitherTransparency_ = new NSString(bindings.NSImageDitherTransparency);
+}
+
+NSString NSImageRGBColorTable ()
+{
+	if (NSImageRGBColorTable_)
+		return NSImageRGBColorTable_;
+
+	return NSImageRGBColorTable_ = new NSString(bindings.NSImageRGBColorTable);
+}
+
+NSString NSImageInterlaced ()
+{
+	if (NSImageInterlaced_)
+		return NSImageInterlaced_;
+
+	return NSImageInterlaced_ = new NSString(bindings.NSImageInterlaced);
+}
+
+NSString NSImageColorSyncProfileData ()
+{
+	if (NSImageColorSyncProfileData_)
+		return NSImageColorSyncProfileData_;
+
+	return NSImageColorSyncProfileData_ = new NSString(bindings.NSImageColorSyncProfileData);
+}
+
+NSString NSImageFrameCount ()
+{
+	if (NSImageFrameCount_)
+		return NSImageFrameCount_;
+
+	return NSImageFrameCount_ = new NSString(bindings.NSImageFrameCount);
+}
+
+NSString NSImageCurrentFrame ()
+{
+	if (NSImageCurrentFrame_)
+		return NSImageCurrentFrame_;
+
+	return NSImageCurrentFrame_ = new NSString(bindings.NSImageCurrentFrame);
+}
+
+NSString NSImageCurrentFrameDuration ()
+{
+	if (NSImageCurrentFrameDuration_)
+		return NSImageCurrentFrameDuration_;
+
+	return NSImageCurrentFrameDuration_ = new NSString(bindings.NSImageCurrentFrameDuration);
+}
+
+NSString NSImageLoopCount ()
+{
+	if (NSImageLoopCount_)
+		return NSImageLoopCount_;
+
+	return NSImageLoopCount_ = new NSString(bindings.NSImageLoopCount);
+}
+
+NSString NSImageGamma ()
+{
+	if (NSImageGamma_)
+		return NSImageGamma_;
+
+	return NSImageGamma_ = new NSString(bindings.NSImageGamma);
+}
+
+NSString NSImageProgressive ()
+{
+	if (NSImageProgressive_)
+		return NSImageProgressive_;
+
+	return NSImageProgressive_ = new NSString(bindings.NSImageProgressive);
+}
+
+NSString NSImageEXIFData ()
+{
+	if (NSImageEXIFData_)
+		return NSImageEXIFData_;
+
+	return NSImageEXIFData_ = new NSString(bindings.NSImageEXIFData);
+}
+
+NSString NSImageFallbackBackgroundColor ()
+{
+	if (NSImageFallbackBackgroundColor_)
+		return NSImageFallbackBackgroundColor_;
+
+	return NSImageFallbackBackgroundColor_ = new NSString(bindings.NSImageFallbackBackgroundColor);
+}
+
+enum
+{
+	NSTIFFCompressionNone = 1,
+	NSTIFFCompressionCCITTFAX3 = 3,
+	NSTIFFCompressionCCITTFAX4 = 4,
+	NSTIFFCompressionLZW = 5,
+	NSTIFFCompressionJPEG = 6,
+	NSTIFFCompressionNEXT = 32766,
+	NSTIFFCompressionPackBits = 32773,
+	NSTIFFCompressionOldJPEG = 32865
+}
+
+enum
+{
+	NSTIFFFileType,
+	NSBMPFileType,
+	NSGIFFileType,
+	NSJPEGFileType,
+	NSPNGFileType,
+	NSJPEG2000FileType
+}
+
+enum
+{
+	NSImageRepLoadStatusUnknownType = -1,
+	NSImageRepLoadStatusReadingHeader = -2,
+	NSImageRepLoadStatusWillNeedAllData = -3,
+	NSImageRepLoadStatusInvalidData = -4,
+	NSImageRepLoadStatusUnexpectedEOF = -5,
+	NSImageRepLoadStatusCompleted = -6
+}
+
+enum
+{
+	NSAlphaFirstBitmapFormat = 1 << 0,
+	NSAlphaNonpremultipliedBitmapFormat = 1 << 1,
+	NSFloatingPointSamplesBitmapFormat = 1 << 2
+}
+
+const TNSBitmapImageFileTypeExtensions = `
+
+	static NSData representationOfImageRepsInArray (NSArray imageReps, uint storageType, NSDictionary properties)
+	{
+		return invokeObjcSelfClass!(NSData, "representationOfImageRepsInArray:usingType:properties:", NSArray, uint, NSDictionary)(imageReps, storageType, properties);
+	}
+
+	NSData representationUsingType (uint storageType, NSDictionary properties)
+	{
+		return invokeObjcSelf!(NSData, "representationUsingType:properties:", uint, NSDictionary)(storageType, properties);
+	}
+
+	void setProperty (NSString property, Object value)
+	{
+		return invokeObjcSelf!(void, "setProperty:withValue:", NSString, Object)(property, value);
+	}
+
+	Object valueForProperty (NSString property)
+	{
+		return invokeObjcSelf!(Object, "valueForProperty:", NSString)(property);
+	}
+
+	//mixin ObjcBindClassMethod!(representationOfImageRepsInArray, "representationOfImageRepsInArray:usingType:properties:");
+	//mixin ObjcBindMethod!(representationUsingType, "representationUsingType:properties:");
+	//mixin ObjcBindMethod!(setProperty, "setProperty:withValue:");
+	//mixin ObjcBindMethod!(valueForProperty, "valueForProperty:");
+
+`;
+
+class NSBitmapImageRep : NSImageRep
+{
+	mixin (ObjcWrap);
+
+	NSBitmapImageRep initWithFocusedViewRect (NSRect rect)
+	{
+		id result = invokeObjcSelf!(id, "initWithFocusedViewRect:", NSRect)(rect);
+		return result is this.objcObject ? this : (result !is null ? new NSBitmapImageRep(result) : null);
+	}
+
+	this (NSRect rect)
+	{
+		super(NSBitmapImageRep.alloc.initWithFocusedViewRect(rect).objcObject);
+	}
+
+	NSBitmapImageRep initWithBitmapDataPlanes (ubyte** planes, NSInteger width, NSInteger height, NSInteger bps, NSInteger spp, bool alpha, bool isPlanar, NSString colorSpaceName, NSInteger rBytes, NSInteger pBits)
+	{
+		id result = invokeObjcSelf!(id, "initWithBitmapDataPlanes:pixelsWide:pixelsHigh:bitsPerSample:samplesPerPixel:hasAlpha:isPlanar:colorSpaceName:bytesPerRow:bitsPerPixel:", ubyte**, NSInteger, NSInteger, NSInteger, NSInteger, bool, bool, NSString, NSInteger, NSInteger)(planes, width, height, bps, spp, alpha, isPlanar, colorSpaceName, rBytes, pBits);
+		return result is this.objcObject ? this : (result !is null ? new NSBitmapImageRep(result) : null);
+	}
+
+	this (ubyte** planes, NSInteger width, NSInteger height, NSInteger bps, NSInteger spp, bool alpha, bool isPlanar, NSString colorSpaceName, NSInteger rBytes, NSInteger pBits)
+	{
+		super(NSBitmapImageRep.alloc.initWithBitmapDataPlanes(planes, width, height, bps, spp, alpha, isPlanar, colorSpaceName, rBytes, pBits).objcObject);
+	}
+
+	NSBitmapImageRep initWithBitmapDataPlanes (ubyte** planes, NSInteger width, NSInteger height, NSInteger bps, NSInteger spp, bool alpha, bool isPlanar, NSString colorSpaceName, uint bitmapFormat, NSInteger rBytes, NSInteger pBits)
+	{
+		id result = invokeObjcSelf!(id, "initWithBitmapDataPlanes:pixelsWide:pixelsHigh:bitsPerSample:samplesPerPixel:hasAlpha:isPlanar:colorSpaceName:bitmapFormat:bytesPerRow:bitsPerPixel:", ubyte**, NSInteger, NSInteger, NSInteger, NSInteger, bool, bool, NSString, uint, NSInteger, NSInteger)(planes, width, height, bps, spp, alpha, isPlanar, colorSpaceName, bitmapFormat, rBytes, pBits);
+		return result is this.objcObject ? this : (result !is null ? new NSBitmapImageRep(result) : null);
+	}
+
+	this (ubyte** planes, NSInteger width, NSInteger height, NSInteger bps, NSInteger spp, bool alpha, bool isPlanar, NSString colorSpaceName, uint bitmapFormat, NSInteger rBytes, NSInteger pBits)
+	{
+		super(NSBitmapImageRep.alloc.initWithBitmapDataPlanes(planes, width, height, bps, spp, alpha, isPlanar, colorSpaceName, bitmapFormat, rBytes, pBits).objcObject);
+	}
+
+	NSBitmapImageRep initWithCGImage (CGImageRef cgImage)
+	{
+		id result = invokeObjcSelf!(id, "initWithCGImage:", CGImageRef)(cgImage);
+		return result is this.objcObject ? this : (result !is null ? new NSBitmapImageRep(result) : null);
+	}
+
+	this (CGImageRef cgImage)
+	{
+		super(NSBitmapImageRep.alloc.initWithCGImage(cgImage).objcObject);
+	}
+
+	NSBitmapImageRep initWithCIImage (CIImage ciImage)
+	{
+		id result = invokeObjcSelf!(id, "initWithCIImage:", CIImage)(ciImage);
+		return result is this.objcObject ? this : (result !is null ? new NSBitmapImageRep(result) : null);
+	}
+
+	this (CIImage ciImage)
+	{
+		super(NSBitmapImageRep.alloc.initWithCIImage(ciImage).objcObject);
+	}
+
+	static NSArray imageRepsWithData (NSData data)
+	{
+		return invokeObjcSelfClass!(NSArray, "imageRepsWithData:", NSData)(data);
+	}
+
+	static Object imageRepWithData (NSData data)
+	{
+		return invokeObjcSelfClass!(Object, "imageRepWithData:", NSData)(data);
+	}
+
+	NSBitmapImageRep initWithData (NSData data)
+	{
+		id result = invokeObjcSelf!(id, "initWithData:", NSData)(data);
+		return result is this.objcObject ? this : (result !is null ? new NSBitmapImageRep(result) : null);
+	}
+
+	this (NSData data)
+	{
+		super(NSBitmapImageRep.alloc.initWithData(data).objcObject);
+	}
+
+	char* bitmapData ()
+	{
+		return invokeObjcSelf!(char*, "bitmapData");
+	}
+
+	void getBitmapDataPlanes (ubyte** data)
+	{
+		return invokeObjcSelf!(void, "getBitmapDataPlanes:", ubyte**)(data);
+	}
+
+	bool isPlanar ()
+	{
+		return invokeObjcSelf!(bool, "isPlanar");
+	}
+
+	NSInteger samplesPerPixel ()
+	{
+		return invokeObjcSelf!(NSInteger, "samplesPerPixel");
+	}
+
+	NSInteger bitsPerPixel ()
+	{
+		return invokeObjcSelf!(NSInteger, "bitsPerPixel");
+	}
+
+	NSInteger bytesPerRow ()
+	{
+		return invokeObjcSelf!(NSInteger, "bytesPerRow");
+	}
+
+	NSInteger bytesPerPlane ()
+	{
+		return invokeObjcSelf!(NSInteger, "bytesPerPlane");
+	}
+
+	NSInteger numberOfPlanes ()
+	{
+		return invokeObjcSelf!(NSInteger, "numberOfPlanes");
+	}
+
+	uint bitmapFormat ()
+	{
+		return invokeObjcSelf!(uint, "bitmapFormat");
+	}
+
+	void getCompression (NSTIFFCompression* compression, float* factor)
+	{
+		return invokeObjcSelf!(void, "getCompression:factor:", NSTIFFCompression*, float*)(compression, factor);
+	}
+
+	void setCompression (uint compression, float factor)
+	{
+		return invokeObjcSelf!(void, "setCompression:factor:", uint, float)(compression, factor);
+	}
+
+	NSData TIFFRepresentation ()
+	{
+		return invokeObjcSelf!(NSData, "TIFFRepresentation");
+	}
+
+	NSData TIFFRepresentationUsingCompression (uint comp, float factor)
+	{
+		return invokeObjcSelf!(NSData, "TIFFRepresentationUsingCompression:factor:", uint, float)(comp, factor);
+	}
+
+	static NSData TIFFRepresentationOfImageRepsInArray (NSArray array)
+	{
+		return invokeObjcSelfClass!(NSData, "TIFFRepresentationOfImageRepsInArray:", NSArray)(array);
+	}
+
+	static NSData TIFFRepresentationOfImageRepsInArray (NSArray array, uint comp, float factor)
+	{
+		return invokeObjcSelfClass!(NSData, "TIFFRepresentationOfImageRepsInArray:usingCompression:factor:", NSArray, uint, float)(array, comp, factor);
+	}
+
+	static void getTIFFCompressionTypes (NSTIFFCompression** list, NSInteger* numTypes)
+	{
+		return invokeObjcSelfClass!(void, "getTIFFCompressionTypes:count:", NSTIFFCompression**, NSInteger*)(list, numTypes);
+	}
+
+	static NSString localizedNameForTIFFCompressionType (uint compression)
+	{
+		return invokeObjcSelfClass!(NSString, "localizedNameForTIFFCompressionType:", uint)(compression);
+	}
+
+	bool canBeCompressedUsing (uint compression)
+	{
+		return invokeObjcSelf!(bool, "canBeCompressedUsing:", uint)(compression);
+	}
+
+	void colorizeByMappingGray (CGFloat midPoint, NSColor midPointColor, NSColor shadowColor, NSColor lightColor)
+	{
+		return invokeObjcSelf!(void, "colorizeByMappingGray:toColor:blackMapping:whiteMapping:", CGFloat, NSColor, NSColor, NSColor)(midPoint, midPointColor, shadowColor, lightColor);
+	}
+
+	NSBitmapImageRep initForIncrementalLoad ()
+	{
+		id result = invokeObjcSelf!(id, "initForIncrementalLoad");
+		return result is this.objcObject ? this : (result !is null ? new NSBitmapImageRep(result) : null);
+	}
+
+	this ()
+	{
+		super(NSBitmapImageRep.alloc.initForIncrementalLoad.objcObject);
+	}
+
+	NSInteger incrementalLoadFromData (NSData data, bool complete)
+	{
+		return invokeObjcSelf!(NSInteger, "incrementalLoadFromData:complete:", NSData, bool)(data, complete);
+	}
+
+	void setColor (NSColor color, NSInteger x, NSInteger y)
+	{
+		return invokeObjcSelf!(void, "setColor:atX:y:", NSColor, NSInteger, NSInteger)(color, x, y);
+	}
+
+	NSColor colorAtX (NSInteger x, NSInteger y)
+	{
+		return invokeObjcSelf!(NSColor, "colorAtX:y:", NSInteger, NSInteger)(x, y);
+	}
+
+	void getPixel (NSUInteger* p, NSInteger x, NSInteger y)
+	{
+		return invokeObjcSelf!(void, "getPixel:atX:y:", NSUInteger*, NSInteger, NSInteger)(p, x, y);
+	}
+
+	void setPixel (NSUInteger* p, NSInteger x, NSInteger y)
+	{
+		return invokeObjcSelf!(void, "setPixel:atX:y:", NSUInteger*, NSInteger, NSInteger)(p, x, y);
+	}
+
+	CGImageRef CGImage ()
+	{
+		return invokeObjcSelf!(CGImageRef, "CGImage");
+	}
+	
+	// NSBitmapImageFileTypeExtensions
+	static NSData representationOfImageRepsInArray (NSArray imageReps, uint storageType, NSDictionary properties)
+	{
+		return invokeObjcSelfClass!(NSData, "representationOfImageRepsInArray:usingType:properties:", NSArray, uint, NSDictionary)(imageReps, storageType, properties);
+	}
+
+	NSData representationUsingType (uint storageType, NSDictionary properties)
+	{
+		return invokeObjcSelf!(NSData, "representationUsingType:properties:", uint, NSDictionary)(storageType, properties);
+	}
+
+	void setProperty (NSString property, Object value)
+	{
+		return invokeObjcSelf!(void, "setProperty:withValue:", NSString, Object)(property, value);
+	}
+
+	Object valueForProperty (NSString property)
+	{
+		return invokeObjcSelf!(Object, "valueForProperty:", NSString)(property);
+	}
+}
\ No newline at end of file