diff options
Diffstat (limited to 'core/color.h')
| -rw-r--r-- | core/color.h | 87 |
1 files changed, 46 insertions, 41 deletions
diff --git a/core/color.h b/core/color.h index 50a676134..2339cd6cd 100644 --- a/core/color.h +++ b/core/color.h @@ -29,8 +29,8 @@ #ifndef COLOR_H #define COLOR_H -#include "ustring.h" #include "math_funcs.h" +#include "ustring.h" /** @author Juan Linietsky <reduzio@gmail.com> */ @@ -47,8 +47,8 @@ struct Color { float components[4]; }; - bool operator==(const Color &p_color) const { return (r==p_color.r && g==p_color.g && b==p_color.b && a==p_color.a ); } - bool operator!=(const Color &p_color) const { return (r!=p_color.r || g!=p_color.g || b!=p_color.b || a!=p_color.a ); } + bool operator==(const Color &p_color) const { return (r == p_color.r && g == p_color.g && b == p_color.b && a == p_color.a); } + bool operator!=(const Color &p_color) const { return (r != p_color.r || g != p_color.g || b != p_color.b || a != p_color.a); } uint32_t to_32() const; uint32_t to_ARGB32() const; @@ -56,12 +56,12 @@ struct Color { float get_h() const; float get_s() const; float get_v() const; - void set_hsv(float p_h, float p_s, float p_v, float p_alpha=1.0); + void set_hsv(float p_h, float p_s, float p_v, float p_alpha = 1.0); - _FORCE_INLINE_ float& operator[](int idx) { + _FORCE_INLINE_ float &operator[](int idx) { return components[idx]; } - _FORCE_INLINE_ const float& operator[](int idx) const { + _FORCE_INLINE_ const float &operator[](int idx) const { return components[idx]; } @@ -70,30 +70,29 @@ struct Color { Color inverted() const; Color contrasted() const; - _FORCE_INLINE_ Color linear_interpolate(const Color& p_b, float p_t) const { + _FORCE_INLINE_ Color linear_interpolate(const Color &p_b, float p_t) const { - Color res=*this; + Color res = *this; - res.r+= (p_t * (p_b.r-r)); - res.g+= (p_t * (p_b.g-g)); - res.b+= (p_t * (p_b.b-b)); - res.a+= (p_t * (p_b.a-a)); + res.r += (p_t * (p_b.r - r)); + res.g += (p_t * (p_b.g - g)); + res.b += (p_t * (p_b.b - b)); + res.a += (p_t * (p_b.a - a)); return res; } - _FORCE_INLINE_ Color blend(const Color& p_over) const { - + _FORCE_INLINE_ Color blend(const Color &p_over) const { Color res; float sa = 1.0 - p_over.a; - res.a = a*sa+p_over.a; - if (res.a==0) { - return Color(0,0,0,0); + res.a = a * sa + p_over.a; + if (res.a == 0) { + return Color(0, 0, 0, 0); } else { - res.r = (r*a*sa + p_over.r * p_over.a)/res.a; - res.g = (g*a*sa + p_over.g * p_over.a)/res.a; - res.b = (b*a*sa + p_over.b * p_over.a)/res.a; + res.r = (r * a * sa + p_over.r * p_over.a) / res.a; + res.g = (g * a * sa + p_over.g * p_over.a) / res.a; + res.b = (b * a * sa + p_over.b * p_over.a) / res.a; } return res; } @@ -101,48 +100,54 @@ struct Color { _FORCE_INLINE_ Color to_linear() const { return Color( - r<0.04045 ? r * (1.0 / 12.92) : Math::pow((r + 0.055) * (1.0 / (1 + 0.055)), 2.4), - g<0.04045 ? g * (1.0 / 12.92) : Math::pow((g + 0.055) * (1.0 / (1 + 0.055)), 2.4), - b<0.04045 ? b * (1.0 / 12.92) : Math::pow((b + 0.055) * (1.0 / (1 + 0.055)), 2.4), - a - ); + r < 0.04045 ? r * (1.0 / 12.92) : Math::pow((r + 0.055) * (1.0 / (1 + 0.055)), 2.4), + g < 0.04045 ? g * (1.0 / 12.92) : Math::pow((g + 0.055) * (1.0 / (1 + 0.055)), 2.4), + b < 0.04045 ? b * (1.0 / 12.92) : Math::pow((b + 0.055) * (1.0 / (1 + 0.055)), 2.4), + a); } static Color hex(uint32_t p_hex); - static Color html(const String& p_color); - static bool html_is_valid(const String& p_color); - static Color named(const String& p_name); - String to_html(bool p_alpha=true) const; + static Color html(const String &p_color); + static bool html_is_valid(const String &p_color); + static Color named(const String &p_name); + String to_html(bool p_alpha = true) const; - _FORCE_INLINE_ bool operator<(const Color& p_color) const; //used in set keys + _FORCE_INLINE_ bool operator<(const Color &p_color) const; //used in set keys operator String() const; /** * No construct parameters, r=0, g=0, b=0. a=255 */ _FORCE_INLINE_ Color() { - r=0; g=0; b=0; a=1.0; + r = 0; + g = 0; + b = 0; + a = 1.0; } /** * RGB / RGBA construct parameters. Alpha is optional, but defaults to 1.0 */ - _FORCE_INLINE_ Color(float p_r,float p_g,float p_b,float p_a=1.0) { r=p_r; g=p_g; b=p_b; a=p_a; } + _FORCE_INLINE_ Color(float p_r, float p_g, float p_b, float p_a = 1.0) { + r = p_r; + g = p_g; + b = p_b; + a = p_a; + } }; -bool Color::operator<(const Color& p_color) const { +bool Color::operator<(const Color &p_color) const { - if (r==p_color.r) { - if (g==p_color.g) { - if(b==p_color.b) { - return (a<p_color.a); + if (r == p_color.r) { + if (g == p_color.g) { + if (b == p_color.b) { + return (a < p_color.a); } else - return (b<p_color.b); + return (b < p_color.b); } else - return g<p_color.g; + return g < p_color.g; } else - return r<p_color.r; - + return r < p_color.r; } #endif |
