#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 }
|
1.2.12 written by Dimitri van Heesch,
© 1997-2001