gKit2 light
Loading...
Searching...
No Matches
color.cpp
1
2#include <cmath>
3#include <algorithm>
4
5#include "color.h"
6
7
8float Color::power( ) const
9{
10 return (r+g+b) / 3;
11}
12
13float Color::max( ) const
14{
15 return std::max(r, std::max(g, std::max(b, float(0))));
16}
17
19{
20 return Color(0, 0, 0);
21}
22
24{
25 return Color(1, 1, 1);
26}
27
29{
30 return Color(1, 0, 0);
31}
32
34{
35 return Color(0, 1, 0);
36}
37
39{
40 return Color(0, 0, 1);
41}
42
44{
45 return Color(1, 1, 0);
46}
47
48
49float srgb( const float x )
50{
51 if(x < 0.00031308f) return 12.92f * x;
52 else return 1.055f * std::pow(x, 1.0f / 2.4f) - 0.055f;
53}
54
55float linear( const float x )
56{
57 if(x < 0.04045f) return x / 12.92f;
58 else return std::pow((x + 0.055f) / 1.055f, 2.4f);
59}
60
61Color srgb( const Color& color )
62{
63 return Color( srgb(color.r), srgb(color.g), srgb(color.b), color.a );
64}
65
66Color linear( const Color& color )
67{
68 return Color( linear(color.r), linear(color.g), linear(color.b), color.a );
69}
70
71Color abs( const Color& color )
72{
73 return Color( std::abs(color.r), std::abs(color.g), std::abs(color.b), std::abs(color.a) );
74}
75
76float clamp( const float x, const float a, const float b )
77{
78 if(x < a) return a;
79 else if(x > b) return b;
80 else return x;
81}
82
83Color clamp( const Color& color, const float a, const float b )
84{
85 return Color( clamp(color.r, a, b), clamp(color.g, a, b), clamp(color.b, a, b), clamp(color.a, a, b) );
86}
87
88
89Color operator+ ( const Color& a, const Color& b )
90{
91 return Color(a.r + b.r, a.g + b.g, a.b + b.b, a.a + b.a);
92}
93
94Color operator- ( const Color& c )
95{
96 return Color(-c.r, -c.g, -c.b, -c.a);
97}
98
99Color operator- ( const Color& a, const Color& b )
100{
101 return a + (-b);
102}
103
104Color operator* ( const Color& a, const Color& b )
105{
106 return Color(a.r * b.r, a.g * b.g, a.b * b.b, a.a * b.a);
107}
108
109Color operator* ( const float k, const Color& c )
110{
111 return Color(c.r * k, c.g * k, c.b * k, c.a * k);
112}
113
114Color operator* ( const Color& c, const float k )
115{
116 return k * c;
117}
118
119Color operator/ ( const Color& a, const Color& b )
120{
121 return Color(a.r / b.r, a.g / b.g, a.b / b.b, a.a / b.a);
122}
123
124Color operator/ ( const float k, const Color& c )
125{
126 return Color(k / c.r, k / c.g, k / c.b, k / c.a);
127}
128
129Color operator/ ( const Color& c, const float k )
130{
131 float kk= 1 / k;
132 return kk * c;
133}
134
135Color operator+ ( const float k, const Color& c )
136{
137 return Color(k + c.r, k + c.g, k + c.b, k + c.a);
138}
139
140Color operator+ ( const Color& c, const float k )
141{
142 return k + c;
143}
Color Red()
utilitaire. renvoie une couleur rouge.
Definition color.cpp:28
Color Yellow()
utilitaire. renvoie une couleur jaune.
Definition color.cpp:43
Color Blue()
utilitaire. renvoie une couleur bleue.
Definition color.cpp:38
Color Black()
utilitaire. renvoie une couleur noire.
Definition color.cpp:18
Color Green()
utilitaire. renvoie une couleur verte.
Definition color.cpp:33
float clamp(const float x, const float a, const float b)
renvoie une valeur comprise entre a et b.
Definition color.cpp:76
Color White()
utilitaire. renvoie une couleur blanche.
Definition color.cpp:23
Color abs(const Color &color)
renvoie la valeur absolue de chaque canal.
Definition color.cpp:71
representation d'une couleur (rgba) transparente ou opaque.
Definition color.h:14