Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/Desenho.py
diff options
context:
space:
mode:
authorGonzalo Odiard <godiard@gmail.com>2012-07-25 18:23:55 (GMT)
committer Gonzalo Odiard <godiard@gmail.com>2012-08-10 13:49:30 (GMT)
commitf0b65094cb6ced412a85c6645a606fd8980426c9 (patch)
treed0c46bc2be8dd4449d6ea296f9f632070956c6af /Desenho.py
parent5e21c46db8801459a91621e518640b53a7224dbf (diff)
Resize of selections use cairo
Singled-off-by: Gonzalo Odiard <gonzalo@laptop.org>
Diffstat (limited to 'Desenho.py')
-rw-r--r--Desenho.py68
1 files changed, 6 insertions, 62 deletions
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.