[gthumb] dragger: avoid some useless zoom
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb] dragger: avoid some useless zoom
- Date: Sat, 9 Nov 2013 20:03:13 +0000 (UTC)
commit 956810ce5220dcf42710121e67baabf389294970
Author: Paolo Bacchilega <paobac src gnome org>
Date: Sun Oct 13 12:09:21 2013 +0200
dragger: avoid some useless zoom
gthumb/gth-image-dragger.c | 20 +++++++++++---------
1 files changed, 11 insertions(+), 9 deletions(-)
---
diff --git a/gthumb/gth-image-dragger.c b/gthumb/gth-image-dragger.c
index 0c14c8f..7d94c0d 100644
--- a/gthumb/gth-image-dragger.c
+++ b/gthumb/gth-image-dragger.c
@@ -403,7 +403,8 @@ static void
_gth_image_dragger_update_scaled_image (GthImageDragger *self)
{
cairo_surface_t *image;
- double zoom;
+ double zoom_from_original;
+ double zoom_from_image;
int image_width, image_height;
int original_width, original_height;
int new_width, new_height;
@@ -430,15 +431,16 @@ _gth_image_dragger_update_scaled_image (GthImageDragger *self)
if (gth_image_viewer_get_zoom_quality (self->priv->viewer) == GTH_ZOOM_QUALITY_LOW)
return;
- zoom = gth_image_viewer_get_zoom (self->priv->viewer);
- if (zoom >= 1.0)
- return;
-
+ zoom_from_original = gth_image_viewer_get_zoom (self->priv->viewer);
+ gth_image_viewer_get_original_size (self->priv->viewer, &original_width, &original_height);
+ new_width = zoom_from_original * original_width;
+ new_height = zoom_from_original * original_height;
image_width = cairo_image_surface_get_width (image);
image_height = cairo_image_surface_get_height (image);
- gth_image_viewer_get_original_size (self->priv->viewer, &original_width, &original_height);
- new_width = zoom * original_width;
- new_height = zoom * original_height;
+ zoom_from_image = (double) new_width / image_width;
+
+ if (zoom_from_image >= 1.0)
+ return;
if (image_width * image_height <= SIZE_TOO_BIG_FOR_SCALE_BILINEAR) {
self->priv->scaled = _cairo_image_surface_scale_bilinear (image, new_width, new_height);
@@ -447,7 +449,7 @@ _gth_image_dragger_update_scaled_image (GthImageDragger *self)
else
filter = SCALE_FILTER_BOX;
- self->priv->scaled_zoom = zoom;
+ self->priv->scaled_zoom = zoom_from_original;
_gth_image_dragger_create_scaled_high_quality (self, image, new_width, new_height, filter);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]