The crop-to-result and crop-with-aspect transform-boundary
algorithms seem to consistently fail in some cases, and spit out a
warning, which can be too verbose if it triggers the debug dialog.
Demote the warning to a g_printerr(), with an eye to just dropping
these algorithms altogether.
Add a "clip" property to GimpCanvasTransformPreview, specifying the
transform's clipping mode, and clip the preview accordingly.
In GimpTransformGridTool, sync the tool's clipping mode with the
preview's clipping mode.
... the second time you do a 180 degrees rotation
In gimp_transform_resize_adjust(), nudge the transformed layer
boundary by EPSILON toward the center, to avoid enlarging the layer
unnecessarily, as a result of numeric error amplified by rounding,
when the tranformed boundary should land on integer coordinates.
In particular, this avoids enlarging the layer when rotating by 180
degrees.
... so that the transformed boundary is properly clipped.
Adjust the boundary-size algorithms to operate on arbitrary
polygons.
Avoid using gimp_matrix3_will_explode() in
gimp_drawable_transform_buffer_affine() and falling back to
cropping the result, and avoid setting the "clip-to-input" property
of gegl:transform. Neither of those in needed anymore.
This effectively reverts the app/ part of commit
768d06614f. The next commit revets
the libgimpmath/ part.
The output of transforms can result in the transformed points being
passed out of order to gimp_transform_resize_crop(). The Jarvis march
method is used to find the convex hull of the points to get them in a
known order, before performing the crop operation.
Static analysis found a bug in the Jarvis march algorithm, but when we
looked at the code, we could no longer follow it. So a slightly
rewritten version is committed here without the static analysis bug.
2009-02-14 Sven Neumann <sven@gimp.org>
Bug 472644 – Rotate with clipping crops the whole layer
* app/core/gimp-transform-resize.c: applied patch as attached to
bug #472644. Supposedly fixes the problem of the disappearing
image.
svn path=/trunk/; revision=28029
2009-01-17 Michael Natterer <mitch@gimp.org>
* all files with a GPL header and all COPYING files:
Change licence to GPLv3 (and to LGPLv3 for libgimp).
Cleaned up some copyright headers and regenerated the parsers in
the ImageMap plugin.
svn path=/trunk/; revision=27913
2007-06-25 Sven Neumann <sven@gimp.org>
* app/core/gimp-transform-resize.c: applied patch from Geert
Jordaens that reimplements the algorithm to determine the largest
rectangle. Fixes bug #412473.
svn path=/trunk/; revision=22834
2006-12-16 Mukund Sivaraman <muks@mukund.org>
* app/core/gimp-transform-resize.c: Fixed code in
gimp_transform_resize_crop() to calculate the maximum rectangle in
the quadrilateral which results after a transform; added a function
parameter for aspect ratio too.