Geant4 Cross Reference |
1 // Copyright (C) 2010, Guy Barrand. All rights 1 // Copyright (C) 2010, Guy Barrand. All rights reserved. 2 // See the file tools.license for terms. 2 // See the file tools.license for terms. 3 3 4 #ifndef tools_sg_base_text 4 #ifndef tools_sg_base_text 5 #define tools_sg_base_text 5 #define tools_sg_base_text 6 6 7 #include "node" 7 #include "node" 8 8 9 #include "sf_enum" 9 #include "sf_enum" 10 #include "mf" 10 #include "mf" 11 #include "enums" //hjust,vjust 11 #include "enums" //hjust,vjust 12 //#include "../lina/box3f" 12 //#include "../lina/box3f" 13 13 14 namespace tools { 14 namespace tools { 15 namespace sg { 15 namespace sg { 16 16 17 class base_text : public node { 17 class base_text : public node { 18 typedef node parent; 18 typedef node parent; 19 public: 19 public: 20 virtual float ascent(float) const = 0; 20 virtual float ascent(float) const = 0; 21 virtual float descent(float) const = 0; 21 virtual float descent(float) const = 0; 22 virtual float y_advance(float) const = 0; 22 virtual float y_advance(float) const = 0; 23 virtual void get_bounds(float, 23 virtual void get_bounds(float, 24 float&,float&,float& 24 float&,float&,float&, 25 float&,float&,float& 25 float&,float&,float&) const = 0; 26 26 27 virtual bool truncate(const std::string&,flo 27 virtual bool truncate(const std::string&,float,float,std::string&) const = 0; 28 public: 28 public: 29 mf_string strings; 29 mf_string strings; 30 sf<float> height; 30 sf<float> height; 31 sf_enum<sg::hjust> hjust; 31 sf_enum<sg::hjust> hjust; 32 sf_enum<sg::vjust> vjust; 32 sf_enum<sg::vjust> vjust; 33 public: 33 public: 34 virtual const desc_fields& node_desc_fields( 34 virtual const desc_fields& node_desc_fields() const { 35 TOOLS_FIELD_DESC_NODE_CLASS(tools::sg::bas 35 TOOLS_FIELD_DESC_NODE_CLASS(tools::sg::base_text) 36 static const desc_fields s_v(parent::node_ 36 static const desc_fields s_v(parent::node_desc_fields(),4, //WARNING : take care of count. 37 TOOLS_ARG_FIELD_DESC(strings), 37 TOOLS_ARG_FIELD_DESC(strings), 38 TOOLS_ARG_FIELD_DESC(height), 38 TOOLS_ARG_FIELD_DESC(height), 39 TOOLS_ARG_FIELD_DESC(hjust), 39 TOOLS_ARG_FIELD_DESC(hjust), 40 TOOLS_ARG_FIELD_DESC(vjust) 40 TOOLS_ARG_FIELD_DESC(vjust) 41 ); 41 ); 42 return s_v; 42 return s_v; 43 } 43 } 44 private: 44 private: 45 void add_fields(){ 45 void add_fields(){ 46 add_field(&strings); 46 add_field(&strings); 47 add_field(&height); 47 add_field(&height); 48 add_field(&hjust); 48 add_field(&hjust); 49 add_field(&vjust); 49 add_field(&vjust); 50 } 50 } 51 public: 51 public: 52 base_text() 52 base_text() 53 :parent() 53 :parent() 54 ,height(1.0f) 54 ,height(1.0f) 55 ,hjust(left) 55 ,hjust(left) 56 ,vjust(bottom) 56 ,vjust(bottom) 57 { 57 { 58 add_fields(); 58 add_fields(); 59 } 59 } 60 virtual ~base_text(){} 60 virtual ~base_text(){} 61 protected: 61 protected: 62 base_text(const base_text& a_from) 62 base_text(const base_text& a_from) 63 :parent(a_from) 63 :parent(a_from) 64 ,strings(a_from.strings) 64 ,strings(a_from.strings) 65 ,height(a_from.height) 65 ,height(a_from.height) 66 ,hjust(a_from.hjust) 66 ,hjust(a_from.hjust) 67 ,vjust(a_from.vjust) 67 ,vjust(a_from.vjust) 68 { 68 { 69 add_fields(); 69 add_fields(); 70 } 70 } 71 base_text& operator=(const base_text& a_from 71 base_text& operator=(const base_text& a_from){ 72 parent::operator=(a_from); 72 parent::operator=(a_from); 73 height = a_from.height; 73 height = a_from.height; 74 strings = a_from.strings; 74 strings = a_from.strings; 75 hjust = a_from.hjust; 75 hjust = a_from.hjust; 76 vjust = a_from.vjust; 76 vjust = a_from.vjust; 77 return *this; 77 return *this; 78 } 78 } 79 public: 79 public: 80 80 81 // void get_bounds(float a_height,box3f& a_bo 81 // void get_bounds(float a_height,box3f& a_box) { 82 // //for backward compatibility. 82 // //for backward compatibility. 83 // float mn_x,mn_y,mn_z; 83 // float mn_x,mn_y,mn_z; 84 // float mx_x,mx_y,mx_z; 84 // float mx_x,mx_y,mx_z; 85 // get_bounds(a_height,mn_x,mn_y,mn_z,mx_x, 85 // get_bounds(a_height,mn_x,mn_y,mn_z,mx_x,mx_y,mx_z); 86 // a_box.set_bounds(mn_x,mn_y,mn_z,mx_x,mx_ 86 // a_box.set_bounds(mn_x,mn_y,mn_z,mx_x,mx_y,mx_z); 87 // } 87 // } 88 88 89 }; 89 }; 90 90 91 }} 91 }} 92 92 93 #endif 93 #endif