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 //NUI Dispose Pattern written by Jinwoo Nam(jjw.nam)
45 //A Flag to check who called Dispose(). (By User or DisposeQueue)
46 private bool isDisposeQueued = false;
47 //A Flat to check if it is already disposed.
48 protected bool disposed = false;
54 isDisposeQueued = true;
55 DisposeQueue.Instance.Add(this);
59 /// To make AlphaFunction instance be disposed.
63 //Throw excpetion if Dispose() is called in separate thread.
64 if (!Window.IsInstalled())
66 throw new System.InvalidOperationException("This API called from separate thread. This API must be called from MainThread.");
71 Dispose(DisposeTypes.Implicit);
75 Dispose(DisposeTypes.Explicit);
76 System.GC.SuppressFinalize(this);
80 protected virtual void Dispose(DisposeTypes type)
87 if(type == DisposeTypes.Explicit)
90 //Release your own managed resources here.
91 //You should release all of your own disposable objects here.
94 //Release your own unmanaged resources here.
95 //You should not access any managed member here except static instance.
96 //because the execution order of Finalizes is non-deterministic.
98 if (swigCPtr.Handle != global::System.IntPtr.Zero)
103 NDalicPINVOKE.delete_AlphaFunction(swigCPtr);
105 swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
112 /// Creates an alpha function object with user defined alpha function.<br>
114 /// <param name="func">User defined fuction. It must be a method formatted as float alphafunction(float progress)</param>
115 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(func), true))), true)
117 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
121 /// Default constructor.<br>
122 /// Creates an alpha function object with the default built-in alpha function.<br>
124 public AlphaFunction() : this(NDalicPINVOKE.new_AlphaFunction__SWIG_0(), true)
126 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
131 /// Creates an alpha function object with the built-in alpha function passed as a parameter to the constructor.<br>
133 /// <param name="function">One of the built-in alpha functions</param>
134 public AlphaFunction(AlphaFunction.BuiltinFunctions function) : this(NDalicPINVOKE.new_AlphaFunction__SWIG_1((int)function), true)
136 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
139 internal AlphaFunction(SWIGTYPE_p_f_float__float function) : this(NDalicPINVOKE.new_AlphaFunction__SWIG_2(SWIGTYPE_p_f_float__float.getCPtr(function)), true)
141 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
146 /// Creates a bezier alpha function.The bezier will have the first point at(0,0) and the end point at(1,1).<br>
148 /// <remarks>The x components of the control points will be clamped to the range[0, 1] to prevent non monotonic curves.</remarks>
149 /// <param name="controlPoint0">A Vector2 which will be used as the first control point of the curve</param>
150 /// <param name="controlPoint1">A Vector2 which will be used as the second control point of the curve</param>
151 public AlphaFunction(Vector2 controlPoint0, Vector2 controlPoint1) : this(NDalicPINVOKE.new_AlphaFunction__SWIG_3(Vector2.getCPtr(controlPoint0), Vector2.getCPtr(controlPoint1)), true)
153 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
157 /// Retrives the control points of the alpha function.<br>
159 /// <param name="controlPoint0">A Vector2 which is used as the first control point of the curve</param>
160 /// <param name="controlPoint1">A Vector2 which is used as the second control point of the curve</param>
161 public void GetBezierControlPoints(out Vector2 controlPoint0, out Vector2 controlPoint1)
163 Vector4 ret = new Vector4(NDalicPINVOKE.AlphaFunction_GetBezierControlPoints(swigCPtr), true);
164 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
166 controlPoint0 = new Vector2(ret.X, ret.Y);
167 controlPoint1 = new Vector2(ret.Z, ret.W);
170 internal SWIGTYPE_p_f_float__float GetCustomFunction()
172 global::System.IntPtr cPtr = NDalicPINVOKE.AlphaFunction_GetCustomFunction(swigCPtr);
173 SWIGTYPE_p_f_float__float ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_f_float__float(cPtr, false);
174 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
179 /// Returns the built-in function used by the alpha function.<br>
180 /// In case no built-in function has been specified, it will return AlphaFunction::DEFAULT.<br>
182 /// <returns>One of the built-in alpha functions.</returns>
183 public AlphaFunction.BuiltinFunctions GetBuiltinFunction()
185 AlphaFunction.BuiltinFunctions ret = (AlphaFunction.BuiltinFunctions)NDalicPINVOKE.AlphaFunction_GetBuiltinFunction(swigCPtr);
186 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
191 /// Returns the functioning mode of the alpha function
193 /// <returns>The functioning mode of the alpha function</returns>
194 public AlphaFunction.Modes GetMode()
196 AlphaFunction.Modes ret = (AlphaFunction.Modes)NDalicPINVOKE.AlphaFunction_GetMode(swigCPtr);
197 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
202 /// This specifies the various types of BuiltinFunctions
204 public enum BuiltinFunctions
211 /// No transformation
219 /// Speeds up and comes to a sudden stop (Square)
223 /// Sudden start and slows to a gradual stop (Square)
227 /// Speeds up and comes to a sudden stop (Cubic)
231 /// Sudden start and slows to a gradual stop (Cubic)
235 /// Speeds up and slows to a gradual stop (Cubic)
239 /// Speeds up and comes to a sudden stop (sinusoidal)
243 /// Sudden start and slows to a gradual stop (sinusoidal)
247 /// Speeds up and slows to a gradual stop (sinusoidal)
251 /// Sudden start, loses momentum and returns to start position
255 /// Single revolution
259 /// Sudden start, exceed end position and return to a gradual stop
266 /// This specifies which mode is set for AlphaFuction
271 /// The user has used a built-in function.
276 /// The user has provided a custom function
280 /// The user has provided the control points of a bezier curve
285 internal static string BuiltinToPropertyKey(BuiltinFunctions? alphaFunction)
287 string propertyKey = null;
288 if (alphaFunction != null)
290 switch (alphaFunction)
292 case Tizen.NUI.AlphaFunction.BuiltinFunctions.Linear:
294 propertyKey = "LINEAR";
297 case Tizen.NUI.AlphaFunction.BuiltinFunctions.Reverse:
299 propertyKey = "REVERSE";
302 case Tizen.NUI.AlphaFunction.BuiltinFunctions.EaseInSquare:
304 propertyKey = "EASE_IN_SQUARE";
307 case Tizen.NUI.AlphaFunction.BuiltinFunctions.EaseOutSquare:
309 propertyKey = "EASE_OUT_SQUARE";
312 case Tizen.NUI.AlphaFunction.BuiltinFunctions.EaseIn:
314 propertyKey = "EASE_IN";
317 case Tizen.NUI.AlphaFunction.BuiltinFunctions.EaseOut:
319 propertyKey = "EASE_OUT";
322 case Tizen.NUI.AlphaFunction.BuiltinFunctions.EaseInOut:
324 propertyKey = "EASE_IN_OUT";
327 case Tizen.NUI.AlphaFunction.BuiltinFunctions.EaseInSine:
329 propertyKey = "EASE_IN_SINE";
332 case Tizen.NUI.AlphaFunction.BuiltinFunctions.EaseOutSine:
334 propertyKey = "EASE_OUT_SINE";
337 case Tizen.NUI.AlphaFunction.BuiltinFunctions.EaseInOutSine:
339 propertyKey = "EASE_IN_OUT_SINE";
342 case Tizen.NUI.AlphaFunction.BuiltinFunctions.Bounce:
344 propertyKey = "BOUNCE";
347 case Tizen.NUI.AlphaFunction.BuiltinFunctions.Sin:
352 case Tizen.NUI.AlphaFunction.BuiltinFunctions.EaseOutBack:
354 propertyKey = "EASE_OUT_BACK";
359 propertyKey = "DEFAULT";