include/board/Color.h

Go to the documentation of this file.
00001 /* -*- mode: c++ -*- */
00010 #ifndef _BOARD_COLOR_H_
00011 #define _BOARD_COLOR_H_
00012 
00013 #include <ostream>
00014 #include <string>
00015 
00016 namespace BoardLib {
00017 
00022 class Color {
00023 
00024 public:
00025   Color( unsigned char red, unsigned char  green, unsigned char  blue, unsigned char alpha = 255 )
00026     :_red(red),_green(green),_blue(blue),_alpha(alpha) { }
00027 
00028   Color( unsigned char gray, unsigned char alpha = 255 )
00029     :_red(gray),_green(gray),_blue(gray),_alpha(alpha) { }
00030 
00031   Color( const bool valid = true )
00032     :_red(-1),_green(-1),_blue(-1),_alpha(255)
00033   { 
00034     if ( valid ) {
00035       _red = _green = _blue = 0;
00036     }
00037   }
00038     
00039   inline void red( unsigned char red );
00040   inline void green( unsigned char green );
00041   inline void blue( unsigned char blue );
00042   inline void alpha( unsigned char alpha );
00043 
00044   inline unsigned char red() const;
00045   inline unsigned char green() const;
00046   inline unsigned char blue() const;
00047   inline unsigned char alpha() const;
00048   
00049   inline Color & setRGBi( const unsigned char red,
00050                           const unsigned char green,
00051                           const unsigned char blue,
00052                           const unsigned char alpha = 255 );
00053   
00054   Color & setRGBf( float red, 
00055                    float green,
00056                    float blue,
00057                    float alpha = 1.0 );
00058   
00059   bool operator==( const Color & other ) const;
00060 
00061   bool operator!=( const Color & other ) const;
00062 
00063   bool operator<( const Color & other ) const;
00064 
00065   void flushPostscript( std::ostream & ) const;
00066 
00067   std::string svg() const;
00068 
00077   std::string svgAlpha( const char * prefix ) const;
00078 
00079   std::string postscript() const;
00080   
00081   inline bool valid() const { return (*this) != Color::none; }
00082 
00083 public:
00084   static const Color none;
00085   static const Color Black;
00086   static const Color White;
00087   static const Color Red;
00088   static const Color Green;
00089   static const Color Blue;
00090 
00091 private:
00092   int _red;                     
00093   int _green;                   
00094   int _blue;                    
00095   int _alpha;                   
00096 };
00097 
00098 inline Color &
00099 Color::setRGBi( const unsigned char red,
00100                 const unsigned char green,
00101                 const unsigned char blue,
00102                 const unsigned char alpha ) {
00103   _red = red;
00104   _green = green;
00105   _blue = blue;
00106   _alpha = alpha;
00107   return *this;
00108 }
00109 
00110 
00111 inline void
00112 Color::red( const unsigned char red )
00113 {
00114   _red = red;
00115 }
00116 
00117 inline void
00118 Color::green( unsigned char green )
00119 {
00120   _green = green;
00121 }
00122 
00123 inline void 
00124 Color::blue( unsigned char blue )
00125 {
00126   _blue = blue;
00127 }
00128 
00129 inline void 
00130 Color::alpha( unsigned char alpha )
00131 {
00132   _alpha = alpha;
00133 }
00134 
00135 inline unsigned char Color::red() const { return _red; } 
00136 inline unsigned char Color::green() const { return _green; } 
00137 inline unsigned char Color::blue() const { return _blue; } 
00138 inline unsigned char Color::alpha() const { return _alpha; } 
00139 
00140 }
00141 
00142 #endif // _COLOR_H_

Generated on Mon Dec 17 11:15:51 2007 for Board by  doxygen 1.5.3-20071008