Files
Aerofoil/PortabilityLayer/PLLabelWidget.cpp
2020-02-05 00:22:55 -05:00

46 lines
1.0 KiB
C++

#include "PLLabelWidget.h"
#include "PLQDraw.h"
#include "FontFamily.h"
#include "PLStandardColors.h"
#include <algorithm>
namespace PortabilityLayer
{
LabelWidget::LabelWidget(const WidgetBasicState &state)
: WidgetSpec<LabelWidget>(state)
, m_text(state.m_text)
{
}
bool LabelWidget::Init(const WidgetBasicState &state)
{
(void)state;
return true;
}
void LabelWidget::SetString(const PLPasStr &str)
{
m_text.Set(str.Length(), str.Chars());
}
PLPasStr LabelWidget::GetString() const
{
return m_text.ToShortStr();
}
void LabelWidget::DrawControl(DrawSurface *surface)
{
surface->SetForeColor(StdColors::White());
surface->FillRect(m_rect);
surface->SetSystemFont(12, PortabilityLayer::FontFamilyFlag_Bold);
surface->SetForeColor(StdColors::Black());
const Point topLeftCorner = Point::Create(m_rect.left, m_rect.top);
const Point textStartPoint = topLeftCorner + Point::Create(0, surface->MeasureFontAscender());
surface->DrawStringWrap(textStartPoint, m_rect, m_text.ToShortStr(), true);
}
}