X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/ddc3964ed95d01e72229dc9af968a327cd84e56c..e2b1235bc4885abe2dd09f0574cb56252da315e4:/lib/gui/elabel.cpp diff --git a/lib/gui/elabel.cpp b/lib/gui/elabel.cpp index f133b661..3519a7ac 100644 --- a/lib/gui/elabel.cpp +++ b/lib/gui/elabel.cpp @@ -2,7 +2,14 @@ eLabel::eLabel(eWidget *parent): eWidget(parent) { + ePtr style; + getStyle(style); + style->getFont(eWindowStyle::fontStatic, m_font); + + /* default to topleft alignment */ + m_valign = alignTop; + m_halign = alignLeft; } int eLabel::event(int event, void *data, void *data2) @@ -11,18 +18,41 @@ int eLabel::event(int event, void *data, void *data2) { case evtPaint: { + ePtr style; + + getStyle(style); + + eWidget::event(event, data, data2); + gPainter &painter = *(gPainter*)data2; - ePtr fnt = new gFont("Arial", 70); - painter.setFont(fnt); - painter.setBackgroundColor(gColor(0x10)); - painter.setForegroundColor(gColor(0x1f)); - painter.clear(); - painter.setBackgroundColor(gColor(0x1f)); - painter.setForegroundColor(gColor(0x10)); - painter.renderText(eRect(0, 0, size().width(), size().height()), m_text); + painter.setFont(m_font); + style->setStyle(painter, eWindowStyle::styleLabel); + + int flags = 0; + if (m_valign == alignTop) + flags |= gPainter::RT_VALIGN_TOP; + else if (m_valign == alignCenter) + flags |= gPainter::RT_VALIGN_CENTER; + else if (m_valign == alignBottom) + flags |= gPainter::RT_VALIGN_BOTTOM; + + if (m_halign == alignLeft) + flags |= gPainter::RT_HALIGN_LEFT; + else if (m_halign == alignCenter) + flags |= gPainter::RT_HALIGN_CENTER; + else if (m_halign == alignRight) + flags |= gPainter::RT_HALIGN_RIGHT; + else if (m_halign == alignBlock) + flags |= gPainter::RT_HALIGN_BLOCK; + + flags |= gPainter::RT_WRAP; + painter.renderText(eRect(0, 0, size().width(), size().height()), m_text, flags); + return 0; } + case evtChangedFont: case evtChangedText: + case evtChangedAlignment: invalidate(); return 0; default: @@ -37,3 +67,21 @@ void eLabel::setText(const std::string &string) m_text = string; event(evtChangedText); } + +void eLabel::setFont(gFont *font) +{ + m_font = font; + event(evtChangedFont); +} + +void eLabel::setVAlign(int align) +{ + m_valign = align; + event(evtChangedAlignment); +} + +void eLabel::setHAlign(int align) +{ + m_halign = align; + event(evtChangedAlignment); +}