aboutsummaryrefslogtreecommitdiff
path: root/lib/gdi/glcddc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gdi/glcddc.cpp')
-rw-r--r--lib/gdi/glcddc.cpp56
1 files changed, 56 insertions, 0 deletions
diff --git a/lib/gdi/glcddc.cpp b/lib/gdi/glcddc.cpp
new file mode 100644
index 00000000..3895df9a
--- /dev/null
+++ b/lib/gdi/glcddc.cpp
@@ -0,0 +1,56 @@
+#ifndef DISABLE_LCD
+
+#include <lib/gdi/glcddc.h>
+#include <lib/gdi/lcd.h>
+
+gLCDDC *gLCDDC::instance;
+
+gLCDDC::gLCDDC(eLCD *lcd): lcd(lcd)
+{
+ 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;
+}
+
+gLCDDC::~gLCDDC()
+{
+ delete pixmap;
+ instance=0;
+}
+
+void gLCDDC::exec(gOpcode *o)
+{
+ switch (o->opcode)
+ {
+ case gOpcode::flush:
+ case gOpcode::end:
+ if (update)
+ lcd->update();
+ default:
+ gPixmapDC::exec(o);
+ break;
+ }
+}
+
+gLCDDC *gLCDDC::getInstance()
+{
+ return instance;
+}
+
+void gLCDDC::setUpdate(int u)
+{
+ update=u;
+}
+
+#endif //DISABLE_LCD