diff options
| author | Felix Domke <tmbinc@elitedvb.net> | 2004-06-02 01:11:59 +0000 |
|---|---|---|
| committer | Felix Domke <tmbinc@elitedvb.net> | 2004-06-02 01:11:59 +0000 |
| commit | 3bad22d5566624804a73b3791980bab2d84c8266 (patch) | |
| tree | eb99b584b542cdc2ab264d8439ba771a117f0cb2 /lib/gui/elabel.cpp | |
| parent | d6f6602d7cea3a7899990fe79216af7d98d05917 (diff) | |
| download | enigma2-3bad22d5566624804a73b3791980bab2d84c8266.tar.gz enigma2-3bad22d5566624804a73b3791980bab2d84c8266.zip | |
- disabled gui for a moment
- beginning of GDI2 work (region/fill/line works)
- fixed smartptr self assignment
- finally replaced "int ref" by something with a constructor
Diffstat (limited to 'lib/gui/elabel.cpp')
| -rw-r--r-- | lib/gui/elabel.cpp | 253 |
1 files changed, 0 insertions, 253 deletions
diff --git a/lib/gui/elabel.cpp b/lib/gui/elabel.cpp index ce4efaf1..e69de29b 100644 --- a/lib/gui/elabel.cpp +++ b/lib/gui/elabel.cpp @@ -1,253 +0,0 @@ -#include <lib/gui/elabel.h> - -#include <lib/gdi/fb.h> -#include <lib/gdi/font.h> -#include <lib/gdi/lcd.h> -#include <lib/gui/eskin.h> -#include <lib/base/init.h> -#include <lib/base/init_num.h> - -eLabel::eLabel(eWidget *parent, int flags, int takefocus, const char *deco ): - eDecoWidget(parent, takefocus, deco), blitFlags(0), flags(flags), - para(0), align( eTextPara::dirLeft ), shortcutPixmap(0) -{ -} - -eLabel::~eLabel() -{ - if (para) - { - para->destroy(); - para=0; - } -} - -void eLabel::setPixmapPosition( const ePoint &p ) -{ - pixmap_position = p; - invalidate(); -} - -void eLabel::validate( const eSize* s ) -{ - if (!para) - { - if (s) - para=new eTextPara( eRect(text_position.x(), text_position.y(), s->width() - text_position.x(), s->height() - text_position.y())); - else - para=new eTextPara( eRect(text_position.x(), text_position.y(), size.width() - text_position.x(), size.height() - text_position.y())); - - para->setFont(font); - para->renderString(text, flags); - para->realign(align); - } -} - -void eLabel::invalidate() -{ - if (para) - { - para->destroy(); - para=0; - } - if (isVisible()) - eDecoWidget::invalidate(); // we must redraw... -} - -void eLabel::setFlags(int flag) -{ - flags|=flag; - if (flag) - invalidate(); -} - -void eLabel::setBlitFlags( int flags ) -{ - blitFlags |= flags; -} - -void eLabel::removeFlags(int flag) -{ - flags &= ~flag; - if (flag) - invalidate(); -} - -void eLabel::setAlign(int align) -{ - this->align = align; - invalidate(); -} - -void eLabel::redrawWidget(gPainter *target, const eRect &rc) -{ -/* eDebug("decoStr = %s, text=%s, name=%s, %p left = %d, top = %d, width=%d, height = %d", strDeco?strDeco.c_str():"no", text?text.c_str():"no" , name?name.c_str():"no", this, this->getPosition().x(), this->getPosition().y(), this->getSize().width(), this->getSize().height() ); - eDebug("renderContext left = %d, top = %d, width = %d, height = %d", rc.left(), rc.top(), rc.width(), rc.height() );*/ - - target->clip( gRegion(rc) ); - eRect area=eRect(ePoint(0, 0), ePoint(width(), height())); -/* eDebug("area left = %d, top = %d, width = %d, height = %d", - area.left(), area.top(), - area.width(), area.height() );*/ - - if (deco_selected && have_focus) - { - deco_selected.drawDecoration(target, ePoint(width(), height())); - area=crect_selected; - } else if (deco) - { - deco.drawDecoration(target, ePoint(width(), height())); - area=crect; - } -/* eDebug("area left = %d, top = %d, width = %d, height = %d", - area.left(), area.top(), - area.width(), area.height() );*/ - - if (shortcutPixmap) - { - //area.setWidth(area.width()-area.height()); - area.setX(area.height()); - } - - if (text.length()) - { - if ( area.size().height() < size.height() || - area.size().width() < size.width() ) - { - // then deco is drawed - eSize s=area.size(); - validate( &s ); - } else - validate(); - - if (flags & flagVCenter) - yOffs = ( (area.height() - para->getBoundBox().height() ) / 2 + 0) - para->getBoundBox().top(); - else - yOffs = 0; - - eWidget *w; - if ((blitFlags & BF_ALPHATEST) && (transparentBackgroundColor >= 0)) - { - w=this; - target->setBackgroundColor(transparentBackgroundColor); - } else - { - w=getNonTransparentBackground(); - target->setBackgroundColor(w->getBackgroundColor()); - } - target->setFont(font); - target->renderPara(para, ePoint( area.left(), area.top()+yOffs) ); - } - if (pixmap) - { -// eDebug("blit pixmap area left=%d, top=%d, right=%d, bottom=%d", rc.left(), rc.top(), rc.right(), rc.bottom() ); -// eDebug("pixmap_pos x = %d, y = %d, xsize=%d, ysize=%d", pixmap_position.x(), pixmap_position.y(), pixmap->x, pixmap->y ); - target->blit(pixmap, shortcutPixmap?pixmap_position+ePoint( area.left(), 0):pixmap_position, area, (blitFlags & BF_ALPHATEST) ? gPixmap::blitAlphaTest : 0); - } - if (shortcutPixmap) - target->blit(shortcutPixmap, - ePoint((area.height()-shortcutPixmap->getSize().width())/2, area.top()+(area.height()-shortcutPixmap->getSize().height())/2), - eRect(), - gPixmap::blitAlphaTest); - target->clippop(); -} - -int eLabel::eventHandler(const eWidgetEvent &event) -{ - switch (event.type) - { - case eWidgetEvent::changedFont: - case eWidgetEvent::changedText: - if (para) - { - para->destroy(); - para=0; - } - if ( have_focus && deco_selected ) - eDecoWidget::invalidate( crect_selected ); - else if ( deco ) - eDecoWidget::invalidate( crect ); - else - eDecoWidget::invalidate(); - break; - - case eWidgetEvent::changedSize: - invalidate(); - break; - - default: - return eDecoWidget::eventHandler(event); - break; - } - return 1; -} - -eSize eLabel::getExtend() -{ - validate(); - return eSize(para->getBoundBox().width()+(shortcutPixmap?shortcutPixmap->x*2:0), para->getBoundBox().height()); -} - -ePoint eLabel::getLeftTop() -{ - validate(); - return ePoint(para->getBoundBox().left(), para->getBoundBox().top()); -} - -int eLabel::setProperty(const eString &prop, const eString &value) -{ - if (prop=="wrap" && value == "on") - setFlags(RS_WRAP); - else if (prop=="alphatest" && value == "on") - { - transparentBackgroundColor=getBackgroundColor(); - setBackgroundColor(-1); - blitFlags |= BF_ALPHATEST; - } else if (prop=="align") - { - if (value=="left") - setAlign(eTextPara::dirLeft); - else if (value=="center") - setAlign(eTextPara::dirCenter); - else if (value=="right") - setAlign(eTextPara::dirRight); - else if (value=="block") - setAlign(eTextPara::dirBlock); - else - setAlign(eTextPara::dirLeft); - } - else if (prop=="vcenter") - setFlags( flagVCenter ); - else if (prop == "shortcut") - { - setShortcutPixmap(value); - return eWidget::setProperty(prop, value); - } else - return eDecoWidget::setProperty(prop, value); - return 0; -} - -void eLabel::setShortcutPixmap(const eString &shortcut) -{ - eSkin::getActive()->queryImage(shortcutPixmap, "shortcut." + shortcut); -} - -static eWidget *create_eLabel(eWidget *parent) -{ - return new eLabel(parent); -} - -class eLabelSkinInit -{ -public: - eLabelSkinInit() - { - eSkin::addWidgetCreator("eLabel", create_eLabel); - } - ~eLabelSkinInit() - { - eSkin::removeWidgetCreator("eLabel", create_eLabel); - } -}; - -eAutoInitP0<eLabelSkinInit> init_eLabelSkinInit(eAutoInitNumbers::guiobject, "eLabel"); |
