Changeset 267 for trunk/src/gui/gui_environment.cc
- Timestamp:
- 06/19/14 19:03:25 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/gui/gui_environment.cc
r264 r267 25 25 #include "nv/gfx/texture_atlas.hh" 26 26 27 #include <vector> 28 29 using namespace nv; 30 using namespace nv::gui; 31 32 environment::environment( window* w, const std::string& shader_path ) 27 nv::gui::environment::environment( window* w, const std::string& shader_path ) 33 28 : m_renderer( nullptr ), m_window( w ), m_screen( nullptr ) 34 29 { 35 30 m_area.dim( dimension( w->get_width(), w->get_height() ) ); 36 m_screen = new screen( m_area );31 m_screen = new element( m_area ); 37 32 m_renderer = new renderer( w, shader_path ); 38 33 } … … 43 38 } 44 39 45 element* nv::gui::environment::create_element( element* parent, const rectangle& r )40 nv::gui::element* nv::gui::environment::create_element( element* parent, const rectangle& r ) 46 41 { 47 42 element* result = new element( r ); … … 58 53 } 59 54 60 void environment::update( element* e, uint32 elapsed )61 { 62 e->on_update( elapsed );55 void nv::gui::environment::update( element* e, uint32 elapsed ) 56 { 57 // e->on_update( elapsed ); 63 58 if ( e->is_visible() ) 64 59 { … … 75 70 } 76 71 77 void environment::draw( element* e )72 void nv::gui::environment::draw( element* e ) 78 73 { 79 74 if ( e->is_visible() ) 80 75 { 81 e->on_draw();76 // e->on_draw(); 82 77 m_renderer->draw( e ); 83 78 for ( object* i : *e ) … … 88 83 } 89 84 90 void environment::update()85 void nv::gui::environment::update() 91 86 { 92 87 update( m_screen, 0 ); 93 88 } 94 89 95 void environment::draw()90 void nv::gui::environment::draw() 96 91 { 97 92 draw( m_screen ); … … 99 94 } 100 95 101 void environment::add_child( element* child )96 void nv::gui::environment::add_child( element* child ) 102 97 { 103 98 m_screen->add_child( child ); 104 99 } 105 100 106 void environment::destroy_children( element* e )101 void nv::gui::environment::destroy_children( element* e ) 107 102 { 108 103 while ( !e->m_children.empty() ) … … 113 108 114 109 115 environment::~environment()110 nv::gui::environment::~environment() 116 111 { 117 112 destroy_element( m_screen ); … … 119 114 } 120 115 116 bool nv::gui::environment::process_io_event( const io_event& ) 117 { 118 return false; 119 } 120 121 bool nv::gui::environment::process_io_event( element* e, const io_event& ev ) 122 { 123 return e->m_parent ? process_io_event( (element*)e->m_parent, ev ) : false; 124 } 125 126 nv::gui::element* nv::gui::environment::get_element( const position& p ) 127 { 128 return get_deepest_child( m_screen, p ); 129 } 130 131 nv::gui::element* nv::gui::environment::get_deepest_child( element* e, const position& p ) 132 { 133 if ( !e->is_visible() ) return nullptr; 134 135 element* result = nullptr; 136 element::list::reverse_iterator it = e->m_children.rbegin(); 137 138 while ( it != e->m_children.rend() ) 139 { 140 result = get_deepest_child( (element*)(*it), p ); 141 if ( result ) return result; 142 ++it; 143 } 144 145 if ( e->contains( p ) ) return e; 146 return nullptr; 147 } 148 149 void nv::gui::environment::move_to_top( element* child ) 150 { 151 element* parent = (element*)child->m_parent; 152 if ( parent ) 153 { 154 auto it = std::find( parent->m_children.begin(), parent->m_children.end(), (object*)child ); 155 if ( it != parent->m_children.end() ) 156 { 157 parent->m_children.erase( it ); 158 parent->m_children.push_back( child ); 159 parent->m_dirty = true; 160 } 161 } 162 } 163 164 void nv::gui::environment::move_to_bottom( element* child ) 165 { 166 element* parent = (element*)child->m_parent; 167 if ( parent ) 168 { 169 auto it = std::find( parent->m_children.begin(), parent->m_children.end(), (object*)child ); 170 if ( it != parent->m_children.end() ) 171 { 172 parent->m_children.erase( it ); 173 parent->m_children.push_front( child ); 174 parent->m_dirty = true; 175 } 176 } 177 } 178 179 void nv::gui::environment::set_relative( element* e, const rectangle& r ) 180 { 181 e->m_dirty = true; 182 e->m_relative = r; 183 recalculate_absolute( e ); 184 } 185 186 void nv::gui::environment::set_relative( element* e, const position& p ) 187 { 188 set_relative( e, rectangle( p, p + e->m_relative.get_size() ) ); 189 } 190 191 void nv::gui::environment::recalculate_absolute( element* e ) 192 { 193 rectangle pabsolute; 194 195 if ( e->m_parent ) 196 { 197 pabsolute = ((element*)(e->m_parent))->m_absolute; 198 } 199 200 e->m_absolute = e->m_relative + pabsolute.ul; 201 202 for ( object* o : e->m_children ) 203 { 204 recalculate_absolute( ((element*)o) ); 205 } 206 } 207
Note: See TracChangeset
for help on using the changeset viewer.