diff options
| author | Felix Domke <tmbinc@elitedvb.net> | 2005-03-30 07:28:17 +0000 |
|---|---|---|
| committer | Felix Domke <tmbinc@elitedvb.net> | 2005-03-30 07:28:17 +0000 |
| commit | ab5aa90e1e05a89845c6e802ef1b2366d203aa45 (patch) | |
| tree | 24b8f67a1cc123481b3f21fdc026795969a073cf /lib/gui | |
| parent | cfe43ee16030fd37f6bce9ba99e367c15ecbf44f (diff) | |
| download | enigma2-ab5aa90e1e05a89845c6e802ef1b2366d203aa45.tar.gz enigma2-ab5aa90e1e05a89845c6e802ef1b2366d203aa45.zip | |
- default fonts handled in windowstyle
- fixed 32bit ARGB support (drawLine)
- add sdl (but currently disabled)
- fixed /dev/vc/0 -> /dev/stdin for console input
- added alignment to label
- fixed skin parsing (getElementsByTagName didn't do what i expected)
Diffstat (limited to 'lib/gui')
| -rw-r--r-- | lib/gui/ebutton.cpp | 3 | ||||
| -rw-r--r-- | lib/gui/elabel.cpp | 51 | ||||
| -rw-r--r-- | lib/gui/elabel.h | 20 | ||||
| -rw-r--r-- | lib/gui/ewidgetdesktop.cpp | 2 | ||||
| -rw-r--r-- | lib/gui/ewindowstyle.cpp | 22 | ||||
| -rw-r--r-- | lib/gui/ewindowstyle.h | 12 |
6 files changed, 105 insertions, 5 deletions
diff --git a/lib/gui/ebutton.cpp b/lib/gui/ebutton.cpp index 06cfda07..30824df2 100644 --- a/lib/gui/ebutton.cpp +++ b/lib/gui/ebutton.cpp @@ -2,6 +2,9 @@ eButton::eButton(eWidget *parent): eLabel(parent) { + /* default to center alignment */ + m_valign = alignCenter; + m_halign = alignCenter; } void eButton::push() diff --git a/lib/gui/elabel.cpp b/lib/gui/elabel.cpp index 281a9d27..3519a7ac 100644 --- a/lib/gui/elabel.cpp +++ b/lib/gui/elabel.cpp @@ -2,7 +2,14 @@ eLabel::eLabel(eWidget *parent): eWidget(parent) { + ePtr<eWindowStyle> 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) @@ -18,14 +25,34 @@ int eLabel::event(int event, void *data, void *data2) eWidget::event(event, data, data2); gPainter &painter = *(gPainter*)data2; - ePtr<gFont> fnt = new gFont("Arial", 14); - painter.setFont(fnt); + painter.setFont(m_font); style->setStyle(painter, eWindowStyle::styleLabel); - painter.renderText(eRect(0, 0, size().width(), size().height()), m_text, gPainter::RT_HALIGN_CENTER|gPainter::RT_VALIGN_CENTER); + + 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: @@ -40,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); +} diff --git a/lib/gui/elabel.h b/lib/gui/elabel.h index b1f7c2cf..7e07f438 100644 --- a/lib/gui/elabel.h +++ b/lib/gui/elabel.h @@ -8,12 +8,30 @@ class eLabel: public eWidget public: eLabel(eWidget *parent); void setText(const std::string &string); + void setFont(gFont *font); + + enum + { + alignLeft, + alignTop=alignLeft, + alignCenter, + alignRight, + alignBottom=alignRight, + alignBlock + }; + + void setVAlign(int align); + void setHAlign(int align); protected: + ePtr<gFont> m_font; + int m_valign, m_halign; int event(int event, void *data=0, void *data2=0); private: enum eLabelEvent { - evtChangedText = evtUserWidget + evtChangedText = evtUserWidget, + evtChangedFont, + evtChangedAlignment }; std::string m_text; }; diff --git a/lib/gui/ewidgetdesktop.cpp b/lib/gui/ewidgetdesktop.cpp index 1b5cf9b2..96f74636 100644 --- a/lib/gui/ewidgetdesktop.cpp +++ b/lib/gui/ewidgetdesktop.cpp @@ -82,6 +82,8 @@ void eWidgetDesktop::paint() painter.setBackgroundColor(m_background_color); painter.clear(); + painter.flush(); + m_dirty_region = gRegion(); } diff --git a/lib/gui/ewindowstyle.cpp b/lib/gui/ewindowstyle.cpp index 25b89460..a2e0efb2 100644 --- a/lib/gui/ewindowstyle.cpp +++ b/lib/gui/ewindowstyle.cpp @@ -110,6 +110,27 @@ void eWindowStyleSimple::drawFrame(gPainter &painter, const eRect &frame, int wh painter.line(frame.bottomLeft1(), frame.topLeft1()); } +RESULT eWindowStyleSimple::getFont(int what, ePtr<gFont> &fnt) +{ + fnt = 0; + switch (what) + { + case fontStatic: + fnt = new gFont("Arial", 12); + break; + case fontButton: + fnt = new gFont("Arial", 20); + break; + case fontTitlebar: + fnt = new gFont("Arial", 25); + break; + default: + return -1; + } + return 0; +} + +#if 0 DEFINE_REF(eWindowStyleSkinned); eWindowStyleSkinned::eWindowStyleSkinned() @@ -140,3 +161,4 @@ void eWindowStyleSkinned::drawBorder(gPainter &painter, const eSize &size, const { } +#endif diff --git a/lib/gui/ewindowstyle.h b/lib/gui/ewindowstyle.h index 0014bfa4..f11d99de 100644 --- a/lib/gui/ewindowstyle.h +++ b/lib/gui/ewindowstyle.h @@ -27,8 +27,15 @@ public: frameButton, frameListboxEntry }; + + enum { + fontStatic, + fontButton, + fontTitlebar + }; + + virtual RESULT getFont(int what, ePtr<gFont> &font) = 0; virtual ~eWindowStyle() = 0; - }; class eWindowStyleSimple: public eWindowStyle @@ -46,8 +53,10 @@ public: void paintBackground(gPainter &painter, const ePoint &offset, const eSize &size); void setStyle(gPainter &painter, int what); void drawFrame(gPainter &painter, const eRect &frame, int what); + RESULT getFont(int what, ePtr<gFont> &font); }; +#if 0 class eWindowStyleSkinned: public eWindowStyle { DECLARE_REF(eWindowStyleSkinned); @@ -86,5 +95,6 @@ private: void drawBorder(gPainter &painter, const eSize &size, const struct borderSet &border, int where); }; +#endif #endif |
