Merge "C# CustomView Implementation (C++ wrappers, manual bindings, C# wrappers)...
[platform/core/uifw/dali-toolkit.git] / plugins / dali-swig / manual / csharp / Color.cs
1 namespace Dali {
2
3 using System;
4
5
6 public enum Colors
7 {
8   Red,
9   White,
10   Blue,
11   Green,
12   Black,
13   Grey,
14   Yellow,
15   Azure,
16   Rose
17 }
18
19
20
21 public class Color : Vector4
22        {
23   /**
24    * @brief constructor
25    *
26    * @since 1.0.0
27    */
28            public Color()
29                : base()
30            { }
31   /**
32    * @brief constructor
33    *
34    * @since 1.0.0
35    * @param [in] red The Color r.
36    * @param [in] green The Color g.
37    * @param [in] blue The Color b.
38    * @param [in] alpha The Color a.
39    */
40            public Color(float red, float green, float blue, float alpha)
41                : base(red, green, blue, alpha)
42            { }
43
44   /**
45    * @brief constructor
46    *
47    * @since 1.0.0
48    * @param [in] o The Vector4 having r g b a components
49    */
50           public Color(Vector4 o)
51                : base(o.x, o.y, o.z, o.w)
52           {
53                  
54           }
55
56   /**
57    * @brief constructor
58    *
59    * @since 1.0.0
60    * @param [in] color as string.
61    */
62            public Color(string color)
63                : base(0, 0, 0, 0)
64            {
65                switch (color)
66                {
67                    case "red":
68                        SetColor(255, 0, 0, 255);
69                        break;
70                    case "white":
71                        SetColor(255, 255, 255, 255);
72                        break;
73                    case "blue":
74                        SetColor(0, 0, 255, 255);
75                        break;
76                    case "green":
77                        SetColor(0, 255, 0, 255);
78                        break;
79                    case "black":
80                        SetColor(0, 0, 0, 255);
81                        break;
82                    case "grey":
83                        SetColor(128, 128, 128, 255);
84                        break;
85                    case "yellow":
86                        SetColor(255, 255, 0, 255);
87                        break;
88                    case "azure":
89                        SetColor(0, 255, 255, 255);
90                        break;
91                    case "rose":
92                        SetColor(255, 0, 255, 255);
93                        break;
94                }
95            }
96
97
98   /**
99    * @brief constructor
100    *
101    * @since 1.0.0
102    * @param [in] color as enum Colors.
103    */
104            public Color(Colors color)
105                : base(0, 0, 0, 0)
106            {
107                switch (color)
108                {
109                    case Colors.Red:
110                        SetColor(255, 0, 0, 255);
111                        break;
112                    case Colors.White:
113                        SetColor(255, 255, 255, 255);
114                        break;
115                    case Colors.Blue:
116                        SetColor(0, 0, 255, 255);
117                        break;
118                    case Colors.Green:
119                        SetColor(0, 255, 0, 255);
120                        break;
121                    case Colors.Black:
122                        SetColor(0, 0, 0, 255);
123                        break;
124                    case Colors.Grey:
125                        SetColor(128, 128, 128, 255);
126                        break;
127                    case Colors.Yellow:
128                        SetColor(255, 255, 0, 255);
129                        break;
130                    case Colors.Azure:
131                        SetColor(0, 255, 255, 255);
132                        break;
133                    case Colors.Rose:
134                        SetColor(255, 0, 255, 255);
135                        break;
136                }
137            }
138
139    
140   /**
141    * @brief SetColor
142    *
143    * @since 1.0.0
144    * @param [in] red The Color r.
145    * @param [in] green The Color g.
146    * @param [in] blue The Color b.
147    * @param [in] alpha The Color a.
148    */
149            public void SetColor(float red, float green, float blue, float alpha)
150            { 
151                r = red;
152                g = green;
153                b = blue;
154                a = alpha;
155            }
156
157       /**
158        * @brief name "R", type float (Color's Red component)
159        * @SINCE_1_0.0
160        */
161
162            public float R
163            {
164                get { return r; }
165                set { r = value; }
166            }
167
168       /**
169        * @brief name "G", type float (Color's Green component)
170        * @SINCE_1_0.0
171        */
172            public float G
173            {
174                get { return g; }
175                set { g = value; }
176            }
177
178       /**
179        * @brief name "B", type float (Color's Blue component)
180        * @SINCE_1_0.0
181        */
182            public float B
183            {
184                get { return b; }
185                set { b = value; }
186            }
187
188       /**
189        * @brief name "A", type float (Color's Alpha value)
190        * @SINCE_1_0.0
191        */
192            public float A
193            {
194                get { return a; }
195                set { a = value; }
196            }
197
198   /**
199    * @brief operator+
200    *
201    * @since 1.0.0
202    * @param [in] l The Color to add.
203    * @param [in] r The Color to add
204    * @return A reference to this
205    */
206            public static Color operator +(Color l, Color r)
207            {
208                return new Color(l.R + r.R, l.G + r.G, l.B + r.B, l.A + r.A);
209            }
210
211   /**
212    * @brief operator-
213    *
214    * @since 1.0.0
215    * @param [in] l The Color to substract.
216    * @param [in] r The Color to substract
217    * @return A reference to this
218    */
219            public static Color operator -(Color l, Color r)
220            {
221                return new Color(l.R - r.R, l.G - r.G, l.B - r.B, l.A - r.A);
222            }
223
224   /**
225    * @brief operator*
226    *
227    * @since 1.0.0
228    * @param [in] a The Color to multiply.
229    * @param [in] b The Color to multiply
230    * @return A reference to this
231    */
232            public static Color operator *(Color a, double b)
233            {
234                return new Color((int)(a.R * b), (int)(a.G * b), (int)(a.B * b), (int)(a.A * b));
235            }
236
237   /**
238    * @brief operator/
239    *
240    * @since 1.0.0
241    * @param [in] a The Color to divide.
242    * @param [in] b The Color to divide
243    * @return float value of division operation
244    */
245            public static float operator /(Color a, Color b)
246            {
247                return (float)System.Math.Sqrt((a.R / b.R) * (a.G / b.G) * (a.B / b.B) * (a.A / b.A));
248            }
249
250   /**
251    * @brief Equals
252    *
253    * @since 1.0.0
254    * @param [in] o The Color object to compare.
255    * @param [in] r The Color to add
256    * @return bool, whether object equal or not
257    */
258            public override bool Equals(object obj)
259            {
260                Color l = this;
261                Color r = obj as Color;
262                if (r == null)
263                {
264                    return false;
265                }
266                return l.R == r.R && l.G == r.G && l.B == r.B && l.A == r.A;
267            }
268
269   /**
270    * @brief GetHashCode
271    *
272    * @since 1.0.0
273    * @return int, hascode of Color
274    */
275            public override int GetHashCode()
276            {
277                return base.GetHashCode();
278            }
279
280   /**
281    * @brief Clone
282    *
283    * @since 1.0.0
284    * @return Color object
285    */
286            public Color Clone()
287            {
288                Color copy = new Color(R, G, B, A);
289                return copy;
290            }
291        }
292
293 }