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
00029
00030
00031 #ifndef COLORMAP_H
00032 #define COLORMAP_H
00033
00034 #include <vector>
00035 #include <ostream>
00036
00037 namespace Arroyo {
00038
00042
00043 class colormap {
00044
00045 public:
00048 colormap(){};
00049
00052 virtual ~colormap(){};
00053
00056 colormap & operator= (const colormap & fhd);
00057
00060 virtual void read(const char * filename) = 0;
00061
00064 virtual void print(std::ostream & os, const char * prefix = "") const = 0;
00065
00068 virtual void invert() = 0;
00069
00072 virtual char get_R(double val, double min, double max,
00073 bool logscale = false) const = 0;
00074
00077 virtual char get_G(double val, double min, double max,
00078 bool logscale = false) const = 0;
00079
00082 virtual char get_B(double val, double min, double max,
00083 bool logscale = false) const = 0;
00084
00085 };
00086
00095
00096 class sao_colormap :
00097 public colormap {
00098
00099 private:
00100
00101 protected:
00102
00103 std::vector<std::vector<double> > R_points;
00104 std::vector<std::vector<double> > G_points;
00105 std::vector<std::vector<double> > B_points;
00106
00107 public:
00108
00111 sao_colormap(){
00112 R_points = std::vector<std::vector<double> >(3);
00113 R_points[0] = std::vector<double>(2,0);
00114 R_points[1] = std::vector<double>(2,1);
00115 R_points[1][0] = .5;
00116 R_points[2] = std::vector<double>(2,1);
00117
00118 G_points = R_points;
00119 B_points = R_points;
00120
00121 };
00122
00125 sao_colormap(std::vector<std::vector<double> > & in_R_points,
00126 std::vector<std::vector<double> > & in_G_points,
00127 std::vector<std::vector<double> > & in_B_points);
00128
00131 sao_colormap(const char * filename);
00132
00135 sao_colormap(const sao_colormap & scm){
00136 sao_colormap::operator=(scm);
00137 };
00138
00141 ~sao_colormap(){};
00142
00145 sao_colormap & operator= (const sao_colormap & scm);
00146
00149 void read(const char * filename);
00150
00153 void print(std::ostream & os, const char * prefix = "") const;
00154
00157 void invert();
00158
00161 char get_R(double val, double min, double max, bool logscale) const;
00162
00165 char get_G(double val, double min, double max, bool logscale) const;
00166
00169 char get_B(double val, double min, double max, bool logscale) const;
00170
00171 };
00172
00173 }
00174
00175 #endif