Exemplo n.º 1
0
void Widget::Expose( CullingTarget& target ) const {
	if( m_invalidated ) {
		m_invalidated = false;

		m_drawable.reset( InvalidateImpl() );

		if( m_drawable ) {
			m_drawable->SetPosition( GetAbsolutePosition() );
		}
	}

	if( IsVisible() ) {
		if( m_drawable ) {
			target.Draw( *m_drawable );
		}

		HandleExpose( target );
		OnExpose();
	}
}
Exemplo n.º 2
0
void Widget::Update( float seconds ) {
	if( m_invalidated ) {
		m_invalidated = false;
		m_parent_notified = false;

		m_drawable = InvalidateImpl();

		if( m_drawable ) {
			m_drawable->SetPosition( GetAbsolutePosition() );
			m_drawable->SetLevel( m_hierarchy_level );
			m_drawable->SetZOrder( m_z_order );
			m_drawable->Show( IsGloballyVisible() );

			// We don't want to propagate container viewports for Canvases,
			// they have their own special viewport for drawing.
			if( m_drawable->GetPrimitives().empty() || !m_drawable->GetPrimitives()[0]->GetCustomDrawCallback() ) {
				m_drawable->SetViewport( m_viewport );
			}
		}
	}

	HandleUpdate( seconds );
}