void Panel::_onMaskPatches( Patches& patches, const Rect& geo, const Rect& clip, WgBlendMode blendMode ) { //TODO: Don't just check isOpaque() globally, check rect by rect. if( (m_bOpaque && blendMode == WG_BLENDMODE_BLEND) || blendMode == WG_BLENDMODE_OPAQUE ) { patches.sub( Rect(geo,clip) ); return; } switch( m_maskOp ) { case WG_MASKOP_RECURSE: { Rect childGeo; PanelHook * p = static_cast<PanelHook*>(_firstHookWithGeo( childGeo )); while(p) { if( p->isVisible() ) p->_widget()->_onMaskPatches( patches, childGeo + geo.pos(), clip, blendMode ); p = static_cast<PanelHook*>(_nextHookWithGeo( childGeo, p )); } break; } case WG_MASKOP_SKIP: break; case WG_MASKOP_MASK: patches.sub( Rect(geo,clip) ); break; } }
void Widget::_maskPatches( Patches& patches, const Rect& geo, const Rect& clip, BlendMode blendMode ) { if( (m_bOpaque && blendMode == BlendMode::Blend) || blendMode == BlendMode::Replace ) { patches.sub( Rect( geo, clip ) ); } }
void SplitPanel::_maskPatches(Patches& patches, const Rect& geo, const Rect& clip, BlendMode blendMode) { { //TODO: Don't just check isOpaque() globally, check rect by rect. if ((m_bOpaque && blendMode == BlendMode::Blend) || blendMode == BlendMode::Replace) patches.sub(Rect(geo, clip)); else { if (m_firstChild.pWidget) m_firstChild.pWidget->_maskPatches(patches, m_firstChild.geo + geo.pos(), clip, blendMode ); if (m_pHandleSkin && m_pHandleSkin->isOpaque() ) patches.sub(Rect(m_handleGeo, clip)); if (m_secondChild.pWidget) m_secondChild.pWidget->_maskPatches(patches, m_secondChild.geo + geo.pos(), clip, blendMode ); } } }
void Container::_maskPatches( Patches& patches, const Rect& geo, const Rect& clip, BlendMode blendMode ) { //TODO: Don't just check isOpaque() globally, check rect by rect. if( (m_bOpaque && blendMode == BlendMode::Blend) || blendMode == BlendMode::Replace) patches.sub( Rect(geo,clip) ); else { Rect childGeo; Hook * p = _firstHookWithGeo( childGeo ); while(p) { if( p->_isVisible() ) p->_widget()->_maskPatches( patches, childGeo + geo.pos(), clip, blendMode ); p = _nextHookWithGeo( childGeo, p ); } } }