Changeset 271 for trunk/src/gui
- Timestamp:
- 07/04/14 14:50:10 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/gui/gui_environment.cc
r270 r271 30 30 m_area.dim( dimension( w->get_width(), w->get_height() ) ); 31 31 32 m_screen = create_handle();33 element* screen = get_element( m_screen );32 m_screen = m_elements.create(); 33 element* screen = m_elements.get( m_screen ); 34 34 screen->m_absolute = m_area; 35 35 screen->m_relative = m_area; … … 51 51 { 52 52 if ( parent.is_nil() ) parent = m_screen; 53 handle result = create_handle();54 element* e = get_element( result );53 handle result = m_elements.create(); 54 element* e = m_elements.get( result ); 55 55 e->m_absolute = r; 56 56 e->m_relative = r; … … 59 59 } 60 60 61 nv::gui::handle nv::gui::environment::create_handle()62 {63 m_elements.emplace_back();64 m_elements.back().m_this = m_indexes.create_handle( sint32( m_elements.size() - 1 ) );65 return m_elements.back().m_this;66 }67 68 61 void nv::gui::environment::destroy_element( handle e ) 69 62 { 70 element* dead_element = get_element( e );63 element* dead_element = m_elements.get( e ); 71 64 if ( dead_element == nullptr ) return; 72 65 destroy_children( e ); … … 77 70 dead_element->m_parent = handle(); 78 71 79 handle swap_handle = m_elements.back().m_this; 80 sint32 dead_eindex = m_indexes.get_index( e ); 81 if ( dead_eindex != (sint32)m_elements.size()-1 ) 82 { 83 m_elements[ dead_eindex ] = m_elements.back(); 84 } 85 m_elements.pop_back(); 86 m_indexes.swap_indices( e, swap_handle ); 87 m_indexes.free_handle( e ); 72 m_elements.destroy( e ); 88 73 } 89 74 90 75 void nv::gui::environment::update( handle e, uint32 elapsed ) 91 76 { 92 element* el = get_element( e );77 element* el = m_elements.get( e ); 93 78 if ( !el ) return; 94 79 // el->on_update( elapsed ); … … 109 94 void nv::gui::environment::draw( handle e ) 110 95 { 111 element* el = get_element( e );96 element* el = m_elements.get( e ); 112 97 if ( !el ) return; 113 98 if ( el->m_visible ) … … 140 125 void nv::gui::environment::add_child( handle parent, handle child ) 141 126 { 142 element* e = get_element( child );143 element* p = get_element( parent );127 element* e = m_elements.get( child ); 128 element* p = m_elements.get( parent ); 144 129 if ( e && p ) 145 130 { … … 153 138 void nv::gui::environment::destroy_children( handle e ) 154 139 { 155 element* parent = get_element(e);140 element* parent = m_elements.get(e); 156 141 if ( parent ) 157 142 { … … 177 162 bool nv::gui::environment::process_io_event( handle e, const io_event& ev ) 178 163 { 179 element* el = get_element( e );164 element* el = m_elements.get( e ); 180 165 return el && el->m_parent.is_valid() ? process_io_event( el->m_parent, ev ) : false; 181 166 } … … 186 171 } 187 172 188 nv::gui::element* nv::gui::environment::get_element( handle h )189 {190 if ( h.is_nil() ) return nullptr;191 sint32 eindex = m_indexes.get_index( h );192 return eindex >= 0 ? &m_elements[ eindex ] : nullptr;193 }194 195 173 nv::gui::handle nv::gui::environment::get_deepest_child( handle e, const position& p ) 196 174 { 197 element* el = get_element(e);175 element* el = m_elements.get(e); 198 176 if ( !el && !el->m_visible ) return handle(); 199 177 … … 214 192 void nv::gui::environment::move_to_top( handle child ) 215 193 { 216 element* e = get_element( child );217 element* parent = get_element( e->m_parent );194 element* e = m_elements.get( child ); 195 element* parent = m_elements.get( e->m_parent ); 218 196 if ( e && parent ) 219 197 { … … 230 208 void nv::gui::environment::move_to_bottom( handle child ) 231 209 { 232 element* e = get_element( child );233 element* parent = get_element( e->m_parent );210 element* e = m_elements.get( child ); 211 element* parent = m_elements.get( e->m_parent ); 234 212 if ( e && parent ) 235 213 { … … 246 224 void nv::gui::environment::set_relative( handle e, const rectangle& r ) 247 225 { 248 element* el = get_element(e);226 element* el = m_elements.get(e); 249 227 if ( el ) 250 228 { … … 257 235 void nv::gui::environment::set_relative( handle e, const position& p ) 258 236 { 259 element* el = get_element(e);237 element* el = m_elements.get(e); 260 238 if ( el ) 261 239 { … … 266 244 void nv::gui::environment::recalculate_absolute( handle e ) 267 245 { 268 element* el = get_element(e);269 rectangle pabsolute = get_element( el->m_parent )->m_absolute;246 element* el = m_elements.get(e); 247 rectangle pabsolute = m_elements.get( el->m_parent )->m_absolute; 270 248 el->m_absolute = el->m_relative + pabsolute.ul; 271 249 … … 278 256 void nv::gui::environment::set_class( handle e, const string& text ) 279 257 { 280 element* ep = get_element(e);258 element* ep = m_elements.get(e); 281 259 if ( ep != nullptr ) 282 260 { … … 288 266 void nv::gui::environment::set_text( handle e, const string& text ) 289 267 { 290 element* ep = get_element(e);268 element* ep = m_elements.get(e); 291 269 if ( ep != nullptr ) 292 270 { … … 298 276 void nv::gui::environment::remove_child( handle parent, handle child ) 299 277 { 300 element* p = get_element( parent );278 element* p = m_elements.get( parent ); 301 279 if ( p ) 302 280 { … … 304 282 if ( it != p->m_children.end() ) 305 283 { 306 element* e = get_element( *it );284 element* e = m_elements.get( *it ); 307 285 e->m_parent = handle(); 308 286 p->m_children.erase(it);
Note: See TracChangeset
for help on using the changeset viewer.