2 * Copyright(c) 2017 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
22 /// Alpha functions are used in animations to specify the rate of change of the animation parameter over time.<br />
23 /// Understanding an animation as a parametric function over time, the alpha function is applied to the parameter of
24 /// the animation before computing the final animation value.
26 /// <since_tizen> 3 </since_tizen>
27 public class AlphaFunction : Disposable
29 /// <summary>swigCMemOwn.</summary>
30 /// <since_tizen> 3 </since_tizen>
31 protected bool swigCMemOwn;
32 private global::System.Runtime.InteropServices.HandleRef swigCPtr;
35 /// The constructor.<br />
36 /// Creates an alpha function object with the user-defined alpha function.<br />
38 /// <param name="func">User defined fuction. It must be a method formatted as float alphafunction(float progress)</param>
39 /// <since_tizen> 3 </since_tizen>
40 public AlphaFunction(System.Delegate func) : this(Interop.AlphaFunction.new_AlphaFunction__SWIG_2(SWIGTYPE_p_f_float__float.getCPtr(new SWIGTYPE_p_f_float__float(System.Runtime.InteropServices.Marshal.GetFunctionPointerForDelegate<System.Delegate>(func), true))), true)
42 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
46 /// The default constructor.<br />
47 /// Creates an alpha function object with the default built-in alpha function.<br />
49 /// <since_tizen> 3 </since_tizen>
50 public AlphaFunction() : this(Interop.AlphaFunction.new_AlphaFunction__SWIG_0(), true)
52 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
56 /// The constructor.<br />
57 /// Creates an alpha function object with the built-in alpha function passed as a parameter to the constructor.<br />
59 /// <param name="function">One of the built-in alpha functions.</param>
60 /// <since_tizen> 3 </since_tizen>
61 public AlphaFunction(AlphaFunction.BuiltinFunctions function) : this(Interop.AlphaFunction.new_AlphaFunction__SWIG_1((int)function), true)
63 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
67 /// The constructor.<br />
68 /// Creates a bezier alpha function. The bezier will have the first point at (0,0) and the end point at (1,1).<br />
70 /// <remarks>The x components of the control points will be clamped to the range [0, 1] to prevent non-monotonic curves.</remarks>
71 /// <param name="controlPoint0">A Vector2 which will be used as the first control point of the curve.</param>
72 /// <param name="controlPoint1">A Vector2 which will be used as the second control point of the curve.</param>
73 /// <since_tizen> 3 </since_tizen>
74 public AlphaFunction(Vector2 controlPoint0, Vector2 controlPoint1) : this(Interop.AlphaFunction.new_AlphaFunction__SWIG_3(Vector2.getCPtr(controlPoint0), Vector2.getCPtr(controlPoint1)), true)
76 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
79 internal AlphaFunction(global::System.IntPtr cPtr, bool cMemoryOwn)
81 swigCMemOwn = cMemoryOwn;
82 swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
85 internal AlphaFunction(SWIGTYPE_p_f_float__float function) : this(Interop.AlphaFunction.new_AlphaFunction__SWIG_2(SWIGTYPE_p_f_float__float.getCPtr(function)), true)
87 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
91 /// This specifies the various types of BuiltinFunctions.
93 /// <since_tizen> 3 </since_tizen>
94 public enum BuiltinFunctions
101 /// No transformation.
109 /// Speeds up and comes to a sudden stop (square).
113 /// Sudden start and slows to a gradual stop (square).
117 /// Speeds up and comes to a sudden stop (cubic).
121 /// Sudden start and slows to a gradual stop (cubic).
125 /// Speeds up and slows to a gradual stop (cubic).
129 /// Speeds up and comes to a sudden stop (sinusoidal).
133 /// Sudden start and slows to a gradual stop (sinusoidal).
137 /// Speeds up and slows to a gradual stop (sinusoidal).
141 /// Sudden start, loses momentum and returns to start position.
145 /// Single revolution.
149 /// Sudden start, exceed end position and return to a gradual stop.
153 /// The count of the BuiltinFunctions enum.
159 /// This specifies which mode is set for AlphaFunction.
161 /// <since_tizen> 3 </since_tizen>
165 /// The user has used a built-in function.
170 /// The user has provided a custom function.
174 /// The user has provided the control points of a bezier curve.
180 /// Retrives the control points of the alpha function.<br />
182 /// <param name="controlPoint0">A Vector2 which will be used as the first control point of the curve.</param>
183 /// <param name="controlPoint1">A Vector2 which will be used as the second control point of the curve.</param>
184 /// <since_tizen> 3 </since_tizen>
185 public void GetBezierControlPoints(out Vector2 controlPoint0, out Vector2 controlPoint1)
187 Vector4 ret = new Vector4(Interop.AlphaFunction.AlphaFunction_GetBezierControlPoints(swigCPtr), true);
188 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
190 controlPoint0 = new Vector2(ret.X, ret.Y);
191 controlPoint1 = new Vector2(ret.Z, ret.W);
195 /// Returns the built-in function used by the alpha function.<br />
196 /// In case no built-in function has been specified, it will return AlphaFunction::DEFAULT.<br />
198 /// <returns>One of the built-in alpha functions.</returns>
199 /// <since_tizen> 3 </since_tizen>
200 public AlphaFunction.BuiltinFunctions GetBuiltinFunction()
202 AlphaFunction.BuiltinFunctions ret = (AlphaFunction.BuiltinFunctions)Interop.AlphaFunction.AlphaFunction_GetBuiltinFunction(swigCPtr);
203 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
208 /// Returns the functioning mode of the alpha function.
210 /// <returns>The functioning mode of the alpha function.</returns>
211 /// <since_tizen> 3 </since_tizen>
212 public AlphaFunction.Modes GetMode()
214 AlphaFunction.Modes ret = (AlphaFunction.Modes)Interop.AlphaFunction.AlphaFunction_GetMode(swigCPtr);
215 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
219 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(AlphaFunction obj)
221 return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
224 internal static string BuiltinToPropertyKey(BuiltinFunctions? alphaFunction)
226 string propertyKey = null;
227 if (alphaFunction != null)
229 switch (alphaFunction)
231 case Tizen.NUI.AlphaFunction.BuiltinFunctions.Linear:
233 propertyKey = "LINEAR";
236 case Tizen.NUI.AlphaFunction.BuiltinFunctions.Reverse:
238 propertyKey = "REVERSE";
241 case Tizen.NUI.AlphaFunction.BuiltinFunctions.EaseInSquare:
243 propertyKey = "EASE_IN_SQUARE";
246 case Tizen.NUI.AlphaFunction.BuiltinFunctions.EaseOutSquare:
248 propertyKey = "EASE_OUT_SQUARE";
251 case Tizen.NUI.AlphaFunction.BuiltinFunctions.EaseIn:
253 propertyKey = "EASE_IN";
256 case Tizen.NUI.AlphaFunction.BuiltinFunctions.EaseOut:
258 propertyKey = "EASE_OUT";
261 case Tizen.NUI.AlphaFunction.BuiltinFunctions.EaseInOut:
263 propertyKey = "EASE_IN_OUT";
266 case Tizen.NUI.AlphaFunction.BuiltinFunctions.EaseInSine:
268 propertyKey = "EASE_IN_SINE";
271 case Tizen.NUI.AlphaFunction.BuiltinFunctions.EaseOutSine:
273 propertyKey = "EASE_OUT_SINE";
276 case Tizen.NUI.AlphaFunction.BuiltinFunctions.EaseInOutSine:
278 propertyKey = "EASE_IN_OUT_SINE";
281 case Tizen.NUI.AlphaFunction.BuiltinFunctions.Bounce:
283 propertyKey = "BOUNCE";
286 case Tizen.NUI.AlphaFunction.BuiltinFunctions.Sin:
291 case Tizen.NUI.AlphaFunction.BuiltinFunctions.EaseOutBack:
293 propertyKey = "EASE_OUT_BACK";
298 propertyKey = "DEFAULT";
306 internal SWIGTYPE_p_f_float__float GetCustomFunction()
308 global::System.IntPtr cPtr = Interop.AlphaFunction.AlphaFunction_GetCustomFunction(swigCPtr);
309 SWIGTYPE_p_f_float__float ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_f_float__float(cPtr, false);
310 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
315 /// To make the AlphaFunction instance be disposed.
317 /// <since_tizen> 3 </since_tizen>
318 protected override void Dispose(DisposeTypes type)
325 //Release your own unmanaged resources here.
326 //You should not access any managed member here except static instance.
327 //because the execution order of Finalizes is non-deterministic.
329 if (swigCPtr.Handle != global::System.IntPtr.Zero)
334 Interop.AlphaFunction.delete_AlphaFunction(swigCPtr);
336 swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);