1 // Copyright (c) 2017 Samsung Electronics Co., Ltd.
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
7 // http://www.apache.org/licenses/LICENSE-2.0
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
16 // This File has been auto-generated by SWIG and then modified using DALi Ruby Scripts
17 // Some have been manually changed
23 /// Alpha functions are used in animations to specify the rate of change of the animation parameter over time.<br>
24 /// Understanding an animation as a parametric function over time, the alpha function is applied to the parameter of
25 /// the animation before computing the final animation value.
27 public class AlphaFunction : global::System.IDisposable
29 private global::System.Runtime.InteropServices.HandleRef swigCPtr;
30 protected bool swigCMemOwn;
32 internal AlphaFunction(global::System.IntPtr cPtr, bool cMemoryOwn)
34 swigCMemOwn = cMemoryOwn;
35 swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
38 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(AlphaFunction obj)
40 return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
43 //A Flag to check who called Dispose(). (By User or DisposeQueue)
44 private bool isDisposeQueued = false;
45 //A Flat to check if it is already disposed.
46 protected bool disposed = false;
52 isDisposeQueued = true;
53 DisposeQueue.Instance.Add(this);
57 /// To make the AlphaFunction instance be disposed.
61 //Throw excpetion if Dispose() is called in separate thread.
62 if (!Window.IsInstalled())
64 throw new System.InvalidOperationException("This API called from separate thread. This API must be called from MainThread.");
69 Dispose(DisposeTypes.Implicit);
73 Dispose(DisposeTypes.Explicit);
74 System.GC.SuppressFinalize(this);
78 protected virtual void Dispose(DisposeTypes type)
85 if(type == DisposeTypes.Explicit)
88 //Release your own managed resources here.
89 //You should release all of your own disposable objects here.
92 //Release your own unmanaged resources here.
93 //You should not access any managed member here except static instance.
94 //because the execution order of Finalizes is non-deterministic.
96 if (swigCPtr.Handle != global::System.IntPtr.Zero)
101 NDalicPINVOKE.delete_AlphaFunction(swigCPtr);
103 swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
109 /// The constructor.<br>
110 /// Creates an alpha function object with the user-defined alpha function.<br>
112 /// <param name="func">User defined fuction. It must be a method formatted as float alphafunction(float progress)</param>
113 public AlphaFunction(System.Delegate func) : this(NDalicPINVOKE.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)
115 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
119 /// The default constructor.<br>
120 /// Creates an alpha function object with the default built-in alpha function.<br>
122 public AlphaFunction() : this(NDalicPINVOKE.new_AlphaFunction__SWIG_0(), true)
124 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
128 /// The constructor.<br>
129 /// Creates an alpha function object with the built-in alpha function passed as a parameter to the constructor.<br>
131 /// <param name="function">One of the built-in alpha functions.</param>
132 public AlphaFunction(AlphaFunction.BuiltinFunctions function) : this(NDalicPINVOKE.new_AlphaFunction__SWIG_1((int)function), true)
134 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
137 internal AlphaFunction(SWIGTYPE_p_f_float__float function) : this(NDalicPINVOKE.new_AlphaFunction__SWIG_2(SWIGTYPE_p_f_float__float.getCPtr(function)), true)
139 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
143 /// The constructor.<br>
144 /// Creates a bezier alpha function. The bezier will have the first point at (0,0) and the end point at (1,1).<br>
146 /// <remarks>The x components of the control points will be clamped to the range [0, 1] to prevent non-monotonic curves.</remarks>
147 /// <param name="controlPoint0">A Vector2 which will be used as the first control point of the curve.</param>
148 /// <param name="controlPoint1">A Vector2 which will be used as the second control point of the curve.</param>
149 public AlphaFunction(Vector2 controlPoint0, Vector2 controlPoint1) : this(NDalicPINVOKE.new_AlphaFunction__SWIG_3(Vector2.getCPtr(controlPoint0), Vector2.getCPtr(controlPoint1)), true)
151 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
155 /// Retrives the control points of the alpha function.<br>
157 /// <param name="controlPoint0">A Vector2 which will be used as the first control point of the curve.</param>
158 /// <param name="controlPoint1">A Vector2 which will be used as the second control point of the curve.</param>
159 public void GetBezierControlPoints(out Vector2 controlPoint0, out Vector2 controlPoint1)
161 Vector4 ret = new Vector4(NDalicPINVOKE.AlphaFunction_GetBezierControlPoints(swigCPtr), true);
162 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
164 controlPoint0 = new Vector2(ret.X, ret.Y);
165 controlPoint1 = new Vector2(ret.Z, ret.W);
168 internal SWIGTYPE_p_f_float__float GetCustomFunction()
170 global::System.IntPtr cPtr = NDalicPINVOKE.AlphaFunction_GetCustomFunction(swigCPtr);
171 SWIGTYPE_p_f_float__float ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_f_float__float(cPtr, false);
172 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
177 /// Returns the built-in function used by the alpha function.<br>
178 /// In case no built-in function has been specified, it will return AlphaFunction::DEFAULT.<br>
180 /// <returns>One of the built-in alpha functions.</returns>
181 public AlphaFunction.BuiltinFunctions GetBuiltinFunction()
183 AlphaFunction.BuiltinFunctions ret = (AlphaFunction.BuiltinFunctions)NDalicPINVOKE.AlphaFunction_GetBuiltinFunction(swigCPtr);
184 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
189 /// Returns the functioning mode of the alpha function.
191 /// <returns>The functioning mode of the alpha function.</returns>
192 public AlphaFunction.Modes GetMode()
194 AlphaFunction.Modes ret = (AlphaFunction.Modes)NDalicPINVOKE.AlphaFunction_GetMode(swigCPtr);
195 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
200 /// This specifies the various types of BuiltinFunctions.
202 public enum BuiltinFunctions
209 /// No transformation.
217 /// Speeds up and comes to a sudden stop (square).
221 /// Sudden start and slows to a gradual stop (square).
225 /// Speeds up and comes to a sudden stop (cubic).
229 /// Sudden start and slows to a gradual stop (cubic).
233 /// Speeds up and slows to a gradual stop (cubic).
237 /// Speeds up and comes to a sudden stop (sinusoidal).
241 /// Sudden start and slows to a gradual stop (sinusoidal).
245 /// Speeds up and slows to a gradual stop (sinusoidal).
249 /// Sudden start, loses momentum and returns to start position.
253 /// Single revolution.
257 /// Sudden start, exceed end position and return to a gradual stop.
264 /// This specifies which mode is set for AlphaFunction.
269 /// The user has used a built-in function.
274 /// The user has provided a custom function.
278 /// The user has provided the control points of a bezier curve.
283 internal static string BuiltinToPropertyKey(BuiltinFunctions? alphaFunction)
285 string propertyKey = null;
286 if (alphaFunction != null)
288 switch (alphaFunction)
290 case Tizen.NUI.AlphaFunction.BuiltinFunctions.Linear:
292 propertyKey = "LINEAR";
295 case Tizen.NUI.AlphaFunction.BuiltinFunctions.Reverse:
297 propertyKey = "REVERSE";
300 case Tizen.NUI.AlphaFunction.BuiltinFunctions.EaseInSquare:
302 propertyKey = "EASE_IN_SQUARE";
305 case Tizen.NUI.AlphaFunction.BuiltinFunctions.EaseOutSquare:
307 propertyKey = "EASE_OUT_SQUARE";
310 case Tizen.NUI.AlphaFunction.BuiltinFunctions.EaseIn:
312 propertyKey = "EASE_IN";
315 case Tizen.NUI.AlphaFunction.BuiltinFunctions.EaseOut:
317 propertyKey = "EASE_OUT";
320 case Tizen.NUI.AlphaFunction.BuiltinFunctions.EaseInOut:
322 propertyKey = "EASE_IN_OUT";
325 case Tizen.NUI.AlphaFunction.BuiltinFunctions.EaseInSine:
327 propertyKey = "EASE_IN_SINE";
330 case Tizen.NUI.AlphaFunction.BuiltinFunctions.EaseOutSine:
332 propertyKey = "EASE_OUT_SINE";
335 case Tizen.NUI.AlphaFunction.BuiltinFunctions.EaseInOutSine:
337 propertyKey = "EASE_IN_OUT_SINE";
340 case Tizen.NUI.AlphaFunction.BuiltinFunctions.Bounce:
342 propertyKey = "BOUNCE";
345 case Tizen.NUI.AlphaFunction.BuiltinFunctions.Sin:
350 case Tizen.NUI.AlphaFunction.BuiltinFunctions.EaseOutBack:
352 propertyKey = "EASE_OUT_BACK";
357 propertyKey = "DEFAULT";