1 // Aseprite Gfx Library 2 // Copyright (C) 2001-2017 David Capello 3 // 4 // This file is released under the terms of the MIT license. 5 // Read LICENSE.txt for more information. 6 7 #ifndef GFX_RGB_H_INCLUDED 8 #define GFX_RGB_H_INCLUDED 9 #pragma once 10 11 #include <cassert> 12 13 namespace gfx { 14 15 class Hsv; 16 class Hsl; 17 18 class Rgb { 19 public: Rgb()20 Rgb() 21 : m_red(0) 22 , m_green(0) 23 , m_blue(0) 24 { } 25 Rgb(int red,int green,int blue)26 Rgb(int red, int green, int blue) 27 : m_red(red) 28 , m_green(green) 29 , m_blue(blue) 30 { 31 assert(red >= 0 && red <= 255); 32 assert(green >= 0 && green <= 255); 33 assert(blue >= 0 && blue <= 255); 34 } 35 Rgb(const Rgb & rgb)36 Rgb(const Rgb& rgb) 37 : m_red(rgb.red()) 38 , m_green(rgb.green()) 39 , m_blue(rgb.blue()) 40 { } 41 42 // Conversions 43 explicit Rgb(const Hsv& hsv); 44 explicit Rgb(const Hsl& hsl); 45 red()46 int red() const { 47 return m_red; 48 } 49 green()50 int green() const { 51 return m_green; 52 } 53 blue()54 int blue() const { 55 return m_blue; 56 } 57 58 int maxComponent() const; 59 int minComponent() const; 60 red(int red)61 void red(int red) { 62 assert(red >= 0 && red <= 255); 63 m_red = red; 64 } 65 green(int green)66 void green(int green) { 67 assert(green >= 0 && green <= 255); 68 m_green = green; 69 } 70 blue(int blue)71 void blue(int blue) { 72 assert(blue >= 0 && blue <= 255); 73 m_blue = blue; 74 } 75 76 bool operator==(const Rgb& other) const { 77 return (m_red == other.m_red && 78 m_green == other.m_green && 79 m_blue == other.m_blue); 80 } 81 82 bool operator!=(const Rgb& other) const { 83 return !operator==(other); 84 } 85 86 private: 87 int m_red; 88 int m_green; 89 int m_blue; 90 }; 91 92 } // namespace gfx 93 94 #endif 95