Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/TurtleArt/sprites.py
diff options
context:
space:
mode:
authorWalter Bender <walter.bender@gmail.com>2011-10-31 13:26:39 (GMT)
committer Walter Bender <walter.bender@gmail.com>2011-10-31 13:26:39 (GMT)
commit69da7abf64e7cc458451e00b394a8e0fd1270fb0 (patch)
tree55d0a892de54a07e7369ec8646b2ff91562b5f48 /TurtleArt/sprites.py
parent51948de70edd87cde63b4de1ca86548bf7906b4a (diff)
more cairo methods implemented; set context to use with label_width
Diffstat (limited to 'TurtleArt/sprites.py')
-rw-r--r--TurtleArt/sprites.py27
1 files changed, 15 insertions, 12 deletions
diff --git a/TurtleArt/sprites.py b/TurtleArt/sprites.py
index 14d155e..cdf38c2 100644
--- a/TurtleArt/sprites.py
+++ b/TurtleArt/sprites.py
@@ -90,6 +90,7 @@ class Sprites:
''' Initialize an empty array of sprites '''
self.widget = widget
self.list = []
+ self.cr = None
def set_cairo_context(self, cr):
''' Cairo context may be set or reset after __init__ '''
@@ -396,18 +397,20 @@ class Sprite:
def label_width(self):
''' Calculate the width of a label '''
- return self.rect.width
- max = 0
- for i in range(len(self.labels)):
- # FIX ME: define a pango layout
- pl = pango.Layout(pango.Context()) # context is missing arg
- pl.set_text(self.labels[i])
- self._fd.set_size(int(self._scale[i] * pango.SCALE))
- pl.set_font_description(self._fd)
- w = pl.get_size()[0] / pango.SCALE
- if w > max:
- max = w
- return max
+ cr = pangocairo.CairoContext(self._sprites.cr)
+ if cr is not None:
+ max = 0
+ for i in range(len(self.labels)):
+ pl = cr.create_layout()
+ pl.set_text(self.labels[i])
+ self._fd.set_size(int(self._scale[i] * pango.SCALE))
+ pl.set_font_description(self._fd)
+ w = pl.get_size()[0] / pango.SCALE
+ if w > max:
+ max = w
+ return max
+ else:
+ return self.rect.width
def label_safe_width(self):
''' Return maximum width for a label '''