[NUI] Setting since_tizen 3/4 on Tizen.NUI API
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI / src / public / Rotation.cs
old mode 100644 (file)
new mode 100755 (executable)
index a34fc28..7725b43
@@ -1,22 +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>
-    /// Rotation Class
+    /// 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)
@@ -30,145 +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);
+            }
         }
 
         /// <summary>
-        /// To make Rotation instance be disposed.
+        /// To make the Rotation instance be disposed.
         /// </summary>
-        public virtual void Dispose()
+        /// <since_tizen> 3 </since_tizen>
+        public void Dispose()
         {
+            //Throw excpetion if Dispose() is called in separate thread.
             if (!Window.IsInstalled())
             {
-                DisposeQueue.Instance.Add(this);
+                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)
+            {
                 return;
             }
 
-            lock (this)
+            if(type == DisposeTypes.Explicit)
+            {
+                //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 (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>
-        /// Addition operator.
+        /// The addition operator.
         /// </summary>
-        /// <param name="arg1">First Rotation</param>
-        /// <param name="arg2">Second Rotation</param>
-        /// <returns>A Rotation containing the result of the Addition</returns>
+        /// <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>
-        /// Subtraction operator.
+        /// The subtraction operator.
         /// </summary>
-        /// <param name="arg1">First Rotation</param>
-        /// <param name="arg2">Second Rotation</param>
-        /// <returns>A Rotation containing the result of the subtract</returns>
+        /// <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>
-        /// Unary Negation operator.
+        /// The unary negation operator.
         /// </summary>
-        /// <param name="arg1">First Rotation</param>
-        /// <returns>A Rotation containing the negated result</returns>
+        /// <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>
-        /// Multiplication operator.
+        /// The multiplication operator.
         /// </summary>
-        /// <param name="arg1">First Rotation</param>
-        /// <param name="arg2">Second Rotation</param>
-        /// <returns>A Rotation containing the result of the Multiplication</returns>
+        /// <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>
-        /// Multiplication operator.
+        /// The multiplication operator.
         /// </summary>
-        /// <param name="arg1">Rotation</param>
-        /// <param name="arg2">The vector to multiply</param>
-        /// <returns>A Rotation containing the result of the multiplication</returns>
+        /// <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>
-        /// Scale operator.
+        /// The scale operator.
         /// </summary>
-        /// <param name="arg1">Rotation</param>
-        /// <param name="arg2">A value to scale by</param>
-        /// <returns>A Rotation containing the result of the scaling</returns>
+        /// <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>
-        /// Division operator.
+        /// The division operator.
         /// </summary>
-        /// <param name="arg1">First Rotation</param>
-        /// <param name="arg2">Second Rotation</param>
-        /// <returns>A Rotation containing the result of the scaling</returns>
+        /// <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>
-        /// Scale operator.
+        /// The scale operator.
         /// </summary>
-        /// <param name="arg1">Rotation</param>
-        /// <param name="arg2">A value to scale by</param>
-        /// <returns>A Rotation containing the result of the scaling</returns>
+        /// <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>
-        /// Default Constructor.
+        /// 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>
-        /// Constructor from an axis and angle.
+        /// 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>
+        /// <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)
+        /// (0.0f,0.0f,0.0f,1.0f).
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public static Rotation IDENTITY
         {
             get
@@ -183,7 +253,8 @@ namespace Tizen.NUI
         /// <summary>
         /// Helper to check if this is an identity quaternion.
         /// </summary>
-        /// <returns>True if this is identity quaternion</returns>
+        /// <returns>True if this is identity quaternion.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public bool IsIdentity()
         {
             bool ret = NDalicPINVOKE.Rotation_IsIdentity(swigCPtr);
@@ -192,11 +263,12 @@ namespace Tizen.NUI
         }
 
         /// <summary>
-        /// Converts the quaternion to an axis/angle pair.
+        /// Converts the quaternion to an axis or angle pair.
         /// </summary>
-        /// <param name="axis">the result of axis</param>
-        /// <param name="angle">the result of angle Angle in radians</param>
-        /// <returns>True if converted correctly</returns>
+        /// <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));
@@ -310,9 +382,10 @@ namespace Tizen.NUI
         }
 
         /// <summary>
-        /// Returns the length of the rotation
+        /// Returns the length of the rotation.
         /// </summary>
-        /// <returns>The length of the rotation</returns>
+        /// <returns>The length of the rotation.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public float Length()
         {
             float ret = NDalicPINVOKE.Rotation_Length(swigCPtr);
@@ -321,9 +394,10 @@ namespace Tizen.NUI
         }
 
         /// <summary>
-        /// Returns the squared length of the rotation
+        /// Returns the squared length of the rotation.
         /// </summary>
-        /// <returns>The squared length of the rotation</returns>
+        /// <returns>The squared length of the rotation.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public float LengthSquared()
         {
             float ret = NDalicPINVOKE.Rotation_LengthSquared(swigCPtr);
@@ -334,6 +408,7 @@ namespace Tizen.NUI
         /// <summary>
         /// Normalizes this to unit length.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public void Normalize()
         {
             NDalicPINVOKE.Rotation_Normalize(swigCPtr);
@@ -343,7 +418,8 @@ namespace Tizen.NUI
         /// <summary>
         /// Normalized.
         /// </summary>
-        /// <returns>A normalized version of this rotation</returns>
+        /// <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);
@@ -354,6 +430,7 @@ namespace Tizen.NUI
         /// <summary>
         /// Conjugates this rotation.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public void Conjugate()
         {
             NDalicPINVOKE.Rotation_Conjugate(swigCPtr);
@@ -363,6 +440,7 @@ namespace Tizen.NUI
         /// <summary>
         /// Inverts this rotation.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public void Invert()
         {
             NDalicPINVOKE.Rotation_Invert(swigCPtr);
@@ -370,9 +448,10 @@ namespace Tizen.NUI
         }
 
         /// <summary>
-        /// Performs the logarithm of a rotation
+        /// Performs the logarithm of a rotation.
         /// </summary>
-        /// <returns>A rotation representing the logarithm</returns>
+        /// <returns>The rotation representing the logarithm.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public Rotation Log()
         {
             Rotation ret = new Rotation(NDalicPINVOKE.Rotation_Log(swigCPtr), true);
@@ -381,9 +460,10 @@ namespace Tizen.NUI
         }
 
         /// <summary>
-        /// Performs an exponent
+        /// Performs an exponent.
         /// </summary>
-        /// <returns>A rotation representing the exponent</returns>
+        /// <returns>The rotation representing the exponent.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public Rotation Exp()
         {
             Rotation ret = new Rotation(NDalicPINVOKE.Rotation_Exp(swigCPtr), true);
@@ -394,9 +474,10 @@ namespace Tizen.NUI
         /// <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>
+        /// <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));
@@ -405,12 +486,13 @@ namespace Tizen.NUI
         }
 
         /// <summary>
-        /// Linear Interpolation (using a straight line between the two rotations).
+        /// 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>
+        /// <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);
@@ -419,12 +501,13 @@ namespace Tizen.NUI
         }
 
         /// <summary>
-        /// Spherical Linear Interpolation (using the shortest arc of a great circle between the two rotations).
+        /// 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>
+        /// <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);
@@ -433,12 +516,13 @@ namespace Tizen.NUI
         }
 
         /// <summary>
-        /// This version of Slerp, used by Squad, does not check for theta > 90.
+        /// 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>
+        /// <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);
@@ -447,14 +531,15 @@ namespace Tizen.NUI
         }
 
         /// <summary>
-        /// Spherical Cubic Interpolation.
+        /// 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>
+        /// <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);
@@ -463,11 +548,12 @@ namespace Tizen.NUI
         }
 
         /// <summary>
-        /// Returns the shortest angle between two rotations in Radians.
+        /// 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>
+        /// <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));
@@ -477,4 +563,4 @@ namespace Tizen.NUI
 
     }
 
-}
+}
\ No newline at end of file