- add fake "main menu"
[enigma2.git] / lib / gdi / grc.cpp
index cb2a6de99006bff34f2755c9ef60741df3e1582c..a63aef9278ea2770ad5e0d287d7bccf40506fca1 100644 (file)
@@ -1,5 +1,5 @@
 // for debugging use:
- #define SYNC_PAINT
+// #define SYNC_PAINT
 #include <unistd.h>
 #ifndef SYNC_PAINT
 #include <pthread.h>
@@ -342,8 +342,23 @@ void gDC::exec(gOpcode *o)
                ePtr<eTextPara> para = new eTextPara(o->parm.renderText->area);
                assert(m_current_font);
                para->setFont(m_current_font);
-               para->renderString(o->parm.renderText->text, o->parm.renderText->flags);
-               para->blit(*this, m_current_offset, getRGB(m_background_color), getRGB(m_foreground_color));
+               para->renderString(o->parm.renderText->text, 0);
+               
+               if (o->parm.renderText->flags & gPainter::RT_HALIGN_RIGHT)
+                       para->realign(eTextPara::dirRight);
+               else if (o->parm.renderText->flags & gPainter::RT_HALIGN_CENTER)
+                       para->realign(eTextPara::dirCenter);
+               else if (o->parm.renderText->flags & gPainter::RT_HALIGN_BLOCK)
+                       para->realign(eTextPara::dirBlock);
+               
+               ePoint offset = m_current_offset;
+               
+               if (o->parm.renderText->flags & gPainter::RT_VALIGN_CENTER)
+               {
+                       eRect bbox = para->getBoundBox();
+                       offset += ePoint(0, (o->parm.renderText->area.height() - bbox.height()) / 2);
+               }
+               para->blit(*this, offset, getRGB(m_background_color), getRGB(m_foreground_color));
                delete o->parm.renderText;
                break;
        }