Example #1
0
void CVScrollBar::Render()
{
	const CAsset_GuiScrollbarStyle* pScrollbarStyle = AssetsManager()->GetAsset<CAsset_GuiScrollbarStyle>(m_ScrollbarStylePath);
	if(pScrollbarStyle)
	{
		CRect Rect = m_DrawRect;
		Rect.RemoveMargin(Context()->ApplyGuiScale(pScrollbarStyle->m_Margin));
		AssetsRenderer()->DrawGuiRect(&Rect, pScrollbarStyle->m_RectPath);
		Rect.RemoveMargin(Context()->ApplyGuiScale(pScrollbarStyle->m_Padding));
	
		ivec2 MousePos = Context()->GetMousePos();
		
		float Scale = Context()->GetImageScale()*Context()->GetGuiScale();
		
		ivec2 RailPos0(m_ClipRect.x + m_ClipRect.w/2, m_ClipRect.y);
		ivec2 RailPos1(m_ClipRect.x + m_ClipRect.w/2, m_ClipRect.y + m_ClipRect.h);
		AssetsRenderer()->DrawGuiLine(RailPos0, RailPos1, pScrollbarStyle->m_DefaultRailPath, Scale);
		
		ivec2 SliderPos0(m_SliderRect.x + m_SliderRect.w/2, m_SliderRect.y);
		ivec2 SliderPos1(m_SliderRect.x + m_SliderRect.w/2, m_SliderRect.y + m_SliderRect.h);
		if(m_SliderRect.IsInside(MousePos.x, MousePos.y))
			AssetsRenderer()->DrawGuiLine(SliderPos0, SliderPos1, pScrollbarStyle->m_MouseOverSliderPath, Scale);
		else
			AssetsRenderer()->DrawGuiLine(SliderPos0, SliderPos1, pScrollbarStyle->m_DefaultSliderPath, Scale);
	}
}
Example #2
0
void CPopup::UpdatePosition(CRect BoundingRect)
{
	if(m_Alignment == ALIGNMENT_INNER)
	{
		m_DrawRect = m_CreatorRect;
	}
	else
	{
		int TryRight = m_CreatorRect.x;
		int TryLeft = m_CreatorRect.x - m_Width;
		int TryTop = m_CreatorRect.y + m_CreatorRect.h - m_Height;
		int TryBottom = m_CreatorRect.y;
		
		if((m_CreatorRect.x + m_CreatorRect.w/2) > (BoundingRect.x + BoundingRect.w/2))
		{
			if(TryRight + m_Width < BoundingRect.x + BoundingRect.w)
				m_DrawRect.x = TryRight;
			else
				m_DrawRect.x = TryLeft;
		}
		else
		{
			if(TryLeft >= BoundingRect.x)
				m_DrawRect.x = TryLeft;
			else
				m_DrawRect.x = TryRight;
		}
			
		if(TryBottom + m_Height < BoundingRect.y + BoundingRect.h)
			m_DrawRect.y = TryBottom;
		else
			m_DrawRect.y = TryTop;
	}
	
	m_DrawRect.w = m_Width;
	m_DrawRect.h = m_Height;
	
	if(m_pChild)
	{
		CRect ContentRect = m_DrawRect;
		const CAsset_GuiBoxStyle* pBoxStyle = AssetsManager()->GetAsset<CAsset_GuiBoxStyle>(m_BoxStylePath);
		if(pBoxStyle)
		{
			ContentRect.RemoveMargin(pBoxStyle->GetMargin());
			ContentRect.RemoveMargin(pBoxStyle->GetPadding());
		}
		m_pChild->UpdatePosition(ContentRect);
	}
}
Example #3
0
void CPopup::Render()
{
	const CAsset_GuiBoxStyle* pBoxStyle = AssetsManager()->GetAsset<CAsset_GuiBoxStyle>(m_BoxStylePath);
	if(pBoxStyle)
	{
		CRect Rect = m_DrawRect;
		Rect.RemoveMargin(pBoxStyle->GetMargin());
	
		AssetsRenderer()->DrawGuiRect(&Rect, pBoxStyle->GetRectPath());
			
		Rect.RemoveMargin(pBoxStyle->GetPadding());
	}
	
	if(m_pChild)
		m_pChild->Render();
}
Example #4
0
void CAbstractLabel::Render()
{		
	CRect Rect = m_DrawRect;
	CRect ClipRect = m_DrawRect;
	vec4 FontColor = 1.0f;
	int Alignment = CAsset_GuiLabelStyle::TEXTALIGNMENT_LEFT;
	int Spacing = 0;
	
	const CAsset_GuiLabelStyle* pLabelStyle = AssetsManager()->GetAsset<CAsset_GuiLabelStyle>(m_LabelStylePath);
	if(pLabelStyle)
	{
		FontColor = pLabelStyle->m_TextColor;
		Alignment = pLabelStyle->m_TextAlignment;
		
		Rect.RemoveMargin(Context()->ApplyGuiScale(pLabelStyle->GetMargin()));
		ClipRect.RemoveMargin(Context()->ApplyGuiScale(pLabelStyle->GetMargin()));
		
		AssetsRenderer()->DrawGuiRect(&Rect, pLabelStyle->GetRectPath());
			
		Rect.RemoveMargin(Context()->ApplyGuiScale(pLabelStyle->GetPadding()));
	}
	
	int IconWidth = 0;
	int TextWidth = 0;
	
	const CAsset_Sprite* pSprite = AssetsManager()->GetAsset<CAsset_Sprite>(m_IconPath);
	
	if(pSprite)
	{
		IconWidth = Context()->ApplyGuiScale(Context()->GetImageScale()*pSprite->GetPixelWidth());
	}
	
	m_TextCache.SetBoxSize(ivec2(-1, Rect.h));
	
	if(GetText()[0])
	{
		if(pSprite && pLabelStyle)
			Spacing = Context()->ApplyGuiScale(pLabelStyle->GetSpacing());
		
		TextWidth = TextRenderer()->GetTextWidth(&m_TextCache);
	}
	
	int TotalWidth = IconWidth + Spacing + TextWidth;
	int PosX = 0;
	
	if(Localization()->GetWritingDirection() == CLocalization::DIRECTION_RTL)
	{
		if(Alignment == CAsset_GuiLabelStyle::TEXTALIGNMENT_LEFT)
			Alignment = CAsset_GuiLabelStyle::TEXTALIGNMENT_RIGHT;
		else if(Alignment == CAsset_GuiLabelStyle::TEXTALIGNMENT_RIGHT)
			Alignment = CAsset_GuiLabelStyle::TEXTALIGNMENT_LEFT;
	}
	
	if(Alignment == CAsset_GuiLabelStyle::TEXTALIGNMENT_LEFT)
		PosX = Rect.x;
	else if(Alignment == CAsset_GuiLabelStyle::TEXTALIGNMENT_RIGHT)
		PosX = Rect.x + Rect.w - TotalWidth;
	else
		PosX = Rect.x + Rect.w/2 - TotalWidth/2;
	
	Graphics()->ClipPush(ClipRect.x, ClipRect.y, ClipRect.w, ClipRect.h);
	if(Localization()->GetWritingDirection() == CLocalization::DIRECTION_RTL)
	{
		if(GetText()[0])
		{
			m_TextRect.x = PosX;
			m_TextRect.y = Rect.y;
			m_TextRect.w = TextRenderer()->GetTextWidth(&m_TextCache);
			m_TextRect.h = Rect.h;
			
			m_TextCache.SetBoxSize(ivec2(-1, m_TextRect.h));
			
			TextRenderer()->DrawText(&m_TextCache, ivec2(m_TextRect.x, m_TextRect.y), FontColor);
			
			PosX += TextWidth;
		}
		
		PosX += Spacing;
		
		if(IconWidth > 0)
		{		
			AssetsRenderer()->DrawSprite(
				m_IconPath,
				vec2(PosX + IconWidth/2, Rect.y + Rect.h/2),
				Context()->GetImageScale()*Context()->GetGuiScale(), 0.0f, 0x0, 1.0f
			);
		}
	}
	else
	{
		if(IconWidth > 0)
		{		
			AssetsRenderer()->DrawSprite(
				m_IconPath,
				vec2(PosX + IconWidth/2, Rect.y + Rect.h/2),
				Context()->GetImageScale()*Context()->GetGuiScale(), 0.0f, 0x0, 1.0f
			);
			
			PosX += IconWidth;
		}
		
		PosX += Spacing;
		
		if(GetText()[0])
		{
			m_TextRect.x = PosX;
			m_TextRect.y = Rect.y;
			m_TextRect.w = TextRenderer()->GetTextWidth(&m_TextCache);
			m_TextRect.h = Rect.h;
			
			m_TextCache.SetBoxSize(ivec2(-1, m_TextRect.h));
			
			TextRenderer()->DrawText(&m_TextCache, ivec2(m_TextRect.x, m_TextRect.y), FontColor);
		}
	}
	Graphics()->ClipPop();
}