[NUI] sync with dalihub (#746)
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI / src / public / Color.cs
index 1d3d55c..13f59f6 100755 (executable)
-// 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.
-//
-//
-// This File has been auto-generated by SWIG and then modified using DALi Ruby Scripts
-// Some have been manually changed
+/*
+ * 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.
+ *
+ */
+
+using System;
+using Tizen.NUI.Binding;
+using System.ComponentModel;
 
 namespace Tizen.NUI
 {
 
-    using System;
-
     /// <summary>
-    /// Color class.
+    /// The Color class.
     /// </summary>
+    [Tizen.NUI.Binding.TypeConverter(typeof(ColorTypeConverter))]
     public class Color : global::System.IDisposable
     {
-        private global::System.Runtime.InteropServices.HandleRef swigCPtr;
+
+        /// <summary>
+        /// Gets the black colored Color class.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        public static readonly Color Black = new Color(0.0f, 0.0f, 0.0f, 1.0f);
+
+        /// <summary>
+        /// Gets the white colored Color class.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        public static readonly Color White = new Color(1.0f, 1.0f, 1.0f, 1.0f);
+
+        /// <summary>
+        /// Gets the red colored Color class.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        public static readonly Color Red = new Color(1.0f, 0.0f, 0.0f, 1.0f);
+
+        /// <summary>
+        /// Gets the green colored Color class.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        public static readonly Color Green = new Color(0.0f, 1.0f, 0.0f, 1.0f);
+
+        /// <summary>
+        /// Gets the blue colored Color class.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        public static readonly Color Blue = new Color(0.0f, 0.0f, 1.0f, 1.0f);
+
+        /// <summary>
+        /// Gets the yellow colored Color class.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        public static readonly Color Yellow = new Color(1.0f, 1.0f, 0.0f, 1.0f);
+
+        /// <summary>
+        /// Gets the magenta colored Color class.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        public static readonly Color Magenta = new Color(1.0f, 0.0f, 1.0f, 1.0f);
+
+        /// <summary>
+        /// Gets the cyan colored Color class.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        public static readonly Color Cyan = new Color(0.0f, 1.0f, 1.0f, 1.0f);
+
+        /// <summary>
+        /// Gets the  transparent colored Color class.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        public static readonly Color Transparent = new Color(0.0f, 0.0f, 0.0f, 0.0f);
+
+        /// <summary>
+        /// swigCMemOwn
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         protected bool swigCMemOwn;
 
-        internal Color(global::System.IntPtr cPtr, bool cMemoryOwn)
+        /// <summary>
+        /// A Flat to check if it is already disposed.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        protected bool disposed = false;
+
+        private global::System.Runtime.InteropServices.HandleRef swigCPtr;
+        //A Flag to check who called Dispose(). (By User or DisposeQueue)
+        private bool isDisposeQueued = false;
+
+        private readonly bool hashDummy;
+
+        /// <summary>
+        /// Default constructor
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        public Color() : this(NDalicPINVOKE.new_Vector4__SWIG_0(), true)
         {
-            swigCMemOwn = cMemoryOwn;
-            swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
-        internal static global::System.Runtime.InteropServices.HandleRef getCPtr(Color obj)
+
+        /// <summary>
+        /// The constructor.
+        /// </summary>
+        /// <param name="r">The red component.</param>
+        /// <param name="g">The green component.</param>
+        /// <param name="b">The blue component.</param>
+        /// <param name="a">The alpha component.</param>
+        /// <since_tizen> 3 </since_tizen>
+        public Color(float r, float g, float b, float a) : this(NDalicPINVOKE.new_Vector4__SWIG_1(ValueCheck(r), ValueCheck(g), ValueCheck(b), ValueCheck(a)), true)
         {
-            return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
-        //A Flag to check who called Dispose(). (By User or DisposeQueue)
-        private bool isDisposeQueued = false;
-        //A Flat to check if it is already disposed.
-        protected bool disposed = false;
+        /// <summary>
+        /// The conversion constructor from an array of four floats.
+        /// </summary>
+        /// <param name="array">array Array of R,G,B,A.</param>
+        /// <since_tizen> 3 </since_tizen>
+        public Color(float[] array) : this(NDalicPINVOKE.new_Vector4__SWIG_2(ValueCheck(array)), true)
+        {
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+        }
+
+        internal Color(global::System.IntPtr cPtr, bool cMemoryOwn)
+        {
+            swigCMemOwn = cMemoryOwn;
+            swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
+                       hashDummy = false;
+        }
 
+        /// <summary>
+        /// Dispose.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         ~Color()
         {
-            if(!isDisposeQueued)
+            if (!isDisposeQueued)
             {
                 isDisposeQueued = true;
                 DisposeQueue.Instance.Add(this);
@@ -55,191 +155,379 @@ namespace Tizen.NUI
         }
 
         /// <summary>
-        /// To make Color instance be disposed.
+        /// The red component.
         /// </summary>
-        public void Dispose()
+        /// <since_tizen> 3 </since_tizen>
+        public float R
         {
-            //Throw excpetion if Dispose() is called in separate thread.
-            if (!Window.IsInstalled())
+            set
             {
-                throw new System.InvalidOperationException("This API called from separate thread. This API must be called from MainThread.");
+                NDalicPINVOKE.Vector4_r_set(swigCPtr, ValueCheck(value));
+                if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             }
+            get
+            {
+                float ret = NDalicPINVOKE.Vector4_r_get(swigCPtr);
+                if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+                return ret;
+            }
+        }
 
-            if (isDisposeQueued)
+        /// <summary>
+        /// The green component.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        public float G
+        {
+            set
             {
-                Dispose(DisposeTypes.Implicit);
+                NDalicPINVOKE.Vector4_g_set(swigCPtr, ValueCheck(value));
+                if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             }
-            else
+            get
             {
-                Dispose(DisposeTypes.Explicit);
-                System.GC.SuppressFinalize(this);
+                float ret = NDalicPINVOKE.Vector4_g_get(swigCPtr);
+                if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+                return ret;
             }
         }
 
-        protected virtual void Dispose(DisposeTypes type)
+        /// <summary>
+        /// The blue component.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        public float B
         {
-            if (disposed)
+            set
             {
-                return;
+                NDalicPINVOKE.Vector4_b_set(swigCPtr, ValueCheck(value));
+                if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             }
-
-            if(type == DisposeTypes.Explicit)
+            get
             {
-                //Called by User
-                //Release your own managed resources here.
-                //You should release all of your own disposable objects here.
+                float ret = NDalicPINVOKE.Vector4_b_get(swigCPtr);
+                if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+                return ret;
             }
+        }
 
-            //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.
+        /// <summary>
+        /// The alpha component.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        public float A
+        {
+            set
+            {
+                NDalicPINVOKE.Vector4_a_set(swigCPtr, ValueCheck(value));
+                if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+            }
+            get
+            {
+                float ret = NDalicPINVOKE.Vector4_a_get(swigCPtr);
+                if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+                return ret;
+            }
+        }
 
-            if (swigCPtr.Handle != global::System.IntPtr.Zero)
+        /// <summary>
+        /// The array subscript operator overload.
+        /// </summary>
+        /// <param name="index">The subscript index.</param>
+        /// <returns>The float at the given index.</returns>
+        /// <since_tizen> 3 </since_tizen>
+        public float this[uint index]
+        {
+            get
             {
-                if (swigCMemOwn)
-                {
-                    swigCMemOwn = false;
-                    NDalicPINVOKE.delete_Vector4(swigCPtr);
-                }
-                swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
+                return ValueOfIndex(index);
             }
-            disposed = true;
         }
 
         /// <summary>
-        /// Addition operator.
+        /// Converts the Color class to Vector4 class implicitly.
         /// </summary>
-        /// <param name="arg1">First value</param>
-        /// <param name="arg2">Second value</param>
-        /// <returns>A Color containing the result of the addition</returns>
+        /// <param name="color">A color to be converted to Vector4</param>
+        /// <since_tizen> 3 </since_tizen>
+        public static implicit operator Vector4(Color color)
+        {
+            return new Vector4(color.R, color.G, color.B, color.A);
+        }
+
+        /// <summary>
+        /// Converts Vector4 class to Color class implicitly.
+        /// </summary>
+        /// <param name="vec">A Vector4 to be converted to color.</param>
+        /// <since_tizen> 3 </since_tizen>
+        public static implicit operator Color(Vector4 vec)
+        {
+            return new Color(vec.R, vec.G, vec.B, vec.A);
+        }
+
+        /// <summary>
+        /// The addition operator.
+        /// </summary>
+        /// <param name="arg1">The first value.</param>
+        /// <param name="arg2">The second value.</param>
+        /// <returns>The color containing the result of the addition.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public static Color operator +(Color arg1, Color arg2)
         {
             Color result = arg1.Add(arg2);
-            ValueCheck(result);
-            return result;
+            return ValueCheck(result);
         }
 
         /// <summary>
-        /// Subtraction operator.
+        /// The subtraction operator.
         /// </summary>
-        /// <param name="arg1">First value</param>
-        /// <param name="arg2">Second value</param>
-        /// <returns>A Color containing the result of the subtraction</returns>
+        /// <param name="arg1">The first value.</param>
+        /// <param name="arg2">The second value.</param>
+        /// <returns>The color containing the result of the subtraction.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public static Color operator -(Color arg1, Color arg2)
         {
             Color result = arg1.Subtract(arg2);
-            ValueCheck(result);
-            return result;
+            return ValueCheck(result);
         }
 
         /// <summary>
-        /// Unary negation operator.
+        /// The unary negation operator.
         /// </summary>
-        /// <param name="arg1">Target Value</param>
-        /// <returns>A Color containg the negation</returns>
+        /// <param name="arg1">The target value.</param>
+        /// <returns>The color containg the negation.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public static Color operator -(Color arg1)
         {
             Color result = arg1.Subtract();
-            ValueCheck(result);
-            return result;
+            return ValueCheck(result);
         }
 
         /// <summary>
-        /// Multiplication operator.
+        /// The multiplication operator.
         /// </summary>
-        /// <param name="arg1">First Value</param>
-        /// <param name="arg2">Second Value</param>
-        /// <returns>A Color containing the result of the multiplication</returns>
+        /// <param name="arg1">The first value.</param>
+        /// <param name="arg2">The second value.</param>
+        /// <returns>The color containing the result of the multiplication.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public static Color operator *(Color arg1, Color arg2)
         {
             Color result = arg1.Multiply(arg2);
-            ValueCheck(result);
-            return result;
+            return ValueCheck(result);
         }
 
-        public static Color operator*(Color arg1, float arg2)
+        /// <summary>
+        /// The multiplication operator.
+        /// </summary>
+        /// <param name="arg1">The first value.</param>
+        /// <param name="arg2">The second value.</param>
+        /// <returns>The color containing the result of the multiplication.</returns>
+        /// <since_tizen> 3 </since_tizen>
+        public static Color operator *(Color arg1, float arg2)
         {
             Color result = arg1.Multiply(arg2);
-            ValueCheck(result);
-            return result;
+            return ValueCheck(result);
         }
 
         /// <summary>
-        /// Division operator.
+        /// The division operator.
         /// </summary>
-        /// <param name="arg1">First Value</param>
-        /// <param name="arg2">Second Value</param>
-        /// <returns>A Color containing the result of the division</returns>
+        /// <param name="arg1">The first value.</param>
+        /// <param name="arg2">The second value.</param>
+        /// <returns>The color containing the result of the division.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public static Color operator /(Color arg1, Color arg2)
         {
             Color result = arg1.Divide(arg2);
-            ValueCheck(result);
-            return result;
+            return ValueCheck(result);
         }
 
-        public static Color operator/(Color arg1, float arg2)
+        /// <summary>
+        /// The division operator.
+        /// </summary>
+        /// <param name="arg1">The first value.</param>
+        /// <param name="arg2">The second value.</param>
+        /// <returns>The color containing the result of the division.</returns>
+        /// <since_tizen> 3 </since_tizen>
+        public static Color operator /(Color arg1, float arg2)
         {
             Color result = arg1.Divide(arg2);
-            ValueCheck(result);
-            return result;
+            return ValueCheck(result);
         }
 
         /// <summary>
-        /// Array subscript operator overload.
+        /// To make a color instance be disposed.
         /// </summary>
-        /// <param name="index">Subscript index</param>
-        /// <returns>The float at the given index</returns>
-        public float this[uint index]
+        /// <since_tizen> 3 </since_tizen>
+        public void Dispose()
         {
-            get
+            //Throw excpetion if Dispose() is called in separate thread.
+            if (!Window.IsInstalled())
             {
-                return ValueOfIndex(index);
+                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);
             }
         }
 
-        internal static Color GetColorFromPtr(global::System.IntPtr cPtr)
+        /// <summary>
+        /// Checks if two color classes are same.
+        /// </summary>
+        /// <param name="rhs">A color to be compared.</param>
+        /// <returns>If two colors are are same, then true.</returns>
+        /// <since_tizen> 3 </since_tizen>
+        public bool EqualTo(Color rhs)
         {
-            Color ret = new Color(cPtr, false);
+            bool ret = NDalicPINVOKE.Vector4_EqualTo(swigCPtr, Color.getCPtr(rhs));
+
+            if (rhs == null) return false;
+
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
 
         /// <summary>
-        /// Default constructor
+        /// Checks if two color classes are different.
         /// </summary>
-        public Color() : this(NDalicPINVOKE.new_Vector4__SWIG_0(), true)
+        /// <param name="rhs">A color to be compared.</param>
+        /// <returns>If two colors are are different, then true.</returns>
+        /// <since_tizen> 3 </since_tizen>
+        public bool NotEqualTo(Color rhs)
         {
+            bool ret = NDalicPINVOKE.Vector4_NotEqualTo(swigCPtr, Color.getCPtr(rhs));
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+            return ret;
         }
 
+        internal static global::System.Runtime.InteropServices.HandleRef getCPtr(Color obj)
+        {
+            return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
+        }
 
-        /// <summary>
-        /// Constructor.
-        /// </summary>
-        /// <param name="r">red component</param>
-        /// <param name="g">green component</param>
-        /// <param name="b">blue component</param>
-        /// <param name="a">alpha component</param>
-        public Color(float r, float g, float b, float a) : this(NDalicPINVOKE.new_Vector4__SWIG_1(r, g, b, a), true)
+        internal static Color GetColorFromPtr(global::System.IntPtr cPtr)
         {
-            ValueCheck(ref r);
-            ValueCheck(ref g);
-            ValueCheck(ref b);
-            ValueCheck(ref a);
+            Color ret = new Color(cPtr, false);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+            return ret;
+        }
+
+        internal static Color ValueCheck(Color color)
+        {
+            if (color.R < 0.0f)
+            {
+                color.R = 0.0f;
+                NUILog.Error("The value of Result is invalid! Should be between [0, 1].");
+            }
+            else if (color.R > 1.0f)
+            {
+                color.R = 1.0f;
+                NUILog.Error("The value of Result is invalid! Should be between [0, 1].");
+            }
+            if (color.G < 0.0f)
+            {
+                color.G = 0.0f;
+                NUILog.Error("The value of Result is invalid! Should be between [0, 1].");
+            }
+            else if (color.G > 1.0f)
+            {
+                color.G = 1.0f;
+                NUILog.Error("The value of Result is invalid! Should be between [0, 1].");
+            }
+            if (color.B < 0.0f)
+            {
+                color.B = 0.0f;
+                NUILog.Error("The value of Result is invalid! Should be between [0, 1].");
+            }
+            else if (color.B > 1.0f)
+            {
+                color.B = 1.0f;
+                NUILog.Error("The value of Result is invalid! Should be between [0, 1].");
+            }
+            if (color.A < 0.0f)
+            {
+                color.A = 0.0f;
+                NUILog.Error("The value of Result is invalid! Should be between [0, 1].");
+            }
+            else if (color.A > 1.0f)
+            {
+                color.A = 1.0f;
+                NUILog.Error("The value of Result is invalid! Should be between [0, 1].");
+            }
+            return color;
+        }
+
+        internal static float ValueCheck(float value)
+        {
+            if (value < 0.0f)
+            {
+                value = 0.0f;
+                NUILog.Error("The value of Parameters is invalid! Should be between [0, 1].");
+            }
+            else if (value > 1.0f)
+            {
+                value = 1.0f;
+                NUILog.Error("The value of Parameters is invalid! Should be between [0, 1].");
+            }
+            return value;
+        }
+
+        internal static float[] ValueCheck(float[] arr)
+        {
+            for (int i = 0; i < arr.Length; i++)
+            {
+                if (arr[i] < 0.0f)
+                {
+                    arr[i] = 0.0f;
+                    NUILog.Error("The value of Parameters is invalid! Should be between [0, 1].");
+                }
+                else if (arr[i] > 1.0f)
+                {
+                    arr[i] = 1.0f;
+                    NUILog.Error("The value of Parameters is invalid! Should be between [0, 1].");
+                }
+            }
+            return arr;
         }
 
         /// <summary>
-        /// Conversion constructor from an array of four floats.
+        /// Dispose.
         /// </summary>
-        /// <param name="array">array Array of R,G,B,A</param>
-        public Color(float[] array) : this(NDalicPINVOKE.new_Vector4__SWIG_2(array), true)
+        /// <since_tizen> 3 </since_tizen>
+        protected virtual void Dispose(DisposeTypes type)
         {
-            ValueCheck(ref array[0]);
-            ValueCheck(ref array[1]);
-            ValueCheck(ref array[2]);
-            ValueCheck(ref array[3]);
-            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+            if (disposed)
+            {
+                return;
+            }
+
+            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 (swigCMemOwn)
+                {
+                    swigCMemOwn = false;
+                    NDalicPINVOKE.delete_Vector4(swigCPtr);
+                }
+                swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
+            }
+            disposed = true;
         }
 
         private Color Add(Color rhs)
@@ -333,236 +621,60 @@ namespace Tizen.NUI
             return ret;
         }
 
-        /// <summary>
-        /// Check if two Color classes are same.
-        /// </summary>
-        /// <param name="rhs">A Color to be compared</param>
-        /// <returns>If two Colors are are same, then true.</returns>
-        public bool EqualTo(Color rhs)
-        {
-            bool ret = NDalicPINVOKE.Vector4_EqualTo(swigCPtr, Color.getCPtr(rhs));
-
-            if (rhs == null) return false;
-
-            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
-            return ret;
-        }
-
-        /// <summary>
-        /// Check if two Color classes are different.
-        /// </summary>
-        /// <param name="rhs">A Color to be compared</param>
-        /// <returns>If two Colors are are different, then true.</returns>
-        public bool NotEqualTo(Color rhs)
-        {
-            bool ret = NDalicPINVOKE.Vector4_NotEqualTo(swigCPtr, Color.getCPtr(rhs));
-            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
-            return ret;
-        }
-
-
-        private float ValueOfIndex(uint index)
-        {
-            float ret = NDalicPINVOKE.Vector4_ValueOfIndex__SWIG_0(swigCPtr, index);
-            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
-            return ret;
-        }
-
-        /// <summary>
-        /// red component.
-        /// </summary>
-        public float R
+        private static bool EqualsColorValue(float f1, float f2)
         {
-            set
+            float EPS = (float)Math.Abs(f1 * .00001);
+            if(Math.Abs(f1 - f2) <= EPS)
             {
-                ValueCheck(ref value);
-                NDalicPINVOKE.Vector4_r_set(swigCPtr, value);
-                if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+                return true;
             }
-            get
+            else
             {
-                float ret = NDalicPINVOKE.Vector4_r_get(swigCPtr);
-                if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
-                return ret;
+                return false;
             }
         }
 
-        /// <summary>
-        /// green component.
-        /// </summary>
-        public float G
+        private static bool EqualsColor(Color c1, Color c2)
         {
-            set
-            {
-                ValueCheck(ref value);
-                NDalicPINVOKE.Vector4_g_set(swigCPtr, value);
-                if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
-            }
-            get
-            {
-                float ret = NDalicPINVOKE.Vector4_g_get(swigCPtr);
-                if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
-                return ret;
-            }
+            return EqualsColorValue(c1.R, c2.R) && EqualsColorValue(c1.G, c2.G)
+                && EqualsColorValue(c1.B, c2.B) && EqualsColorValue(c1.A, c2.A);
         }
 
         /// <summary>
-        /// blue component.
+        /// Determines whether the specified object is equal to the current object.
         /// </summary>
-        public float B
-        {
-            set
+        /// <param name="obj">The object to compare with the current object.</param>
+        /// <returns>true if the specified object is equal to the current object; otherwise, false.</returns>
+        /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public override bool Equals(System.Object obj)
+        {
+            Color color = obj as Color;
+            bool equal = false;
+            if (color == null)
             {
-                ValueCheck(ref value);
-                NDalicPINVOKE.Vector4_b_set(swigCPtr, value);
-                if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+                return equal;
             }
-            get
-            {
-                float ret = NDalicPINVOKE.Vector4_b_get(swigCPtr);
-                if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
-                return ret;
-            }
-        }
 
-        /// <summary>
-        /// alpha component.
-        /// </summary>
-        public float A
-        {
-            set
-            {
-                ValueCheck(ref value);
-                NDalicPINVOKE.Vector4_a_set(swigCPtr, value);
-                if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
-            }
-            get
+            if (EqualsColor(this, color))
             {
-                float ret = NDalicPINVOKE.Vector4_a_get(swigCPtr);
-                if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
-                return ret;
+                equal = true;
             }
+            return equal;
         }
 
-        /// <summary>
-        /// Get black colored Color class.
-        /// </summary>
-        public static readonly Color Black = new Color(0.0f, 0.0f, 0.0f, 1.0f);
-
-        /// <summary>
-        /// Get white colored Color class.
-        /// </summary>
-        public static readonly Color White = new Color(1.0f, 1.0f, 1.0f, 1.0f);
-
-        /// <summary>
-        /// Get red colored Color class.
-        /// </summary>
-        public static readonly Color Red = new Color(1.0f, 0.0f, 0.0f, 1.0f);
-
-        /// <summary>
-        /// Get green colored Color class.
-        /// </summary>
-        public static readonly Color Green = new Color(0.0f, 1.0f, 0.0f, 1.0f);
-
-        /// <summary>
-        /// Get blue colored Color class.
-        /// </summary>
-        public static readonly Color Blue = new Color(0.0f, 0.0f, 1.0f, 1.0f);
-
-        /// <summary>
-        /// Get yellow colored Color class.
-        /// </summary>
-        public static readonly Color Yellow = new Color(1.0f, 1.0f, 0.0f, 1.0f);
-
-        /// <summary>
-        /// Get magenta colored Color class.
-        /// </summary>
-        public static readonly Color Magenta = new Color(1.0f, 0.0f, 1.0f, 1.0f);
-
-        /// <summary>
-        /// Get cyan colored Color class.
-        /// </summary>
-        public static readonly Color Cyan = new Color(0.0f, 1.0f, 1.0f, 1.0f);
-
-        /// <summary>
-        /// Get transparent colored Color class.
-        /// </summary>
-        public static readonly Color Transparent = new Color(0.0f, 0.0f, 0.0f, 0.0f);
-
-        /// <summary>
-        /// convert Color class to Vector4 class implicitly.
-        /// </summary>
-        /// <param name="color">A Color to be converted to Vector4</param>
-        public static implicit operator Vector4(Color color)
+        /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public override int GetHashCode()
         {
-            return new Vector4(color.R, color.G, color.B, color.A);
-        }
-
-        /// <summary>
-        /// convert Vector4 class to Color class implicitly.
-        /// </summary>
-        /// <param name="vec">A Vector4 to be converted to Color</param></param>
-        public static implicit operator Color(Vector4 vec)
-        {
-            return new Color(vec.R, vec.G, vec.B, vec.A);
-        }
-
-        internal static void ValueCheck(Color color)
-        {
-            if (color.R < 0.0f)
-            {
-                color.R = 0.0f;
-                Tizen.Log.Fatal("NUI", "The value of Result is invalid! Should be between [0, 1].");
-            }
-            else if (color.R > 1.0f)
-            {
-                color.R = 1.0f;
-                Tizen.Log.Fatal("NUI", "The value of Result is invalid! Should be between [0, 1].");
-            }
-            if (color.G < 0.0f)
-            {
-                color.G = 0.0f;
-                Tizen.Log.Fatal("NUI", "The value of Result is invalid! Should be between [0, 1].");
-            }
-            else if (color.G > 1.0f)
-            {
-                color.G = 1.0f;
-                Tizen.Log.Fatal("NUI", "The value of Result is invalid! Should be between [0, 1].");
-            }
-            if (color.B < 0.0f)
-            {
-                color.B = 0.0f;
-                Tizen.Log.Fatal("NUI", "The value of Result is invalid! Should be between [0, 1].");
-            }
-            else if (color.B > 1.0f)
-            {
-                color.B = 1.0f;
-                Tizen.Log.Fatal("NUI", "The value of Result is invalid! Should be between [0, 1].");
-            }
-            if (color.A < 0.0f)
-            {
-                color.A = 0.0f;
-                Tizen.Log.Fatal("NUI", "The value of Result is invalid! Should be between [0, 1].");
-            }
-            else if (color.A > 1.0f)
-            {
-                color.A = 1.0f;
-                Tizen.Log.Fatal("NUI", "The value of Result is invalid! Should be between [0, 1].");
-            }
+            return hashDummy.GetHashCode();
         }
 
-        internal static void ValueCheck(ref float value)
+        private float ValueOfIndex(uint index)
         {
-            if (value < 0.0f)
-            {
-                value = 0.0f;
-                Tizen.Log.Fatal("NUI", "The value of Parameters is invalid! Should be between [0, 1].");
-            }
-            else if (value > 1.0f)
-            {
-                value = 1.0f;
-                Tizen.Log.Fatal("NUI", "The value of Parameters is invalid! Should be between [0, 1].");
-            }
+            float ret = NDalicPINVOKE.Vector4_ValueOfIndex__SWIG_0(swigCPtr, index);
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+            return ret;
         }
 
     }