inlib  1.2.0
/Users/barrand/private/dev/softinex/old/inexlib-1.2/inlib/inlib/colord
Go to the documentation of this file.
00001 // Copyright (C) 2010, Guy Barrand. All rights reserved.
00002 // See the file inlib.license for terms.
00003 
00004 #ifndef inlib_colord
00005 #define inlib_colord
00006 
00007 #include "vec3d"
00008 
00009 namespace inlib {
00010 
00011 class colord : public vec3d {
00012 public:
00013   inline colord(){}
00014   inline colord(double a_r,double a_g,double a_b):vec3d(a_r,a_g,a_b){}
00015   virtual ~colord() {}
00016 public:
00017   inline colord(const colord& a_from):vec3d(a_from){}
00018   inline colord& operator=(const colord& a_from){
00019     vec3d::operator=(a_from);
00020     return *this;
00021   }
00022 public:
00023   inline double r() const {return m_vector[0];}
00024   inline double g() const {return m_vector[1];}
00025   inline double b() const {return m_vector[2];}
00026 
00027 public:
00028   // our forever 65 named colors taken long time ago from X11.
00029 
00030   //NOTE : don't handle a static object because of mem balance.
00031   //0-9
00032   inline static colord aquamarine() {return colord(0.496101,0.996109,0.828138);}
00033   inline static colord mediumaquamarine() {return colord(0.398444,0.800793,0.664073);}
00034   inline static colord black() {return colord(0,0,0);}
00035   inline static colord blue() {return colord(0,0,1);}
00036   inline static colord cadetblue() {return colord(0.371099,0.617197,0.62501);}
00037   inline static colord cornflowerblue() {return colord(0.390631,0.58204,0.925795);}
00038   inline static colord darkslateblue() {return colord(0.281254,0.238285,0.542977);}
00039   inline static colord lightblue() {return colord(0.675792,0.843763,0.898451);}
00040   inline static colord lightsteelblue() {return colord(0.68751,0.765637,0.867201);}
00041   inline static colord mediumblue() {return colord(0,0,0.800793);}
00042  
00043   //10-19
00044   inline static colord mediumslateblue() {return colord(0.480476,0.406256,0.929702);}
00045   inline static colord midnightblue() {return colord(0.0976577,0.0976577,0.437507);}
00046   inline static colord navyblue() {return colord(0,0,0.500008);}
00047   inline static colord navy() {return colord(0,0,0.500008);}
00048   inline static colord skyblue() {return colord(0.527352,0.8047,0.917983);}
00049   inline static colord slateblue() {return colord(0.414069,0.351568,0.800793);}
00050   inline static colord steelblue() {return colord(0.273442,0.50782,0.703136);}
00051   inline static colord coral() {return colord(0.996109,0.496101,0.312505);}
00052   inline static colord cyan() {return colord(0,1,1);}
00053   inline static colord firebrick() {return colord(0.695323,0.132815,0.132815);}
00054       
00055   //20-29
00056   inline static colord brown() {return colord(0.644541,0.164065,0.164065);}
00057   inline static colord gold() {return colord(0.996109,0.839857,0);}
00058   inline static colord goldenrod() {return colord(0.851575,0.644541,0.125002);}
00059   inline static colord green() {return colord(0,1,0);}
00060   inline static colord darkgreen() {return colord(0,0.390631,0);}
00061   inline static colord darkolivegreen() {return colord(0.332036,0.417975,0.183597);}
00062   inline static colord forestgreen() {return colord(0.132815,0.542977,0.132815);}
00063   inline static colord limegreen() {return colord(0.195315,0.800793,0.195315);}
00064   inline static colord mediumseagreen() {return colord(0.234379,0.699229,0.441413);}
00065   inline static colord mediumspringgreen() {return colord(0,0.976577,0.601572);}
00066       
00067   //30-39
00068   inline static colord palegreen() {return colord(0.593759,0.980484,0.593759);}
00069   inline static colord seagreen() {return colord(0.17969,0.542977,0.339849);}
00070   inline static colord springgreen() {return colord(0,0.996109,0.496101);}
00071   inline static colord yellowgreen() {return colord(0.601572,0.800793,0.195315);}
00072   inline static colord darkslategrey() {return colord(0.183597,0.308598,0.308598);}
00073   inline static colord dimgrey() {return colord(0.410163,0.410163,0.410163);}
00074   inline static colord lightgrey() {return colord(0.824231,0.824231,0.824231);}
00075   inline static colord grey() {return colord(0.750011,0.750011,0.750011);}
00076   inline static colord khaki() {return colord(0.937514,0.898451,0.546883);}
00077   inline static colord magenta() {return colord(1,0,1);}
00078 
00079   //40-49
00080   inline static colord maroon() {return colord(0.68751,0.187503,0.375006);}
00081   inline static colord orange() {return colord(0.996109,0.644541,0);}
00082   inline static colord orchid() {return colord(0.851575,0.437507,0.83595);}
00083   inline static colord darkorchid() {return colord(0.597665,0.195315,0.796887);}
00084   inline static colord mediumorchid() {return colord(0.726574,0.332036,0.824231);}
00085   inline static colord pink() {return colord(0.996109,0.750011,0.792981);}
00086   inline static colord plum() {return colord(0.863294,0.62501,0.863294);}
00087   inline static colord red() {return colord(1,0,0);}
00088   inline static colord indianred() {return colord(0.800793,0.35938,0.35938);}
00089   inline static colord mediumvioletred() {return colord(0.777356,0.0820325,0.519539);}
00090       
00091   //50-59
00092   inline static colord orangered() {return colord(0.996109,0.269535,0);}
00093   inline static colord violetred() {return colord(0.812512,0.125002,0.562509);}
00094   inline static colord salmon() {return colord(0.976577,0.500008,0.445319);}
00095   inline static colord sienna() {return colord(0.62501,0.320317,0.175784);}
00096   inline static colord tan() {return colord(0.820325,0.703136,0.546883);}
00097   inline static colord thistle() {return colord(0.843763,0.746105,0.843763);}
00098   inline static colord turquoise() {return colord(0.250004,0.875013,0.812512);}
00099   inline static colord darkturquoise() {return colord(0,0.8047,0.816419);}
00100   inline static colord mediumturquoise() {return colord(0.281254,0.816419,0.796887);}
00101   inline static colord violet() {return colord(0.929702,0.50782,0.929702);}
00102 
00103   //60-64
00104   inline static colord blueviolet() {return colord(0.539071,0.167971,0.882826);}
00105   inline static colord wheat() {return colord(0.957046,0.867201,0.699229);}
00106   inline static colord white() {return colord(1,1,1);}
00107   inline static colord yellow() {return colord(1,1,0);}
00108   inline static colord greenyellow() {return colord(0.675792,0.996109,0.18359);}
00109 
00110 public: //a list form of the uppers :
00111   inline static unsigned int named_color_number() {return 65;}
00112   typedef char name[24];
00113   inline static const name* named_color_names() {
00114     static const char list[65][24] = { //read only static.
00115       "aquamarine",
00116       "mediumaquamarine",
00117       "black",
00118       "blue",
00119       "cadetblue",
00120       "cornflowerblue",
00121       "darkslateblue",
00122       "lightblue",
00123       "lightsteelblue",
00124       "mediumblue",
00125 
00126       "mediumslateblue",
00127       "midnightblue",
00128       "navyblue",
00129       "navy",
00130       "skyblue",
00131       "slateblue",
00132       "steelblue",
00133       "coral",
00134       "cyan",
00135       "firebrick",
00136 
00137       "brown",
00138       "gold",
00139       "goldenrod",
00140       "green",
00141       "darkgreen",
00142       "darkolivegreen",
00143       "forestgreen",
00144       "limegreen",
00145       "mediumseagreen",
00146       "mediumspringgreen",
00147 
00148       "palegreen",
00149       "seagreen",
00150       "springgreen",
00151       "yellowgreen",
00152       "darkslategrey",
00153       "dimgrey",
00154       "lightgrey",
00155       "grey",
00156       "khaki",
00157       "magenta",
00158 
00159       "maroon",
00160       "orange",
00161       "orchid",
00162       "darkorchid",
00163       "mediumorchid",
00164       "pink",
00165       "plum",
00166       "red",
00167       "indianred",
00168       "mediumvioletred",
00169       
00170       "orangered",
00171       "violetred",
00172       "salmon",
00173       "sienna",
00174       "tan",
00175       "thistle",
00176       "turquoise",
00177       "darkturquoise",
00178       "mediumturquoise",
00179       "violet",
00180 
00181       "blueviolet",
00182       "wheat",
00183       "white",
00184       "yellow",
00185       "greenyellow"
00186     };
00187     return list;
00188   }
00189 
00190   typedef double rgb[3];
00191   inline static const rgb* named_color_rgbs() {
00192     static const double list[65][3] = {
00193       {0.496101,0.996109,0.828138}, //aquamarine
00194       {0.398444,0.800793,0.664073}, //mediumaquamarine
00195       {0,0,0}, //black
00196       {0,0,1}, //blue
00197       {0.371099,0.617197,0.62501}, //cadetblue
00198       {0.390631,0.58204,0.925795}, //cornflowerblue
00199       {0.281254,0.238285,0.542977}, //darkslateblue
00200       {0.675792,0.843763,0.898451}, //lightblue
00201       {0.68751,0.765637,0.867201}, //lightsteelblue
00202       {0,0,0.800793}, //mediumblue
00203 
00204       {0.480476,0.406256,0.929702}, //mediumslateblue
00205       {0.0976577,0.0976577,0.437507}, //midnightblue
00206       {0,0,0.500008}, //navyblue
00207       {0,0,0.500008}, //navy
00208       {0.527352,0.8047,0.917983}, //skyblue
00209       {0.414069,0.351568,0.800793}, //slateblue
00210       {0.273442,0.50782,0.703136}, //steelblue
00211       {0.996109,0.496101,0.312505}, //coral
00212       {0,1,1}, //cyan
00213       {0.695323,0.132815,0.13281}, //firebrick
00214 
00215       {0.644541,0.164065,0.164065}, //brown
00216       {0.996109,0.839857,0}, //gold
00217       {0.851575,0.644541,0.125002}, //goldenrod
00218       {0,1,0}, //green
00219       {0,0.390631,0}, //darkgreen
00220       {0.332036,0.417975,0.183597}, //darkolivegreen
00221       {0.132815,0.542977,0.132815}, //forestgreen
00222       {0.195315,0.800793,0.195315}, //limegreen
00223       {0.234379,0.699229,0.441413}, //mediumseagreen
00224       {0,0.976577,0.601572}, //mediumspringgreen
00225 
00226       {0.593759,0.980484,0.593759}, //palegreen
00227       {0.17969,0.542977,0.339849}, //seagreen
00228       {0,0.996109,0.496101}, //springgreen
00229       {0.601572,0.800793,0.195315}, //yellowgreen
00230       {0.183597,0.308598,0.308598}, //darkslategrey
00231       {0.410163,0.410163,0.410163}, //dimgrey
00232       {0.824231,0.824231,0.824231}, //lightgrey
00233       {0.750011,0.750011,0.750011}, //grey
00234       {0.937514,0.898451,0.546883}, //khaki
00235       {1,0,1}, //magenta
00236 
00237       {0.68751,0.187503,0.375006}, //maroon
00238       {0.996109,0.644541,0}, //orange
00239       {0.851575,0.437507,0.83595}, //orchid
00240       {0.597665,0.195315,0.796887}, //darkorchid
00241       {0.726574,0.332036,0.824231}, //mediumorchid
00242       {0.996109,0.750011,0.792981}, //pink
00243       {0.863294,0.62501,0.863294}, //plum
00244       {1,0,0}, //red
00245       {0.800793,0.35938,0.35938}, //indianred
00246       {0.777356,0.0820325,0.519539}, //mediumvioletred
00247       
00248       {0.996109,0.269535,0}, //orangered
00249       {0.812512,0.125002,0.562509}, //violetred
00250       {0.976577,0.500008,0.445319}, //salmon
00251       {0.62501,0.320317,0.175784}, //sienna
00252       {0.820325,0.703136,0.546883}, //tan
00253       {0.843763,0.746105,0.843763}, //thistle
00254       {0.250004,0.875013,0.812512}, //turquoise
00255       {0,0.8047,0.816419}, //darkturquoise
00256       {0.281254,0.816419,0.796887}, //mediumturquoise
00257       {0.929702,0.50782,0.929702}, //violet
00258 
00259       {0.539071,0.167971,0.882826}, //blueviolet
00260       {0.957046,0.867201,0.699229}, //wheat
00261       {1,1,1}, //white
00262       {1,1,0}, //yellow
00263       {0.675792,0.996109,0.18359} //greenyellow
00264     };
00265     return list;
00266   }
00267 
00268   inline static bool to(const std::string& a_string,
00269                         double& a_r,double& a_g,double& a_b){
00270     unsigned int number = named_color_number();
00271     const colord::name*  names = named_color_names();
00272     const colord::rgb* rgbs = named_color_rgbs();
00273     for(unsigned int index=0;index<number;index++) {
00274       if(a_string==names[index]) {
00275         a_r = rgbs[index][0];
00276         a_g = rgbs[index][1];
00277         a_b = rgbs[index][2];
00278         return true;
00279       }
00280     }
00281     a_r = 0.5;
00282     a_g = 0.5;
00283     a_b = 0.5;
00284     return false;
00285   }
00286 
00287 };
00288 
00289 }
00290 
00291 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines