00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _quickcg_h_
00029 #define _quickcg_h_
00030
00031 #include <boost/archive/xml_iarchive.hpp>
00032 #include <boost/archive/xml_oarchive.hpp>
00033
00035
00037
00038
00039 #ifndef max
00040 #define max(a,b) ((a)>(b)?(a):(b))
00041 #endif
00042 #ifndef min
00043 #define min(a,b) ((a)<(b)?(a):(b))
00044 #endif
00045
00046
00047 #define Scalar double
00048
00050
00052
00053 typedef char Uint8;
00054 typedef unsigned long Uint32;
00055
00056 struct ColorRGB8bit;
00057
00058 struct ColorRGB
00059 {
00060 int r;
00061 int g;
00062 int b;
00063
00064 ColorRGB(Uint8 r, Uint8 g, Uint8 b);
00065 ColorRGB(int r, int g, int b);
00066 ColorRGB(ColorRGB8bit color);
00067 ColorRGB();
00068 ColorRGB &operator=(ColorRGB color2);
00069
00070 template<class Archive>
00071 void serialize(Archive & ar, const unsigned int version)
00072 {
00073 ar & BOOST_SERIALIZATION_NVP(r);
00074 ar & BOOST_SERIALIZATION_NVP(g);
00075 ar & BOOST_SERIALIZATION_NVP(b);
00076 }
00077 };
00078
00079 ColorRGB operator+(ColorRGB color, ColorRGB color2);
00080 ColorRGB operator-(ColorRGB color, ColorRGB color2);
00081 ColorRGB operator*(ColorRGB color, int a);
00082 ColorRGB operator*(int a, ColorRGB color);
00083 ColorRGB operator/(ColorRGB color, int a);
00084 bool operator==(ColorRGB color, ColorRGB color2);
00085 bool operator!=(ColorRGB color, ColorRGB color2);
00086
00087 #define RGB_Black ColorRGB( 0, 0, 0)
00088 #define RGB_Red ColorRGB(255, 0, 0)
00089 #define RGB_Green ColorRGB( 0, 255, 0)
00090 #define RGB_Blue ColorRGB( 0, 0, 255)
00091 #define RGB_Cyan ColorRGB( 0, 255, 255)
00092 #define RGB_Magenta ColorRGB(255, 0, 255)
00093 #define RGB_Yellow ColorRGB(255, 255, 0)
00094 #define RGB_White ColorRGB(255, 255, 255)
00095 #define RGB_Gray ColorRGB(128, 128, 128)
00096 #define RGB_Grey ColorRGB(192, 192, 192)
00097 #define RGB_Maroon ColorRGB(128, 0, 0)
00098 #define RGB_Darkgreen ColorRGB( 0, 128, 0)
00099 #define RGB_Navy ColorRGB( 0, 0, 128)
00100 #define RGB_Teal ColorRGB( 0, 128, 128)
00101 #define RGB_Purple ColorRGB(128, 0, 128)
00102 #define RGB_Olive ColorRGB(128, 128, 0)
00103
00104
00105 struct ColorRGB8bit
00106 {
00107 Uint8 r;
00108 Uint8 g;
00109 Uint8 b;
00110
00111 ColorRGB8bit(Uint8 r, Uint8 g, Uint8 b);
00112 ColorRGB8bit(ColorRGB color);
00113 ColorRGB8bit();
00114 };
00115
00116
00117 struct ColorHSL
00118 {
00119 int h;
00120 int s;
00121 int l;
00122
00123 ColorHSL(Uint8 h, Uint8 s, Uint8 l);
00124 ColorHSL();
00125 };
00126
00127
00128 struct ColorHSV
00129 {
00130 int h;
00131 int s;
00132 int v;
00133
00134 ColorHSV(Uint8 h, Uint8 s, Uint8 v);
00135 ColorHSV();
00136 };
00137
00139
00141 ColorHSL RGBtoHSL(ColorRGB colorRGB);
00142 ColorRGB HSLtoRGB(ColorHSL colorHSL);
00143 ColorHSV RGBtoHSV(ColorRGB colorRGB);
00144 ColorRGB HSVtoRGB(ColorHSV colorHSV);
00145 Uint32 RGBtoINT(ColorRGB colorRGB);
00146 ColorRGB INTtoRGB(Uint32 colorINT);
00147
00148
00149 #endif
00150
00151