Mercurial > hg > octave-lyh
comparison src/graphics.h.in @ 7832:e06fdf7ea647
Fix default value of patch::facelighting. Add scaler/graphics_xform utilities
author | Michael Goffioul <michael.goffioul@gmail.com> |
---|---|
date | Wed, 20 Feb 2008 16:22:42 +0100 |
parents | 61aee739a4da |
children | 8ff92634982d |
comparison
equal
deleted
inserted
replaced
7831:c7925666f0bf | 7832:e06fdf7ea647 |
---|---|
213 return d; | 213 return d; |
214 } | 214 } |
215 | 215 |
216 virtual base_scaler* clone () const | 216 virtual base_scaler* clone () const |
217 { return new base_scaler (); } | 217 { return new base_scaler (); } |
218 | |
219 virtual bool is_linear (void) const | |
220 { return false; } | |
218 }; | 221 }; |
219 | 222 |
220 class lin_scaler : public base_scaler | 223 class lin_scaler : public base_scaler |
221 { | 224 { |
222 public: | 225 public: |
229 double scale (double d) const { return d; } | 232 double scale (double d) const { return d; } |
230 | 233 |
231 double unscale (double d) const { return d; } | 234 double unscale (double d) const { return d; } |
232 | 235 |
233 base_scaler* clone (void) const { return new lin_scaler (); } | 236 base_scaler* clone (void) const { return new lin_scaler (); } |
237 | |
238 bool is_linear (void) const { return true; } | |
234 }; | 239 }; |
235 | 240 |
236 class log_scaler : public base_scaler | 241 class log_scaler : public base_scaler |
237 { | 242 { |
238 public: | 243 public: |
289 double scale (double d) const | 294 double scale (double d) const |
290 { return rep->scale (d); } | 295 { return rep->scale (d); } |
291 | 296 |
292 double unscale (double d) const | 297 double unscale (double d) const |
293 { return rep->unscale (d); } | 298 { return rep->unscale (d); } |
299 | |
300 bool is_linear (void) const | |
301 { return rep->is_linear (); } | |
294 | 302 |
295 scaler& operator = (const scaler& s) | 303 scaler& operator = (const scaler& s) |
296 { | 304 { |
297 if (rep) | 305 if (rep) |
298 { | 306 { |
2373 bool scale = true) const; | 2381 bool scale = true) const; |
2374 | 2382 |
2375 Matrix xscale (const Matrix& m) const { return sx.scale (m); } | 2383 Matrix xscale (const Matrix& m) const { return sx.scale (m); } |
2376 Matrix yscale (const Matrix& m) const { return sy.scale (m); } | 2384 Matrix yscale (const Matrix& m) const { return sy.scale (m); } |
2377 Matrix zscale (const Matrix& m) const { return sz.scale (m); } | 2385 Matrix zscale (const Matrix& m) const { return sz.scale (m); } |
2386 | |
2387 Matrix scale (const Matrix& m) const | |
2388 { | |
2389 bool has_z = (m.columns () > 2); | |
2390 | |
2391 if (sx.is_linear () && sy.is_linear () | |
2392 && (! has_z || sz.is_linear ())) | |
2393 return m; | |
2394 | |
2395 Matrix retval (m.dims ()); | |
2396 | |
2397 int r = m.rows (); | |
2398 | |
2399 for (int i = 0; i < r; i++) | |
2400 { | |
2401 retval(i,0) = sx.scale (m(i,0)); | |
2402 retval(i,1) = sy.scale (m(i,1)); | |
2403 if (has_z) | |
2404 retval(i,2) = sz.scale (m(i,2)); | |
2405 } | |
2406 | |
2407 return retval; | |
2408 } | |
2378 | 2409 |
2379 private: | 2410 private: |
2380 Matrix xform; | 2411 Matrix xform; |
2381 Matrix xform_inv; | 2412 Matrix xform_inv; |
2382 scaler sx, sy, sz; | 2413 scaler sx, sy, sz; |
2865 array_property vertices , Matrix () | 2896 array_property vertices , Matrix () |
2866 array_property vertexnormals , Matrix () | 2897 array_property vertexnormals , Matrix () |
2867 radio_property normalmode , "{auto}|manual" | 2898 radio_property normalmode , "{auto}|manual" |
2868 color_property facecolor , "{flat}|none|interp" | 2899 color_property facecolor , "{flat}|none|interp" |
2869 double_property facealpha , 1.0 | 2900 double_property facealpha , 1.0 |
2870 radio_property facelighting , "{flat}|none|gouraud|phong" | 2901 radio_property facelighting , "flat|{none}|gouraud|phong" |
2871 color_property edgecolor , color_property (color_values (0, 0, 0), radio_values ("flat|none|interp")) | 2902 color_property edgecolor , color_property (color_values (0, 0, 0), radio_values ("flat|none|interp")) |
2872 double_property edgealpha , 1.0 | 2903 double_property edgealpha , 1.0 |
2873 radio_property edgelighting , "{none}|flat|gouraud|phong" | 2904 radio_property edgelighting , "{none}|flat|gouraud|phong" |
2874 radio_property backfacelighting , "{reverselit}|unlit|lit" | 2905 radio_property backfacelighting , "{reverselit}|unlit|lit" |
2875 double_property ambientstrength , 0.3 | 2906 double_property ambientstrength , 0.3 |