/* GWEN Copyright (c) 2010 Facepunch Studios See license in Gwen.h */ #include "Gwen/Gwen.h" #include "Gwen/Controls/Label.h" #include "Gwen/Utility.h" using namespace Gwen; using namespace Gwen::Controls; GWEN_CONTROL_CONSTRUCTOR(Label) { m_Text = new ControlsInternal::Text(this); m_Text->SetFont(GetSkin()->GetDefaultFont()); SetMouseInputEnabled(false); SetBounds(0, 0, 100, 10); SetAlignment(Gwen::Pos::Left | Gwen::Pos::Top); } void Label::Layout(Skin::Base* /*skin*/) { int iAlign = m_iAlign; int x = m_rTextPadding.left + m_Padding.left; int y = m_rTextPadding.top + m_Padding.top; if (iAlign & Pos::Right) x = Width() - m_Text->Width() - m_rTextPadding.right - m_Padding.right; if (iAlign & Pos::CenterH) x = (m_rTextPadding.left + m_Padding.left) + ((Width() - m_Text->Width()) * 0.5f) - m_rTextPadding.right - m_Padding.right; if (iAlign & Pos::CenterV) y = (m_rTextPadding.top + m_Padding.top) + ((Height() - m_Text->Height()) * 0.5f) - m_rTextPadding.bottom - m_Padding.bottom; if (iAlign & Pos::Bottom) y = Height() - m_Text->Height() - m_rTextPadding.bottom - m_Padding.bottom; m_Text->SetPos(x, y); } void Label::SetText(const UnicodeString& str, bool bDoEvents) { if (m_Text->GetText() == str) return; m_Text->SetString(str); Redraw(); if (bDoEvents) OnTextChanged(); } void Label::SetText(const String& str, bool bDoEvents) { SetText(Gwen::Utility::StringToUnicode(str), bDoEvents); } void Label::SizeToContents() { m_Text->SetPos(m_rTextPadding.left + m_Padding.left, m_rTextPadding.top + m_Padding.top); m_Text->RefreshSize(); SetSize(m_Text->Width() + m_Padding.left + m_Padding.right + m_rTextPadding.left + m_rTextPadding.right, m_Text->Height() + m_Padding.top + m_Padding.bottom + m_rTextPadding.top + m_rTextPadding.bottom); } Gwen::Point Label::GetCharacterPosition(int iChar) { Gwen::Point p = m_Text->GetCharacterPosition(iChar); p.x += m_Text->X(); p.y += m_Text->Y(); return p; }