diff dstep/quartzcore/CAAnimation.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/CAAnimation.d	Sun Jan 03 22:06:11 2010 +0100
@@ -0,0 +1,841 @@
+/**
+ * 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.CAAnimation;
+
+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.NSObject;
+import dstep.foundation.NSDictionary;
+import dstep.foundation.NSString;
+import dstep.foundation.NSZone;
+import dstep.objc.bridge.Bridge;
+import dstep.objc.objc;
+import dstep.quartzcore.CALayer;
+import dstep.quartzcore.CAMediaTiming;
+import dstep.quartzcore.CAMediaTimingFunction;
+import dstep.quartzcore.CATransform3D;
+
+import bindings = dstep.quartzcore.CAAnimation_bindings;
+
+private
+{
+	NSString kCAAnimationLinear_;
+	NSString kCAAnimationDiscrete_;
+	NSString kCAAnimationPaced_;
+	NSString kCAAnimationRotateAuto_;
+	NSString kCAAnimationRotateAutoReverse_;
+	NSString kCATransitionFade_;
+	NSString kCATransitionMoveIn_;
+	NSString kCATransitionPush_;
+	NSString kCATransitionReveal_;
+	NSString kCATransitionFromRight_;
+	NSString kCATransitionFromLeft_;
+	NSString kCATransitionFromTop_;
+	NSString kCATransitionFromBottom_;
+}
+
+NSString kCAAnimationLinear ()
+{
+	if (kCAAnimationLinear_)
+		return kCAAnimationLinear_;
+
+	return kCAAnimationLinear_ = new NSString(bindings.kCAAnimationLinear);
+}
+
+NSString kCAAnimationDiscrete ()
+{
+	if (kCAAnimationDiscrete_)
+		return kCAAnimationDiscrete_;
+
+	return kCAAnimationDiscrete_ = new NSString(bindings.kCAAnimationDiscrete);
+}
+
+NSString kCAAnimationPaced ()
+{
+	if (kCAAnimationPaced_)
+		return kCAAnimationPaced_;
+
+	return kCAAnimationPaced_ = new NSString(bindings.kCAAnimationPaced);
+}
+
+NSString kCAAnimationRotateAuto ()
+{
+	if (kCAAnimationRotateAuto_)
+		return kCAAnimationRotateAuto_;
+
+	return kCAAnimationRotateAuto_ = new NSString(bindings.kCAAnimationRotateAuto);
+}
+
+NSString kCAAnimationRotateAutoReverse ()
+{
+	if (kCAAnimationRotateAutoReverse_)
+		return kCAAnimationRotateAutoReverse_;
+
+	return kCAAnimationRotateAutoReverse_ = new NSString(bindings.kCAAnimationRotateAutoReverse);
+}
+
+NSString kCATransitionFade ()
+{
+	if (kCATransitionFade_)
+		return kCATransitionFade_;
+
+	return kCATransitionFade_ = new NSString(bindings.kCATransitionFade);
+}
+
+NSString kCATransitionMoveIn ()
+{
+	if (kCATransitionMoveIn_)
+		return kCATransitionMoveIn_;
+
+	return kCATransitionMoveIn_ = new NSString(bindings.kCATransitionMoveIn);
+}
+
+NSString kCATransitionPush ()
+{
+	if (kCATransitionPush_)
+		return kCATransitionPush_;
+
+	return kCATransitionPush_ = new NSString(bindings.kCATransitionPush);
+}
+
+NSString kCATransitionReveal ()
+{
+	if (kCATransitionReveal_)
+		return kCATransitionReveal_;
+
+	return kCATransitionReveal_ = new NSString(bindings.kCATransitionReveal);
+}
+
+NSString kCATransitionFromRight ()
+{
+	if (kCATransitionFromRight_)
+		return kCATransitionFromRight_;
+
+	return kCATransitionFromRight_ = new NSString(bindings.kCATransitionFromRight);
+}
+
+NSString kCATransitionFromLeft ()
+{
+	if (kCATransitionFromLeft_)
+		return kCATransitionFromLeft_;
+
+	return kCATransitionFromLeft_ = new NSString(bindings.kCATransitionFromLeft);
+}
+
+NSString kCATransitionFromTop ()
+{
+	if (kCATransitionFromTop_)
+		return kCATransitionFromTop_;
+
+	return kCATransitionFromTop_ = new NSString(bindings.kCATransitionFromTop);
+}
+
+NSString kCATransitionFromBottom ()
+{
+	if (kCATransitionFromBottom_)
+		return kCATransitionFromBottom_;
+
+	return kCATransitionFromBottom_ = new NSString(bindings.kCATransitionFromBottom);
+}
+
+class CAAnimation : NSObject, INSCoding, INSCopying, ICAMediaTiming, ICAAction
+{
+	mixin (ObjcWrap);
+
+	static Object animation ()
+	{
+		return invokeObjcSelfClass!(Object, "animation");
+	}
+
+	static Object defaultValueForKey (NSString key)
+	{
+		return invokeObjcSelfClass!(Object, "defaultValueForKey:", NSString)(key);
+	}
+
+	bool shouldArchiveValueForKey (NSString key)
+	{
+		return invokeObjcSelf!(bool, "shouldArchiveValueForKey:", NSString)(key);
+	}
+
+	Object delegate_ ()
+	{
+		return invokeObjcSelf!(Object, "delegate");
+	}
+
+	void setDelegate (Object arg0)
+	{
+		return invokeObjcSelf!(void, "setDelegate:", Object)(arg0);
+	}
+
+	bool isRemovedOnCompletion ()
+	{
+		return invokeObjcSelf!(bool, "isRemovedOnCompletion");
+	}
+
+	void setRemovedOnCompletion (bool arg0)
+	{
+		return invokeObjcSelf!(void, "setRemovedOnCompletion:", bool)(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;
+
+	static Object layer ()
+	{
+		return invokeObjcSelfClass!(Object, "layer");
+	}
+
+	CAAnimation init ()
+	{
+		id result = invokeObjcSelf!(id, "init");
+		return result is this.objcObject ? this : (result !is null ? new CAAnimation(result) : null);
+	}
+
+	this ()
+	{
+		super(CAAnimation.alloc.init.objcObject);
+	}
+
+	CAAnimation initWithLayer (Object layer)
+	{
+		id result = invokeObjcSelf!(id, "initWithLayer:", Object)(layer);
+		return result is this.objcObject ? this : (result !is null ? new CAAnimation(result) : null);
+	}
+
+	this (Object layer)
+	{
+		super(CAAnimation.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 (dstep.quartzcore.CALayer.CALayer layer)
+	{
+		return invokeObjcSelf!(void, "addSublayer:", dstep.quartzcore.CALayer.CALayer)(layer);
+	}
+
+	void insertSublayer (dstep.quartzcore.CALayer.CALayer layer, uint idx)
+	{
+		return invokeObjcSelf!(void, "insertSublayer:atIndex:", dstep.quartzcore.CALayer.CALayer, uint)(layer, idx);
+	}
+
+	void insertSublayer (dstep.quartzcore.CALayer.CALayer layer, dstep.quartzcore.CALayer.CALayer sibling)
+	{
+		return invokeObjcSelf!(void, "insertSublayer:below:", dstep.quartzcore.CALayer.CALayer, dstep.quartzcore.CALayer.CALayer)(layer, sibling);
+	}
+
+	void insertSublayer (dstep.quartzcore.CALayer.CALayer layer, dstep.quartzcore.CALayer.CALayer sibling)
+	{
+		return invokeObjcSelf!(void, "insertSublayer:above:", dstep.quartzcore.CALayer.CALayer, dstep.quartzcore.CALayer.CALayer)(layer, sibling);
+	}
+
+	void replaceSublayer (dstep.quartzcore.CALayer.CALayer layer, dstep.quartzcore.CALayer.CALayer layer2)
+	{
+		return invokeObjcSelf!(void, "replaceSublayer:with:", dstep.quartzcore.CALayer.CALayer, dstep.quartzcore.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, dstep.quartzcore.CALayer.CALayer l)
+	{
+		return invokeObjcSelf!(CGPoint, "convertPoint:fromLayer:", CGPoint, dstep.quartzcore.CALayer.CALayer)(p, l);
+	}
+
+	CGPoint convertPoint (CGPoint p, dstep.quartzcore.CALayer.CALayer l)
+	{
+		return invokeObjcSelf!(CGPoint, "convertPoint:toLayer:", CGPoint, dstep.quartzcore.CALayer.CALayer)(p, l);
+	}
+
+	CGRect convertRect (CGRect r, dstep.quartzcore.CALayer.CALayer l)
+	{
+		return invokeObjcSelf!(CGRect, "convertRect:fromLayer:", CGRect, dstep.quartzcore.CALayer.CALayer)(r, l);
+	}
+
+	CGRect convertRect (CGRect r, dstep.quartzcore.CALayer.CALayer l)
+	{
+		return invokeObjcSelf!(CGRect, "convertRect:toLayer:", CGRect, dstep.quartzcore.CALayer.CALayer)(r, l);
+	}
+
+	double convertTime (double t, dstep.quartzcore.CALayer.CALayer l)
+	{
+		return invokeObjcSelf!(double, "convertTime:fromLayer:", double, dstep.quartzcore.CALayer.CALayer)(t, l);
+	}
+
+	double convertTime (double t, dstep.quartzcore.CALayer.CALayer l)
+	{
+		return invokeObjcSelf!(double, "convertTime:toLayer:", double, dstep.quartzcore.CALayer.CALayer)(t, l);
+	}
+
+	dstep.quartzcore.CALayer.CALayer hitTest (CGPoint p)
+	{
+		return invokeObjcSelf!(dstep.quartzcore.CALayer.CALayer, "hitTest:", CGPoint)(p);
+	}
+
+	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);
+	}
+
+	void setDelegate (Object arg0)
+	{
+		return invokeObjcSelf!(void, "setDelegate:", Object)(arg0);
+	}
+	
+	alias setDelegate delegate_;
+
+	void runActionForKey (NSString event, Object anObject, NSDictionary dict)
+	{
+		return invokeObjcSelf!(void, "runActionForKey:object:arguments:", NSString, Object, NSDictionary)(event, anObject, dict);
+	}
+	
+	void encodeWithCoder (NSCoder aCoder)
+	{
+		return invokeObjcSelf!(void, "encodeWithCoder:", NSCoder)(aCoder);
+	}
+	
+	CAAnimation initWithCoder (NSCoder aDecoder)
+	{
+		return invokeObjcSelf!(CAAnimation, "initWithCoder:", NSCoder)(aDecoder);
+	}
+	
+	CAAnimation copyWithZone (NSZone* zone)
+	{
+		return invokeObjcSelf!(CAAnimation, "copyWithZone:", NSZone*)(zone);
+	}
+}
+
+class CAPropertyAnimation : CAAnimation
+{
+	mixin (ObjcWrap);
+
+	static Object animationWithKeyPath (NSString path)
+	{
+		return invokeObjcSelfClass!(Object, "animationWithKeyPath:", NSString)(path);
+	}
+
+	bool isAdditive ()
+	{
+		return invokeObjcSelf!(bool, "isAdditive");
+	}
+
+	void setAdditive (bool arg0)
+	{
+		return invokeObjcSelf!(void, "setAdditive:", bool)(arg0);
+	}
+
+	bool isCumulative ()
+	{
+		return invokeObjcSelf!(bool, "isCumulative");
+	}
+
+	void setCumulative (bool arg0)
+	{
+		return invokeObjcSelf!(void, "setCumulative:", bool)(arg0);
+	}
+}
+
+const TCAAnimationDelegate = `
+
+	void animationDidStart (CAAnimation anim)
+	{
+		return invokeObjcSelf!(void, "animationDidStart:", CAAnimation)(anim);
+	}
+
+	void animationDidStop (CAAnimation anim, bool flag)
+	{
+		return invokeObjcSelf!(void, "animationDidStop:finished:", CAAnimation, bool)(anim, flag);
+	}
+
+	//mixin ObjcBindMethod!(animationDidStart, "animationDidStart:");
+	//mixin ObjcBindMethod!(animationDidStop, "animationDidStop:finished:");
+
+`;
+