# HG changeset patch
# User deba
# Date 1173268643 0
# Node ID 99b999e7b7751e0a8f200df6755839b15fb83817
# Parent a501140ce878a0bad269d33848238ae8c6a9acea
Little interface improvment
diff -r a501140ce878 -r 99b999e7b775 lemon/color.h
--- a/lemon/color.h Wed Mar 07 11:56:53 2007 +0000
+++ b/lemon/color.h Wed Mar 07 11:57:23 2007 +0000
@@ -33,35 +33,35 @@
namespace lemon {
-/// \addtogroup misc
-/// @{
+ /// \addtogroup misc
+ /// @{
-///Data structure representing RGB colors.
+ ///Data structure representing RGB colors.
-///Data structure representing RGB colors.
-class Color
-{
- double _r,_g,_b;
-public:
- ///Default constructor
- Color() {}
- ///Constructor
- Color(double r,double g,double b) :_r(r),_g(g),_b(b) {};
- ///Set the red component
- double & red() {return _r;}
- ///Return the red component
- const double & red() const {return _r;}
- ///Set the green component
- double & green() {return _g;}
- ///Return the green component
- const double & green() const {return _g;}
- ///Set the blue component
- double & blue() {return _b;}
- ///Return the blue component
- const double & blue() const {return _b;}
- ///Set the color components
- void set(double r,double g,double b) { _r=r;_g=g;_b=b; };
-};
+ ///Data structure representing RGB colors.
+ class Color
+ {
+ double _r,_g,_b;
+ public:
+ ///Default constructor
+ Color() {}
+ ///Constructor
+ Color(double r,double g,double b) :_r(r),_g(g),_b(b) {};
+ ///Set the red component
+ double & red() {return _r;}
+ ///Return the red component
+ const double & red() const {return _r;}
+ ///Set the green component
+ double & green() {return _g;}
+ ///Return the green component
+ const double & green() const {return _g;}
+ ///Set the blue component
+ double & blue() {return _b;}
+ ///Return the blue component
+ const double & blue() const {return _b;}
+ ///Set the color components
+ void set(double r,double g,double b) { _r=r;_g=g;_b=b; };
+ };
/// White color constant
extern const Color WHITE;
@@ -94,105 +94,113 @@
/// Dark cyan color constant
extern const Color DARK_CYAN;
-///Map ints to different \ref Color "Color"s
+ ///Map ints to different \ref Color "Color"s
-///This map assigns one of the predefined \ref Color "Color"s
-///to each int. It is possible to change the colors as well as their
-///number. The integer range is cyclically mapped to the provided set of colors.
-///
-///This is a true \ref concepts::ReferenceMap "reference map", so you can also
-///change the actual colors.
+ ///This map assigns one of the predefined \ref Color "Color"s to
+ ///each int. It is possible to change the colors as well as
+ ///their number. The integer range is cyclically mapped to the
+ ///provided set of colors.
+ ///
+ ///This is a true \ref concepts::ReferenceMap "reference map", so
+ ///you can also change the actual colors.
-class Palette : public MapBase
-{
- std::vector colors;
-public:
- ///Constructor
+ class Palette : public MapBase
+ {
+ std::vector colors;
+ public:
+ ///Constructor
- ///Constructor
- ///\param have_white indicates whether white is
- ///amongst the provided color (\c true) or not (\c false). If it is true,
- ///white will be assigned to \c 0.
- ///\param num the number of the allocated colors. If it is \c 0,
- ///the default color configuration is set up (26 color plus the white).
- ///If \c num is less then 26/27 then the default color list is cut. Otherwise
- ///the color list is filled repeatedly with the default color list.
- ///(The colors can be changed later on.)
- Palette(bool have_white=false,int num=0)
+ ///Constructor
+ ///\param num the number of the allocated colors. If it is \c -1,
+ ///the default color configuration is set up (26 color plus the
+ ///white). If \c num is less then 26/27 then the default color
+ ///list is cut. Otherwise the color list is filled repeatedly with
+ ///the default color list. (The colors can be changed later on.)
+ ///\param have_white indicates whether white is amongst the
+ ///provided color (\c true) or not (\c false). If it is true,
+ ///white will be assigned to \c 0.
+ Palette(int num=-1,bool have_white=false)
+ {
+ if (num==0) return;
+ do {
+ if(have_white) colors.push_back(Color(1,1,1));
+
+ colors.push_back(Color(0,0,0));
+ colors.push_back(Color(1,0,0));
+ colors.push_back(Color(0,1,0));
+ colors.push_back(Color(0,0,1));
+ colors.push_back(Color(1,1,0));
+ colors.push_back(Color(1,0,1));
+ colors.push_back(Color(0,1,1));
+
+ colors.push_back(Color(.5,0,0));
+ colors.push_back(Color(0,.5,0));
+ colors.push_back(Color(0,0,.5));
+ colors.push_back(Color(.5,.5,0));
+ colors.push_back(Color(.5,0,.5));
+ colors.push_back(Color(0,.5,.5));
+
+ colors.push_back(Color(.5,.5,.5));
+ colors.push_back(Color(1,.5,.5));
+ colors.push_back(Color(.5,1,.5));
+ colors.push_back(Color(.5,.5,1));
+ colors.push_back(Color(1,1,.5));
+ colors.push_back(Color(1,.5,1));
+ colors.push_back(Color(.5,1,1));
+
+ colors.push_back(Color(1,.5,0));
+ colors.push_back(Color(.5,1,0));
+ colors.push_back(Color(1,0,.5));
+ colors.push_back(Color(0,1,.5));
+ colors.push_back(Color(0,.5,1));
+ colors.push_back(Color(.5,0,1));
+ } while(int(colors.size())=0) colors.resize(num);
+ }
+ ///\e
+ Color &operator[](int i)
+ {
+ return colors[i%colors.size()];
+ }
+ ///\e
+ const Color &operator[](int i) const
+ {
+ return colors[i%colors.size()];
+ }
+ ///\e
+ void set(int i,const Color &c)
+ {
+ colors[i%colors.size()]=c;
+ }
+ ///\e
+ void add(const Color &c)
+ {
+ colors.push_back(c);
+ }
+
+ ///Sets the number of the exiting colors.
+ void resize(int s) { colors.resize(s);}
+ ///Returns the number of the existing colors.
+ int size() const { return int(colors.size());}
+ };
+
+ ///Returns a visible distinct \ref Color
+
+ ///Returns a \ref Color which is as different from the given parameter
+ ///as it is possible.
+ inline Color distantColor(const Color &c)
{
- do {
- if(have_white) colors.push_back(Color(1,1,1));
+ return Color(c.red()<.5?1:0,c.green()<.5?1:0,c.blue()<.5?1:0);
+ }
+ ///Returns black for light colors and white for the dark ones.
- colors.push_back(Color(0,0,0));
- colors.push_back(Color(1,0,0));
- colors.push_back(Color(0,1,0));
- colors.push_back(Color(0,0,1));
- colors.push_back(Color(1,1,0));
- colors.push_back(Color(1,0,1));
- colors.push_back(Color(0,1,1));
-
- colors.push_back(Color(.5,0,0));
- colors.push_back(Color(0,.5,0));
- colors.push_back(Color(0,0,.5));
- colors.push_back(Color(.5,.5,0));
- colors.push_back(Color(.5,0,.5));
- colors.push_back(Color(0,.5,.5));
-
- colors.push_back(Color(.5,.5,.5));
- colors.push_back(Color(1,.5,.5));
- colors.push_back(Color(.5,1,.5));
- colors.push_back(Color(.5,.5,1));
- colors.push_back(Color(1,1,.5));
- colors.push_back(Color(1,.5,1));
- colors.push_back(Color(.5,1,1));
-
- colors.push_back(Color(1,.5,0));
- colors.push_back(Color(.5,1,0));
- colors.push_back(Color(1,0,.5));
- colors.push_back(Color(0,1,.5));
- colors.push_back(Color(0,.5,1));
- colors.push_back(Color(.5,0,1));
- } while(int(colors.size())0) colors.resize(num);
+ ///Returns black for light colors and white for the dark ones.
+ inline Color distantBW(const Color &c){
+ return (.2125*c.red()+.7154*c.green()+.0721*c.blue())<.5 ? WHITE : BLACK;
}
- ///\e
- Color &operator[](int i)
- {
- return colors[i%colors.size()];
- }
- ///\e
- const Color &operator[](int i) const
- {
- return colors[i%colors.size()];
- }
- ///\e
- void set(int i,const Color &c)
- {
- colors[i%colors.size()]=c;
- }
- ///Sets the number of the exiting colors.
- void resize(int s) { colors.resize(s);}
- ///Returns the number of the existing colors.
- std::size_t size() const { return colors.size();}
-};
-///Returns a visible distinct \ref Color
-
-///Returns a \ref Color which is as different from the given parameter
-///as it is possible.
-inline Color distantColor(const Color &c)
-{
- return Color(c.red()<.5?1:0,c.green()<.5?1:0,c.blue()<.5?1:0);
-}
-///Returns black for light colors and white for the dark ones.
-
-///Returns black for light colors and white for the dark ones.
-inline Color distantBW(const Color &c){
- return (.2125*c.red()+.7154*c.green()+.0721*c.blue())<.5 ? WHITE : BLACK;
-}
-
-/// @}
+ /// @}
} //END OF NAMESPACE LEMON