Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/TurtleArt
diff options
context:
space:
mode:
authorWalter Bender <walter.bender@gmail.com>2011-11-27 13:45:39 (GMT)
committer Walter Bender <walter.bender@gmail.com>2011-11-27 13:45:39 (GMT)
commit2fb66e93c45aa46d91fa522dd60999ed23f78db6 (patch)
treee8182c898f1f4ec5ae36dc96848cfea199df982e /TurtleArt
parent05db5986499ffbf100b6b1d3ea908daa5bb51223 (diff)
add option to set image directly with Cairo surface
Diffstat (limited to 'TurtleArt')
-rw-r--r--TurtleArt/sprites.py22
1 files changed, 13 insertions, 9 deletions
diff --git a/TurtleArt/sprites.py b/TurtleArt/sprites.py
index baae94f..a4e97e7 100644
--- a/TurtleArt/sprites.py
+++ b/TurtleArt/sprites.py
@@ -187,7 +187,8 @@ class Sprite:
self._dy.append(0)
self._dx[i] = dx
self._dy[i] = dy
- if isinstance(image, gtk.gdk.Pixbuf):
+ if isinstance(image, gtk.gdk.Pixbuf) or \
+ isinstance(image, cairo.ImageSurface):
w = image.get_width()
h = image.get_height()
else:
@@ -200,14 +201,17 @@ class Sprite:
self.rect.width = w + dx
if h + dy > self.rect.height:
self.rect.height = h + dy
- surface = cairo.ImageSurface(
- cairo.FORMAT_ARGB32, self.rect.width, self.rect.height)
- context = cairo.Context(surface)
- context = gtk.gdk.CairoContext(context)
- context.set_source_pixbuf(image, 0, 0)
- context.rectangle(0, 0, self.rect.width, self.rect.height)
- context.fill()
- self.cached_surfaces[i] = surface
+ if isinstance(image, cairo.ImageSurface):
+ self.cached_surfaces[i] = image
+ else: # Convert to Cairo surface
+ surface = cairo.ImageSurface(
+ cairo.FORMAT_ARGB32, self.rect.width, self.rect.height)
+ context = cairo.Context(surface)
+ context = gtk.gdk.CairoContext(context)
+ context.set_source_pixbuf(image, 0, 0)
+ context.rectangle(0, 0, self.rect.width, self.rect.height)
+ context.fill()
+ self.cached_surfaces[i] = surface
def move(self, pos):
''' Move to new (x, y) position '''