[NUI] Setting since_tizen 3/4 on Tizen.NUI API
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI / src / public / Rotation.cs
index 48d9841..7725b43 100755 (executable)
@@ -1,19 +1,34 @@
-//------------------------------------------------------------------------------
-// <auto-generated />
-//
-// This file was automatically generated by SWIG (http://www.swig.org).
-// Version 3.0.9
-//
-// Do not make changes to this file unless you know what you are doing--modify
-// the SWIG interface file instead.
-//------------------------------------------------------------------------------
+/*
+ * Copyright(c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
 
 namespace Tizen.NUI
 {
 
+    /// <summary>
+    /// The Rotation class.
+    /// </summary>
+    /// <since_tizen> 3 </since_tizen>
     public class Rotation : global::System.IDisposable
     {
         private global::System.Runtime.InteropServices.HandleRef swigCPtr;
+        /// <summary>
+        /// swigCMemOwn
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         protected bool swigCMemOwn;
 
         internal Rotation(global::System.IntPtr cPtr, bool cMemoryOwn)
@@ -27,85 +42,203 @@ namespace Tizen.NUI
             return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
         }
 
+        //A Flag to check who called Dispose(). (By User or DisposeQueue)
+        private bool isDisposeQueued = false;
+        /// <summary>
+        /// A Flat to check if it is already disposed.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        protected bool disposed = false;
+
+        /// <summary>
+        /// Dispose.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         ~Rotation()
         {
-            DisposeQueue.Instance.Add(this);
+            if(!isDisposeQueued)
+            {
+                isDisposeQueued = true;
+                DisposeQueue.Instance.Add(this);
+            }
         }
 
-        public virtual void Dispose()
+        /// <summary>
+        /// To make the Rotation instance be disposed.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        public void Dispose()
         {
-            if (!Stage.IsInstalled())
+            //Throw excpetion if Dispose() is called in separate thread.
+            if (!Window.IsInstalled())
+            {
+                throw new System.InvalidOperationException("This API called from separate thread. This API must be called from MainThread.");
+            }
+
+            if (isDisposeQueued)
+            {
+                Dispose(DisposeTypes.Implicit);
+            }
+            else
+            {
+                Dispose(DisposeTypes.Explicit);
+                System.GC.SuppressFinalize(this);
+            }
+        }
+
+        /// <summary>
+        /// Dispose.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        protected virtual void Dispose(DisposeTypes type)
+        {
+            if (disposed)
             {
-                DisposeQueue.Instance.Add(this);
                 return;
             }
 
-            lock (this)
+            if(type == DisposeTypes.Explicit)
             {
-                if (swigCPtr.Handle != global::System.IntPtr.Zero)
+                //Called by User
+                //Release your own managed resources here.
+                //You should release all of your own disposable objects here.
+            }
+
+            //Release your own unmanaged resources here.
+            //You should not access any managed member here except static instance.
+            //because the execution order of Finalizes is non-deterministic.
+
+            if (swigCPtr.Handle != global::System.IntPtr.Zero)
+            {
+                if (swigCMemOwn)
                 {
-                    if (swigCMemOwn)
-                    {
-                        swigCMemOwn = false;
-                        NDalicPINVOKE.delete_Rotation(swigCPtr);
-                    }
-                    swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
+                    swigCMemOwn = false;
+                    NDalicPINVOKE.delete_Rotation(swigCPtr);
                 }
-                global::System.GC.SuppressFinalize(this);
+                swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
             }
+            disposed = true;
         }
 
-
+        /// <summary>
+        /// The addition operator.
+        /// </summary>
+        /// <param name="arg1">The first rotation.</param>
+        /// <param name="arg2">The second rotation.</param>
+        /// <returns>The rotation containing the result of the addition.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public static Rotation operator +(Rotation arg1, Rotation arg2)
         {
             return arg1.Add(arg2);
         }
 
+        /// <summary>
+        /// The subtraction operator.
+        /// </summary>
+        /// <param name="arg1">The first rotation.</param>
+        /// <param name="arg2">The second rotation.</param>
+        /// <returns>The rotation containing the result of the subtraction.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public static Rotation operator -(Rotation arg1, Rotation arg2)
         {
             return arg1.Subtract(arg2);
         }
 
+        /// <summary>
+        /// The unary negation operator.
+        /// </summary>
+        /// <param name="arg1">The first rotation.</param>
+        /// <returns>The rotation containing the negated result.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public static Rotation operator -(Rotation arg1)
         {
             return arg1.Subtract();
         }
 
+        /// <summary>
+        /// The multiplication operator.
+        /// </summary>
+        /// <param name="arg1">The first rotation.</param>
+        /// <param name="arg2">The second rotation.</param>
+        /// <returns>The rotation containing the result of the multiplication.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public static Rotation operator *(Rotation arg1, Rotation arg2)
         {
             return arg1.Multiply(arg2);
         }
 
+        /// <summary>
+        /// The multiplication operator.
+        /// </summary>
+        /// <param name="arg1">Rotation.</param>
+        /// <param name="arg2">The vector to multiply.</param>
+        /// <returns>The rotation containing the result of the multiplication.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public static Vector3 operator *(Rotation arg1, Vector3 arg2)
         {
             return arg1.Multiply(arg2);
         }
 
+        /// <summary>
+        /// The scale operator.
+        /// </summary>
+        /// <param name="arg1">Rotation.</param>
+        /// <param name="arg2">A value to scale by.</param>
+        /// <returns>The rotation containing the result of scaling.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public static Rotation operator *(Rotation arg1, float arg2)
         {
             return arg1.Multiply(arg2);
         }
 
+        /// <summary>
+        /// The division operator.
+        /// </summary>
+        /// <param name="arg1">The first rotation.</param>
+        /// <param name="arg2">The second rotation.</param>
+        /// <returns>The rotation containing the result of scaling.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public static Rotation operator /(Rotation arg1, Rotation arg2)
         {
             return arg1.Divide(arg2);
         }
 
+        /// <summary>
+        /// The scale operator.
+        /// </summary>
+        /// <param name="arg1">Rotation.</param>
+        /// <param name="arg2">A value to scale by.</param>
+        /// <returns>The rotation containing the result of scaling.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public static Rotation operator /(Rotation arg1, float arg2)
         {
             return arg1.Divide(arg2);
         }
 
+        /// <summary>
+        /// The default constructor.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public Rotation() : this(NDalicPINVOKE.new_Rotation__SWIG_0(), true)
         {
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
+        /// <summary>
+        /// The constructor from an axis and angle.
+        /// </summary>
+        /// <param name="angle">The angle around the axis.</param>
+        /// <param name="axis">The vector of the axis.</param>
+        /// <since_tizen> 3 </since_tizen>
         public Rotation(Radian angle, Vector3 axis) : this(NDalicPINVOKE.new_Rotation__SWIG_1(Radian.getCPtr(angle), Vector3.getCPtr(axis)), true)
         {
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
+        /// <summary>
+        /// (0.0f,0.0f,0.0f,1.0f).
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public static Rotation IDENTITY
         {
             get
@@ -117,6 +250,11 @@ namespace Tizen.NUI
             }
         }
 
+        /// <summary>
+        /// Helper to check if this is an identity quaternion.
+        /// </summary>
+        /// <returns>True if this is identity quaternion.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public bool IsIdentity()
         {
             bool ret = NDalicPINVOKE.Rotation_IsIdentity(swigCPtr);
@@ -124,6 +262,13 @@ namespace Tizen.NUI
             return ret;
         }
 
+        /// <summary>
+        /// Converts the quaternion to an axis or angle pair.
+        /// </summary>
+        /// <param name="axis">The result of an an axis.</param>
+        /// <param name="angle">The result of angle in radians.</param>
+        /// <returns>True if converted correctly.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public bool GetAxisAngle(Vector3 axis, Radian angle)
         {
             bool ret = NDalicPINVOKE.Rotation_GetAxisAngle(swigCPtr, Vector3.getCPtr(axis), Radian.getCPtr(angle));
@@ -236,6 +381,11 @@ namespace Tizen.NUI
             return ret;
         }
 
+        /// <summary>
+        /// Returns the length of the rotation.
+        /// </summary>
+        /// <returns>The length of the rotation.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public float Length()
         {
             float ret = NDalicPINVOKE.Rotation_Length(swigCPtr);
@@ -243,6 +393,11 @@ namespace Tizen.NUI
             return ret;
         }
 
+        /// <summary>
+        /// Returns the squared length of the rotation.
+        /// </summary>
+        /// <returns>The squared length of the rotation.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public float LengthSquared()
         {
             float ret = NDalicPINVOKE.Rotation_LengthSquared(swigCPtr);
@@ -250,12 +405,21 @@ namespace Tizen.NUI
             return ret;
         }
 
+        /// <summary>
+        /// Normalizes this to unit length.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public void Normalize()
         {
             NDalicPINVOKE.Rotation_Normalize(swigCPtr);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
+        /// <summary>
+        /// Normalized.
+        /// </summary>
+        /// <returns>A normalized version of this rotation.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public Rotation Normalized()
         {
             Rotation ret = new Rotation(NDalicPINVOKE.Rotation_Normalized(swigCPtr), true);
@@ -263,18 +427,31 @@ namespace Tizen.NUI
             return ret;
         }
 
+        /// <summary>
+        /// Conjugates this rotation.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public void Conjugate()
         {
             NDalicPINVOKE.Rotation_Conjugate(swigCPtr);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
+        /// <summary>
+        /// Inverts this rotation.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public void Invert()
         {
             NDalicPINVOKE.Rotation_Invert(swigCPtr);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
+        /// <summary>
+        /// Performs the logarithm of a rotation.
+        /// </summary>
+        /// <returns>The rotation representing the logarithm.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public Rotation Log()
         {
             Rotation ret = new Rotation(NDalicPINVOKE.Rotation_Log(swigCPtr), true);
@@ -282,6 +459,11 @@ namespace Tizen.NUI
             return ret;
         }
 
+        /// <summary>
+        /// Performs an exponent.
+        /// </summary>
+        /// <returns>The rotation representing the exponent.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public Rotation Exp()
         {
             Rotation ret = new Rotation(NDalicPINVOKE.Rotation_Exp(swigCPtr), true);
@@ -289,6 +471,13 @@ namespace Tizen.NUI
             return ret;
         }
 
+        /// <summary>
+        /// Returns the dot product of two rotations.
+        /// </summary>
+        /// <param name="q1">The first rotation.</param>
+        /// <param name="q2">The second rotation.</param>
+        /// <returns>The dot product of the two rotations.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public static float Dot(Rotation q1, Rotation q2)
         {
             float ret = NDalicPINVOKE.Rotation_Dot(Rotation.getCPtr(q1), Rotation.getCPtr(q2));
@@ -296,6 +485,14 @@ namespace Tizen.NUI
             return ret;
         }
 
+        /// <summary>
+        /// The linear iterpolation (using a straight line between the two rotations).
+        /// </summary>
+        /// <param name="q1">The start rotation.</param>
+        /// <param name="q2">The end rotation.</param>
+        /// <param name="t">A progress value between 0 and 1.</param>
+        /// <returns>The interpolated rotation.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public static Rotation Lerp(Rotation q1, Rotation q2, float t)
         {
             Rotation ret = new Rotation(NDalicPINVOKE.Rotation_Lerp(Rotation.getCPtr(q1), Rotation.getCPtr(q2), t), true);
@@ -303,6 +500,14 @@ namespace Tizen.NUI
             return ret;
         }
 
+        /// <summary>
+        /// The spherical linear interpolation (using the shortest arc of a great circle between the two rotations).
+        /// </summary>
+        /// <param name="q1">The start rotation.</param>
+        /// <param name="q2">The end rotation.</param>
+        /// <param name="progress">A progress value between 0 and 1.</param>
+        /// <returns>The interpolated rotation.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public static Rotation Slerp(Rotation q1, Rotation q2, float progress)
         {
             Rotation ret = new Rotation(NDalicPINVOKE.Rotation_Slerp(Rotation.getCPtr(q1), Rotation.getCPtr(q2), progress), true);
@@ -310,6 +515,14 @@ namespace Tizen.NUI
             return ret;
         }
 
+        /// <summary>
+        /// This version of slerp, used by squad, does not check for theta > 90.
+        /// </summary>
+        /// <param name="q1">The start rotation.</param>
+        /// <param name="q2">The end rotation.</param>
+        /// <param name="t">A progress value between 0 and 1.</param>
+        /// <returns>The interpolated rotation.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public static Rotation SlerpNoInvert(Rotation q1, Rotation q2, float t)
         {
             Rotation ret = new Rotation(NDalicPINVOKE.Rotation_SlerpNoInvert(Rotation.getCPtr(q1), Rotation.getCPtr(q2), t), true);
@@ -317,6 +530,16 @@ namespace Tizen.NUI
             return ret;
         }
 
+        /// <summary>
+        /// The spherical cubic interpolation.
+        /// </summary>
+        /// <param name="start">The start rotation.</param>
+        /// <param name="end">The end rotation.</param>
+        /// <param name="ctrl1">The control rotation for q1.</param>
+        /// <param name="ctrl2">The control rotation for q2.</param>
+        /// <param name="t">A progress value between 0 and 1.</param>
+        /// <returns>The interpolated rotation.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public static Rotation Squad(Rotation start, Rotation end, Rotation ctrl1, Rotation ctrl2, float t)
         {
             Rotation ret = new Rotation(NDalicPINVOKE.Rotation_Squad(Rotation.getCPtr(start), Rotation.getCPtr(end), Rotation.getCPtr(ctrl1), Rotation.getCPtr(ctrl2), t), true);
@@ -324,6 +547,13 @@ namespace Tizen.NUI
             return ret;
         }
 
+        /// <summary>
+        /// Returns the shortest angle between two rotations in radians.
+        /// </summary>
+        /// <param name="q1">The first rotation.</param>
+        /// <param name="q2">The second rotation.</param>
+        /// <returns>The angle between the two rotation.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public static float AngleBetween(Rotation q1, Rotation q2)
         {
             float ret = NDalicPINVOKE.Rotation_AngleBetween(Rotation.getCPtr(q1), Rotation.getCPtr(q2));
@@ -333,4 +563,4 @@ namespace Tizen.NUI
 
     }
 
-}
+}
\ No newline at end of file