| #pragma once |
| |
| #ifndef T_COLORVALUE_INCLUDED |
| #define T_COLORVALUE_INCLUDED |
| |
| #include "tpixel.h" |
| |
| #undef DVAPI |
| #undef DVVAR |
| #ifdef TCOLOR_EXPORTS |
| #define DVAPI DV_EXPORT_API |
| #define DVVAR DV_EXPORT_VAR |
| #else |
| #define DVAPI DV_IMPORT_API |
| #define DVVAR DV_IMPORT_VAR |
| #endif |
| |
| class DVAPI TColorValue { |
| double m_r, m_g, m_b, m_m; |
| |
| public: |
| TColorValue() : m_r(0), m_g(0), m_b(0), m_m(1){}; |
| TColorValue(const TPixel32 &src) { setPixel(src); } |
| |
| void getHsv(int &h, int &s, int &v) const; |
| void getHsv(int hsv[3]) const { getHsv(hsv[0], hsv[1], hsv[2]); } |
| |
| void getHls(double hls[3]) const { getHls(hls[0], hls[1], hls[2]); } |
| void getHls(double &h, double &l, double &s) const; |
| |
| void setHsv(int h, int s, int v); |
| void setHsv(int hsv[3]) { setHsv(hsv[0], hsv[1], hsv[2]); } |
| |
| void getRgb(int &r, int &g, int &b) const; |
| |
| |
| |
| |
| |
| |
| |
| |
| void getRgb(int rgb[3]) const { getRgb(rgb[0], rgb[1], rgb[2]); } |
| |
| TPixel32 getPixel() const; |
| |
| |
| |
| |
| |
| |
| |
| void setRgb(int r, int g, int b); |
| |
| |
| |
| |
| |
| |
| |
| |
| void setRgb(int rgb[3]) { setRgb(rgb[0], rgb[1], rgb[2]); } |
| |
| void setPixel(const TPixel32 &src); |
| |
| |
| |
| |
| |
| |
| |
| bool operator==(const TColorValue &cv) const { |
| return cv.m_r == m_r && cv.m_g == m_g && cv.m_b == m_b && cv.m_m == m_m; |
| } |
| |
| bool operator!=(const TColorValue &cv) const { return !operator==(cv); } |
| bool operator<(const TColorValue &cv) const { |
| if (m_r < cv.m_r) |
| return true; |
| else if (m_r > cv.m_r) |
| return false; |
| if (m_g < cv.m_g) |
| return true; |
| else if (m_g > cv.m_g) |
| return false; |
| if (m_b < cv.m_b) |
| return true; |
| else if (m_b > cv.m_b) |
| return false; |
| return (m_m < cv.m_m); |
| } |
| bool operator>=(const TColorValue &cv) const { return !(*this < cv); } |
| inline bool operator>(const TColorValue &cv) const { return (cv < *this); } |
| bool operator<=(const TColorValue &cv) const { return (cv >= *this); } |
| }; |
| |
| #endif |