Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/TurtleArt/sprites.py
diff options
context:
space:
mode:
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 '''