diff options
author | Walter 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) |
commit | 69da7abf64e7cc458451e00b394a8e0fd1270fb0 (patch) | |
tree | 55d0a892de54a07e7369ec8646b2ff91562b5f48 /TurtleArt/sprites.py | |
parent | 51948de70edd87cde63b4de1ca86548bf7906b4a (diff) |
more cairo methods implemented; set context to use with label_width
Diffstat (limited to 'TurtleArt/sprites.py')
-rw-r--r-- | TurtleArt/sprites.py | 27 |
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 ''' |