Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWalter 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)
commit7051918f8d4edfb5b46969667cc7134ce2db65c6 (patch)
treec8c84f2103ccbf417a4826e89f85452409e69609
parent1ae90721c50fad91d7411f386d5b210ec8f75423 (diff)
handle cairo surfaces directly
-rw-r--r--TurtleArt/sprites.py11
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: