[gthumb] better image quality for zoom factor > 1
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb] better image quality for zoom factor > 1
- Date: Fri, 1 Jan 2016 21:14:02 +0000 (UTC)
commit dcf1cebba02ae9017829fa5801308e97c62bb81c
Author: Paolo Bacchilega <paobac src gnome org>
Date: Fri Jan 1 21:57:05 2016 +0100
better image quality for zoom factor > 1
use the cairo bilinear filter when 1 < zoom factor <= 3;
use the fast filter when the zoom factor > 3 because the bilinear
filter doesn't add any value for such big zoom factors, and in
fact it could be more interesting to look at the single pixels
gthumb/gth-image-dragger.c | 11 ++++++++---
gthumb/gth-image-viewer.c | 7 ++++++-
2 files changed, 14 insertions(+), 4 deletions(-)
---
diff --git a/gthumb/gth-image-dragger.c b/gthumb/gth-image-dragger.c
index 304d4dd..f3a4168 100644
--- a/gthumb/gth-image-dragger.c
+++ b/gthumb/gth-image-dragger.c
@@ -29,6 +29,7 @@
#define SIZE_TOO_BIG_FOR_SCALE_BILINEAR (3000 * 3000)
+#define MAX_ZOOM_LEVEL_FOR_HIGH_QUALITY 3.0
#define FRAME_BORDER 15
@@ -266,7 +267,7 @@ gth_image_dragger_draw (GthImageViewerTool *self,
gth_image_viewer_paint_frame (viewer, cr);
- if (dragger->priv->scaled != NULL)
+ if (dragger->priv->scaled != NULL) {
gth_image_viewer_paint_region (viewer,
cr,
dragger->priv->scaled,
@@ -274,14 +275,18 @@ gth_image_dragger_draw (GthImageViewerTool *self,
viewer->image_area.y,
&viewer->visible_area,
CAIRO_FILTER_FAST);
- else
+ }
+ else {
+ double zoom = gth_image_viewer_get_zoom (viewer);
+
gth_image_viewer_paint_region (viewer,
cr,
gth_image_viewer_get_current_image (viewer),
viewer->image_area.x,
viewer->image_area.y,
&viewer->visible_area,
- CAIRO_FILTER_FAST);
+ (gth_image_viewer_get_zoom_quality (viewer) ==
GTH_ZOOM_QUALITY_HIGH) && (zoom > 1.0) && (zoom <= MAX_ZOOM_LEVEL_FOR_HIGH_QUALITY) ? CAIRO_FILTER_BILINEAR :
CAIRO_FILTER_FAST);
+ }
gth_image_viewer_apply_painters (viewer, cr);
}
diff --git a/gthumb/gth-image-viewer.c b/gthumb/gth-image-viewer.c
index 00c8a2b..7d10ac0 100644
--- a/gthumb/gth-image-viewer.c
+++ b/gthumb/gth-image-viewer.c
@@ -2110,6 +2110,11 @@ gth_image_viewer_set_zoom_quality (GthImageViewer *self,
GthZoomQuality quality)
{
self->priv->zoom_quality = quality;
+
+ /* to update the zoom filter */
+
+ if (self->priv->tool != NULL)
+ gth_image_viewer_tool_zoom_changed (self->priv->tool);
}
@@ -2130,7 +2135,7 @@ gth_image_viewer_get_zoom_quality_filter (GthImageViewer *viewer)
else
filter = CAIRO_FILTER_BEST;
- if (gth_image_viewer_get_zoom (viewer) >= 1.0)
+ if (viewer->priv->zoom_level >= 1.0)
filter = CAIRO_FILTER_FAST;
return filter;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]