diff dstep/appkit/NSImage.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 f8a3b67adfcb
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dstep/appkit/NSImage.d	Sun Jan 03 22:06:11 2010 +0100
@@ -0,0 +1,913 @@
+/**
+ * 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.NSImage;
+
+import dstep.appkit.NSBitmapImageRep;
+import dstep.appkit.NSColor;
+import dstep.appkit.NSGraphics;
+import dstep.appkit.NSImageRep;
+import dstep.appkit.NSPasteboard;
+import dstep.applicationservices.ApplicationServices;
+import dstep.foundation.NSArray;
+import dstep.foundation.NSBundle;
+import dstep.foundation.NSCoder;
+import dstep.foundation.NSData;
+import dstep.foundation.NSDictionary;
+import dstep.foundation.NSGeometry;
+import dstep.foundation.NSObjCRuntime;
+import dstep.foundation.NSObject;
+import dstep.foundation.NSString;
+import dstep.foundation.NSURL;
+import dstep.foundation.NSZone;
+import dstep.objc.bridge.Bridge;
+import dstep.objc.objc;
+
+import bindings = dstep.appkit.NSImage_bindings;
+
+typedef NSUInteger NSImageLoadStatus;
+typedef NSUInteger NSImageCacheMode;
+
+private struct OpaqueIconRef;
+alias OpaqueIconRef* IconRef;
+
+private
+{
+	NSString NSImageNameQuickLookTemplate_;
+	NSString NSImageNameBluetoothTemplate_;
+	NSString NSImageNameIChatTheaterTemplate_;
+	NSString NSImageNameSlideshowTemplate_;
+	NSString NSImageNameActionTemplate_;
+	NSString NSImageNameSmartBadgeTemplate_;
+	NSString NSImageNameIconViewTemplate_;
+	NSString NSImageNameListViewTemplate_;
+	NSString NSImageNameColumnViewTemplate_;
+	NSString NSImageNameFlowViewTemplate_;
+	NSString NSImageNamePathTemplate_;
+	NSString NSImageNameInvalidDataFreestandingTemplate_;
+	NSString NSImageNameLockLockedTemplate_;
+	NSString NSImageNameLockUnlockedTemplate_;
+	NSString NSImageNameGoRightTemplate_;
+	NSString NSImageNameGoLeftTemplate_;
+	NSString NSImageNameRightFacingTriangleTemplate_;
+	NSString NSImageNameLeftFacingTriangleTemplate_;
+	NSString NSImageNameAddTemplate_;
+	NSString NSImageNameRemoveTemplate_;
+	NSString NSImageNameRevealFreestandingTemplate_;
+	NSString NSImageNameFollowLinkFreestandingTemplate_;
+	NSString NSImageNameEnterFullScreenTemplate_;
+	NSString NSImageNameExitFullScreenTemplate_;
+	NSString NSImageNameStopProgressTemplate_;
+	NSString NSImageNameStopProgressFreestandingTemplate_;
+	NSString NSImageNameRefreshTemplate_;
+	NSString NSImageNameRefreshFreestandingTemplate_;
+	NSString NSImageNameBonjour_;
+	NSString NSImageNameDotMac_;
+	NSString NSImageNameComputer_;
+	NSString NSImageNameFolderBurnable_;
+	NSString NSImageNameFolderSmart_;
+	NSString NSImageNameNetwork_;
+	NSString NSImageNameMultipleDocuments_;
+	NSString NSImageNameUserAccounts_;
+	NSString NSImageNamePreferencesGeneral_;
+	NSString NSImageNameAdvanced_;
+	NSString NSImageNameInfo_;
+	NSString NSImageNameFontPanel_;
+	NSString NSImageNameColorPanel_;
+	NSString NSImageNameUser_;
+	NSString NSImageNameUserGroup_;
+	NSString NSImageNameEveryone_;
+}
+
+NSString NSImageNameQuickLookTemplate ()
+{
+	if (NSImageNameQuickLookTemplate_)
+		return NSImageNameQuickLookTemplate_;
+
+	return NSImageNameQuickLookTemplate_ = new NSString(bindings.NSImageNameQuickLookTemplate);
+}
+
+NSString NSImageNameBluetoothTemplate ()
+{
+	if (NSImageNameBluetoothTemplate_)
+		return NSImageNameBluetoothTemplate_;
+
+	return NSImageNameBluetoothTemplate_ = new NSString(bindings.NSImageNameBluetoothTemplate);
+}
+
+NSString NSImageNameIChatTheaterTemplate ()
+{
+	if (NSImageNameIChatTheaterTemplate_)
+		return NSImageNameIChatTheaterTemplate_;
+
+	return NSImageNameIChatTheaterTemplate_ = new NSString(bindings.NSImageNameIChatTheaterTemplate);
+}
+
+NSString NSImageNameSlideshowTemplate ()
+{
+	if (NSImageNameSlideshowTemplate_)
+		return NSImageNameSlideshowTemplate_;
+
+	return NSImageNameSlideshowTemplate_ = new NSString(bindings.NSImageNameSlideshowTemplate);
+}
+
+NSString NSImageNameActionTemplate ()
+{
+	if (NSImageNameActionTemplate_)
+		return NSImageNameActionTemplate_;
+
+	return NSImageNameActionTemplate_ = new NSString(bindings.NSImageNameActionTemplate);
+}
+
+NSString NSImageNameSmartBadgeTemplate ()
+{
+	if (NSImageNameSmartBadgeTemplate_)
+		return NSImageNameSmartBadgeTemplate_;
+
+	return NSImageNameSmartBadgeTemplate_ = new NSString(bindings.NSImageNameSmartBadgeTemplate);
+}
+
+NSString NSImageNameIconViewTemplate ()
+{
+	if (NSImageNameIconViewTemplate_)
+		return NSImageNameIconViewTemplate_;
+
+	return NSImageNameIconViewTemplate_ = new NSString(bindings.NSImageNameIconViewTemplate);
+}
+
+NSString NSImageNameListViewTemplate ()
+{
+	if (NSImageNameListViewTemplate_)
+		return NSImageNameListViewTemplate_;
+
+	return NSImageNameListViewTemplate_ = new NSString(bindings.NSImageNameListViewTemplate);
+}
+
+NSString NSImageNameColumnViewTemplate ()
+{
+	if (NSImageNameColumnViewTemplate_)
+		return NSImageNameColumnViewTemplate_;
+
+	return NSImageNameColumnViewTemplate_ = new NSString(bindings.NSImageNameColumnViewTemplate);
+}
+
+NSString NSImageNameFlowViewTemplate ()
+{
+	if (NSImageNameFlowViewTemplate_)
+		return NSImageNameFlowViewTemplate_;
+
+	return NSImageNameFlowViewTemplate_ = new NSString(bindings.NSImageNameFlowViewTemplate);
+}
+
+NSString NSImageNamePathTemplate ()
+{
+	if (NSImageNamePathTemplate_)
+		return NSImageNamePathTemplate_;
+
+	return NSImageNamePathTemplate_ = new NSString(bindings.NSImageNamePathTemplate);
+}
+
+NSString NSImageNameInvalidDataFreestandingTemplate ()
+{
+	if (NSImageNameInvalidDataFreestandingTemplate_)
+		return NSImageNameInvalidDataFreestandingTemplate_;
+
+	return NSImageNameInvalidDataFreestandingTemplate_ = new NSString(bindings.NSImageNameInvalidDataFreestandingTemplate);
+}
+
+NSString NSImageNameLockLockedTemplate ()
+{
+	if (NSImageNameLockLockedTemplate_)
+		return NSImageNameLockLockedTemplate_;
+
+	return NSImageNameLockLockedTemplate_ = new NSString(bindings.NSImageNameLockLockedTemplate);
+}
+
+NSString NSImageNameLockUnlockedTemplate ()
+{
+	if (NSImageNameLockUnlockedTemplate_)
+		return NSImageNameLockUnlockedTemplate_;
+
+	return NSImageNameLockUnlockedTemplate_ = new NSString(bindings.NSImageNameLockUnlockedTemplate);
+}
+
+NSString NSImageNameGoRightTemplate ()
+{
+	if (NSImageNameGoRightTemplate_)
+		return NSImageNameGoRightTemplate_;
+
+	return NSImageNameGoRightTemplate_ = new NSString(bindings.NSImageNameGoRightTemplate);
+}
+
+NSString NSImageNameGoLeftTemplate ()
+{
+	if (NSImageNameGoLeftTemplate_)
+		return NSImageNameGoLeftTemplate_;
+
+	return NSImageNameGoLeftTemplate_ = new NSString(bindings.NSImageNameGoLeftTemplate);
+}
+
+NSString NSImageNameRightFacingTriangleTemplate ()
+{
+	if (NSImageNameRightFacingTriangleTemplate_)
+		return NSImageNameRightFacingTriangleTemplate_;
+
+	return NSImageNameRightFacingTriangleTemplate_ = new NSString(bindings.NSImageNameRightFacingTriangleTemplate);
+}
+
+NSString NSImageNameLeftFacingTriangleTemplate ()
+{
+	if (NSImageNameLeftFacingTriangleTemplate_)
+		return NSImageNameLeftFacingTriangleTemplate_;
+
+	return NSImageNameLeftFacingTriangleTemplate_ = new NSString(bindings.NSImageNameLeftFacingTriangleTemplate);
+}
+
+NSString NSImageNameAddTemplate ()
+{
+	if (NSImageNameAddTemplate_)
+		return NSImageNameAddTemplate_;
+
+	return NSImageNameAddTemplate_ = new NSString(bindings.NSImageNameAddTemplate);
+}
+
+NSString NSImageNameRemoveTemplate ()
+{
+	if (NSImageNameRemoveTemplate_)
+		return NSImageNameRemoveTemplate_;
+
+	return NSImageNameRemoveTemplate_ = new NSString(bindings.NSImageNameRemoveTemplate);
+}
+
+NSString NSImageNameRevealFreestandingTemplate ()
+{
+	if (NSImageNameRevealFreestandingTemplate_)
+		return NSImageNameRevealFreestandingTemplate_;
+
+	return NSImageNameRevealFreestandingTemplate_ = new NSString(bindings.NSImageNameRevealFreestandingTemplate);
+}
+
+NSString NSImageNameFollowLinkFreestandingTemplate ()
+{
+	if (NSImageNameFollowLinkFreestandingTemplate_)
+		return NSImageNameFollowLinkFreestandingTemplate_;
+
+	return NSImageNameFollowLinkFreestandingTemplate_ = new NSString(bindings.NSImageNameFollowLinkFreestandingTemplate);
+}
+
+NSString NSImageNameEnterFullScreenTemplate ()
+{
+	if (NSImageNameEnterFullScreenTemplate_)
+		return NSImageNameEnterFullScreenTemplate_;
+
+	return NSImageNameEnterFullScreenTemplate_ = new NSString(bindings.NSImageNameEnterFullScreenTemplate);
+}
+
+NSString NSImageNameExitFullScreenTemplate ()
+{
+	if (NSImageNameExitFullScreenTemplate_)
+		return NSImageNameExitFullScreenTemplate_;
+
+	return NSImageNameExitFullScreenTemplate_ = new NSString(bindings.NSImageNameExitFullScreenTemplate);
+}
+
+NSString NSImageNameStopProgressTemplate ()
+{
+	if (NSImageNameStopProgressTemplate_)
+		return NSImageNameStopProgressTemplate_;
+
+	return NSImageNameStopProgressTemplate_ = new NSString(bindings.NSImageNameStopProgressTemplate);
+}
+
+NSString NSImageNameStopProgressFreestandingTemplate ()
+{
+	if (NSImageNameStopProgressFreestandingTemplate_)
+		return NSImageNameStopProgressFreestandingTemplate_;
+
+	return NSImageNameStopProgressFreestandingTemplate_ = new NSString(bindings.NSImageNameStopProgressFreestandingTemplate);
+}
+
+NSString NSImageNameRefreshTemplate ()
+{
+	if (NSImageNameRefreshTemplate_)
+		return NSImageNameRefreshTemplate_;
+
+	return NSImageNameRefreshTemplate_ = new NSString(bindings.NSImageNameRefreshTemplate);
+}
+
+NSString NSImageNameRefreshFreestandingTemplate ()
+{
+	if (NSImageNameRefreshFreestandingTemplate_)
+		return NSImageNameRefreshFreestandingTemplate_;
+
+	return NSImageNameRefreshFreestandingTemplate_ = new NSString(bindings.NSImageNameRefreshFreestandingTemplate);
+}
+
+NSString NSImageNameBonjour ()
+{
+	if (NSImageNameBonjour_)
+		return NSImageNameBonjour_;
+
+	return NSImageNameBonjour_ = new NSString(bindings.NSImageNameBonjour);
+}
+
+NSString NSImageNameDotMac ()
+{
+	if (NSImageNameDotMac_)
+		return NSImageNameDotMac_;
+
+	return NSImageNameDotMac_ = new NSString(bindings.NSImageNameDotMac);
+}
+
+NSString NSImageNameComputer ()
+{
+	if (NSImageNameComputer_)
+		return NSImageNameComputer_;
+
+	return NSImageNameComputer_ = new NSString(bindings.NSImageNameComputer);
+}
+
+NSString NSImageNameFolderBurnable ()
+{
+	if (NSImageNameFolderBurnable_)
+		return NSImageNameFolderBurnable_;
+
+	return NSImageNameFolderBurnable_ = new NSString(bindings.NSImageNameFolderBurnable);
+}
+
+NSString NSImageNameFolderSmart ()
+{
+	if (NSImageNameFolderSmart_)
+		return NSImageNameFolderSmart_;
+
+	return NSImageNameFolderSmart_ = new NSString(bindings.NSImageNameFolderSmart);
+}
+
+NSString NSImageNameNetwork ()
+{
+	if (NSImageNameNetwork_)
+		return NSImageNameNetwork_;
+
+	return NSImageNameNetwork_ = new NSString(bindings.NSImageNameNetwork);
+}
+
+NSString NSImageNameMultipleDocuments ()
+{
+	if (NSImageNameMultipleDocuments_)
+		return NSImageNameMultipleDocuments_;
+
+	return NSImageNameMultipleDocuments_ = new NSString(bindings.NSImageNameMultipleDocuments);
+}
+
+NSString NSImageNameUserAccounts ()
+{
+	if (NSImageNameUserAccounts_)
+		return NSImageNameUserAccounts_;
+
+	return NSImageNameUserAccounts_ = new NSString(bindings.NSImageNameUserAccounts);
+}
+
+NSString NSImageNamePreferencesGeneral ()
+{
+	if (NSImageNamePreferencesGeneral_)
+		return NSImageNamePreferencesGeneral_;
+
+	return NSImageNamePreferencesGeneral_ = new NSString(bindings.NSImageNamePreferencesGeneral);
+}
+
+NSString NSImageNameAdvanced ()
+{
+	if (NSImageNameAdvanced_)
+		return NSImageNameAdvanced_;
+
+	return NSImageNameAdvanced_ = new NSString(bindings.NSImageNameAdvanced);
+}
+
+NSString NSImageNameInfo ()
+{
+	if (NSImageNameInfo_)
+		return NSImageNameInfo_;
+
+	return NSImageNameInfo_ = new NSString(bindings.NSImageNameInfo);
+}
+
+NSString NSImageNameFontPanel ()
+{
+	if (NSImageNameFontPanel_)
+		return NSImageNameFontPanel_;
+
+	return NSImageNameFontPanel_ = new NSString(bindings.NSImageNameFontPanel);
+}
+
+NSString NSImageNameColorPanel ()
+{
+	if (NSImageNameColorPanel_)
+		return NSImageNameColorPanel_;
+
+	return NSImageNameColorPanel_ = new NSString(bindings.NSImageNameColorPanel);
+}
+
+NSString NSImageNameUser ()
+{
+	if (NSImageNameUser_)
+		return NSImageNameUser_;
+
+	return NSImageNameUser_ = new NSString(bindings.NSImageNameUser);
+}
+
+NSString NSImageNameUserGroup ()
+{
+	if (NSImageNameUserGroup_)
+		return NSImageNameUserGroup_;
+
+	return NSImageNameUserGroup_ = new NSString(bindings.NSImageNameUserGroup);
+}
+
+NSString NSImageNameEveryone ()
+{
+	if (NSImageNameEveryone_)
+		return NSImageNameEveryone_;
+
+	return NSImageNameEveryone_ = new NSString(bindings.NSImageNameEveryone);
+}
+
+enum
+{
+	NSImageLoadStatusCompleted,
+	NSImageLoadStatusCancelled,
+	NSImageLoadStatusInvalidData,
+	NSImageLoadStatusUnexpectedEOF,
+	NSImageLoadStatusReadError
+}
+
+enum
+{
+	NSImageCacheDefault,
+	NSImageCacheAlways,
+	NSImageCacheBySize,
+	NSImageCacheNever
+}
+
+class NSImage : NSObject, INSCopying, INSCoding
+{
+	mixin (ObjcWrap);
+	
+	this (NSCoder aDecoder)
+	{
+		super(typeof(this).alloc.initWithCoder(aDecoder).objcObject);
+	}
+	
+	void encodeWithCoder (NSCoder aCoder)
+	{
+		return invokeObjcSelf!(void, "encodeWithCoder:", NSCoder)(aCoder);
+	}
+	
+	typeof(this) initWithCoder (NSCoder aDecoder)
+	{
+		return invokeObjcSelf!(typeof(this), "initWithCoder:", NSCoder)(aDecoder);
+	}
+	
+	typeof(this) copyWithZone (NSZone* zone)
+	{
+		return invokeObjcSelf!(typeof(this), "copyWithZone:", NSZone*)(zone);
+	}
+
+	static Object imageNamed (NSString name)
+	{
+		return invokeObjcSelfClass!(Object, "imageNamed:", NSString)(name);
+	}
+
+	NSImage initWithSize (NSSize aSize)
+	{
+		id result = invokeObjcSelf!(id, "initWithSize:", NSSize)(aSize);
+		return result is this.objcObject ? this : (result !is null ? new NSImage(result) : null);
+	}
+
+	this (NSSize aSize)
+	{
+		super(NSImage.alloc.initWithSize(aSize).objcObject);
+	}
+
+	NSImage initWithData (NSData data)
+	{
+		id result = invokeObjcSelf!(id, "initWithData:", NSData)(data);
+		return result is this.objcObject ? this : (result !is null ? new NSImage(result) : null);
+	}
+
+	this (NSData data)
+	{
+		super(NSImage.alloc.initWithData(data).objcObject);
+	}
+
+	NSImage initWithContentsOfFile (NSString fileName)
+	{
+		id result = invokeObjcSelf!(id, "initWithContentsOfFile:", NSString)(fileName);
+		return result is this.objcObject ? this : (result !is null ? new NSImage(result) : null);
+	}
+
+	this (NSString fileName)
+	{
+		super(NSImage.alloc.initWithContentsOfFile(fileName).objcObject);
+	}
+
+	NSImage initWithContentsOfURL (NSURL url)
+	{
+		id result = invokeObjcSelf!(id, "initWithContentsOfURL:", NSURL)(url);
+		return result is this.objcObject ? this : (result !is null ? new NSImage(result) : null);
+	}
+
+	this (NSURL url)
+	{
+		super(NSImage.alloc.initWithContentsOfURL(url).objcObject);
+	}
+
+	NSImage initByReferencingFile (NSString fileName)
+	{
+		id result = invokeObjcSelf!(id, "initByReferencingFile:", NSString)(fileName);
+		return result is this.objcObject ? this : (result !is null ? new NSImage(result) : null);
+	}
+
+	this (NSString fileName)
+	{
+		super(NSImage.alloc.initByReferencingFile(fileName).objcObject);
+	}
+
+	NSImage initByReferencingURL (NSURL url)
+	{
+		id result = invokeObjcSelf!(id, "initByReferencingURL:", NSURL)(url);
+		return result is this.objcObject ? this : (result !is null ? new NSImage(result) : null);
+	}
+
+	this (NSURL url)
+	{
+		super(NSImage.alloc.initByReferencingURL(url).objcObject);
+	}
+
+	NSImage initWithIconRef (IconRef iconRef)
+	{
+		id result = invokeObjcSelf!(id, "initWithIconRef:", IconRef)(iconRef);
+		return result is this.objcObject ? this : (result !is null ? new NSImage(result) : null);
+	}
+
+	this (IconRef iconRef)
+	{
+		super(NSImage.alloc.initWithIconRef(iconRef).objcObject);
+	}
+
+	NSImage initWithPasteboard (NSPasteboard pasteboard)
+	{
+		id result = invokeObjcSelf!(id, "initWithPasteboard:", NSPasteboard)(pasteboard);
+		return result is this.objcObject ? this : (result !is null ? new NSImage(result) : null);
+	}
+
+	this (NSPasteboard pasteboard)
+	{
+		super(NSImage.alloc.initWithPasteboard(pasteboard).objcObject);
+	}
+
+	void setSize (NSSize aSize)
+	{
+		return invokeObjcSelf!(void, "setSize:", NSSize)(aSize);
+	}
+
+	NSSize size ()
+	{
+		return invokeObjcSelf!(NSSize, "size");
+	}
+
+	bool setName (NSString string)
+	{
+		return invokeObjcSelf!(bool, "setName:", NSString)(string);
+	}
+
+	NSString name ()
+	{
+		return invokeObjcSelf!(NSString, "name");
+	}
+
+	void setScalesWhenResized (bool flag)
+	{
+		return invokeObjcSelf!(void, "setScalesWhenResized:", bool)(flag);
+	}
+
+	bool scalesWhenResized ()
+	{
+		return invokeObjcSelf!(bool, "scalesWhenResized");
+	}
+
+	void setDataRetained (bool flag)
+	{
+		return invokeObjcSelf!(void, "setDataRetained:", bool)(flag);
+	}
+
+	bool isDataRetained ()
+	{
+		return invokeObjcSelf!(bool, "isDataRetained");
+	}
+
+	void setCachedSeparately (bool flag)
+	{
+		return invokeObjcSelf!(void, "setCachedSeparately:", bool)(flag);
+	}
+
+	bool isCachedSeparately ()
+	{
+		return invokeObjcSelf!(bool, "isCachedSeparately");
+	}
+
+	void setCacheDepthMatchesImageDepth (bool flag)
+	{
+		return invokeObjcSelf!(void, "setCacheDepthMatchesImageDepth:", bool)(flag);
+	}
+
+	bool cacheDepthMatchesImageDepth ()
+	{
+		return invokeObjcSelf!(bool, "cacheDepthMatchesImageDepth");
+	}
+
+	void setBackgroundColor (NSColor aColor)
+	{
+		return invokeObjcSelf!(void, "setBackgroundColor:", NSColor)(aColor);
+	}
+
+	NSColor backgroundColor ()
+	{
+		return invokeObjcSelf!(NSColor, "backgroundColor");
+	}
+
+	void setUsesEPSOnResolutionMismatch (bool flag)
+	{
+		return invokeObjcSelf!(void, "setUsesEPSOnResolutionMismatch:", bool)(flag);
+	}
+
+	bool usesEPSOnResolutionMismatch ()
+	{
+		return invokeObjcSelf!(bool, "usesEPSOnResolutionMismatch");
+	}
+
+	void setPrefersColorMatch (bool flag)
+	{
+		return invokeObjcSelf!(void, "setPrefersColorMatch:", bool)(flag);
+	}
+
+	bool prefersColorMatch ()
+	{
+		return invokeObjcSelf!(bool, "prefersColorMatch");
+	}
+
+	void setMatchesOnMultipleResolution (bool flag)
+	{
+		return invokeObjcSelf!(void, "setMatchesOnMultipleResolution:", bool)(flag);
+	}
+
+	bool matchesOnMultipleResolution ()
+	{
+		return invokeObjcSelf!(bool, "matchesOnMultipleResolution");
+	}
+
+	void dissolveToPoint (NSPoint point, CGFloat aFloat)
+	{
+		return invokeObjcSelf!(void, "dissolveToPoint:fraction:", NSPoint, CGFloat)(point, aFloat);
+	}
+
+	void dissolveToPoint (NSPoint point, NSRect rect, CGFloat aFloat)
+	{
+		return invokeObjcSelf!(void, "dissolveToPoint:fromRect:fraction:", NSPoint, NSRect, CGFloat)(point, rect, aFloat);
+	}
+
+	void compositeToPoint (NSPoint point, uint op)
+	{
+		return invokeObjcSelf!(void, "compositeToPoint:operation:", NSPoint, uint)(point, op);
+	}
+
+	void compositeToPoint (NSPoint point, NSRect rect, uint op)
+	{
+		return invokeObjcSelf!(void, "compositeToPoint:fromRect:operation:", NSPoint, NSRect, uint)(point, rect, op);
+	}
+
+	void compositeToPoint (NSPoint point, uint op, CGFloat delta)
+	{
+		return invokeObjcSelf!(void, "compositeToPoint:operation:fraction:", NSPoint, uint, CGFloat)(point, op, delta);
+	}
+
+	void compositeToPoint (NSPoint point, NSRect rect, uint op, CGFloat delta)
+	{
+		return invokeObjcSelf!(void, "compositeToPoint:fromRect:operation:fraction:", NSPoint, NSRect, uint, CGFloat)(point, rect, op, delta);
+	}
+
+	void drawAtPoint (NSPoint point, NSRect fromRect, uint op, CGFloat delta)
+	{
+		return invokeObjcSelf!(void, "drawAtPoint:fromRect:operation:fraction:", NSPoint, NSRect, uint, CGFloat)(point, fromRect, op, delta);
+	}
+
+	void drawInRect (NSRect rect, NSRect fromRect, uint op, CGFloat delta)
+	{
+		return invokeObjcSelf!(void, "drawInRect:fromRect:operation:fraction:", NSRect, NSRect, uint, CGFloat)(rect, fromRect, op, delta);
+	}
+
+	bool drawRepresentation (NSImageRep imageRep, NSRect rect)
+	{
+		return invokeObjcSelf!(bool, "drawRepresentation:inRect:", NSImageRep, NSRect)(imageRep, rect);
+	}
+
+	void recache ()
+	{
+		return invokeObjcSelf!(void, "recache");
+	}
+
+	NSData TIFFRepresentation ()
+	{
+		return invokeObjcSelf!(NSData, "TIFFRepresentation");
+	}
+
+	NSData TIFFRepresentationUsingCompression (uint comp, float aFloat)
+	{
+		return invokeObjcSelf!(NSData, "TIFFRepresentationUsingCompression:factor:", uint, float)(comp, aFloat);
+	}
+
+	NSArray representations ()
+	{
+		return invokeObjcSelf!(NSArray, "representations");
+	}
+
+	void addRepresentations (NSArray imageReps)
+	{
+		return invokeObjcSelf!(void, "addRepresentations:", NSArray)(imageReps);
+	}
+
+	void addRepresentation (NSImageRep imageRep)
+	{
+		return invokeObjcSelf!(void, "addRepresentation:", NSImageRep)(imageRep);
+	}
+
+	void removeRepresentation (NSImageRep imageRep)
+	{
+		return invokeObjcSelf!(void, "removeRepresentation:", NSImageRep)(imageRep);
+	}
+
+	bool isValid ()
+	{
+		return invokeObjcSelf!(bool, "isValid");
+	}
+
+	void lockFocus ()
+	{
+		return invokeObjcSelf!(void, "lockFocus");
+	}
+
+	void lockFocusOnRepresentation (NSImageRep imageRepresentation)
+	{
+		return invokeObjcSelf!(void, "lockFocusOnRepresentation:", NSImageRep)(imageRepresentation);
+	}
+
+	void unlockFocus ()
+	{
+		return invokeObjcSelf!(void, "unlockFocus");
+	}
+
+	NSImageRep bestRepresentationForDevice (NSDictionary deviceDescription)
+	{
+		return invokeObjcSelf!(NSImageRep, "bestRepresentationForDevice:", NSDictionary)(deviceDescription);
+	}
+
+	void setDelegate (Object anObject)
+	{
+		return invokeObjcSelf!(void, "setDelegate:", Object)(anObject);
+	}
+
+	Object delegate_ ()
+	{
+		return invokeObjcSelf!(Object, "delegate");
+	}
+
+	static NSArray imageUnfilteredFileTypes ()
+	{
+		return invokeObjcSelfClass!(NSArray, "imageUnfilteredFileTypes");
+	}
+
+	static NSArray imageUnfilteredPasteboardTypes ()
+	{
+		return invokeObjcSelfClass!(NSArray, "imageUnfilteredPasteboardTypes");
+	}
+
+	static NSArray imageFileTypes ()
+	{
+		return invokeObjcSelfClass!(NSArray, "imageFileTypes");
+	}
+
+	static NSArray imagePasteboardTypes ()
+	{
+		return invokeObjcSelfClass!(NSArray, "imagePasteboardTypes");
+	}
+
+	static NSArray imageTypes ()
+	{
+		return invokeObjcSelfClass!(NSArray, "imageTypes");
+	}
+
+	static NSArray imageUnfilteredTypes ()
+	{
+		return invokeObjcSelfClass!(NSArray, "imageUnfilteredTypes");
+	}
+
+	static bool canInitWithPasteboard (NSPasteboard pasteboard)
+	{
+		return invokeObjcSelfClass!(bool, "canInitWithPasteboard:", NSPasteboard)(pasteboard);
+	}
+
+	void setFlipped (bool flag)
+	{
+		return invokeObjcSelf!(void, "setFlipped:", bool)(flag);
+	}
+
+	bool isFlipped ()
+	{
+		return invokeObjcSelf!(bool, "isFlipped");
+	}
+
+	void cancelIncrementalLoad ()
+	{
+		return invokeObjcSelf!(void, "cancelIncrementalLoad");
+	}
+
+	void setCacheMode (uint mode)
+	{
+		return invokeObjcSelf!(void, "setCacheMode:", uint)(mode);
+	}
+
+	uint cacheMode ()
+	{
+		return invokeObjcSelf!(uint, "cacheMode");
+	}
+
+	NSRect alignmentRect ()
+	{
+		return invokeObjcSelf!(NSRect, "alignmentRect");
+	}
+
+	void setAlignmentRect (NSRect rect)
+	{
+		return invokeObjcSelf!(void, "setAlignmentRect:", NSRect)(rect);
+	}
+
+	bool isTemplate ()
+	{
+		return invokeObjcSelf!(bool, "isTemplate");
+	}
+
+	void setTemplate (bool isTemplate)
+	{
+		return invokeObjcSelf!(void, "setTemplate:", bool)(isTemplate);
+	}
+
+}
+
+const TNSImageDelegate = `
+
+	NSImage imageDidNotDraw (Object sender, NSRect aRect)
+	{
+		return invokeObjcSelf!(NSImage, "imageDidNotDraw:inRect:", Object, NSRect)(sender, aRect);
+	}
+
+	void image (NSImage image, NSImageRep rep)
+	{
+		return invokeObjcSelf!(void, "image:willLoadRepresentation:", NSImage, NSImageRep)(image, rep);
+	}
+
+	void image (NSImage image, NSImageRep rep)
+	{
+		return invokeObjcSelf!(void, "image:didLoadRepresentationHeader:", NSImage, NSImageRep)(image, rep);
+	}
+
+	void image (NSImage image, NSImageRep rep, NSInteger rows)
+	{
+		return invokeObjcSelf!(void, "image:didLoadPartOfRepresentation:withValidRows:", NSImage, NSImageRep, NSInteger)(image, rep, rows);
+	}
+
+	void image (NSImage image, NSImageRep rep, uint status)
+	{
+		return invokeObjcSelf!(void, "image:didLoadRepresentation:withStatus:", NSImage, NSImageRep, uint)(image, rep, status);
+	}
+
+	//mixin ObjcBindMethod!(imageDidNotDraw, "imageDidNotDraw:inRect:");
+	//mixin ObjcBindMethod!(image, "image:willLoadRepresentation:");
+	//mixin ObjcBindMethod!(image, "image:didLoadRepresentationHeader:");
+	//mixin ObjcBindMethod!(image, "image:didLoadPartOfRepresentation:withValidRows:");
+	//mixin ObjcBindMethod!(image, "image:didLoadRepresentation:withStatus:");
+
+`;
+
+const TNSBundleImageExtension = `
+
+	NSString pathForImageResource (NSString name)
+	{
+		return invokeObjcSelf!(NSString, "pathForImageResource:", NSString)(name);
+	}
+
+	//mixin ObjcBindMethod!(pathForImageResource, "pathForImageResource:");
+
+`;
+