gKit2 light
color.cpp
1 
2 #include <cmath>
3 #include <algorithm>
4 
5 #include "color.h"
6 
7 
8 float Color::power( ) const
9 {
10  return (r+g+b) / 3;
11 }
12 
13 float Color::max( ) const
14 {
15  return std::max(r, std::max(g, std::max(b, float(0))));
16 }
17 
18 
19 float srgb( const float x )
20 {
21  if(x < float(0.0031308))
22  return float(12.92) * x;
23  else
24  return float(1.055) * std::pow(x, float(1) / float(2.4)) - float(0.055);
25 }
26 
27 Color srgb( const Color& x )
28 {
29  return Color(srgb(x.r), srgb(x.g), srgb(x.b), x.a);
30 }
31 
32 
33 float linear( const float x )
34 {
35  if(x < float(0.04045))
36  return x / float(12.92);
37  else
38  return std::pow( (x + float(0.055)) / float(1.055), float(2.4) );
39 }
40 
41 Color linear( const Color& x )
42 {
43  return Color(linear(x.r), linear(x.g), linear(x.b), x.a);
44 }
45 
46 
48 {
49  return Color(0, 0, 0);
50 }
51 
53 {
54  return Color(1, 1, 1);
55 }
56 
58 {
59  return Color(1, 0, 0);
60 }
61 
63 {
64  return Color(0, 1, 0);
65 }
66 
68 {
69  return Color(0, 0, 1);
70 }
71 
73 {
74  return Color(1, 1, 0);
75 }
76 
77 
78 Color operator+ ( const Color& a, const Color& b )
79 {
80  return Color(a.r + b.r, a.g + b.g, a.b + b.b, a.a + b.a);
81 }
82 
83 Color operator- ( const Color& c )
84 {
85  return Color(-c.r, -c.g, -c.b, -c.a);
86 }
87 
88 Color operator- ( const Color& a, const Color& b )
89 {
90  return a + (-b);
91 }
92 
93 Color operator* ( const Color& a, const Color& b )
94 {
95  return Color(a.r * b.r, a.g * b.g, a.b * b.b, a.a * b.a);
96 }
97 
98 Color operator* ( const float k, const Color& c )
99 {
100  return Color(c.r * k, c.g * k, c.b * k, c.a * k);
101 }
102 
103 Color operator* ( const Color& c, const float k )
104 {
105  return k * c;
106 }
107 
108 Color operator/ ( const Color& a, const Color& b )
109 {
110  return Color(a.r / b.r, a.g / b.g, a.b / b.b, a.a / b.a);
111 }
112 
113 Color operator/ ( const float k, const Color& c )
114 {
115  return Color(k / c.r, k / c.g, k / c.b, k / c.a);
116 }
117 
118 Color operator/ ( const Color& c, const float k )
119 {
120  float kk= 1 / k;
121  return kk * c;
122 }
Color Red()
utilitaire. renvoie une couleur rouge.
Definition: color.cpp:57
Color Yellow()
utilitaire. renvoie une couleur jaune.
Definition: color.cpp:72
Color Blue()
utilitaire. renvoie une couleur bleue.
Definition: color.cpp:67
Color Black()
utilitaire. renvoie une couleur noire.
Definition: color.cpp:47
Color srgb(const Color &x)
correction gamma : rgb lineaire vers srgb.
Definition: color.cpp:27
Color Green()
utilitaire. renvoie une couleur verte.
Definition: color.cpp:62
Color linear(const Color &x)
correction gamma : srgb vers rgb lineare.
Definition: color.cpp:41
Color White()
utilitaire. renvoie une couleur blanche.
Definition: color.cpp:52
Point max(const Point &a, const Point &b)
renvoie la plus grande composante de chaque point. x, y, z= max(a.x, b.x), max(a.y,...
Definition: vec.cpp:35
representation d'une couleur (rgba) transparente ou opaque.
Definition: color.h:14