add support for channellogos (picons)
[enigma2.git] / lib / python / Components / Renderer / Canvas.py
1 from Renderer import Renderer
2
3 from enigma import eCanvas, eRect, gRGB
4
5 class Canvas(Renderer):
6         GUI_WIDGET = eCanvas
7
8         def __init__(self):
9                 Renderer.__init__(self)
10                 self.sequence = None
11                 self.draw_count = 0
12
13         def pull_updates(self):
14                 if self.instance is None:
15                         return
16
17                 # do an incremental update
18                 list = self.source.drawlist
19                 if list is None:
20                         return
21
22                 # if the lists sequence count changed, re-start from begin
23                 if list[0] != self.sequence:
24                         self.sequence = list[0]
25                         self.draw_count = 0
26
27                 self.draw(list[1][self.draw_count:])
28                 self.draw_count = len(list[1])
29
30         def draw(self, list):
31                 for l in list:
32                         self.instance.fillRect(eRect(l[1], l[2], l[3], l[4]), gRGB(l[5]))
33
34         def changed(self, what):
35                 self.pull_updates()
36
37         def postWidgetCreate(self, instance):
38                 self.sequence = None
39
40                 from enigma import eSize
41
42                 def parseSize(str):
43                         x, y = str.split(',')
44                         return eSize(int(x), int(y))
45
46                 for (attrib, value) in self.skinAttributes:
47                         if attrib == "size":
48                                 self.instance.setSize(parseSize(value))
49
50                 self.pull_updates()