Fixed #10466 (disappearing pixels when rotating by 90 deg):

2002-02-19  Michael Natterer  <mitch@gimp.org>

	Fixed #10466 (disappearing pixels when rotating by 90 deg):

	* app/core/gimpdrawable-transform.c: when transforming backwards
	to find the destination line's sub-pixel source coordinates, we
	need to transform the pixels _center_, not it's upper left corner.

	* app/core/gimpdrawable-transform-utils.[ch]: added
	gimp_drawable_transform_matrix_rotate_center() which takes double
	center coordinates instead of an integer pixel bounding box.

	* app/tools/gimptransformtool.[ch]: use double instead of int for
	all coordinates except the original bounding box.

	* app/tools/gimprotatetool.c: use double whenever touching the
	"center" value, so it can be sub-pixel positioned.
This commit is contained in:
Michael Natterer
2002-02-19 16:35:13 +00:00
committed by Michael Natterer
parent f17c891b3b
commit 8d0af04c3a
10 changed files with 184 additions and 136 deletions

View File

@ -20,41 +20,45 @@
#define __GIMP_DRAWABLE_TRANSFORM_UTILS_H__
void gimp_drawable_transform_matrix_rotate (gint x1,
gint y1,
gint x2,
gint y2,
gdouble angle,
GimpMatrix3 result);
void gimp_drawable_transform_matrix_scale (gint x1,
gint y1,
gint x2,
gint y2,
gdouble tx1,
gdouble ty1,
gdouble tx2,
gdouble ty2,
GimpMatrix3 result);
void gimp_drawable_transform_matrix_shear (gint x1,
gint y1,
gint x2,
gint y2,
InternalOrientationType orientation,
gdouble amount,
GimpMatrix3 result);
void gimp_drawable_transform_matrix_perspective (gint x1,
gint y1,
gint x2,
gint y2,
gdouble tx1,
gdouble ty1,
gdouble tx2,
gdouble ty2,
gdouble tx3,
gdouble ty3,
gdouble tx4,
gdouble ty5,
GimpMatrix3 result);
void gimp_drawable_transform_matrix_rotate (gint x1,
gint y1,
gint x2,
gint y2,
gdouble angle,
GimpMatrix3 result);
void gimp_drawable_transform_matrix_rotate_center (gdouble cx,
gdouble cy,
gdouble angle,
GimpMatrix3 result);
void gimp_drawable_transform_matrix_scale (gint x1,
gint y1,
gint x2,
gint y2,
gdouble tx1,
gdouble ty1,
gdouble tx2,
gdouble ty2,
GimpMatrix3 result);
void gimp_drawable_transform_matrix_shear (gint x1,
gint y1,
gint x2,
gint y2,
InternalOrientationType orientation,
gdouble amount,
GimpMatrix3 result);
void gimp_drawable_transform_matrix_perspective (gint x1,
gint y1,
gint x2,
gint y2,
gdouble tx1,
gdouble ty1,
gdouble tx2,
gdouble ty2,
gdouble tx3,
gdouble ty3,
gdouble tx4,
gdouble ty5,
GimpMatrix3 result);
#endif /* __GIMP_DRAWABLE_TRANSFORM_SHEAR_H__ */