using CPF.Mac.CoreGraphics; using CPF.Mac.Foundation; using CPF.Mac.ObjCRuntime; using System; using System.ComponentModel; namespace CPF.Mac.CoreAnimation { [Register("CAMediaTimingFunction", true)] public class CAMediaTimingFunction : NSObject { private static readonly IntPtr selFunctionWithName_Handle = Selector.GetHandle("functionWithName:"); private static readonly IntPtr selFunctionWithControlPoints_Handle = Selector.GetHandle("functionWithControlPoints::::"); private static readonly IntPtr selInitWithControlPoints_Handle = Selector.GetHandle("initWithControlPoints::::"); private static readonly IntPtr selGetControlPointAtIndexValues_Handle = Selector.GetHandle("getControlPointAtIndex:values:"); private static readonly IntPtr class_ptr = Class.GetHandle("CAMediaTimingFunction"); private static NSString _Linear; private static NSString _EaseIn; private static NSString _EaseOut; private static NSString _EaseInEaseOut; private static NSString _Default; public override IntPtr ClassHandle => class_ptr; [Field("kCAMediaTimingFunctionLinear", "CoreAnimation")] public static NSString Linear { get { if (_Linear == null) { _Linear = Dlfcn.GetStringConstant(Libraries.CoreAnimation.Handle, "kCAMediaTimingFunctionLinear"); } return _Linear; } } [Field("kCAMediaTimingFunctionEaseIn", "CoreAnimation")] public static NSString EaseIn { get { if (_EaseIn == null) { _EaseIn = Dlfcn.GetStringConstant(Libraries.CoreAnimation.Handle, "kCAMediaTimingFunctionEaseIn"); } return _EaseIn; } } [Field("kCAMediaTimingFunctionEaseOut", "CoreAnimation")] public static NSString EaseOut { get { if (_EaseOut == null) { _EaseOut = Dlfcn.GetStringConstant(Libraries.CoreAnimation.Handle, "kCAMediaTimingFunctionEaseOut"); } return _EaseOut; } } [Field("kCAMediaTimingFunctionEaseInEaseOut", "CoreAnimation")] public static NSString EaseInEaseOut { get { if (_EaseInEaseOut == null) { _EaseInEaseOut = Dlfcn.GetStringConstant(Libraries.CoreAnimation.Handle, "kCAMediaTimingFunctionEaseInEaseOut"); } return _EaseInEaseOut; } } [Field("kCAMediaTimingFunctionDefault", "CoreAnimation")] public static NSString Default { get { if (_Default == null) { _Default = Dlfcn.GetStringConstant(Libraries.CoreAnimation.Handle, "kCAMediaTimingFunctionDefault"); } return _Default; } } [Advice("Use FromName(NSString) with one of the CAMediaTimingFunction fields")] public static CAMediaTimingFunction FromName(string name) { using (NSString name2 = new NSString(name)) { return FromName(name2); } } public unsafe CGPoint GetControlPoint(int index) { if (index < 0 || index > 3) { throw new ArgumentOutOfRangeException("index"); } float[] array = new float[2]; fixed (float* value = &array[0]) { GetControlPointAtIndex(index, (IntPtr)(void*)value); } return new CGPoint(array[0], array[1]); } [EditorBrowsable(EditorBrowsableState.Advanced)] [Export("initWithCoder:")] public CAMediaTimingFunction(NSCoder coder) : base(NSObjectFlag.Empty) { if (IsDirectBinding) { base.Handle = Messaging.IntPtr_objc_msgSend_IntPtr(base.Handle, Selector.InitWithCoder, coder.Handle); } else { base.Handle = Messaging.IntPtr_objc_msgSendSuper_IntPtr(base.SuperHandle, Selector.InitWithCoder, coder.Handle); } } [EditorBrowsable(EditorBrowsableState.Advanced)] public CAMediaTimingFunction(NSObjectFlag t) : base(t) { } [EditorBrowsable(EditorBrowsableState.Advanced)] public CAMediaTimingFunction(IntPtr handle) : base(handle) { } [Export("functionWithName:")] public static CAMediaTimingFunction FromName(NSString name) { if (name == null) { throw new ArgumentNullException("name"); } return (CAMediaTimingFunction)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend_IntPtr(class_ptr, selFunctionWithName_Handle, name.Handle)); } [Export("functionWithControlPoints::::")] public static CAMediaTimingFunction FromControlPoints(float c1x, float c1y, float c2x, float c2y) { return (CAMediaTimingFunction)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend_float_float_float_float(class_ptr, selFunctionWithControlPoints_Handle, c1x, c1y, c2x, c2y)); } [Export("initWithControlPoints::::")] public CAMediaTimingFunction(float c1x, float c1y, float c2x, float c2y) : base(NSObjectFlag.Empty) { if (IsDirectBinding) { base.Handle = Messaging.IntPtr_objc_msgSend_float_float_float_float(base.Handle, selInitWithControlPoints_Handle, c1x, c1y, c2x, c2y); } else { base.Handle = Messaging.IntPtr_objc_msgSendSuper_float_float_float_float(base.SuperHandle, selInitWithControlPoints_Handle, c1x, c1y, c2x, c2y); } } [Export("getControlPointAtIndex:values:")] internal virtual void GetControlPointAtIndex(int idx, IntPtr point) { if (IsDirectBinding) { Messaging.void_objc_msgSend_int_IntPtr(base.Handle, selGetControlPointAtIndexValues_Handle, idx, point); } else { Messaging.void_objc_msgSendSuper_int_IntPtr(base.SuperHandle, selGetControlPointAtIndexValues_Handle, idx, point); } } } }