[gegl] transform: fix affine mipmapping
- From: Øyvind Kolås <ok src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gegl] transform: fix affine mipmapping
- Date: Thu, 23 Feb 2017 02:27:12 +0000 (UTC)
commit e4232627fadf713b1b4ca3b86029b6876876ab3b
Author: Øyvind Kolås <pippin gimp org>
Date: Wed Feb 22 21:23:39 2017 +0100
transform: fix affine mipmapping
operations/transform/transform-core.c | 19 ++++++++++++-------
1 files changed, 12 insertions(+), 7 deletions(-)
---
diff --git a/operations/transform/transform-core.c b/operations/transform/transform-core.c
index c47c502..002cb01 100644
--- a/operations/transform/transform-core.c
+++ b/operations/transform/transform-core.c
@@ -786,6 +786,13 @@ transform_affine (GeglOperation *operation,
babl_format("RaGaBaA float"),
level?GEGL_SAMPLER_NEAREST:transform->sampler,
level);
+
+ GeglRectangle dest_extent = *roi;
+ dest_extent.x >>= level;
+ dest_extent.y >>= level;
+ dest_extent.width >>= level;
+ dest_extent.height >>= level;
+
GeglSamplerGetFun sampler_get_fun = gegl_sampler_get_fun (sampler);
@@ -804,7 +811,7 @@ transform_affine (GeglOperation *operation,
gegl_matrix3_copy_into (&inverse, matrix);
- if (factor && 0)
+ if (factor)
{
inverse.coeff[0][0] /= factor;
inverse.coeff[0][1] /= factor;
@@ -817,9 +824,8 @@ transform_affine (GeglOperation *operation,
gegl_matrix3_invert (&inverse);
{
- const GeglRectangle *dest_extent = roi;
GeglBufferIterator *i = gegl_buffer_iterator_new (dest,
- dest_extent,
+ &dest_extent,
level,
format,
GEGL_ACCESS_WRITE,
@@ -1002,7 +1008,6 @@ transform_generic (GeglOperation *operation,
const Babl *format = babl_format ("RaGaBaA float");
gint factor = 1 << level;
GeglBufferIterator *i;
- GeglRectangle dest_extent;
GeglMatrix3 inverse;
GeglSampler *sampler = gegl_buffer_sampler_new_at_level (src,
babl_format("RaGaBaA float"),
@@ -1011,7 +1016,7 @@ transform_generic (GeglOperation *operation,
level);
GeglSamplerGetFun sampler_get_fun = gegl_sampler_get_fun (sampler);
- dest_extent = *roi;
+ GeglRectangle dest_extent = *roi;
dest_extent.x >>= level;
dest_extent.y >>= level;
dest_extent.width >>= level;
@@ -1290,8 +1295,8 @@ gegl_transform_process (GeglOperation *operation,
const GeglRectangle *roi,
gint level) = transform_generic;
- //if (gegl_matrix3_is_affine (&matrix))
- // func = transform_affine;
+ if (gegl_matrix3_is_affine (&matrix))
+ func = transform_affine;
/*
* For all other cases, do a proper resampling
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]