write text support in eCanvas
authorFelix Domke <tmbinc@elitedvb.net>
Thu, 24 Jan 2008 21:56:23 +0000 (21:56 +0000)
committerFelix Domke <tmbinc@elitedvb.net>
Thu, 24 Jan 2008 21:56:23 +0000 (21:56 +0000)
lib/gui/ecanvas.cpp
lib/gui/ecanvas.h
lib/python/Components/Renderer/Canvas.py
lib/python/Components/Sources/CanvasSource.py

index 3b1e617..c9a1ec8 100644 (file)
@@ -37,3 +37,17 @@ void eCanvas::fillRect(eRect rect, gRGB color)
 
        invalidate(rect);
 }
 
        invalidate(rect);
 }
+
+void eCanvas::writeText(eRect rect, gRGB fg, gRGB bg, gFont *font, const char *string, int flags)
+{
+       ePtr<gDC> dc = new gDC(m_pixmap);
+
+       gPainter p(dc);
+       p.setFont(font);
+       p.resetClip(eRect(ePoint(0,0), m_pixmap->size()));
+       p.setForegroundColor(fg);
+       p.setBackgroundColor(bg);
+       p.renderText(rect, string, flags);
+
+       invalidate(rect);
+}
index 629c603..b2ad6a0 100644 (file)
@@ -12,6 +12,7 @@ public:
 
        void clear(gRGB color);
        void fillRect(eRect rect, gRGB color);
 
        void clear(gRGB color);
        void fillRect(eRect rect, gRGB color);
+       void writeText(eRect where, gRGB fg, gRGB bg, gFont *font, const char *string, int flags);
 };
 
 #endif
 };
 
 #endif
index 5375723..bd7ffb5 100644 (file)
@@ -29,7 +29,13 @@ class Canvas(Renderer):
 
        def draw(self, list):
                for l in list:
 
        def draw(self, list):
                for l in list:
-                       self.instance.fillRect(eRect(l[1], l[2], l[3], l[4]), gRGB(l[5]))
+                       if l[0] == 1:
+                               self.instance.fillRect(eRect(l[1], l[2], l[3], l[4]), gRGB(l[5]))
+                       elif l[0] == 2:
+                               self.instance.writeText(eRect(l[1], l[2], l[3], l[4]), gRGB(l[5]), gRGB(l[6]), l[7], l[8], l[9])
+                       else:
+                               print "drawlist entry:", l
+                               raise "invalid drawlist entry"
 
        def changed(self, what):
                self.pull_updates()
 
        def changed(self, what):
                self.pull_updates()
index 4fd0e02..2f3aaec 100644 (file)
@@ -16,5 +16,10 @@ class CanvasSource(Source):
        drawlist = property(get_drawlist)
 
        def fill(self, x, y, width, height, color):
        drawlist = property(get_drawlist)
 
        def fill(self, x, y, width, height, color):
-               self.drawlist[1].append( (1, x, y, width, height, color) )
-               self.changed()
+               self.drawlist[1].append((1, x, y, width, height, color))
+
+       def writeText(self, x, y, width, height, fg, bg, font, text, flags = 0):
+               self.drawlist[1].append((2, x, y, width, height, fg, bg, font, text, flags))
+
+       def flush(self):
+               self.changed((self.CHANGED_DEFAULT,))