123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- /*
- 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;
- }
|