namespace Dali {
- namespace CSharp {
- using System;
+using System;
- public enum Colors
- {
- Red,
- White,
- Blue,
- Green,
- Black,
- Grey,
- Yellow,
- Azure,
- Rose
- }
- public class Color
- {
+public enum Colors
+{
+ Red,
+ White,
+ Blue,
+ Green,
+ Black,
+ Grey,
+ Yellow,
+ Azure,
+ Rose
+}
- public float[] v;
- /**
- * @brief constructor
- *
- * @since 1.0.0
- */
- public Color()
- {
- v = new float[4];
- }
- /**
- * @brief constructor
- *
- * @since 1.0.0
- * @param [in] red The Color r.
- * @param [in] green The Color g.
- * @param [in] blue The Color b.
- * @param [in] alpha The Color a.
- */
- public Color(float red, float green, float blue, float alpha):this()
- {
- v[0] = red;
- v[1] = green;
- v[2] = blue;
- v[3] = alpha;
- }
+public class Color : Vector4
+ {
+ /**
+ * @brief constructor
+ *
+ * @since 1.0.0
+ */
+ public Color()
+ : base()
+ { }
+ /**
+ * @brief constructor
+ *
+ * @since 1.0.0
+ * @param [in] red The Color r.
+ * @param [in] green The Color g.
+ * @param [in] blue The Color b.
+ * @param [in] alpha The Color a.
+ */
+ public Color(float red, float green, float blue, float alpha)
+ : base(red, green, blue, alpha)
+ { }
+ /**
+ * @brief constructor
+ *
+ * @since 1.0.0
+ * @param [in] o The Vector4 having r g b a components
+ */
+ public Color(Vector4 o)
+ : base(o.x, o.y, o.z, o.w)
+ {
+
+ }
- /**
- * @brief constructor
- *
- * @since 1.0.0
- * @param [in] color as enum Colors.
- */
- public Color(Colors color)
- : this(0, 0, 0, 0)
- {
- switch (color)
- {
- case Colors.Red:
- SetColor(255, 0, 0, 255);
- break;
- case Colors.White:
- SetColor(255, 255, 255, 255);
- break;
- case Colors.Blue:
- SetColor(0, 0, 255, 255);
- break;
- case Colors.Green:
- SetColor(0, 255, 0, 255);
- break;
- case Colors.Black:
- SetColor(0, 0, 0, 255);
- break;
- case Colors.Grey:
- SetColor(128, 128, 128, 255);
- break;
- case Colors.Yellow:
- SetColor(255, 255, 0, 255);
- break;
- case Colors.Azure:
- SetColor(0, 255, 255, 255);
- break;
- case Colors.Rose:
- SetColor(255, 0, 255, 255);
- break;
- }
- }
+ /**
+ * @brief constructor
+ *
+ * @since 1.0.0
+ * @param [in] color as string.
+ */
+ public Color(string color)
+ : base(0, 0, 0, 0)
+ {
+ switch (color)
+ {
+ case "red":
+ SetColor(255, 0, 0, 255);
+ break;
+ case "white":
+ SetColor(255, 255, 255, 255);
+ break;
+ case "blue":
+ SetColor(0, 0, 255, 255);
+ break;
+ case "green":
+ SetColor(0, 255, 0, 255);
+ break;
+ case "black":
+ SetColor(0, 0, 0, 255);
+ break;
+ case "grey":
+ SetColor(128, 128, 128, 255);
+ break;
+ case "yellow":
+ SetColor(255, 255, 0, 255);
+ break;
+ case "azure":
+ SetColor(0, 255, 255, 255);
+ break;
+ case "rose":
+ SetColor(255, 0, 255, 255);
+ break;
+ }
+ }
+ /**
+ * @brief constructor
+ *
+ * @since 1.0.0
+ * @param [in] color as enum Colors.
+ */
+ public Color(Colors color)
+ : base(0, 0, 0, 0)
+ {
+ switch (color)
+ {
+ case Colors.Red:
+ SetColor(255, 0, 0, 255);
+ break;
+ case Colors.White:
+ SetColor(255, 255, 255, 255);
+ break;
+ case Colors.Blue:
+ SetColor(0, 0, 255, 255);
+ break;
+ case Colors.Green:
+ SetColor(0, 255, 0, 255);
+ break;
+ case Colors.Black:
+ SetColor(0, 0, 0, 255);
+ break;
+ case Colors.Grey:
+ SetColor(128, 128, 128, 255);
+ break;
+ case Colors.Yellow:
+ SetColor(255, 255, 0, 255);
+ break;
+ case Colors.Azure:
+ SetColor(0, 255, 255, 255);
+ break;
+ case Colors.Rose:
+ SetColor(255, 0, 255, 255);
+ break;
+ }
+ }
- /**
- * @brief SetColor
- *
- * @since 1.0.0
- * @param [in] red The Color r.
- * @param [in] green The Color g.
- * @param [in] blue The Color b.
- * @param [in] alpha The Color a.
- */
- public void SetColor(float red, float green, float blue, float alpha)
- {
- R = red;
- G = green;
- B = blue;
- A = alpha;
- }
+
+ /**
+ * @brief SetColor
+ *
+ * @since 1.0.0
+ * @param [in] red The Color r.
+ * @param [in] green The Color g.
+ * @param [in] blue The Color b.
+ * @param [in] alpha The Color a.
+ */
+ public void SetColor(float red, float green, float blue, float alpha)
+ {
+ r = red;
+ g = green;
+ b = blue;
+ a = alpha;
+ }
/**
* @brief name "R", type float (Color's Red component)
* @SINCE_1_0.0
*/
- public float R
- {
- get { return v[0]; }
- set { v[0] = value; }
- }
+ public float R
+ {
+ get { return r; }
+ set { r = value; }
+ }
/**
* @brief name "G", type float (Color's Green component)
* @SINCE_1_0.0
*/
- public float G
- {
- get { return v[1]; }
- set { v[1] = value; }
- }
+ public float G
+ {
+ get { return g; }
+ set { g = value; }
+ }
/**
* @brief name "B", type float (Color's Blue component)
* @SINCE_1_0.0
*/
- public float B
- {
- get { return v[2]; }
- set { v[2] = value; }
- }
+ public float B
+ {
+ get { return b; }
+ set { b = value; }
+ }
/**
* @brief name "A", type float (Color's Alpha value)
* @SINCE_1_0.0
*/
- public float A
- {
- get { return v[3]; }
- set { v[3] = value; }
- }
+ public float A
+ {
+ get { return a; }
+ set { a = value; }
+ }
- /**
- * @brief operator+
- *
- * @since 1.0.0
- * @param [in] l The Color to add.
- * @param [in] r The Color to add
- * @return A reference to this
- */
- public static Color operator +(Color l, Color r)
- {
- return new Color(l.R + r.R, l.G + r.G, l.B + r.B, l.A + r.A);
- }
+ /**
+ * @brief operator+
+ *
+ * @since 1.0.0
+ * @param [in] l The Color to add.
+ * @param [in] r The Color to add
+ * @return A reference to this
+ */
+ public static Color operator +(Color l, Color r)
+ {
+ return new Color(l.R + r.R, l.G + r.G, l.B + r.B, l.A + r.A);
+ }
- /**
- * @brief operator-
- *
- * @since 1.0.0
- * @param [in] l The Color to substract.
- * @param [in] r The Color to substract
- * @return A reference to this
- */
- public static Color operator -(Color l, Color r)
- {
- return new Color(l.R - r.R, l.G - r.G, l.B - r.B, l.A - r.A);
- }
+ /**
+ * @brief operator-
+ *
+ * @since 1.0.0
+ * @param [in] l The Color to substract.
+ * @param [in] r The Color to substract
+ * @return A reference to this
+ */
+ public static Color operator -(Color l, Color r)
+ {
+ return new Color(l.R - r.R, l.G - r.G, l.B - r.B, l.A - r.A);
+ }
- /**
- * @brief operator*
- *
- * @since 1.0.0
- * @param [in] a The Color to multiply.
- * @param [in] b The Color to multiply
- * @return A reference to this
- */
- public static Color operator *(Color a, double b)
- {
- return new Color((float)(a.R * b),(float)(a.G * b), (float)(a.B * b), (float)(a.A * b));
- }
+ /**
+ * @brief operator*
+ *
+ * @since 1.0.0
+ * @param [in] a The Color to multiply.
+ * @param [in] b The Color to multiply
+ * @return A reference to this
+ */
+ public static Color operator *(Color a, double b)
+ {
+ return new Color((int)(a.R * b), (int)(a.G * b), (int)(a.B * b), (int)(a.A * b));
+ }
- /**
- * @brief operator/
- *
- * @since 1.0.0
- * @param [in] a The Color to divide.
- * @param [in] b The Color to divide
- * @return float value of division operation
- */
- public static float operator /(Color a, Color b)
- {
- return (float)System.Math.Sqrt((a.R / b.R) * (a.G / b.G) * (a.B / b.B) * (a.A / b.A));
- }
+ /**
+ * @brief operator/
+ *
+ * @since 1.0.0
+ * @param [in] a The Color to divide.
+ * @param [in] b The Color to divide
+ * @return float value of division operation
+ */
+ public static float operator /(Color a, Color b)
+ {
+ return (float)System.Math.Sqrt((a.R / b.R) * (a.G / b.G) * (a.B / b.B) * (a.A / b.A));
+ }
- /**
- * @brief Equals
- *
- * @since 1.0.0
- * @param [in] o The Color object to compare.
- * @param [in] r The Color to add
- * @return bool, whether object equal or not
- */
- public override bool Equals(object obj)
- {
- Color l = this;
- Color r = obj as Color;
- if (r == null)
- {
- return false;
- }
- return l.R == r.R && l.G == r.G && l.B == r.B && l.A == r.A;
- }
+ /**
+ * @brief Equals
+ *
+ * @since 1.0.0
+ * @param [in] o The Color object to compare.
+ * @param [in] r The Color to add
+ * @return bool, whether object equal or not
+ */
+ public override bool Equals(object obj)
+ {
+ Color l = this;
+ Color r = obj as Color;
+ if (r == null)
+ {
+ return false;
+ }
+ return l.R == r.R && l.G == r.G && l.B == r.B && l.A == r.A;
+ }
- /**
- * @brief Clone
- *
- * @since 1.0.0
- * @return Color object
- */
- public Color Clone()
- {
- Color copy = new Color(R, G, B, A);
- return copy;
- }
- }
- }
+ /**
+ * @brief GetHashCode
+ *
+ * @since 1.0.0
+ * @return int, hascode of Color
+ */
+ public override int GetHashCode()
+ {
+ return base.GetHashCode();
+ }
+
+ /**
+ * @brief Clone
+ *
+ * @since 1.0.0
+ * @return Color object
+ */
+ public Color Clone()
+ {
+ Color copy = new Color(R, G, B, A);
+ return copy;
+ }
+ }
}