From 69da7abf64e7cc458451e00b394a8e0fd1270fb0 Mon Sep 17 00:00:00 2001 From: Walter Bender Date: Mon, 31 Oct 2011 13:26:39 +0000 Subject: more cairo methods implemented; set context to use with label_width --- (limited to 'TurtleArt/sprites.py') 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 ''' -- cgit v0.9.1