view dstep/appkit/NSImage.d @ 22:f8a3b67adfcb

Removed duplicated methods
author Jacob Carlborg <doob@me.com>
date Tue, 09 Feb 2010 18:02:03 +0100
parents 19885b43130e
children b9de51448c6b
line wrap: on
line source

/**
 * 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);
	}

	NSImage initByReferencingURL (NSURL url)
	{
		id result = invokeObjcSelf!(id, "initByReferencingURL:", NSURL)(url);
		return result is this.objcObject ? this : (result !is null ? new NSImage(result) : null);
	}

	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:");

`;