view dstep/appkit/NSColor.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 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.NSColor;

import dstep.appkit.AppKitDefines;
import dstep.appkit.NSCell;
import dstep.appkit.NSColorSpace;
import dstep.appkit.NSImage;
import dstep.appkit.NSPasteboard;
import dstep.applicationservices.coregraphics.CGBase;
import dstep.foundation.NSArray;
import dstep.foundation.NSCoder;
import dstep.foundation.NSDictionary;
import dstep.foundation.NSGeometry;
import dstep.foundation.NSObjCRuntime;
import dstep.foundation.NSObject;
import dstep.foundation.NSString;
import dstep.foundation.NSZone;
import dstep.objc.bridge.Bridge;
import dstep.objc.objc;
import dstep.quartzcore.CIColor;

import bindings = dstep.appkit.NSColor_bindings;

private
{
	NSString NSSystemColorsDidChangeNotification_;
}

NSString NSSystemColorsDidChangeNotification ()
{
	if (NSSystemColorsDidChangeNotification_)
		return NSSystemColorsDidChangeNotification_;

	return NSSystemColorsDidChangeNotification_ = new NSString(bindings.NSSystemColorsDidChangeNotification);
}

class NSColor : 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 NSColor colorWithCalibratedWhite (CGFloat white, CGFloat alpha)
	{
		return invokeObjcSelfClass!(NSColor, "colorWithCalibratedWhite:alpha:", CGFloat, CGFloat)(white, alpha);
	}

	static NSColor colorWithCalibratedHue (CGFloat hue, CGFloat saturation, CGFloat brightness, CGFloat alpha)
	{
		return invokeObjcSelfClass!(NSColor, "colorWithCalibratedHue:saturation:brightness:alpha:", CGFloat, CGFloat, CGFloat, CGFloat)(hue, saturation, brightness, alpha);
	}

	static NSColor colorWithCalibratedRed (CGFloat red, CGFloat green, CGFloat blue, CGFloat alpha)
	{
		return invokeObjcSelfClass!(NSColor, "colorWithCalibratedRed:green:blue:alpha:", CGFloat, CGFloat, CGFloat, CGFloat)(red, green, blue, alpha);
	}

	static NSColor colorWithDeviceWhite (CGFloat white, CGFloat alpha)
	{
		return invokeObjcSelfClass!(NSColor, "colorWithDeviceWhite:alpha:", CGFloat, CGFloat)(white, alpha);
	}

	static NSColor colorWithDeviceHue (CGFloat hue, CGFloat saturation, CGFloat brightness, CGFloat alpha)
	{
		return invokeObjcSelfClass!(NSColor, "colorWithDeviceHue:saturation:brightness:alpha:", CGFloat, CGFloat, CGFloat, CGFloat)(hue, saturation, brightness, alpha);
	}

	static NSColor colorWithDeviceRed (CGFloat red, CGFloat green, CGFloat blue, CGFloat alpha)
	{
		return invokeObjcSelfClass!(NSColor, "colorWithDeviceRed:green:blue:alpha:", CGFloat, CGFloat, CGFloat, CGFloat)(red, green, blue, alpha);
	}

	static NSColor colorWithDeviceCyan (CGFloat cyan, CGFloat magenta, CGFloat yellow, CGFloat black, CGFloat alpha)
	{
		return invokeObjcSelfClass!(NSColor, "colorWithDeviceCyan:magenta:yellow:black:alpha:", CGFloat, CGFloat, CGFloat, CGFloat, CGFloat)(cyan, magenta, yellow, black, alpha);
	}

	static NSColor colorWithCatalogName (NSString listName, NSString colorName)
	{
		return invokeObjcSelfClass!(NSColor, "colorWithCatalogName:colorName:", NSString, NSString)(listName, colorName);
	}

	static NSColor colorWithColorSpace (NSColorSpace space, CGFloat* components, NSInteger numberOfComponents)
	{
		return invokeObjcSelfClass!(NSColor, "colorWithColorSpace:components:count:", NSColorSpace, CGFloat*, NSInteger)(space, components, numberOfComponents);
	}

	static NSColor blackColor ()
	{
		return invokeObjcSelfClass!(NSColor, "blackColor");
	}

	static NSColor darkGrayColor ()
	{
		return invokeObjcSelfClass!(NSColor, "darkGrayColor");
	}

	static NSColor lightGrayColor ()
	{
		return invokeObjcSelfClass!(NSColor, "lightGrayColor");
	}

	static NSColor whiteColor ()
	{
		return invokeObjcSelfClass!(NSColor, "whiteColor");
	}

	static NSColor grayColor ()
	{
		return invokeObjcSelfClass!(NSColor, "grayColor");
	}

	static NSColor redColor ()
	{
		return invokeObjcSelfClass!(NSColor, "redColor");
	}

	static NSColor greenColor ()
	{
		return invokeObjcSelfClass!(NSColor, "greenColor");
	}

	static NSColor blueColor ()
	{
		return invokeObjcSelfClass!(NSColor, "blueColor");
	}

	static NSColor cyanColor ()
	{
		return invokeObjcSelfClass!(NSColor, "cyanColor");
	}

	static NSColor yellowColor ()
	{
		return invokeObjcSelfClass!(NSColor, "yellowColor");
	}

	static NSColor magentaColor ()
	{
		return invokeObjcSelfClass!(NSColor, "magentaColor");
	}

	static NSColor orangeColor ()
	{
		return invokeObjcSelfClass!(NSColor, "orangeColor");
	}

	static NSColor purpleColor ()
	{
		return invokeObjcSelfClass!(NSColor, "purpleColor");
	}

	static NSColor brownColor ()
	{
		return invokeObjcSelfClass!(NSColor, "brownColor");
	}

	static NSColor clearColor ()
	{
		return invokeObjcSelfClass!(NSColor, "clearColor");
	}

	static NSColor controlShadowColor ()
	{
		return invokeObjcSelfClass!(NSColor, "controlShadowColor");
	}

	static NSColor controlDarkShadowColor ()
	{
		return invokeObjcSelfClass!(NSColor, "controlDarkShadowColor");
	}

	static NSColor controlColor ()
	{
		return invokeObjcSelfClass!(NSColor, "controlColor");
	}

	static NSColor controlHighlightColor ()
	{
		return invokeObjcSelfClass!(NSColor, "controlHighlightColor");
	}

	static NSColor controlLightHighlightColor ()
	{
		return invokeObjcSelfClass!(NSColor, "controlLightHighlightColor");
	}

	static NSColor controlTextColor ()
	{
		return invokeObjcSelfClass!(NSColor, "controlTextColor");
	}

	static NSColor controlBackgroundColor ()
	{
		return invokeObjcSelfClass!(NSColor, "controlBackgroundColor");
	}

	static NSColor selectedControlColor ()
	{
		return invokeObjcSelfClass!(NSColor, "selectedControlColor");
	}

	static NSColor secondarySelectedControlColor ()
	{
		return invokeObjcSelfClass!(NSColor, "secondarySelectedControlColor");
	}

	static NSColor selectedControlTextColor ()
	{
		return invokeObjcSelfClass!(NSColor, "selectedControlTextColor");
	}

	static NSColor disabledControlTextColor ()
	{
		return invokeObjcSelfClass!(NSColor, "disabledControlTextColor");
	}

	static NSColor textColor ()
	{
		return invokeObjcSelfClass!(NSColor, "textColor");
	}

	static NSColor textBackgroundColor ()
	{
		return invokeObjcSelfClass!(NSColor, "textBackgroundColor");
	}

	static NSColor selectedTextColor ()
	{
		return invokeObjcSelfClass!(NSColor, "selectedTextColor");
	}

	static NSColor selectedTextBackgroundColor ()
	{
		return invokeObjcSelfClass!(NSColor, "selectedTextBackgroundColor");
	}

	static NSColor gridColor ()
	{
		return invokeObjcSelfClass!(NSColor, "gridColor");
	}

	static NSColor keyboardFocusIndicatorColor ()
	{
		return invokeObjcSelfClass!(NSColor, "keyboardFocusIndicatorColor");
	}

	static NSColor windowBackgroundColor ()
	{
		return invokeObjcSelfClass!(NSColor, "windowBackgroundColor");
	}

	static NSColor scrollBarColor ()
	{
		return invokeObjcSelfClass!(NSColor, "scrollBarColor");
	}

	static NSColor knobColor ()
	{
		return invokeObjcSelfClass!(NSColor, "knobColor");
	}

	static NSColor selectedKnobColor ()
	{
		return invokeObjcSelfClass!(NSColor, "selectedKnobColor");
	}

	static NSColor windowFrameColor ()
	{
		return invokeObjcSelfClass!(NSColor, "windowFrameColor");
	}

	static NSColor windowFrameTextColor ()
	{
		return invokeObjcSelfClass!(NSColor, "windowFrameTextColor");
	}

	static NSColor selectedMenuItemColor ()
	{
		return invokeObjcSelfClass!(NSColor, "selectedMenuItemColor");
	}

	static NSColor selectedMenuItemTextColor ()
	{
		return invokeObjcSelfClass!(NSColor, "selectedMenuItemTextColor");
	}

	static NSColor highlightColor ()
	{
		return invokeObjcSelfClass!(NSColor, "highlightColor");
	}

	static NSColor shadowColor ()
	{
		return invokeObjcSelfClass!(NSColor, "shadowColor");
	}

	static NSColor headerColor ()
	{
		return invokeObjcSelfClass!(NSColor, "headerColor");
	}

	static NSColor headerTextColor ()
	{
		return invokeObjcSelfClass!(NSColor, "headerTextColor");
	}

	static NSColor alternateSelectedControlColor ()
	{
		return invokeObjcSelfClass!(NSColor, "alternateSelectedControlColor");
	}

	static NSColor alternateSelectedControlTextColor ()
	{
		return invokeObjcSelfClass!(NSColor, "alternateSelectedControlTextColor");
	}

	static NSArray controlAlternatingRowBackgroundColors ()
	{
		return invokeObjcSelfClass!(NSArray, "controlAlternatingRowBackgroundColors");
	}

	NSColor highlightWithLevel (CGFloat val)
	{
		id result = invokeObjcSelf!(id, "highlightWithLevel:", CGFloat)(val);
		return result is this.objcObject ? this : (result !is null ? new NSColor(result) : null);
	}

	NSColor shadowWithLevel (CGFloat val)
	{
		id result = invokeObjcSelf!(id, "shadowWithLevel:", CGFloat)(val);
		return result is this.objcObject ? this : (result !is null ? new NSColor(result) : null);
	}

	static NSColor colorForControlTint (uint controlTint)
	{
		return invokeObjcSelfClass!(NSColor, "colorForControlTint:", uint)(controlTint);
	}

	static uint currentControlTint ()
	{
		return invokeObjcSelfClass!(uint, "currentControlTint");
	}

	void set ()
	{
		return invokeObjcSelf!(void, "set");
	}

	void setFill ()
	{
		return invokeObjcSelf!(void, "setFill");
	}

	void setStroke ()
	{
		return invokeObjcSelf!(void, "setStroke");
	}

	NSString colorSpaceName ()
	{
		return invokeObjcSelf!(NSString, "colorSpaceName");
	}

	NSColor colorUsingColorSpaceName (NSString colorSpace)
	{
		id result = invokeObjcSelf!(id, "colorUsingColorSpaceName:", NSString)(colorSpace);
		return result is this.objcObject ? this : (result !is null ? new NSColor(result) : null);
	}

	NSColor colorUsingColorSpaceName (NSString colorSpace, NSDictionary deviceDescription)
	{
		id result = invokeObjcSelf!(id, "colorUsingColorSpaceName:device:", NSString, NSDictionary)(colorSpace, deviceDescription);
		return result is this.objcObject ? this : (result !is null ? new NSColor(result) : null);
	}

	NSColor colorUsingColorSpace (NSColorSpace space)
	{
		id result = invokeObjcSelf!(id, "colorUsingColorSpace:", NSColorSpace)(space);
		return result is this.objcObject ? this : (result !is null ? new NSColor(result) : null);
	}

	NSColor blendedColorWithFraction (CGFloat fraction, NSColor color)
	{
		id result = invokeObjcSelf!(id, "blendedColorWithFraction:ofColor:", CGFloat, NSColor)(fraction, color);
		return result is this.objcObject ? this : (result !is null ? new NSColor(result) : null);
	}

	NSColor colorWithAlphaComponent (CGFloat alpha)
	{
		id result = invokeObjcSelf!(id, "colorWithAlphaComponent:", CGFloat)(alpha);
		return result is this.objcObject ? this : (result !is null ? new NSColor(result) : null);
	}

	NSString catalogNameComponent ()
	{
		return invokeObjcSelf!(NSString, "catalogNameComponent");
	}

	NSString colorNameComponent ()
	{
		return invokeObjcSelf!(NSString, "colorNameComponent");
	}

	NSString localizedCatalogNameComponent ()
	{
		return invokeObjcSelf!(NSString, "localizedCatalogNameComponent");
	}

	NSString localizedColorNameComponent ()
	{
		return invokeObjcSelf!(NSString, "localizedColorNameComponent");
	}

	CGFloat redComponent ()
	{
		return invokeObjcSelf!(CGFloat, "redComponent");
	}

	CGFloat greenComponent ()
	{
		return invokeObjcSelf!(CGFloat, "greenComponent");
	}

	CGFloat blueComponent ()
	{
		return invokeObjcSelf!(CGFloat, "blueComponent");
	}

	void getRed (CGFloat* red, CGFloat* green, CGFloat* blue, CGFloat* alpha)
	{
		return invokeObjcSelf!(void, "getRed:green:blue:alpha:", CGFloat*, CGFloat*, CGFloat*, CGFloat*)(red, green, blue, alpha);
	}

	CGFloat hueComponent ()
	{
		return invokeObjcSelf!(CGFloat, "hueComponent");
	}

	CGFloat saturationComponent ()
	{
		return invokeObjcSelf!(CGFloat, "saturationComponent");
	}

	CGFloat brightnessComponent ()
	{
		return invokeObjcSelf!(CGFloat, "brightnessComponent");
	}

	void getHue (CGFloat* hue, CGFloat* saturation, CGFloat* brightness, CGFloat* alpha)
	{
		return invokeObjcSelf!(void, "getHue:saturation:brightness:alpha:", CGFloat*, CGFloat*, CGFloat*, CGFloat*)(hue, saturation, brightness, alpha);
	}

	CGFloat whiteComponent ()
	{
		return invokeObjcSelf!(CGFloat, "whiteComponent");
	}

	void getWhite (CGFloat* white, CGFloat* alpha)
	{
		return invokeObjcSelf!(void, "getWhite:alpha:", CGFloat*, CGFloat*)(white, alpha);
	}

	CGFloat cyanComponent ()
	{
		return invokeObjcSelf!(CGFloat, "cyanComponent");
	}

	CGFloat magentaComponent ()
	{
		return invokeObjcSelf!(CGFloat, "magentaComponent");
	}

	CGFloat yellowComponent ()
	{
		return invokeObjcSelf!(CGFloat, "yellowComponent");
	}

	CGFloat blackComponent ()
	{
		return invokeObjcSelf!(CGFloat, "blackComponent");
	}

	void getCyan (CGFloat* cyan, CGFloat* magenta, CGFloat* yellow, CGFloat* black, CGFloat* alpha)
	{
		return invokeObjcSelf!(void, "getCyan:magenta:yellow:black:alpha:", CGFloat*, CGFloat*, CGFloat*, CGFloat*, CGFloat*)(cyan, magenta, yellow, black, alpha);
	}

	NSColorSpace colorSpace ()
	{
		return invokeObjcSelf!(NSColorSpace, "colorSpace");
	}

	NSInteger numberOfComponents ()
	{
		return invokeObjcSelf!(NSInteger, "numberOfComponents");
	}

	void getComponents (CGFloat* components)
	{
		return invokeObjcSelf!(void, "getComponents:", CGFloat*)(components);
	}

	CGFloat alphaComponent ()
	{
		return invokeObjcSelf!(CGFloat, "alphaComponent");
	}

	static NSColor colorFromPasteboard (NSPasteboard pasteBoard)
	{
		return invokeObjcSelfClass!(NSColor, "colorFromPasteboard:", NSPasteboard)(pasteBoard);
	}

	void writeToPasteboard (NSPasteboard pasteBoard)
	{
		return invokeObjcSelf!(void, "writeToPasteboard:", NSPasteboard)(pasteBoard);
	}

	static NSColor colorWithPatternImage (NSImage image)
	{
		return invokeObjcSelfClass!(NSColor, "colorWithPatternImage:", NSImage)(image);
	}

	NSImage patternImage ()
	{
		return invokeObjcSelf!(NSImage, "patternImage");
	}

	void drawSwatchInRect (NSRect rect)
	{
		return invokeObjcSelf!(void, "drawSwatchInRect:", NSRect)(rect);
	}

	static void setIgnoresAlpha (bool flag)
	{
		return invokeObjcSelfClass!(void, "setIgnoresAlpha:", bool)(flag);
	}

	static bool ignoresAlpha ()
	{
		return invokeObjcSelfClass!(bool, "ignoresAlpha");
	}

}

const TNSAppKitColorExtensions = `

	NSColor decodeNXColor ()
	{
		return invokeObjcSelf!(NSColor, "decodeNXColor");
	}

	//mixin ObjcBindMethod!(decodeNXColor, "decodeNXColor");

`;

const TNSAppKitAdditions = `

	NSAppKitAdditions initWithColor (NSColor color)
	{
		id result = invokeObjcSelf!(id, "initWithColor:", NSColor)(color);
		return result is this.objcObject ? this : (result !is null ? new NSAppKitAdditions(result) : null);
	}

	this (NSColor color)
	{
		super(NSAppKitAdditions.alloc.initWithColor(color).objcObject);
	}

	//mixin ObjcBindMethod!(initWithColor, "initWithColor:");

`;