Add abstract class gMainDC as an interface for gFBDC and gSDLDC
[enigma2.git] / lib / gdi / glcddc.cpp
index 3895df9a0c3283b0d619267119c95327d6d83da9..bade53ba88c7533e74ca86237eec52978d5b9e65 100644 (file)
@@ -1,56 +1,51 @@
-#ifndef DISABLE_LCD
-
 #include <lib/gdi/glcddc.h>
 #include <lib/gdi/lcd.h>
+#include <lib/base/init.h>
+#include <lib/base/init_num.h>
 
 gLCDDC *gLCDDC::instance;
 
-gLCDDC::gLCDDC(eLCD *lcd): lcd(lcd)
+gLCDDC::gLCDDC()
 {
+       lcd = new eDBoxLCD();
        instance=this;
        
        update=1;
 
-       pixmap=new gPixmap();
-       pixmap->x=lcd->size().width();
-       pixmap->y=lcd->size().height();
-       pixmap->bpp=8;
-       pixmap->bypp=1;
-       pixmap->stride=lcd->stride();
-       pixmap->data=lcd->buffer();
-       
-       pixmap->clut.colors=256;
-       pixmap->clut.data=0;
+       surface.x=lcd->size().width();
+       surface.y=lcd->size().height();
+       surface.stride=lcd->stride();
+       surface.bypp=surface.stride / surface.x;
+       surface.bpp=surface.bypp*8;
+       surface.data=lcd->buffer();
+       surface.clut.colors=0;
+       surface.clut.data=0;
+
+       m_pixmap = new gPixmap(&surface);
 }
 
 gLCDDC::~gLCDDC()
 {
-       delete pixmap;
+       delete lcd;
        instance=0;
 }
 
-void gLCDDC::exec(gOpcode *o)
+void gLCDDC::exec(const gOpcode *o)
 {
        switch (o->opcode)
        {
        case gOpcode::flush:
-       case gOpcode::end:
-               if (update)
+//             if (update)
                        lcd->update();
        default:
-               gPixmapDC::exec(o);
+               gDC::exec(o);
                break;
        }
 }
 
-gLCDDC *gLCDDC::getInstance()
-{
-       return instance;
-}
-
 void gLCDDC::setUpdate(int u)
 {
        update=u;
 }
 
-#endif //DISABLE_LCD
+eAutoInitPtr<gLCDDC> init_gLCDDC(eAutoInitNumbers::graphic-1, "gLCDDC");