[gegl] buffer: fix source rect passed to gegl_resample_{linear, boxfilter}()
- From: Ell <ell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gegl] buffer: fix source rect passed to gegl_resample_{linear, boxfilter}()
- Date: Sun, 14 Oct 2018 12:44:03 +0000 (UTC)
commit a7c730cf6e841a46d3b4546b86a234ae59206e9c
Author: Ell <ell_se yahoo com>
Date: Sun Oct 14 07:32:57 2018 -0400
buffer: fix source rect passed to gegl_resample_{linear,boxfilter}()
In _gegl_buffer_get_unlocked(), when performing linear- or box-
filtering, don't include the source-buffer "border" pixels in the
source rect passed to gegl_resample_linear() and
gegl_resample_boxfilter(), respectively. These pixels are needed
since they might be involved in the arithmeric, but they shouldn't
be taken into account when transforming coordinates between the
source and destination coordinate systems.
Update affected mipmap test output.
gegl/buffer/gegl-buffer-access.c | 16 +++++++---------
tests/mipmap/rotate-reference.png | Bin 84628 -> 84631 bytes
2 files changed, 7 insertions(+), 9 deletions(-)
---
diff --git a/gegl/buffer/gegl-buffer-access.c b/gegl/buffer/gegl-buffer-access.c
index 1bf8f00e9..f2e6a64df 100644
--- a/gegl/buffer/gegl-buffer-access.c
+++ b/gegl/buffer/gegl-buffer-access.c
@@ -2212,8 +2212,6 @@ _gegl_buffer_get_unlocked (GeglBuffer *buffer,
case GEGL_BUFFER_FILTER_BILINEAR:
buf_width += 1;
buf_height += 1;
- sample_rect.width += factor;
- sample_rect.height += factor;
gegl_buffer_iterate_read_dispatch (buffer, &sample_rect,
(guchar*)sample_buf,
buf_width * bpp,
@@ -2221,8 +2219,8 @@ _gegl_buffer_get_unlocked (GeglBuffer *buffer,
sample_rect.x = x1;
sample_rect.y = y1;
- sample_rect.width = x2 - x1 + 1;
- sample_rect.height = y2 - y1 + 1;
+ sample_rect.width = x2 - x1;
+ sample_rect.height = y2 - y1;
gegl_resample_bilinear (dest_buf,
sample_buf,
@@ -2246,13 +2244,13 @@ _gegl_buffer_get_unlocked (GeglBuffer *buffer,
buf_width * bpp,
format, level, repeat_mode);
- sample_rect.x = x1 - 1;
- sample_rect.y = y1 - 1;
- sample_rect.width = x2 - x1 + 2;
- sample_rect.height = y2 - y1 + 2;
+ sample_rect.x = x1;
+ sample_rect.y = y1;
+ sample_rect.width = x2 - x1;
+ sample_rect.height = y2 - y1;
gegl_resample_boxfilter (dest_buf,
- sample_buf,
+ (guchar*)sample_buf + offset,
&rect2,
&sample_rect,
buf_width * bpp,
diff --git a/tests/mipmap/rotate-reference.png b/tests/mipmap/rotate-reference.png
index 2ffc5e299..c2e4edef0 100644
Binary files a/tests/mipmap/rotate-reference.png and b/tests/mipmap/rotate-reference.png differ
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]