diff options
author | Walter Bender <walter.bender@gmail.com> | 2012-10-13 12:02:19 (GMT) |
---|---|---|
committer | Walter Bender <walter.bender@gmail.com> | 2012-10-13 12:02:19 (GMT) |
commit | 7051918f8d4edfb5b46969667cc7134ce2db65c6 (patch) | |
tree | c8c84f2103ccbf417a4826e89f85452409e69609 | |
parent | 1ae90721c50fad91d7411f386d5b210ec8f75423 (diff) |
handle cairo surfaces directly
-rw-r--r-- | TurtleArt/sprites.py | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/TurtleArt/sprites.py b/TurtleArt/sprites.py index 33a5cd2..8cad6a6 100644 --- a/TurtleArt/sprites.py +++ b/TurtleArt/sprites.py @@ -79,6 +79,7 @@ def svg_str_to_pixbuf(svg_string): import gi from gi.repository import Gtk, GdkPixbuf, Gdk from gi.repository import Pango, PangoCairo +import cairo class Sprites: @@ -188,7 +189,7 @@ class Sprite: self.images[i] = image self._dx[i] = dx self._dy[i] = dy - if isinstance(self.images[i], GdkPixbuf.Pixbuf): + if hasattr(self.images[i], 'get_width'): w = self.images[i].get_width() h = self.images[i].get_height() else: @@ -339,6 +340,14 @@ class Sprite: self.rect[2], self.rect[3]) cr.fill() + elif type(img) == cairo.ImageSurface: + cr.set_source_surface(img, self.rect[0] + self._dx[i], + self.rect[1] + self._dy[i]) + cr.rectangle(self.rect[0] + self._dx[i], + self.rect[1] + self._dy[i], + self.rect[2], + self.rect[3]) + cr.fill() else: print 'sprite.draw: source not a pixbuf (%s)' % (type(img)) if len(self.labels) > 0: |