diff dstep/quartzcore/CALayer.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/quartzcore/CALayer.d	Sun Jan 03 22:06:11 2010 +0100
@@ -0,0 +1,980 @@
+/**
+ * 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.quartzcore.CALayer;
+
+import dstep.applicationservices.coregraphics.CGAffineTransform;
+import dstep.applicationservices.coregraphics.CGBase;
+import dstep.applicationservices.coregraphics.CGColor;
+import dstep.applicationservices.coregraphics.CGContext;
+import dstep.applicationservices.coregraphics.CGGeometry;
+import dstep.foundation.NSArray;
+import dstep.foundation.NSCoder;
+import dstep.foundation.NSDictionary;
+import dstep.foundation.NSEnumerator;
+import dstep.foundation.NSObject;
+import dstep.foundation.NSString;
+import dstep.objc.bridge.Bridge;
+import dstep.objc.objc;
+import dstep.quartzcore.CAAnimation;
+import dstep.quartzcore.CAConstraintLayoutManager;
+import dstep.quartzcore.CAMediaTiming;
+import dstep.quartzcore.CAScrollLayer;
+import dstep.quartzcore.CATransform3D;
+
+import bindings = dstep.quartzcore.CALayer_bindings;
+
+private
+{
+	NSString kCAGravityCenter_;
+	NSString kCAGravityTop_;
+	NSString kCAGravityBottom_;
+	NSString kCAGravityLeft_;
+	NSString kCAGravityRight_;
+	NSString kCAGravityTopLeft_;
+	NSString kCAGravityTopRight_;
+	NSString kCAGravityBottomLeft_;
+	NSString kCAGravityBottomRight_;
+	NSString kCAGravityResize_;
+	NSString kCAGravityResizeAspect_;
+	NSString kCAGravityResizeAspectFill_;
+	NSString kCAFilterLinear_;
+	NSString kCAFilterNearest_;
+	NSString kCAOnOrderIn_;
+	NSString kCAOnOrderOut_;
+	NSString kCATransition_;
+}
+
+NSString kCAGravityCenter ()
+{
+	if (kCAGravityCenter_)
+		return kCAGravityCenter_;
+
+	return kCAGravityCenter_ = new NSString(bindings.kCAGravityCenter);
+}
+
+NSString kCAGravityTop ()
+{
+	if (kCAGravityTop_)
+		return kCAGravityTop_;
+
+	return kCAGravityTop_ = new NSString(bindings.kCAGravityTop);
+}
+
+NSString kCAGravityBottom ()
+{
+	if (kCAGravityBottom_)
+		return kCAGravityBottom_;
+
+	return kCAGravityBottom_ = new NSString(bindings.kCAGravityBottom);
+}
+
+NSString kCAGravityLeft ()
+{
+	if (kCAGravityLeft_)
+		return kCAGravityLeft_;
+
+	return kCAGravityLeft_ = new NSString(bindings.kCAGravityLeft);
+}
+
+NSString kCAGravityRight ()
+{
+	if (kCAGravityRight_)
+		return kCAGravityRight_;
+
+	return kCAGravityRight_ = new NSString(bindings.kCAGravityRight);
+}
+
+NSString kCAGravityTopLeft ()
+{
+	if (kCAGravityTopLeft_)
+		return kCAGravityTopLeft_;
+
+	return kCAGravityTopLeft_ = new NSString(bindings.kCAGravityTopLeft);
+}
+
+NSString kCAGravityTopRight ()
+{
+	if (kCAGravityTopRight_)
+		return kCAGravityTopRight_;
+
+	return kCAGravityTopRight_ = new NSString(bindings.kCAGravityTopRight);
+}
+
+NSString kCAGravityBottomLeft ()
+{
+	if (kCAGravityBottomLeft_)
+		return kCAGravityBottomLeft_;
+
+	return kCAGravityBottomLeft_ = new NSString(bindings.kCAGravityBottomLeft);
+}
+
+NSString kCAGravityBottomRight ()
+{
+	if (kCAGravityBottomRight_)
+		return kCAGravityBottomRight_;
+
+	return kCAGravityBottomRight_ = new NSString(bindings.kCAGravityBottomRight);
+}
+
+NSString kCAGravityResize ()
+{
+	if (kCAGravityResize_)
+		return kCAGravityResize_;
+
+	return kCAGravityResize_ = new NSString(bindings.kCAGravityResize);
+}
+
+NSString kCAGravityResizeAspect ()
+{
+	if (kCAGravityResizeAspect_)
+		return kCAGravityResizeAspect_;
+
+	return kCAGravityResizeAspect_ = new NSString(bindings.kCAGravityResizeAspect);
+}
+
+NSString kCAGravityResizeAspectFill ()
+{
+	if (kCAGravityResizeAspectFill_)
+		return kCAGravityResizeAspectFill_;
+
+	return kCAGravityResizeAspectFill_ = new NSString(bindings.kCAGravityResizeAspectFill);
+}
+
+NSString kCAFilterLinear ()
+{
+	if (kCAFilterLinear_)
+		return kCAFilterLinear_;
+
+	return kCAFilterLinear_ = new NSString(bindings.kCAFilterLinear);
+}
+
+NSString kCAFilterNearest ()
+{
+	if (kCAFilterNearest_)
+		return kCAFilterNearest_;
+
+	return kCAFilterNearest_ = new NSString(bindings.kCAFilterNearest);
+}
+
+NSString kCAOnOrderIn ()
+{
+	if (kCAOnOrderIn_)
+		return kCAOnOrderIn_;
+
+	return kCAOnOrderIn_ = new NSString(bindings.kCAOnOrderIn);
+}
+
+NSString kCAOnOrderOut ()
+{
+	if (kCAOnOrderOut_)
+		return kCAOnOrderOut_;
+
+	return kCAOnOrderOut_ = new NSString(bindings.kCAOnOrderOut);
+}
+
+NSString kCATransition ()
+{
+	if (kCATransition_)
+		return kCATransition_;
+
+	return kCATransition_ = new NSString(bindings.kCATransition);
+}
+
+enum CAAutoresizingMask
+
+{
+	kCALayerNotSizable = 0,
+	kCALayerMinXMargin = 1U << 0,
+	kCALayerWidthSizable = 1U << 1,
+	kCALayerMaxXMargin = 1U << 2,
+	kCALayerMinYMargin = 1U << 3,
+	kCALayerHeightSizable = 1U << 4,
+	kCALayerMaxYMargin = 1U << 5
+}
+
+enum CAEdgeAntialiasingMask
+
+{
+	kCALayerLeftEdge = 1U << 0,
+	kCALayerRightEdge = 1U << 1,
+	kCALayerBottomEdge = 1U << 2,
+	kCALayerTopEdge = 1U << 3
+}
+
+class CALayer : NSObject, INSCoding, ICAMediaTiming
+{
+	mixin (ObjcWrap);
+	
+	void encodeWithCoder (NSCoder aCoder)
+	{
+		return invokeObjcSelf!(void, "encodeWithCoder:", NSCoder)(aCoder);
+	}
+	
+	CALayer initWithCoder (NSCoder aDecoder)
+	{
+		return invokeObjcSelf!(CALayer, "initWithCoder:", NSCoder)(aDecoder);
+	}
+	
+	static Object layer ()
+	{
+		return invokeObjcSelfClass!(Object, "layer");
+	}
+
+	CALayer init ()
+	{
+		id result = invokeObjcSelf!(id, "init");
+		return result is this.objcObject ? this : (result !is null ? new CALayer(result) : null);
+	}
+
+	this ()
+	{
+		super(CALayer.alloc.init.objcObject);
+	}
+
+	CALayer initWithLayer (Object layer)
+	{
+		id result = invokeObjcSelf!(id, "initWithLayer:", Object)(layer);
+		return result is this.objcObject ? this : (result !is null ? new CALayer(result) : null);
+	}
+
+	this (Object layer)
+	{
+		super(CALayer.alloc.initWithLayer(layer).objcObject);
+	}
+
+	Object presentationLayer ()
+	{
+		return invokeObjcSelf!(Object, "presentationLayer");
+	}
+
+	Object modelLayer ()
+	{
+		return invokeObjcSelf!(Object, "modelLayer");
+	}
+
+	static Object defaultValueForKey (NSString key)
+	{
+		return invokeObjcSelfClass!(Object, "defaultValueForKey:", NSString)(key);
+	}
+
+	bool shouldArchiveValueForKey (NSString key)
+	{
+		return invokeObjcSelf!(bool, "shouldArchiveValueForKey:", NSString)(key);
+	}
+
+	CGRect bounds ()
+	{
+		return invokeObjcSelf!(CGRect, "bounds");
+	}
+
+	void setBounds (CGRect arg0)
+	{
+		return invokeObjcSelf!(void, "setBounds:", CGRect)(arg0);
+	}
+
+	CGPoint position ()
+	{
+		return invokeObjcSelf!(CGPoint, "position");
+	}
+
+	void setPosition (CGPoint arg0)
+	{
+		return invokeObjcSelf!(void, "setPosition:", CGPoint)(arg0);
+	}
+
+	CGFloat zPosition ()
+	{
+		return invokeObjcSelf!(CGFloat, "zPosition");
+	}
+
+	void setZPosition (CGFloat arg0)
+	{
+		return invokeObjcSelf!(void, "setZPosition:", CGFloat)(arg0);
+	}
+
+	CGPoint anchorPoint ()
+	{
+		return invokeObjcSelf!(CGPoint, "anchorPoint");
+	}
+
+	void setAnchorPoint (CGPoint arg0)
+	{
+		return invokeObjcSelf!(void, "setAnchorPoint:", CGPoint)(arg0);
+	}
+
+	CATransform3D transform ()
+	{
+		return invokeObjcSelf!(CATransform3D, "transform");
+	}
+
+	void setTransform (CATransform3D arg0)
+	{
+		return invokeObjcSelf!(void, "setTransform:", CATransform3D)(arg0);
+	}
+
+	CGAffineTransform affineTransform ()
+	{
+		return invokeObjcSelf!(CGAffineTransform, "affineTransform");
+	}
+
+	void setAffineTransform (CGAffineTransform m)
+	{
+		return invokeObjcSelf!(void, "setAffineTransform:", CGAffineTransform)(m);
+	}
+
+	CGRect frame ()
+	{
+		return invokeObjcSelf!(CGRect, "frame");
+	}
+
+	void setFrame (CGRect arg0)
+	{
+		return invokeObjcSelf!(void, "setFrame:", CGRect)(arg0);
+	}
+
+	bool isHidden ()
+	{
+		return invokeObjcSelf!(bool, "isHidden");
+	}
+
+	void setHidden (bool arg0)
+	{
+		return invokeObjcSelf!(void, "setHidden:", bool)(arg0);
+	}
+
+	bool isDoubleSided ()
+	{
+		return invokeObjcSelf!(bool, "isDoubleSided");
+	}
+
+	void setDoubleSided (bool arg0)
+	{
+		return invokeObjcSelf!(void, "setDoubleSided:", bool)(arg0);
+	}
+
+	void removeFromSuperlayer ()
+	{
+		return invokeObjcSelf!(void, "removeFromSuperlayer");
+	}
+
+	void addSublayer (CALayer layer)
+	{
+		return invokeObjcSelf!(void, "addSublayer:", CALayer)(layer);
+	}
+
+	void insertSublayer (CALayer layer, uint idx)
+	{
+		return invokeObjcSelf!(void, "insertSublayer:atIndex:", CALayer, uint)(layer, idx);
+	}
+
+	void insertSublayer (CALayer layer, CALayer sibling)
+	{
+		return invokeObjcSelf!(void, "insertSublayer:below:", CALayer, CALayer)(layer, sibling);
+	}
+
+	void insertSublayer (CALayer layer, CALayer sibling)
+	{
+		return invokeObjcSelf!(void, "insertSublayer:above:", CALayer, CALayer)(layer, sibling);
+	}
+
+	void replaceSublayer (CALayer layer, CALayer layer2)
+	{
+		return invokeObjcSelf!(void, "replaceSublayer:with:", CALayer, CALayer)(layer, layer2);
+	}
+
+	CATransform3D sublayerTransform ()
+	{
+		return invokeObjcSelf!(CATransform3D, "sublayerTransform");
+	}
+
+	void setSublayerTransform (CATransform3D arg0)
+	{
+		return invokeObjcSelf!(void, "setSublayerTransform:", CATransform3D)(arg0);
+	}
+
+	bool masksToBounds ()
+	{
+		return invokeObjcSelf!(bool, "masksToBounds");
+	}
+
+	void setMasksToBounds (bool arg0)
+	{
+		return invokeObjcSelf!(void, "setMasksToBounds:", bool)(arg0);
+	}
+
+	CGPoint convertPoint (CGPoint p, CALayer l)
+	{
+		return invokeObjcSelf!(CGPoint, "convertPoint:fromLayer:", CGPoint, CALayer)(p, l);
+	}
+
+	CGPoint convertPoint (CGPoint p, CALayer l)
+	{
+		return invokeObjcSelf!(CGPoint, "convertPoint:toLayer:", CGPoint, CALayer)(p, l);
+	}
+
+	CGRect convertRect (CGRect r, CALayer l)
+	{
+		return invokeObjcSelf!(CGRect, "convertRect:fromLayer:", CGRect, CALayer)(r, l);
+	}
+
+	CGRect convertRect (CGRect r, CALayer l)
+	{
+		return invokeObjcSelf!(CGRect, "convertRect:toLayer:", CGRect, CALayer)(r, l);
+	}
+
+	double convertTime (double t, CALayer l)
+	{
+		return invokeObjcSelf!(double, "convertTime:fromLayer:", double, CALayer)(t, l);
+	}
+
+	double convertTime (double t, CALayer l)
+	{
+		return invokeObjcSelf!(double, "convertTime:toLayer:", double, CALayer)(t, l);
+	}
+
+	CALayer hitTest (CGPoint p)
+	{
+		id result = invokeObjcSelf!(id, "hitTest:", CGPoint)(p);
+		return result is this.objcObject ? this : (result !is null ? new CALayer(result) : null);
+	}
+
+	bool containsPoint (CGPoint p)
+	{
+		return invokeObjcSelf!(bool, "containsPoint:", CGPoint)(p);
+	}
+
+	Object contents ()
+	{
+		return invokeObjcSelf!(Object, "contents");
+	}
+
+	void setContents (Object arg0)
+	{
+		return invokeObjcSelf!(void, "setContents:", Object)(arg0);
+	}
+
+	CGRect contentsRect ()
+	{
+		return invokeObjcSelf!(CGRect, "contentsRect");
+	}
+
+	void setContentsRect (CGRect arg0)
+	{
+		return invokeObjcSelf!(void, "setContentsRect:", CGRect)(arg0);
+	}
+
+	bool isOpaque ()
+	{
+		return invokeObjcSelf!(bool, "isOpaque");
+	}
+
+	void setOpaque (bool arg0)
+	{
+		return invokeObjcSelf!(void, "setOpaque:", bool)(arg0);
+	}
+
+	void display ()
+	{
+		return invokeObjcSelf!(void, "display");
+	}
+
+	void setNeedsDisplay ()
+	{
+		return invokeObjcSelf!(void, "setNeedsDisplay");
+	}
+
+	void setNeedsDisplayInRect (CGRect r)
+	{
+		return invokeObjcSelf!(void, "setNeedsDisplayInRect:", CGRect)(r);
+	}
+
+	bool needsDisplayOnBoundsChange ()
+	{
+		return invokeObjcSelf!(bool, "needsDisplayOnBoundsChange");
+	}
+
+	void setNeedsDisplayOnBoundsChange (bool arg0)
+	{
+		return invokeObjcSelf!(void, "setNeedsDisplayOnBoundsChange:", bool)(arg0);
+	}
+
+	void drawInContext (CGContextRef ctx)
+	{
+		return invokeObjcSelf!(void, "drawInContext:", CGContextRef)(ctx);
+	}
+
+	void renderInContext (CGContextRef ctx)
+	{
+		return invokeObjcSelf!(void, "renderInContext:", CGContextRef)(ctx);
+	}
+
+	uint edgeAntialiasingMask ()
+	{
+		return invokeObjcSelf!(uint, "edgeAntialiasingMask");
+	}
+
+	void setEdgeAntialiasingMask (uint arg0)
+	{
+		return invokeObjcSelf!(void, "setEdgeAntialiasingMask:", uint)(arg0);
+	}
+
+	CGColorRef backgroundColor ()
+	{
+		return invokeObjcSelf!(CGColorRef, "backgroundColor");
+	}
+
+	void setBackgroundColor (CGColorRef arg0)
+	{
+		return invokeObjcSelf!(void, "setBackgroundColor:", CGColorRef)(arg0);
+	}
+
+	CGFloat cornerRadius ()
+	{
+		return invokeObjcSelf!(CGFloat, "cornerRadius");
+	}
+
+	void setCornerRadius (CGFloat arg0)
+	{
+		return invokeObjcSelf!(void, "setCornerRadius:", CGFloat)(arg0);
+	}
+
+	CGFloat borderWidth ()
+	{
+		return invokeObjcSelf!(CGFloat, "borderWidth");
+	}
+
+	void setBorderWidth (CGFloat arg0)
+	{
+		return invokeObjcSelf!(void, "setBorderWidth:", CGFloat)(arg0);
+	}
+
+	CGColorRef borderColor ()
+	{
+		return invokeObjcSelf!(CGColorRef, "borderColor");
+	}
+
+	void setBorderColor (CGColorRef arg0)
+	{
+		return invokeObjcSelf!(void, "setBorderColor:", CGColorRef)(arg0);
+	}
+
+	float opacity ()
+	{
+		return invokeObjcSelf!(float, "opacity");
+	}
+
+	void setOpacity (float arg0)
+	{
+		return invokeObjcSelf!(void, "setOpacity:", float)(arg0);
+	}
+
+	Object compositingFilter ()
+	{
+		return invokeObjcSelf!(Object, "compositingFilter");
+	}
+
+	void setCompositingFilter (Object arg0)
+	{
+		return invokeObjcSelf!(void, "setCompositingFilter:", Object)(arg0);
+	}
+
+	CGColorRef shadowColor ()
+	{
+		return invokeObjcSelf!(CGColorRef, "shadowColor");
+	}
+
+	void setShadowColor (CGColorRef arg0)
+	{
+		return invokeObjcSelf!(void, "setShadowColor:", CGColorRef)(arg0);
+	}
+
+	float shadowOpacity ()
+	{
+		return invokeObjcSelf!(float, "shadowOpacity");
+	}
+
+	void setShadowOpacity (float arg0)
+	{
+		return invokeObjcSelf!(void, "setShadowOpacity:", float)(arg0);
+	}
+
+	CGSize shadowOffset ()
+	{
+		return invokeObjcSelf!(CGSize, "shadowOffset");
+	}
+
+	void setShadowOffset (CGSize arg0)
+	{
+		return invokeObjcSelf!(void, "setShadowOffset:", CGSize)(arg0);
+	}
+
+	CGFloat shadowRadius ()
+	{
+		return invokeObjcSelf!(CGFloat, "shadowRadius");
+	}
+
+	void setShadowRadius (CGFloat arg0)
+	{
+		return invokeObjcSelf!(void, "setShadowRadius:", CGFloat)(arg0);
+	}
+
+	uint autoresizingMask ()
+	{
+		return invokeObjcSelf!(uint, "autoresizingMask");
+	}
+
+	void setAutoresizingMask (uint arg0)
+	{
+		return invokeObjcSelf!(void, "setAutoresizingMask:", uint)(arg0);
+	}
+
+	Object layoutManager ()
+	{
+		return invokeObjcSelf!(Object, "layoutManager");
+	}
+
+	void setLayoutManager (Object arg0)
+	{
+		return invokeObjcSelf!(void, "setLayoutManager:", Object)(arg0);
+	}
+
+	CGSize preferredFrameSize ()
+	{
+		return invokeObjcSelf!(CGSize, "preferredFrameSize");
+	}
+
+	void setNeedsLayout ()
+	{
+		return invokeObjcSelf!(void, "setNeedsLayout");
+	}
+
+	void layoutIfNeeded ()
+	{
+		return invokeObjcSelf!(void, "layoutIfNeeded");
+	}
+
+	void layoutSublayers ()
+	{
+		return invokeObjcSelf!(void, "layoutSublayers");
+	}
+
+	void resizeSublayersWithOldSize (CGSize size)
+	{
+		return invokeObjcSelf!(void, "resizeSublayersWithOldSize:", CGSize)(size);
+	}
+
+	void resizeWithOldSuperlayerSize (CGSize size)
+	{
+		return invokeObjcSelf!(void, "resizeWithOldSuperlayerSize:", CGSize)(size);
+	}
+
+	static ICAAction defaultActionForKey (NSString event)
+	{
+		return invokeObjcSelfClass!(ICAAction, "defaultActionForKey:", NSString)(event);
+	}
+
+	ICAAction actionForKey (NSString event)
+	{
+		return invokeObjcSelf!(ICAAction, "actionForKey:", NSString)(event);
+	}
+
+	void addAnimation (CAAnimation anim, NSString key)
+	{
+		return invokeObjcSelf!(void, "addAnimation:forKey:", CAAnimation, NSString)(anim, key);
+	}
+
+	void removeAllAnimations ()
+	{
+		return invokeObjcSelf!(void, "removeAllAnimations");
+	}
+
+	void removeAnimationForKey (NSString key)
+	{
+		return invokeObjcSelf!(void, "removeAnimationForKey:", NSString)(key);
+	}
+
+	CAAnimation animationForKey (NSString key)
+	{
+		return invokeObjcSelf!(CAAnimation, "animationForKey:", NSString)(key);
+	}
+
+	Object delegate_ ()
+	{
+		return invokeObjcSelf!(Object, "delegate");
+	}
+
+	void setDelegate (Object arg0)
+	{
+		return invokeObjcSelf!(void, "setDelegate:", Object)(arg0);
+	}
+
+	double beginTime ()
+	{
+		return invokeObjcSelf!(double, "beginTime");
+	}
+
+	void beginTime (double arg0)
+	{
+		return invokeObjcSelf!(void, "setBeginTime:", double)(arg0);
+	}
+	
+	alias beginTime setBeginTime;
+
+	double duration ()
+	{
+		return invokeObjcSelf!(double, "duration");
+	}
+
+	void duration (double arg0)
+	{
+		return invokeObjcSelf!(void, "setDuration:", double)(arg0);
+	}
+	
+	alias duration setDuration;
+
+	float speed ()
+	{
+		return invokeObjcSelf!(float, "speed");
+	}
+
+	void speed (float arg0)
+	{
+		return invokeObjcSelf!(void, "setSpeed:", float)(arg0);
+	}
+	
+	alias speed setSpeed;
+
+	double timeOffset ()
+	{
+		return invokeObjcSelf!(double, "timeOffset");
+	}
+
+	void timeOffset (double arg0)
+	{
+		return invokeObjcSelf!(void, "setTimeOffset:", double)(arg0);
+	}
+	
+	alias timeOffset setTimeOffset;
+
+	float repeatCount ()
+	{
+		return invokeObjcSelf!(float, "repeatCount");
+	}
+
+	void repeatCount (float arg0)
+	{
+		return invokeObjcSelf!(void, "setRepeatCount:", float)(arg0);
+	}
+	
+	alias repeatCount setRepeatCount;
+
+	double repeatDuration ()
+	{
+		return invokeObjcSelf!(double, "repeatDuration");
+	}
+
+	void repeatDuration (double arg0)
+	{
+		return invokeObjcSelf!(void, "setRepeatDuration:", double)(arg0);
+	}
+	
+	alias repeatDuration setRepeatDuration;
+	
+	NSString fillMode ()
+	{
+		return invokeObjcSelf!(NSString, "fillMode");
+	}
+	
+	void fillMode (NSString mode)
+	{
+		return invokeObjcSelf!(void, "setFillMode:", NSString)(mode);
+	}
+	
+	alias fillMode setFillMode;
+
+	bool autoreverses ()
+	{
+		return invokeObjcSelf!(bool, "autoreverses");
+	}
+
+	void autoreverses (bool arg0)
+	{
+		return invokeObjcSelf!(void, "setAutoreverses:", bool)(arg0);
+	}
+	
+	alias autoreverses setAutoreverses;
+	
+	// CAConstraintLayoutManager
+	void addConstraint (CAConstraint c)
+	{
+		return invokeObjcSelf!(void, "addConstraint:", CAConstraint)(c);
+	}
+	
+	// CALayerScrolling
+	void scrollPoint (CGPoint p)
+	{
+		return invokeObjcSelf!(void, "scrollPoint:", CGPoint)(p);
+	}
+
+	void scrollRectToVisible (CGRect r)
+	{
+		return invokeObjcSelf!(void, "scrollRectToVisible:", CGRect)(r);
+	}
+
+	CGRect visibleRect ()
+	{
+		return invokeObjcSelf!(CGRect, "visibleRect");
+	}
+}
+
+interface ICAAction
+{
+	static Object layer ();
+	NSObject init ();
+	NSObject initWithLayer (Object layer);
+	Object presentationLayer ();
+	Object modelLayer ();
+	static Object defaultValueForKey (NSString key);
+	bool shouldArchiveValueForKey (NSString key);
+	CGRect bounds ();
+	void setBounds (CGRect arg0);
+	CGPoint position ();
+	void setPosition (CGPoint arg0);
+	CGFloat zPosition ();
+	void setZPosition (CGFloat arg0);
+	CGPoint anchorPoint ();
+	void setAnchorPoint (CGPoint arg0);
+	CATransform3D transform ();
+	void setTransform (CATransform3D arg0);
+	CGAffineTransform affineTransform ();
+	void setAffineTransform (CGAffineTransform m);
+	CGRect frame ();
+	void setFrame (CGRect arg0);
+	bool isHidden ();
+	void setHidden (bool arg0);
+	bool isDoubleSided ();
+	void setDoubleSided (bool arg0);
+	void removeFromSuperlayer ();
+	void addSublayer (CALayer layer);
+	void insertSublayer (CALayer layer, uint idx);
+	void insertSublayer (CALayer layer, CALayer sibling);
+	void insertSublayer (CALayer layer, CALayer sibling);
+	void replaceSublayer (CALayer layer, CALayer layer2);
+	CATransform3D sublayerTransform ();
+	void setSublayerTransform (CATransform3D arg0);
+	bool masksToBounds ();
+	void setMasksToBounds (bool arg0);
+	CGPoint convertPoint (CGPoint p, CALayer l);
+	CGPoint convertPoint (CGPoint p, CALayer l);
+	CGRect convertRect (CGRect r, CALayer l);
+	CGRect convertRect (CGRect r, CALayer l);
+	double convertTime (double t, CALayer l);
+	double convertTime (double t, CALayer l);
+	CALayer hitTest (CGPoint p);
+	bool containsPoint (CGPoint p);
+	Object contents ();
+	void setContents (Object arg0);
+	CGRect contentsRect ();
+	void setContentsRect (CGRect arg0);
+	bool isOpaque ();
+	void setOpaque (bool arg0);
+	void display ();
+	void setNeedsDisplay ();
+	void setNeedsDisplayInRect (CGRect r);
+	bool needsDisplayOnBoundsChange ();
+	void setNeedsDisplayOnBoundsChange (bool arg0);
+	void drawInContext (CGContextRef ctx);
+	void renderInContext (CGContextRef ctx);
+	uint edgeAntialiasingMask ();
+	void setEdgeAntialiasingMask (uint arg0);
+	CGColorRef backgroundColor ();
+	void setBackgroundColor (CGColorRef arg0);
+	CGFloat cornerRadius ();
+	void setCornerRadius (CGFloat arg0);
+	CGFloat borderWidth ();
+	void setBorderWidth (CGFloat arg0);
+	CGColorRef borderColor ();
+	void setBorderColor (CGColorRef arg0);
+	float opacity ();
+	void setOpacity (float arg0);
+	Object compositingFilter ();
+	void setCompositingFilter (Object arg0);
+	CGColorRef shadowColor ();
+	void setShadowColor (CGColorRef arg0);
+	float shadowOpacity ();
+	void setShadowOpacity (float arg0);
+	CGSize shadowOffset ();
+	void setShadowOffset (CGSize arg0);
+	CGFloat shadowRadius ();
+	void setShadowRadius (CGFloat arg0);
+	uint autoresizingMask ();
+	void setAutoresizingMask (uint arg0);
+	Object layoutManager ();
+	void setLayoutManager (Object arg0);
+	CGSize preferredFrameSize ();
+	void setNeedsLayout ();
+	void layoutIfNeeded ();
+	void layoutSublayers ();
+	void resizeSublayersWithOldSize (CGSize size);
+	void resizeWithOldSuperlayerSize (CGSize size);
+	static ICAAction defaultActionForKey (NSString event);
+	ICAAction actionForKey (NSString event);
+	void addAnimation (CAAnimation anim, NSString key);
+	void removeAllAnimations ();
+	void removeAnimationForKey (NSString key);
+	CAAnimation animationForKey (NSString key);
+	Object delegate_ ();
+	void setDelegate (Object arg0);
+	void runActionForKey (NSString event, Object anObject, NSDictionary dict);
+}
+
+const TCALayerDelegate = `
+
+	void displayLayer (CALayer layer)
+	{
+		return invokeObjcSelf!(void, "displayLayer:", CALayer)(layer);
+	}
+
+	void drawLayer (CALayer layer, CGContextRef ctx)
+	{
+		return invokeObjcSelf!(void, "drawLayer:inContext:", CALayer, CGContextRef)(layer, ctx);
+	}
+
+	ICAAction actionForLayer (CALayer layer, NSString event)
+	{
+		return invokeObjcSelf!(ICAAction, "actionForLayer:forKey:", CALayer, NSString)(layer, event);
+	}
+
+	//mixin ObjcBindMethod!(displayLayer, "displayLayer:");
+	//mixin ObjcBindMethod!(drawLayer, "drawLayer:inContext:");
+	//mixin ObjcBindMethod!(actionForLayer, "actionForLayer:forKey:");
+
+`;
+
+const TCALayoutManager = `
+
+	CGSize preferredSizeOfLayer (CALayer layer)
+	{
+		return invokeObjcSelf!(CGSize, "preferredSizeOfLayer:", CALayer)(layer);
+	}
+
+	void invalidateLayoutOfLayer (CALayer layer)
+	{
+		return invokeObjcSelf!(void, "invalidateLayoutOfLayer:", CALayer)(layer);
+	}
+
+	void layoutSublayersOfLayer (CALayer layer)
+	{
+		return invokeObjcSelf!(void, "layoutSublayersOfLayer:", CALayer)(layer);
+	}
+
+	//mixin ObjcBindMethod!(preferredSizeOfLayer, "preferredSizeOfLayer:");
+	//mixin ObjcBindMethod!(invalidateLayoutOfLayer, "invalidateLayoutOfLayer:");
+	//mixin ObjcBindMethod!(layoutSublayersOfLayer, "layoutSublayersOfLayer:");
+
+`;
+