10 typedef unsigned char Byte;
13 Byte
red, green, blue;
17 Color( Byte _red, Byte _green, Byte _blue )
18 :
red( _red ), green( _green ), blue( _blue ) {}
21 float r()
const {
return ( (
float)
red ) / 255.0; }
23 float g()
const {
return ( (
float) green ) / 255.0; }
25 float b()
const {
return ( (
float) blue ) / 255.0; }
32 if (
red >= green )
return red >= blue ? Red : Blue;
33 else return green >= blue ? Green : Blue;
36 float max()
const {
return std::max( std::max(
r(),
g() ),
b() ); }
38 float min()
const {
return std::min( std::min(
r(),
g() ),
b() ); }
45 void getHSV(
int & h,
float & s,
float & v )
const
48 if (
max() ==
min() ) h = 0;
51 case Red: h = ( (int) ( 60.0 * (
g() -
b() ) / (
max() -
min() ) + 360.0 ) ) % 360;
53 case Green: h = ( (int) ( 60.0 * (
b() -
r() ) / (
max() -
min() ) + 120.0 ) );
55 case Blue: h = ( (int) ( 60.0 * (
r() -
g() ) / (
max() -
min() ) + 240.0 ) );
60 s =
max() == 0.0 ? 0.0 : 1.0 -
min() /
max();
68 void setHSV(
int h,
float s,
float v )
Color(Byte _red, Byte _green, Byte _blue)
Crée la couleur spécifiée par (_red,_green,_blue).
Channel
Sert à désigner un canal.
void setHSV(int h, float s, float v)
void getHSV(int &h, float &s, float &v) const
Byte red
Code les 3 canaux RGB sur 3 octets.