#include <HxColor.h>
Public Methods | |
HxColor () | |
Default constructor. More... | |
HxColor (HxVec3Double color, HxColorModel space=RGB) | |
Construction from given color in color space. More... | |
HxColor (const HxColor &rhs) | |
Copy constructor. More... | |
HxColor & | operator= (const HxColor &rhs) |
Assignment operator. More... | |
const HxVec3Double & | value () const |
Return the value. More... | |
HxColor | convert (const HxColorModel space) const |
General color space convertor. More... | |
HxColor | toRGB () const |
to RGB. More... | |
HxColor | toCMY () const |
to CMY. More... | |
HxColor | toXYZ () const |
to XYZ. More... | |
HxColor | toLab () const |
to Lab. More... | |
HxColor | toLuv () const |
to Luv. More... | |
HxColor | toOOO () const |
to OOO. More... | |
HxColor | toHSI () const |
to HSI. More... | |
int | operator== (const HxColor &v) const |
Equal. More... | |
int | operator!= (const HxColor &v) const |
Not equal. More... | |
STD_OSTREAM & | put (STD_OSTREAM &os) const |
Print color on stream. More... | |
HxString | toString () const |
Color as a string. More... |
|
Default constructor.
00102 : _value(0,0,0), _space(RGB) 00103 { 00104 } |
|
Construction from given color in color space.
00108 : _value(color), _space(space) 00109 { 00110 } |
|
Copy constructor.
|
|
Assignment operator.
|
|
Return the value.
00128 { 00129 return _value; 00130 } |
|
General color space convertor. See also : Color operations on pixel values.
|
|
to RGB.
00050 { 00051 switch (_space) { 00052 case RGB: 00053 return *this; 00054 case CMY: 00055 return HxColor(HxColCMY2RGB(_value), RGB); 00056 case XYZ: 00057 return HxColor(HxColXYZ2RGB(_value), RGB); 00058 case Lab: { 00059 HxVec3Double xyz = HxColLab2XYZ(_value); 00060 return HxColor(HxColXYZ2RGB(xyz), RGB); 00061 } 00062 case Luv: { 00063 HxVec3Double xyz = HxColLuv2XYZ(_value); 00064 return HxColor(HxColXYZ2RGB(xyz), RGB); 00065 } 00066 case OOO: 00067 return HxColor(HxColOOO2RGB(_value), RGB); 00068 case HSI: 00069 return HxColor(HxColHSI2RGB(_value), RGB); 00070 } 00071 00072 return HxColor(); 00073 } |
|
to CMY.
00078 { 00079 switch (_space) { 00080 case RGB: 00081 return HxColor(HxColRGB2CMY(_value), CMY); 00082 case CMY: 00083 return *this; 00084 case XYZ: 00085 return HxColor(HxColXYZ2CMY(_value), CMY); 00086 case Lab: { 00087 HxVec3Double xyz = HxColLab2XYZ(_value); 00088 return HxColor(HxColXYZ2CMY(xyz), CMY); 00089 } 00090 case Luv: { 00091 HxVec3Double xyz = HxColLuv2XYZ(_value); 00092 return HxColor(HxColXYZ2CMY(xyz), CMY); 00093 } 00094 case OOO: { 00095 HxVec3Double rgb = HxColOOO2RGB(_value); 00096 return HxColor(HxColRGB2CMY(rgb), CMY); 00097 } 00098 case HSI: { 00099 HxVec3Double rgb = HxColHSI2RGB(_value); 00100 return HxColor(HxColRGB2CMY(rgb), CMY); 00101 } 00102 } 00103 00104 return HxColor(); 00105 } |
|
to XYZ.
00109 { 00110 switch (_space) { 00111 case RGB: 00112 return HxColor(HxColRGB2XYZ(_value), XYZ); 00113 case CMY: 00114 return HxColor(HxColCMY2XYZ(_value), XYZ); 00115 case XYZ: 00116 return *this; 00117 case Lab: 00118 return HxColor(HxColLab2XYZ(_value), XYZ); 00119 case Luv: 00120 return HxColor(HxColLuv2XYZ(_value), XYZ); 00121 case OOO: 00122 return HxColor(HxColOOO2XYZ(_value), XYZ); 00123 case HSI: { 00124 HxVec3Double rgb = HxColHSI2RGB(_value); 00125 return HxColor(HxColRGB2XYZ(rgb), XYZ); 00126 } 00127 } 00128 00129 return HxColor(); 00130 } |
|
to Lab.
00134 { 00135 switch (_space) { 00136 case RGB: { 00137 HxVec3Double xyz = HxColRGB2XYZ(_value); 00138 return HxColor(HxColXYZ2Lab(xyz), Lab); 00139 } 00140 case CMY: { 00141 HxVec3Double xyz = HxColCMY2XYZ(_value); 00142 return HxColor(HxColXYZ2Lab(xyz), Lab); 00143 } 00144 case XYZ: 00145 return HxColor(HxColXYZ2Lab(_value), Lab); 00146 case Lab: 00147 return *this; 00148 case Luv: { 00149 HxVec3Double xyz = HxColLuv2XYZ(_value); 00150 return HxColor(HxColXYZ2Lab(xyz), Lab); 00151 } 00152 case OOO: { 00153 HxVec3Double xyz = HxColOOO2XYZ(_value); 00154 return HxColor(HxColXYZ2Lab(xyz), Lab); 00155 } 00156 case HSI: { 00157 HxVec3Double rgb = HxColHSI2RGB(_value); 00158 HxVec3Double xyz = HxColRGB2XYZ(rgb); 00159 return HxColor(HxColXYZ2Lab(xyz), Lab); 00160 } 00161 } 00162 00163 return HxColor(); 00164 } |
|
to Luv.
00169 { 00170 switch (_space) { 00171 case RGB: { 00172 HxVec3Double xyz = HxColRGB2XYZ(_value); 00173 return HxColor(HxColXYZ2Luv(xyz), Luv); 00174 } 00175 case CMY: { 00176 HxVec3Double xyz = HxColCMY2XYZ(_value); 00177 return HxColor(HxColXYZ2Luv(xyz), Luv); 00178 } 00179 case XYZ: 00180 return HxColor(HxColXYZ2Luv(_value), Luv); 00181 case Lab: { 00182 HxVec3Double xyz = HxColLab2XYZ(_value); 00183 return HxColor(HxColXYZ2Luv(xyz), Luv); 00184 } 00185 case Luv: 00186 return *this; 00187 case OOO: { 00188 HxVec3Double xyz = HxColOOO2XYZ(_value); 00189 return HxColor(HxColXYZ2Luv(xyz), Luv); 00190 } 00191 case HSI: { 00192 HxVec3Double rgb = HxColHSI2RGB(_value); 00193 HxVec3Double xyz = HxColRGB2XYZ(rgb); 00194 return HxColor(HxColXYZ2Luv(xyz), Luv); 00195 } 00196 } 00197 00198 return HxColor(); 00199 } |
|
to OOO.
00203 { 00204 switch (_space) { 00205 case RGB: 00206 return HxColor(HxColRGB2OOO(_value), OOO); 00207 case CMY: { 00208 HxVec3Double rgb = HxColCMY2RGB(_value); 00209 return HxColor(HxColRGB2OOO(rgb), OOO); 00210 } 00211 case XYZ: 00212 return HxColor(HxColXYZ2OOO(_value), OOO); 00213 case Lab: { 00214 HxVec3Double xyz = HxColLab2XYZ(_value); 00215 return HxColor(HxColXYZ2OOO(_value), OOO); 00216 } 00217 case Luv: { 00218 HxVec3Double xyz = HxColLuv2XYZ(_value); 00219 return HxColor(HxColXYZ2OOO(_value), OOO); 00220 } 00221 case OOO: 00222 return *this; 00223 case HSI: { 00224 HxVec3Double rgb = HxColHSI2RGB(_value); 00225 return HxColor(HxColRGB2OOO(rgb), OOO); 00226 } 00227 } 00228 00229 return HxColor(); 00230 } |
|
to HSI.
00234 { 00235 switch (_space) { 00236 case RGB: 00237 return HxColor(HxColRGB2HSI(_value), HSI); 00238 case CMY: { 00239 HxVec3Double rgb = HxColCMY2RGB(_value); 00240 return HxColor(HxColRGB2HSI(rgb), HSI); 00241 } 00242 case XYZ: { 00243 HxVec3Double rgb = HxColXYZ2RGB(_value); 00244 return HxColor(HxColRGB2HSI(rgb), HSI); 00245 } 00246 case Lab: { 00247 HxVec3Double xyz = HxColLab2XYZ(_value); 00248 HxVec3Double rgb = HxColXYZ2RGB(xyz); 00249 return HxColor(HxColRGB2HSI(rgb), HSI); 00250 } 00251 case Luv: { 00252 HxVec3Double xyz = HxColLuv2XYZ(_value); 00253 HxVec3Double rgb = HxColXYZ2RGB(xyz); 00254 return HxColor(HxColRGB2HSI(rgb), HSI); 00255 } 00256 case OOO: { 00257 HxVec3Double rgb = HxColOOO2RGB(_value); 00258 return HxColor(HxColRGB2HSI(rgb), HSI); 00259 } 00260 case HSI: 00261 return *this; 00262 } 00263 00264 return HxColor(); 00265 } |
|
Equal.
|
|
Not equal.
00155 { 00156 return !(*this == c); 00157 } |
|
Print color on stream. For global operator<<
00089 { 00090 return os << toString(); 00091 } |
|
Color as a string.
00017 { 00018 HxString colspace; 00019 00020 switch (_space) { 00021 case RGB: 00022 colspace = "RGB"; 00023 break; 00024 case CMY: 00025 colspace = "CMY"; 00026 break; 00027 case XYZ: 00028 colspace = "XYZ"; 00029 break; 00030 case Lab: 00031 colspace = "Lab"; 00032 break; 00033 case Luv: 00034 colspace = "Luv"; 00035 break; 00036 case OOO: 00037 colspace = "OOO"; 00038 break; 00039 case HSI: 00040 colspace = "HSI"; 00041 break; 00042 default: 00043 colspace = "(Unknown)"; 00044 } 00045 return colspace + _value.toString(); 00046 } |