Board  0.9.4
Color.h
Go to the documentation of this file.
1 /* -*- mode: c++ -*- */
26 #ifndef _BOARD_COLOR_H_
27 #define _BOARD_COLOR_H_
28 
29 #include <ostream>
30 #include <string>
31 
32 namespace LibBoard {
33 
39 class Color {
40 
41 public:
42 
43  inline Color( const unsigned int rgb, unsigned char alpha = 255 );
44 
45  inline Color( unsigned char red,
46  unsigned char green,
47  unsigned char blue,
48  unsigned char alpha = 255 );
49 
50  inline Color( unsigned char gray, unsigned char alpha = 255 );
51 
52  inline Color( const bool valid = true );
53 
54  inline void red( unsigned char red );
55  inline void green( unsigned char green );
56  inline void blue( unsigned char blue );
57  inline void alpha( unsigned char alpha );
58 
59  inline unsigned char red() const;
60  inline unsigned char green() const;
61  inline unsigned char blue() const;
62  inline unsigned char alpha() const;
63 
64  inline Color & setRGBi( const unsigned char red,
65  const unsigned char green,
66  const unsigned char blue,
67  const unsigned char alpha = 255 );
68 
69  Color & setRGBf( float red,
70  float green,
71  float blue,
72  float alpha = 1.0 );
73 
74  bool operator==( const Color & other ) const;
75 
76  bool operator!=( const Color & other ) const;
77 
78  bool operator<( const Color & other ) const;
79 
80  void flushPostscript( std::ostream & ) const;
81 
82  std::string svg() const;
83 
92  std::string svgAlpha( const char * prefix ) const;
93 
94  std::string postscript() const;
95 
104  std::string tikz() const;
105 
106 
107  inline bool valid() const { return (*this) != Color::Null; }
108 
109 
110 public:
111  static const Color Null;
112  static const Color Black;
113  static const Color Gray;
114  static const Color White;
115  static const Color Red;
116  static const Color Green;
117  static const Color Lime;
118  static const Color Blue;
119  static const Color Cyan;
120  static const Color Magenta;
121  static const Color Yellow;
122  static const Color Silver;
123  static const Color Purple;
124  static const Color Navy;
125  static const Color Aqua;
126 
127 private:
128  int _red;
129  int _green;
130  int _blue;
131  int _alpha;
132 };
133 
134 inline Color &
135 Color::setRGBi( const unsigned char red,
136  const unsigned char green,
137  const unsigned char blue,
138  const unsigned char alpha ) {
139  _red = red;
140  _green = green;
141  _blue = blue;
142  _alpha = alpha;
143  return *this;
144 }
145 
146 
147 inline Color::Color( const unsigned int rgb, unsigned char alpha )
148  :_alpha( alpha )
149 {
150  _red = ( rgb & 0xFF0000u ) >> 16;
151  _green = ( rgb & 0xFF00u ) >> 8;
152  _blue = rgb & 0xFF;
153 }
154 
155 inline Color::Color( unsigned char red,
156  unsigned char green,
157  unsigned char blue,
158  unsigned char alpha )
159  :_red(red),_green(green),_blue(blue),_alpha(alpha)
160 { }
161 
162 inline Color::Color( unsigned char gray, unsigned char alpha )
163  :_red(gray),_green(gray),_blue(gray),_alpha(alpha)
164 { }
165 
166 inline Color::Color( const bool valid )
167  :_red(-1),_green(-1),_blue(-1),_alpha(255)
168 {
169  if ( valid ) {
170  _red = _green = _blue = 0;
171  }
172 }
173 
174 inline void
175 Color::red( const unsigned char red )
176 {
177  _red = red;
178 }
179 
180 inline void
181 Color::green( unsigned char green )
182 {
183  _green = green;
184 }
185 
186 inline void
187 Color::blue( unsigned char blue )
188 {
189  _blue = blue;
190 }
191 
192 inline void
193 Color::alpha( unsigned char alpha )
194 {
195  _alpha = alpha;
196 }
197 
198 inline unsigned char Color::red() const { return _red; }
199 inline unsigned char Color::green() const { return _green; }
200 inline unsigned char Color::blue() const { return _blue; }
201 inline unsigned char Color::alpha() const { return _alpha; }
202 
203 }
204 
205 #endif // _COLOR_H_
Structure representing an RGB triple.
Definition: Color.h:39
Definition: Board.h:41
std::string tikz() const
Definition: Color.cpp:142
std::string svgAlpha(const char *prefix) const
Definition: Color.cpp:133