From 4739976d0a96eb21b8f606c69ecc09ca7a1557de Mon Sep 17 00:00:00 2001 From: Walter Bender Date: Tue, 08 Nov 2011 00:12:29 +0000 Subject: Merge commit 'refs/merge-requests/3' of git://git.sugarlabs.org/turtleart/mainline into integration Conflicts: NEWS activity/activity.info --- (limited to 'turtleart.py') diff --git a/turtleart.py b/turtleart.py index ca9153a..9afc238 100755 --- a/turtleart.py +++ b/turtleart.py @@ -24,6 +24,7 @@ import pygtk pygtk.require('2.0') import gtk +import cairo import getopt import sys @@ -83,11 +84,13 @@ class TurtleMain(): self._plugins = [] if self.output_png: + # Fix me: We need to create a cairo surface to work with pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, gtk.gdk.screen_width(), gtk.gdk.screen_height()) - self.canvas, mask = pixbuf.render_pixmap_and_mask() - self._build_window() + # self.canvas, mask = pixbuf.render_pixmap_and_mask() + self.canvas = pixbuf + self._build_window(interactive=False) self._draw_and_quit() else: self._read_initial_pos() @@ -174,11 +177,24 @@ class TurtleMain(): self.tw.load_start(self.ta_file) self.tw.lc.trace = 0 self.tw.run_button(0) - self.tw.save_as_image(self.ta_file, self.canvas) + self.tw.save_as_image(self.ta_file) - def _build_window(self): + def _build_window(self, interactive=True): ''' Initialize the TurtleWindow instance. ''' - self.tw = TurtleArtWindow(self.canvas, self._dirname) + if interactive: + win = self.canvas.get_window() + cr = win.cairo_create() + surface = cr.get_target() + else: + img_surface = cairo.ImageSurface(cairo.FORMAT_RGB24, + 1024, 768) + cr = cairo.Context(img_surface) + surface = cr.get_target() + self.turtle_canvas = surface.create_similar( + cairo.CONTENT_COLOR, gtk.gdk.screen_width() * 2, + gtk.gdk.screen_height() * 2) + self.tw = TurtleArtWindow(self.canvas, self._dirname, + turtle_canvas=self.turtle_canvas) self.tw.save_folder = os.path.expanduser('~') def _init_vars(self): -- cgit v0.9.1