Beispiel #1
0
	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;
		}
	}
Beispiel #2
0
	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 ) );
		}
	}
Beispiel #3
0
	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 );
			}
		}
	}
Beispiel #4
0
	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 );
			}
		}
	}