[gthumb] fixed image upscaling
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb] fixed image upscaling
- Date: Sat, 24 Apr 2021 21:30:01 +0000 (UTC)
commit 51adcca929f6fc456eb18b655f78f9f7739b8c9f
Author: Paolo Bacchilega <paobac src gnome org>
Date: Sat Apr 24 23:05:35 2021 +0200
fixed image upscaling
gthumb/cairo-scale.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
---
diff --git a/gthumb/cairo-scale.c b/gthumb/cairo-scale.c
index fab1c004..081ad8d8 100644
--- a/gthumb/cairo-scale.c
+++ b/gthumb/cairo-scale.c
@@ -351,6 +351,7 @@ horizontal_scale_transpose (cairo_surface_t *image,
ScaleReal scale_factor,
resize_filter_t *resize_filter)
{
+ ScaleReal scale;
ScaleReal support;
int y;
int image_width;
@@ -365,9 +366,12 @@ horizontal_scale_transpose (cairo_surface_t *image,
if (resize_filter->cancelled)
return;
- support = (1.0 / scale_factor) * resize_filter_get_support (resize_filter);
- if (support < 0.5)
+ scale = MAX ((ScaleReal) 1.0 / scale_factor, 1.0);
+ support = scale * resize_filter_get_support (resize_filter);
+ if (support < 0.5) {
support = 0.5;
+ scale = 1.0;
+ }
image_width = cairo_image_surface_get_width (image);
scaled_width = cairo_image_surface_get_width (scaled);
@@ -378,6 +382,7 @@ horizontal_scale_transpose (cairo_surface_t *image,
dest_rowstride = cairo_image_surface_get_stride (scaled);
weights = g_new (ScaleReal, 2.0 * support + 3.0);
+ scale = 1.0 / scale;
for (y = 0; y < scaled_height; y++) {
guchar *p_src_row;
guchar *p_dest_pixel;
@@ -412,7 +417,7 @@ horizontal_scale_transpose (cairo_surface_t *image,
density = 0.0;
for (n = 0; n < stop - start; n++) {
- weights[n] = resize_filter_get_weight (resize_filter, scale_factor * ((ScaleReal)
(start + n) - bisect + 0.5));
+ weights[n] = resize_filter_get_weight (resize_filter, scale * ((ScaleReal) (start +
n) - bisect + 0.5));
density += weights[n];
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]