From: Felix Domke Date: Thu, 24 Jan 2008 21:56:23 +0000 (+0000) Subject: write text support in eCanvas X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=commitdiff_plain;h=d09bd946be9c73d96fb8e1697b15e733d04ddeb6 write text support in eCanvas --- diff --git a/lib/gui/ecanvas.cpp b/lib/gui/ecanvas.cpp index 3b1e617..c9a1ec8 100644 --- a/lib/gui/ecanvas.cpp +++ b/lib/gui/ecanvas.cpp @@ -37,3 +37,17 @@ void eCanvas::fillRect(eRect rect, gRGB color) invalidate(rect); } + +void eCanvas::writeText(eRect rect, gRGB fg, gRGB bg, gFont *font, const char *string, int flags) +{ + ePtr 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); +} diff --git a/lib/gui/ecanvas.h b/lib/gui/ecanvas.h index 629c603..b2ad6a0 100644 --- a/lib/gui/ecanvas.h +++ b/lib/gui/ecanvas.h @@ -12,6 +12,7 @@ public: 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 diff --git a/lib/python/Components/Renderer/Canvas.py b/lib/python/Components/Renderer/Canvas.py index 5375723..bd7ffb5 100644 --- a/lib/python/Components/Renderer/Canvas.py +++ b/lib/python/Components/Renderer/Canvas.py @@ -29,7 +29,13 @@ class Canvas(Renderer): 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() diff --git a/lib/python/Components/Sources/CanvasSource.py b/lib/python/Components/Sources/CanvasSource.py index 4fd0e02..2f3aaec 100644 --- a/lib/python/Components/Sources/CanvasSource.py +++ b/lib/python/Components/Sources/CanvasSource.py @@ -16,5 +16,10 @@ class CanvasSource(Source): 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,))