[gegl] transform: don't scale input bounds by level when computing scanline limits
- From: N/A <ell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gegl] transform: don't scale input bounds by level when computing scanline limits
- Date: Sun, 28 Jan 2018 17:56:34 +0000 (UTC)
commit 36fec161d34f36e6321a67f6634068ae44c475bf
Author: Ell <ell_se yahoo com>
Date: Sun Jan 28 12:40:13 2018 -0500
transform: don't scale input bounds by level when computing scanline limits
Fixes mipmap rendering.
operations/transform/transform-core.c | 55 ++++++++++++---------------------
1 files changed, 20 insertions(+), 35 deletions(-)
---
diff --git a/operations/transform/transform-core.c b/operations/transform/transform-core.c
index b7b2980..14bf25f 100644
--- a/operations/transform/transform-core.c
+++ b/operations/transform/transform-core.c
@@ -1082,20 +1082,15 @@ transform_affine (GeglOperation *operation,
GeglRectangle context_rect = *gegl_sampler_get_context_rect (sampler);
GeglRectangle dest_extent = *roi;
- bounding_box.x >>= level;
- bounding_box.y >>= level;
- bounding_box.width >>= level;
- bounding_box.height >>= level;
+ bounding_box.x += context_rect.x;
+ bounding_box.y += context_rect.y;
+ bounding_box.width += context_rect.width - 1;
+ bounding_box.height += context_rect.height - 1;
- bounding_box.x += context_rect.x;
- bounding_box.y += context_rect.y;
- bounding_box.width += context_rect.width - 1;
- bounding_box.height += context_rect.height - 1;
-
- dest_extent.x >>= level;
- dest_extent.y >>= level;
- dest_extent.width >>= level;
- dest_extent.height >>= level;
+ dest_extent.x >>= level;
+ dest_extent.y >>= level;
+ dest_extent.width >>= level;
+ dest_extent.height >>= level;
/*
* XXX: fast paths as existing in files in the same dir as
@@ -1239,20 +1234,15 @@ transform_generic (GeglOperation *operation,
GeglRectangle context_rect = *gegl_sampler_get_context_rect (sampler);
GeglRectangle dest_extent = *roi;
- bounding_box.x >>= level;
- bounding_box.y >>= level;
- bounding_box.width >>= level;
- bounding_box.height >>= level;
-
- bounding_box.x += context_rect.x;
- bounding_box.y += context_rect.y;
- bounding_box.width += context_rect.width - 1;
- bounding_box.height += context_rect.height - 1;
+ bounding_box.x += context_rect.x;
+ bounding_box.y += context_rect.y;
+ bounding_box.width += context_rect.width - 1;
+ bounding_box.height += context_rect.height - 1;
- dest_extent.x >>= level;
- dest_extent.y >>= level;
- dest_extent.width >>= level;
- dest_extent.height >>= level;
+ dest_extent.x >>= level;
+ dest_extent.y >>= level;
+ dest_extent.width >>= level;
+ dest_extent.height >>= level;
/*
* Construct an output tile iterator.
@@ -1391,15 +1381,10 @@ transform_nearest (GeglOperation *operation,
GeglRectangle bounding_box = *gegl_buffer_get_abyss (src);
GeglRectangle dest_extent = *roi;
- bounding_box.x >>= level;
- bounding_box.y >>= level;
- bounding_box.width >>= level;
- bounding_box.height >>= level;
-
- dest_extent.x >>= level;
- dest_extent.y >>= level;
- dest_extent.width >>= level;
- dest_extent.height >>= level;
+ dest_extent.x >>= level;
+ dest_extent.y >>= level;
+ dest_extent.width >>= level;
+ dest_extent.height >>= level;
/*
* Construct an output tile iterator.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]