Issue #2405 - Rotation center shifts by half a pixel ...
... 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.
This commit is contained in:
@ -233,11 +233,11 @@ gimp_transform_resize_adjust (const GimpVector2 *points,
|
||||
bottom_right.y = MAX (bottom_right.y, points[i].y);
|
||||
}
|
||||
|
||||
*x1 = (gint) floor (top_left.x);
|
||||
*y1 = (gint) floor (top_left.y);
|
||||
*x1 = (gint) floor (top_left.x + EPSILON);
|
||||
*y1 = (gint) floor (top_left.y + EPSILON);
|
||||
|
||||
*x2 = (gint) ceil (bottom_right.x);
|
||||
*y2 = (gint) ceil (bottom_right.y);
|
||||
*x2 = (gint) ceil (bottom_right.x - EPSILON);
|
||||
*y2 = (gint) ceil (bottom_right.y - EPSILON);
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
Reference in New Issue
Block a user