[gthumb/gthumb-3-2] rotation: fixed the image position when rotating



commit 190c2725d5b0dbbf6125ae77b46f26bd0fa4c3dd
Author: Paolo Bacchilega <paobac src gnome org>
Date:   Wed Oct 9 20:08:56 2013 +0200

    rotation: fixed the image position when rotating

 extensions/file_tools/gth-image-rotator.c |   13 ++++++++-----
 1 files changed, 8 insertions(+), 5 deletions(-)
---
diff --git a/extensions/file_tools/gth-image-rotator.c b/extensions/file_tools/gth-image-rotator.c
index 7ec4b22..183cb4b 100644
--- a/extensions/file_tools/gth-image-rotator.c
+++ b/extensions/file_tools/gth-image-rotator.c
@@ -280,14 +280,16 @@ static void
 paint_image (GthImageRotator *self,
             cairo_t         *cr)
 {
+       cairo_matrix_t matrix;
+
        cairo_save (cr);
 
-       cairo_set_matrix (cr, &self->priv->matrix);
-       cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE);
+       cairo_get_matrix (cr, &matrix);
+       cairo_matrix_multiply (&matrix, &self->priv->matrix, &matrix);
+       cairo_set_matrix (cr, &matrix);
        cairo_set_source_surface (cr, self->priv->preview_image,
                                  self->priv->preview_image_area.x,
                                  self->priv->preview_image_area.y);
-       cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_FAST);
        cairo_rectangle (cr,
                         self->priv->preview_image_area.x,
                         self->priv->preview_image_area.y,
@@ -446,6 +448,7 @@ gth_image_rotator_draw (GthImageViewerTool *base,
                               self->priv->background_color.blue,
                               self->priv->background_color.alpha);
        cairo_fill (cr);
+       cairo_restore (cr);
 
        if (self->priv->preview_image == NULL)
                return;
@@ -457,8 +460,10 @@ gth_image_rotator_draw (GthImageViewerTool *base,
        if (self->priv->dragging) {
                GdkPoint center;
 
+               cairo_save (cr);
                cairo_set_antialias (cr, CAIRO_ANTIALIAS_DEFAULT);
                cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);
+               cairo_restore (cr);
 
                center.x = self->priv->center.x * self->priv->preview_zoom + self->priv->preview_image_area.x;
                center.y = self->priv->center.y * self->priv->preview_zoom + self->priv->preview_image_area.y;
@@ -469,8 +474,6 @@ gth_image_rotator_draw (GthImageViewerTool *base,
                paint_point (self, cr, &self->priv->drag_p2);
                */
        }
-
-       cairo_restore (cr);
 }
 
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]