comparison src/graphics.cc @ 6568:9520d1004a73

[project @ 2007-04-24 21:44:21 by jwe]
author jwe
date Tue, 24 Apr 2007 21:44:21 +0000
parents 3e2cfed6c87e
children 55586d763de1
comparison
equal deleted inserted replaced
6567:e82cb026b893 6568:9520d1004a73
61 // --------------------------------------------------------------------- 61 // ---------------------------------------------------------------------
62 62
63 class color_property 63 class color_property
64 { 64 {
65 public: 65 public:
66 color_property (double r = 0, double g = 0, double b = 1, double a = 1) 66 color_property (double r = 0, double g = 0, double b = 1)
67 { 67 {
68 xrgba[0] = r; 68 xrgb[0] = r;
69 xrgba[1] = g; 69 xrgb[1] = g;
70 xrgba[2] = b; 70 xrgb[2] = b;
71 xrgba[3] = a;
72 71
73 validate (); 72 validate ();
74 } 73 }
75 74
76 color_property (char c) 75 color_property (char c)
77 { 76 {
78 c2rgba (c); 77 c2rgb (c);
79 } 78 }
80 79
81 color_property (const octave_value& val) 80 color_property (const octave_value& val)
82 { 81 {
83 // FIXME -- need some error checking here. 82 // FIXME -- need some error checking here.
84 83
85 Matrix m = val.matrix_value (); 84 Matrix m = val.matrix_value ();
86 85
87 if (! error_state && m.numel () >= 3 && m.numel () <= 4) 86 if (! error_state && m.numel () == 3)
88 { 87 {
89 for (int i = 0; i < m.numel (); i++) 88 for (int i = 0; i < m.numel (); i++)
90 xrgba[i] = m(i); 89 xrgb[i] = m(i);
91 90
92 validate (); 91 validate ();
93 } 92 }
94 else 93 else
95 { 94 {
96 std::string c = val.string_value (); 95 std::string c = val.string_value ();
97 96
98 if (! error_state && c.length () == 1) 97 if (! error_state && c.length () == 1)
99 c2rgba (c[0]); 98 c2rgb (c[0]);
100 else 99 else
101 error ("invalid color specification"); 100 error ("invalid color specification");
102 } 101 }
103 } 102 }
104 103
105 void validate (void) const 104 void validate (void) const
106 { 105 {
107 for (int i = 0; i < 4; i++) 106 for (int i = 0; i < 3; i++)
108 { 107 {
109 if (xrgba[i] < 0 || xrgba[i] > 1) 108 if (xrgb[i] < 0 || xrgb[i] > 1)
110 { 109 {
111 error ("invalid RGB color specification"); 110 error ("invalid RGB color specification");
112 break; 111 break;
113 } 112 }
114 } 113 }
117 operator octave_value (void) const 116 operator octave_value (void) const
118 { 117 {
119 Matrix retval (1, 3); 118 Matrix retval (1, 3);
120 119
121 for (int i = 0; i < 3 ; i++) 120 for (int i = 0; i < 3 ; i++)
122 retval(i) = xrgba[i]; 121 retval(i) = xrgb[i];
123 122
124 return retval; 123 return retval;
125 } 124 }
126 125
127 const double* rgba (void) const 126 const double* rgb (void) const
128 { 127 {
129 return xrgba; 128 return xrgb;
130 } 129 }
131 130
132 private: 131 private:
133 double xrgba[4]; 132 double xrgb[3];
134 133
135 void c2rgba (char c) 134 void c2rgb (char c)
136 { 135 {
137 double tmp_rgba[4] = {0,0,0,1}; 136 double tmp_rgb[4] = {0, 0, 0};
138 137
139 switch(c) 138 switch(c)
140 { 139 {
141 case 'r': 140 case 'r':
142 tmp_rgba[0] = 1; 141 tmp_rgb[0] = 1;
143 break; 142 break;
144 143
145 case 'g': 144 case 'g':
146 tmp_rgba[1] = 1; 145 tmp_rgb[1] = 1;
147 break; 146 break;
148 147
149 case 'b': 148 case 'b':
150 tmp_rgba[2] = 1; 149 tmp_rgb[2] = 1;
151 break; 150 break;
152 151
153 case 'c': 152 case 'c':
154 tmp_rgba[1] = tmp_rgba[2] = 1; 153 tmp_rgb[1] = tmp_rgb[2] = 1;
155 break; 154 break;
156 155
157 case 'm': 156 case 'm':
158 tmp_rgba[0] = tmp_rgba[2] = 1; 157 tmp_rgb[0] = tmp_rgb[2] = 1;
159 break; 158 break;
160 159
161 case 'y': 160 case 'y':
162 tmp_rgba[0] = tmp_rgba[1] = 1; 161 tmp_rgb[0] = tmp_rgb[1] = 1;
163 break; 162 break;
164 163
165 case 'w': 164 case 'w':
166 tmp_rgba[0] = tmp_rgba[1] = tmp_rgba[2] = 1; 165 tmp_rgb[0] = tmp_rgb[1] = tmp_rgb[2] = 1;
167 break; 166 break;
168 167
169 default: 168 default:
170 error ("invalid color specification"); 169 error ("invalid color specification");
171 } 170 }
172 171
173 if (! error_state) 172 if (! error_state)
174 { 173 {
175 for (int i = 0; i < 4; i++) 174 for (int i = 0; i < 4; i++)
176 xrgba[i] = tmp_rgba[i]; 175 xrgb[i] = tmp_rgb[i];
177 } 176 }
178 } 177 }
179 }; 178 };
180 179
181 class colormap_property 180 class colormap_property