Geant4 Cross Reference |
1 // Copyright (C) 2010, Guy Barrand. All rights 2 // See the file tools.license for terms. 3 4 #ifndef tools_sg_rgba 5 #define tools_sg_rgba 6 7 #include "node" 8 9 #include "sf_vec" 10 #include "render_action" 11 #include "../colorfs" 12 13 namespace tools { 14 namespace sg { 15 16 class rgba : public node { 17 TOOLS_NODE(rgba,tools::sg::rgba,node) 18 public: 19 sf_vec<colorf,float> color; 20 public: 21 virtual const desc_fields& node_desc_fields( 22 TOOLS_FIELD_DESC_NODE_CLASS(tools::sg::rgb 23 static const desc_fields s_v(parent::node_ 24 TOOLS_ARG_FIELD_DESC(color) 25 ); 26 return s_v; 27 } 28 private: 29 void add_fields(){ 30 add_field(&color); 31 } 32 public: 33 virtual void render(render_action& a_action) 34 // GL-ES : ::glMaterialfv does not work. W 35 // ::glEnable(GL_COLOR_MATERIAL) a 36 37 //if(a_action.state().m_GL_LIGHTING) { 38 // float params[4]; 39 // params[0] = rgb.value().r(); 40 // params[1] = rgb.value().g(); 41 // params[2] = rgb.value().b(); 42 // params[3] = rgb.value().a(); 43 // ::glMaterialfv(GL_FRONT,GL_DIFFUSE,par 44 //} else { 45 //} 46 47 state& state = a_action.state(); 48 state.m_color = color.value(); 49 a_action.color4f(state.m_color); 50 } 51 public: 52 rgba() 53 :parent() 54 ,color(colorf_grey()) 55 { 56 add_fields(); 57 } 58 virtual ~rgba(){} 59 public: 60 rgba(const rgba& a_from) 61 :parent(a_from) 62 ,color(a_from.color) 63 { 64 add_fields(); 65 } 66 rgba& operator=(const rgba& a_from){ 67 parent::operator=(a_from); 68 color = a_from.color; 69 return *this; 70 } 71 }; 72 73 }} 74 75 #endif