mirror of
https://github.com/bulletphysics/bullet3
synced 2025-01-08 08:30:16 +00:00
75 lines
2.0 KiB
C++
75 lines
2.0 KiB
C++
/*
|
|
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;
|
|
} |