- add colors for labels
authorFelix Domke <tmbinc@elitedvb.net>
Fri, 8 Jul 2005 16:30:32 +0000 (16:30 +0000)
committerFelix Domke <tmbinc@elitedvb.net>
Fri, 8 Jul 2005 16:30:32 +0000 (16:30 +0000)
 - add calc size for labels

lib/gui/elabel.cpp
lib/gui/elabel.h

index 3519a7a..5b1c5b0 100644 (file)
@@ -1,4 +1,5 @@
 #include <lib/gui/elabel.h>
+#include <lib/gdi/font.h>
 
 eLabel::eLabel(eWidget *parent): eWidget(parent)
 {
@@ -10,6 +11,8 @@ eLabel::eLabel(eWidget *parent): eWidget(parent)
                /* default to topleft alignment */
        m_valign = alignTop;
        m_halign = alignLeft;
+       
+       m_have_foreground_color = 0;
 }
 
 int eLabel::event(int event, void *data, void *data2)
@@ -28,6 +31,9 @@ int eLabel::event(int event, void *data, void *data2)
                painter.setFont(m_font);
                style->setStyle(painter, eWindowStyle::styleLabel);
                
+               if (m_have_foreground_color)
+                       painter.setForegroundColor(m_foreground_color);
+               
                int flags = 0;
                if (m_valign == alignTop)
                        flags |= gPainter::RT_VALIGN_TOP;
@@ -85,3 +91,25 @@ void eLabel::setHAlign(int align)
        m_halign = align;
        event(evtChangedAlignment);
 }
+
+void eLabel::setForegroundColor(const gRGB &col)
+{
+       m_foreground_color = col;
+       m_have_foreground_color = 1;
+}
+
+void eLabel::clearForegroundColor()
+{
+       m_have_foreground_color = 0;
+}
+
+eSize eLabel::calculateSize()
+{
+       ePtr<eTextPara> p = new eTextPara(eRect(0, 0, size().width(), size().height()));
+       
+       p->setFont(m_font);
+       p->renderString(m_text, RS_WRAP);
+       
+       eRect bbox = p->getBoundBox();
+       return bbox.size();
+}
index c19eb0a..185f7c2 100644 (file)
@@ -22,12 +22,20 @@ public:
        
        void setVAlign(int align);
        void setHAlign(int align);
+       
+       void setForegroundColor(const gRGB &col);
+       void clearForegroundColor();
+       
+       eSize calculateSize();
 protected:
        ePtr<gFont> m_font;
        int m_valign, m_halign;
        std::string m_text;
        int event(int event, void *data=0, void *data2=0);
 private:
+       int m_have_foreground_color;
+       gRGB m_foreground_color;
+       
        enum eLabelEvent
        {
                evtChangedText = evtUserWidget,