| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- #ifndef COLOR_H
- #define COLOR_H
- #include <string>
- namespace Color {
- class Color
- {
- public:
- Color() = default;
- public:
- static Color FromHSL(int hue, int saturation, int luminance);
- static Color FromHSLString(const std::string& hslString);
- static Color FromRGB(int red, int green, int blue);
- static Color FromRGBString(const std::string& rgbString);
- public:
- int Hue() const;
- void Hue(int hue);
- void Hue(double hue);
- int Saturation() const;
- void Saturation(int saturation);
- void Saturation(double saturation);
- int Luminance() const;
- void Luminance(int luminance);
- void Luminance(double luminance);
- std::string HSLString() const;
- int Red() const;
- void Red(int red);
- void Red(double red);
- int Green() const;
- void Green(int green);
- void Green(double green);
- int Blue() const;
- void Blue(int blue);
- void Blue(double blue);
- std::string RGBString() const;
- private:
- struct HSL
- {
- double hue;
- double saturation;
- double luminance;
- };
- struct RGB
- {
- double red;
- double green;
- double blue;
- };
- class Conversion
- {
- public:
- Conversion() = delete;
- ~Conversion() = delete;
- public:
- static double Hue(int hue);
- static int Hue(double hue);
- static int Hue(const std::string& hue);
- static double Saturation(int saturation);
- static int Saturation(double saturation);
- static int Saturation(const std::string& saturation);
- static double Luminance(int luminance);
- static int Luminance(double luminance);
- static int Luminance(const std::string& luminance);
- static double Red(int red);
- static int Red(double red);
- static int Red(const std::string& red);
- static double Green(int green);
- static int Green(double green);
- static int Green(const std::string& green);
- static double Blue(int blue);
- static int Blue(double blue);
- static int Blue(const std::string& blue);
- private:
- static const int m_hueFactor = 255;
- static const int m_saturationFactor = 255;
- static const int m_luminanceFactor = 255;
- static const int m_redFactor = 255;
- static const int m_greenFactor = 255;
- static const int m_blueFactor = 255;
- };
- private:
- Color(const Color::HSL& hsl);
- Color(const Color::RGB& rgb);
- private:
- static Color::HSL rgbToHSL(const Color::RGB& rgb);
- static Color::RGB hslToRGB(const Color::HSL& hsl);
- private:
- HSL m_hsl;
- };
- } // namespace Color
- #endif // COLOR_H
|