Changeset 444
- Timestamp:
- 07/29/15 16:24:01 (10 years ago)
- Location:
- trunk
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/nv/gui/gui_ascii_renderer.hh
r406 r444 33 33 virtual void draw( element* e ); 34 34 virtual void draw(); 35 virtual void on_hover_change( element* e, bool hover ); 36 virtual void on_select_change( element* e, bool select ); 35 virtual void on_style_change( element* e ); 36 virtual void on_hover_change( element* e ); 37 virtual void on_select_change( element* e ); 37 38 virtual rectangle get_area() const; 38 39 virtual ~ascii_renderer(); -
trunk/nv/gui/gui_common.hh
r395 r444 29 29 SELECTED, //!< GUI element selected 30 30 HOVER, //!< GUI element in hover zone 31 32 DIRTY_SELECT, 33 DIRTY_HOVER, 31 34 }; 32 35 -
trunk/nv/gui/gui_gfx_renderer.hh
r433 r444 48 48 virtual void draw( element* e ); 49 49 virtual void draw(); 50 virtual void on_hover_change( element* e, bool hover ); 51 virtual void on_select_change( element* e, bool select ); 50 virtual void on_style_change( element* e ); 51 virtual void on_hover_change( element* e ); 52 virtual void on_select_change( element* e ); 52 53 virtual rectangle get_area() const { return m_area; } 53 54 virtual ~gfx_renderer(); -
trunk/nv/gui/gui_renderer.hh
r440 r444 33 33 virtual void draw( element* e ) = 0; 34 34 virtual void draw() = 0; 35 virtual void on_hover_change( element* e, bool hover ) = 0; 36 virtual void on_select_change( element* e, bool select ) = 0; 35 virtual void on_style_change( element* e ) = 0; 36 virtual void on_hover_change( element* e ) = 0; 37 virtual void on_select_change( element* e ) = 0; 37 38 virtual rectangle get_area() const = 0; 38 39 virtual ~renderer() {} -
trunk/nv/gui/gui_style.hh
r440 r444 33 33 bool get( element* e, const string_view& centry, const string_view& cselector, int& i ); 34 34 bool get( element* e, const string_view& centry, const string_view& cselector, double& d ); 35 void load_flags( element* e ); 35 36 ~style(); 36 37 protected: 38 void add_flags( element* e ); 37 39 bool find_entry( const string_view& cselector, const string_view& centry, int type ); 38 40 bool resolve( shash64 cid, shash64 cclass, const string_view& cselector, const string_view& centry, int type ); -
trunk/src/gui/gui_ascii_renderer.cc
r440 r444 66 66 if ( m_style.get( e, "ascii_border_color", selector, border_color ) ) 67 67 er->border_color = uint32( border_color ); 68 for ( uint32 i = 0; i < 8 && i < path.length(); )68 for ( uint32 i = 0; i < 8 && i < path.length(); i++ ) 69 69 er->border_chars[i] = static_cast< uchar8 >( path[i] ); 70 70 } … … 81 81 for ( int x = 0; x < abs.get_width(); ++x ) 82 82 { 83 m_terminal->print( position( abs.ul. y, abs.ul.x + x), er->border_color, er->border_chars[0] );84 m_terminal->print( position( abs. lr.y, abs.ul.x + x), er->border_color, er->border_chars[1] );83 m_terminal->print( position( abs.ul.x + x, abs.ul.y ), er->border_color, er->border_chars[0] ); 84 m_terminal->print( position( abs.ul.x + x, abs.lr.y ), er->border_color, er->border_chars[1] ); 85 85 } 86 86 87 87 for ( int y = 0; y < abs.get_height(); ++y ) 88 88 { 89 m_terminal->print( position( abs.ul. y + y, abs.ul.x), er->border_color, er->border_chars[2] );90 m_terminal->print( position( abs. ul.y + y, abs.lr.x), er->border_color, er->border_chars[3] );89 m_terminal->print( position( abs.ul.x, abs.ul.y + y ), er->border_color, er->border_chars[2] ); 90 m_terminal->print( position( abs.lr.x, abs.ul.y + y ), er->border_color, er->border_chars[3] ); 91 91 } 92 92 … … 95 95 m_terminal->print( abs.ll(), er->border_color, er->border_chars[6] ); 96 96 m_terminal->print( abs.lr, er->border_color, er->border_chars[7] ); 97 m_terminal->update(); 97 98 } 98 99 if ( !e->m_text.empty() ) … … 112 113 } 113 114 114 void nv::gui::ascii_renderer::on_ hover_change( element* e, bool /*hover*/)115 void nv::gui::ascii_renderer::on_style_change( element* e ) 115 116 { 116 // TODO: FIX 117 int fix_me; 118 NV_LOG_DEBUG( "on_hover_change" ); 119 e->m_flags[DIRTY] = true; 117 m_style.load_flags( e ); 120 118 } 121 119 122 void nv::gui::ascii_renderer::on_ select_change( element* e, bool /*select*/)120 void nv::gui::ascii_renderer::on_hover_change( element* e ) 123 121 { 124 // TODO: FIX 125 int fix_me; 126 NV_LOG_DEBUG( "on_select_change" ); 127 e->m_flags[DIRTY] = true; 122 if ( e->m_flags[DIRTY_HOVER] ) e->m_flags[DIRTY] = true; 123 } 124 125 void nv::gui::ascii_renderer::on_select_change( element* e ) 126 { 127 if ( e->m_flags[DIRTY_SELECT] ) e->m_flags[DIRTY] = true; 128 128 } 129 129 -
trunk/src/gui/gui_environment.cc
r440 r444 61 61 if ( !parent.is_nil() ) // screen creation 62 62 add_child( parent, result ); 63 63 64 return result; 64 65 } … … 91 92 el->m_flags[HOVER] = new_hover; 92 93 // gain lose hover event 93 m_renderer->on_hover_change( el , hover);94 m_renderer->on_hover_change( el ); 94 95 } 95 96 } … … 209 210 { 210 211 eold->m_flags[SELECTED] = false; 211 m_renderer->on_select_change( eold , false);212 m_renderer->on_select_change( eold ); 212 213 } 213 214 if ( el ) 214 215 { 215 216 el->m_flags[SELECTED] = true; 216 m_renderer->on_select_change( el , true);217 m_renderer->on_select_change( el ); 217 218 } 218 219 m_selected = e; … … 307 308 ep->m_class = m_strings.insert( text ); 308 309 ep->m_flags[DIRTY] = true; 310 m_renderer->on_style_change( ep ); 309 311 } 310 312 } … … 315 317 if ( ep != nullptr ) 316 318 { 319 // TODO : implement twine == operator 317 320 ep->m_text.assign( text ); 318 321 ep->m_flags[DIRTY] = true; -
trunk/src/gui/gui_gfx_renderer.cc
r440 r444 248 248 if ( e->m_flags[HOVER] ) selector = stext[2]; 249 249 if ( e->m_flags[SELECTED] ) selector = stext[1]; 250 NV_LOG_INFO( "redraw" ); 250 251 251 252 if ( m_style.get( e, "skin", selector, path ) ) … … 340 341 } 341 342 342 void gfx_renderer::on_hover_change( element* e, bool /*hover*/ ) 343 { 344 // TODO: FIX 345 int fix_me; 346 NV_LOG_DEBUG( "on_hover_change" ); 347 e->m_flags[DIRTY] = true; 348 } 349 350 void gfx_renderer::on_select_change( element* e, bool /*select*/ ) 351 { 352 // TODO: FIX 353 int fix_me; 354 NV_LOG_DEBUG( "on_select_change" ); 355 e->m_flags[DIRTY] = true; 343 void gfx_renderer::on_hover_change( element* e ) 344 { 345 if ( e->m_flags[DIRTY_HOVER] ) 346 { 347 NV_LOG_DEBUG( "on_hover_change" ); 348 e->m_flags[DIRTY] = true; 349 } 350 } 351 352 void gfx_renderer::on_select_change( element* e ) 353 { 354 if ( e->m_flags[DIRTY_SELECT] ) 355 { 356 NV_LOG_DEBUG( "on_select_change" ); 357 e->m_flags[DIRTY] = true; 358 } 356 359 } 357 360 … … 394 397 } 395 398 } 399 400 void nv::gui::gfx_renderer::on_style_change( element* e ) 401 { 402 m_style.load_flags( e ); 403 } -
trunk/src/gui/gui_style.cc
r440 r444 114 114 return false; 115 115 } 116 117 void nv::gui::style::load_flags( element* e ) 118 { 119 lua::stack_guard guard( m_lua ); 120 lua_getglobal( m_lua, "default" ); 121 int global = lua_gettop( m_lua ); 122 123 // check id 124 string_view id( m_env->get_string( e->m_id ) ); 125 if ( !id.empty() ) 126 { 127 lua_getfield( m_lua, -1, id.data() ); 128 add_flags( e ); 129 lua_pop( m_lua, -1 ); 130 } 131 // check class 132 string_view klass( m_env->get_string( e->m_class ) ); 133 if ( !klass.empty() ) 134 { 135 lua_getfield( m_lua, -1, klass.data() ); 136 add_flags( e ); 137 lua_pop( m_lua, -1 ); 138 } 139 add_flags( e ); 140 } 141 142 void nv::gui::style::add_flags( element* e ) 143 { 144 if ( lua_istable( m_lua, -1 ) ) 145 { 146 lua_getfield( m_lua, -1, "hover" ); 147 if ( lua_istable( m_lua, -1 ) ) 148 { 149 e->m_flags[DIRTY_HOVER] = true; 150 } 151 lua_pop( m_lua, 1 ); 152 153 lua_getfield( m_lua, -1, "selected" ); 154 if ( lua_istable( m_lua, -1 ) ) 155 { 156 e->m_flags[DIRTY_SELECT] = true; 157 } 158 lua_pop( m_lua, 1 ); 159 } 160 }
Note: See TracChangeset
for help on using the changeset viewer.