File indexing completed on 2024-06-16 04:16:09
0001 /* 0002 SPDX-FileCopyrightText: 2011 Silvio Heinrich <plassy@web.de> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 0008 #ifndef H_KIS_COLOR_H 0009 #define H_KIS_COLOR_H 0010 0011 #include <QtGlobal> 0012 #include <QColor> 0013 0014 #include <kis_display_color_converter.h> 0015 #include <kis_arcs_constants.h> 0016 0017 class KisColor 0018 { 0019 public: 0020 enum Type { HSY, HSV, HSL, HSI }; 0021 0022 KisColor(KisDisplayColorConverter *converter = KisDisplayColorConverter::dumbConverterInstance(), 0023 Type type=HSY, qreal lR = DEFAULT_LUMA_R, qreal lG = DEFAULT_LUMA_G, 0024 qreal lB = DEFAULT_LUMA_B, qreal lGamma = DEFAULT_LUMA_GAMMA); 0025 0026 KisColor(qreal hue, KisDisplayColorConverter *converter, Type type, 0027 qreal lR = DEFAULT_LUMA_R, qreal lG = DEFAULT_LUMA_G, 0028 qreal lB = DEFAULT_LUMA_B, qreal lGamma = DEFAULT_LUMA_GAMMA); 0029 0030 KisColor(const QColor& color, KisDisplayColorConverter* converter, Type type=HSY, 0031 qreal lR = DEFAULT_LUMA_R, qreal lG = DEFAULT_LUMA_G, 0032 qreal lB = DEFAULT_LUMA_B, qreal lGamma = DEFAULT_LUMA_GAMMA); 0033 0034 KisColor(Qt::GlobalColor color, KisDisplayColorConverter* converter, Type type=HSY, 0035 qreal lR = DEFAULT_LUMA_R, qreal lG = DEFAULT_LUMA_G, 0036 qreal lB = DEFAULT_LUMA_B, qreal lGamma = DEFAULT_LUMA_GAMMA); 0037 0038 KisColor(const KisColor& color, KisDisplayColorConverter *converter, Type type = HSY, 0039 qreal lR = DEFAULT_LUMA_R, qreal lG = DEFAULT_LUMA_G, 0040 qreal lB = DEFAULT_LUMA_B, qreal lGamma = DEFAULT_LUMA_GAMMA); 0041 0042 KisColor(const KoColor &color, KisDisplayColorConverter* converter, Type type=HSY, 0043 qreal lR = DEFAULT_LUMA_R, qreal lG = DEFAULT_LUMA_G, 0044 qreal lB = DEFAULT_LUMA_B, qreal lGamma = DEFAULT_LUMA_GAMMA); 0045 0046 ~KisColor(); 0047 0048 inline Type getType() const { return m_type; } 0049 inline qreal getH() const { return m_hue; } 0050 inline qreal getS() const { return m_saturation; } 0051 inline qreal getX() const { return m_value; } 0052 inline qreal lumaR() const { return m_lumaR; } 0053 inline qreal lumaG() const { return m_lumaG; } 0054 inline qreal lumaB() const { return m_lumaB; } 0055 inline qreal lumaGamma() const { return m_lumaGamma; } 0056 0057 inline void setH(qreal v) { m_hue = v; } 0058 inline void setS(qreal v) { m_saturation = v; } 0059 inline void setX(qreal v) { m_value = v; } 0060 0061 QColor toQColor() const; 0062 KoColor toKoColor() const; 0063 void fromKoColor(const KoColor &color); 0064 0065 inline void setHSX(qreal h, qreal s, qreal x) { 0066 m_hue = h; 0067 m_saturation = s; 0068 m_value = x; 0069 } 0070 0071 private: 0072 void initHSX(Type type, qreal h, qreal s, qreal x); 0073 0074 private: 0075 qreal m_hue; 0076 qreal m_value; 0077 qreal m_saturation; 0078 qreal m_lumaR; 0079 qreal m_lumaG; 0080 qreal m_lumaB; 0081 qreal m_lumaGamma; 0082 KisColor::Type m_type; 0083 KisDisplayColorConverter* m_colorConverter; 0084 }; 0085 0086 #endif // H_KIS_COLOR_H