Geant4 Cross Reference |
1 // Copyright (C) 2010, Guy Barrand. All rights 2 // See the file tools.license for terms. 3 4 #ifndef tools_sg_ortho 5 #define tools_sg_ortho 6 7 #include "base_camera" 8 9 namespace tools { 10 namespace sg { 11 12 class ortho : public base_camera { 13 TOOLS_NODE(ortho,tools::sg::ortho,base_camer 14 public: 15 virtual float near_height() const {return he 16 virtual void zoom(float a_fac) { 17 //for exa : 18 // a_fac = 0.99f is a zoom in 19 // a_fac = 1.01f is a zoom out 20 height.value(height.value()*a_fac); 21 } 22 virtual camera_type type() const {return cam 23 public: 24 sf<float> height; 25 public: 26 virtual const desc_fields& node_desc_fields( 27 TOOLS_FIELD_DESC_NODE_CLASS(tools::sg::ort 28 static const desc_fields s_v(parent::node_ 29 TOOLS_ARG_FIELD_DESC(height) 30 ); 31 return s_v; 32 } 33 private: 34 void add_fields(){ 35 add_field(&height); 36 } 37 public: 38 ortho() 39 :parent() 40 ,height(2) 41 { 42 #ifdef TOOLS_MEM 43 mem::increment(s_class().c_str()); 44 #endif 45 add_fields(); 46 } 47 virtual ~ortho(){ 48 #ifdef TOOLS_MEM 49 mem::decrement(s_class().c_str()); 50 #endif 51 } 52 public: 53 ortho(const ortho& a_from) 54 :parent(a_from) 55 ,height(a_from.height) 56 { 57 #ifdef TOOLS_MEM 58 mem::increment(s_class().c_str()); 59 #endif 60 add_fields(); 61 } 62 ortho& operator=(const ortho& a_from){ 63 parent::operator=(a_from); 64 height = a_from.height; 65 return *this; 66 } 67 public: //operators: 68 bool operator==(const ortho& a_from) const{ 69 if(!parent::operator==(a_from)) return fal 70 if(height!=a_from.height) return false; 71 return true; 72 } 73 bool operator!=(const ortho& a_from) const { 74 return !operator==(a_from); 75 } 76 public: 77 void dump(std::ostream& a_out) { 78 parent::dump(a_out); 79 a_out << " height " << height.value() << s 80 } 81 protected: 82 virtual void get_lrbt(unsigned int a_ww,unsi 83 float& a_l,float& a_r, 84 float aspect = float(a_ww)/float(a_wh); 85 //landscape : float aspect = float(a_actio 86 float hh = height.value()*0.5f; 87 a_l = -aspect*hh; 88 a_r = aspect*hh; 89 a_b = -hh; 90 a_t = hh; 91 } 92 }; 93 94 inline ortho* cast_ortho(base_camera& a_bcam) 95 96 }} 97 98 #endif