- add clearBackgroundColor to use default (defined by style) again
[enigma2.git] / lib / gui / elabel.cpp
1 #include <lib/gui/elabel.h>
2
3 eLabel::eLabel(eWidget *parent): eWidget(parent)
4 {
5         ePtr<eWindowStyle> style;
6         getStyle(style);
7         
8         style->getFont(eWindowStyle::fontStatic, m_font);
9         
10                 /* default to topleft alignment */
11         m_valign = alignTop;
12         m_halign = alignLeft;
13 }
14
15 int eLabel::event(int event, void *data, void *data2)
16 {
17         switch (event)
18         {
19         case evtPaint:
20         {
21                 ePtr<eWindowStyle> style;
22                 
23                 getStyle(style);
24                 
25                 eWidget::event(event, data, data2);
26
27                 gPainter &painter = *(gPainter*)data2;
28                 painter.setFont(m_font);
29                 style->setStyle(painter, eWindowStyle::styleLabel);
30                 
31                 int flags = 0;
32                 if (m_valign == alignTop)
33                         flags |= gPainter::RT_VALIGN_TOP;
34                 else if (m_valign == alignCenter)
35                         flags |= gPainter::RT_VALIGN_CENTER;
36                 else if (m_valign == alignBottom)
37                         flags |= gPainter::RT_VALIGN_BOTTOM;
38
39                 if (m_halign == alignLeft)
40                         flags |= gPainter::RT_HALIGN_LEFT;
41                 else if (m_halign == alignCenter)
42                         flags |= gPainter::RT_HALIGN_CENTER;
43                 else if (m_halign == alignRight)
44                         flags |= gPainter::RT_HALIGN_RIGHT;
45                 else if (m_halign == alignBlock)
46                         flags |= gPainter::RT_HALIGN_BLOCK;
47                 
48                 flags |= gPainter::RT_WRAP;
49                 painter.renderText(eRect(0, 0, size().width(), size().height()), m_text, flags);
50                 
51                 return 0;
52         }
53         case evtChangedFont:
54         case evtChangedText:
55         case evtChangedAlignment:
56                 invalidate();
57                 return 0;
58         default:
59                 return eWidget::event(event, data, data2);
60         }
61 }
62
63 void eLabel::setText(const std::string &string)
64 {
65         if (m_text == string)
66                 return;
67         m_text = string;
68         event(evtChangedText);
69 }
70
71 void eLabel::setFont(gFont *font)
72 {
73         m_font = font;
74         event(evtChangedFont);
75 }
76
77 void eLabel::setVAlign(int align)
78 {
79         m_valign = align;
80         event(evtChangedAlignment);
81 }
82
83 void eLabel::setHAlign(int align)
84 {
85         m_halign = align;
86         event(evtChangedAlignment);
87 }