From f0b65094cb6ced412a85c6645a606fd8980426c9 Mon Sep 17 00:00:00 2001 From: Gonzalo Odiard Date: Wed, 25 Jul 2012 18:23:55 +0000 Subject: Resize of selections use cairo Singled-off-by: Gonzalo Odiard --- (limited to 'Desenho.py') diff --git a/Desenho.py b/Desenho.py index c67c532..cdcc674 100644 --- a/Desenho.py +++ b/Desenho.py @@ -635,7 +635,7 @@ class Desenho: widget.temp_ctx.set_source_surface(selection_surface) widget.temp_ctx.paint() widget.temp_ctx.restore() - widget.set_selection_bounds(new_x, new_y, width, height) + widget.set_selection_start(new_x, new_y) widget.queue_draw() @@ -647,75 +647,19 @@ class Desenho: @param height_percent -- Percent of y scale """ - width, height = widget.window.get_size() - widget.desenha = True - - #Create the pixbuf for future resizes - try: - self.pixbuf_resize - except: - size = widget.pixmap_sel.get_size() - self.pixbuf_resize = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, - 8, size[0], size[1]) - self.pixbuf_resize.get_from_drawable(widget.pixmap_sel, - gtk.gdk.colormap_get_system(), 0, 0, 0, 0, size[0], size[1]) - - w = self.pixbuf_resize.get_width() - h = self.pixbuf_resize.get_height() - wr = int(w * width_percent) - hr = int(h * height_percent) - - self._draw_selection(widget, wr, hr, is_preview=True) - # Add a timer for resize or update it if there is one already: if self._resize_timer is not None: gobject.source_remove(self._resize_timer) self._resize_timer = gobject.timeout_add(RESIZE_DELAY, - self._do_resize, widget, wr, hr) + self._do_resize, widget, width_percent, height_percent) - def _do_resize(self, widget, wr, hr): + def _do_resize(self, widget, width_percent, height_percent): """Do the resize calculation. - """ - resized = self.pixbuf_resize.scale_simple(wr, hr, gtk.gdk.INTERP_HYPER) - - #Copy the resized picture to pixmap_sel - try: - del (widget.pixmap_sel) - except: - pass - widget.pixmap_sel = gtk.gdk.Pixmap(widget.window, wr, hr, -1) - widget.pixmap_sel.draw_pixbuf(widget.get_style().white_gc, resized, - 0, 0, 0, 0, wr, hr) - - #Draw the new pixmap_sel - self._draw_selection(widget, wr, hr) - - # Clean the timer: - self.resize_timer = None - return False - - def _draw_selection(self, widget, wr, hr, is_preview=False): - gc.collect() - width, height = widget.window.get_size() - - widget.pixmap_temp.draw_drawable(widget.gc, widget.pixmap, - 0, 0, 0, 0, width, height) - if is_preview: - widget.pixmap_temp.draw_drawable(widget.gc, widget.pixmap_sel, - 0, 0, widget.orig_x, widget.orig_y, -1, -1) - else: - widget.pixmap_temp.draw_drawable(widget.gc, widget.pixmap_sel, - 0, 0, widget.orig_x, widget.orig_y, wr, hr) - - widget.set_selection_bounds(widget.orig_x, widget.orig_y, wr, hr) -# widget.pixmap_temp.draw_rectangle(widget.gc_selection, False, -# widget.orig_x, widget.orig_y, wr, hr) -# widget.pixmap_temp.draw_rectangle(widget.gc_selection1, False, -# widget.orig_x - 1, widget.orig_y - 1, wr + 2, hr + 2) - + widget.desenha = True + widget.resize_selection_surface(float(width_percent), + float(height_percent)) widget.queue_draw() - gc.collect() def freeform(self, widget, coords, temp, fill, param=None): """Draw polygon. -- cgit v0.9.1