[gimp] pdb: apply recent fixes to the deprecated transform procedures
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] pdb: apply recent fixes to the deprecated transform procedures
- Date: Fri, 25 Mar 2011 21:37:30 +0000 (UTC)
commit 9424d42d36ddd467ec43e7efe29370307f569f65
Author: Michael Natterer <mitch gimp org>
Date: Fri Mar 25 22:35:46 2011 +0100
pdb: apply recent fixes to the deprecated transform procedures
Don't transform the tiles of group layers, use the item transform API
instead. Go the same code path if there is no selection.
app/pdb/drawable-transform-cmds.c | 331 +++++++++++++++++++++++--------
app/pdb/transform-tools-cmds.c | 129 +++++++++---
tools/pdbgen/pdb/drawable_transform.pdb | 81 ++++++--
tools/pdbgen/pdb/transform_tools.pdb | 129 +++++++++---
4 files changed, 505 insertions(+), 165 deletions(-)
---
diff --git a/app/pdb/drawable-transform-cmds.c b/app/pdb/drawable-transform-cmds.c
index c7dfa45..ddc34f0 100644
--- a/app/pdb/drawable-transform-cmds.c
+++ b/app/pdb/drawable-transform-cmds.c
@@ -28,6 +28,7 @@
#include "config/gimpcoreconfig.h"
#include "core/gimp-transform-utils.h"
#include "core/gimp.h"
+#include "core/gimpchannel.h"
#include "core/gimpdrawable-transform.h"
#include "core/gimpdrawable.h"
#include "core/gimpimage.h"
@@ -76,12 +77,19 @@ drawable_transform_flip_simple_invoker (GimpProcedure *procedure,
gimp_transform_get_flip_axis (x, y, width, height,
flip_type, auto_center, &axis);
- if (! gimp_drawable_transform_flip (drawable, context,
- flip_type,
- axis,
- clip_result))
+ if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
+ ! gimp_channel_is_empty (gimp_image_get_mask (gimp_item_get_image (GIMP_ITEM (drawable)))))
{
- success = FALSE;
+ if (! gimp_drawable_transform_flip (drawable, context,
+ flip_type, axis, clip_result))
+ {
+ success = FALSE;
+ }
+ }
+ else
+ {
+ gimp_item_flip (GIMP_ITEM (drawable), context,
+ flip_type, axis, clip_result);
}
}
}
@@ -152,12 +160,23 @@ drawable_transform_flip_invoker (GimpProcedure *procedure,
if (progress)
gimp_progress_start (progress, _("Flipping"), FALSE);
- if (! gimp_drawable_transform_affine (drawable, context,
- &matrix, transform_direction,
- interpolation, recursion_level,
- clip_result, progress))
+ if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
+ ! gimp_channel_is_empty (gimp_image_get_mask (gimp_item_get_image (GIMP_ITEM (drawable)))))
+ {
+ if (! gimp_drawable_transform_affine (drawable, context,
+ &matrix, transform_direction,
+ interpolation, recursion_level,
+ clip_result, progress))
+ {
+ success = FALSE;
+ }
+ }
+ else
{
- success = FALSE;
+ gimp_item_transform (GIMP_ITEM (drawable), context, &matrix,
+ transform_direction,
+ interpolation, recursion_level,
+ clip_result, progress);
}
if (progress)
@@ -229,12 +248,23 @@ drawable_transform_flip_default_invoker (GimpProcedure *procedure,
if (progress)
gimp_progress_start (progress, _("Flipping"), FALSE);
- if (! gimp_drawable_transform_affine (drawable, context,
- &matrix, GIMP_TRANSFORM_FORWARD,
- interpolation_type, 3,
- clip_result, progress))
+ if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
+ ! gimp_channel_is_empty (gimp_image_get_mask (gimp_item_get_image (GIMP_ITEM (drawable)))))
{
- success = FALSE;
+ if (! gimp_drawable_transform_affine (drawable, context,
+ &matrix, GIMP_TRANSFORM_FORWARD,
+ interpolation_type, 3,
+ clip_result, progress))
+ {
+ success = FALSE;
+ }
+ }
+ else
+ {
+ gimp_item_transform (GIMP_ITEM (drawable), context, &matrix,
+ GIMP_TRANSFORM_FORWARD,
+ interpolation_type, 3,
+ clip_result, progress);
}
if (progress)
@@ -318,12 +348,23 @@ drawable_transform_perspective_invoker (GimpProcedure *procedure,
if (progress)
gimp_progress_start (progress, _("Perspective"), FALSE);
- if (! gimp_drawable_transform_affine (drawable, context,
- &matrix, transform_direction,
- interpolation, recursion_level,
- clip_result, progress))
+ if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
+ ! gimp_channel_is_empty (gimp_image_get_mask (gimp_item_get_image (GIMP_ITEM (drawable)))))
+ {
+ if (! gimp_drawable_transform_affine (drawable, context,
+ &matrix, transform_direction,
+ interpolation, recursion_level,
+ clip_result, progress))
+ {
+ success = FALSE;
+ }
+ }
+ else
{
- success = FALSE;
+ gimp_item_transform (GIMP_ITEM (drawable), context, &matrix,
+ transform_direction,
+ interpolation, recursion_level,
+ clip_result, progress);
}
if (progress)
@@ -405,12 +446,23 @@ drawable_transform_perspective_default_invoker (GimpProcedure *procedure,
if (progress)
gimp_progress_start (progress, _("Perspective"), FALSE);
- if (! gimp_drawable_transform_affine (drawable, context,
- &matrix, GIMP_TRANSFORM_FORWARD,
- interpolation_type, 3,
- clip_result, progress))
+ if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
+ ! gimp_channel_is_empty (gimp_image_get_mask (gimp_item_get_image (GIMP_ITEM (drawable)))))
{
- success = FALSE;
+ if (! gimp_drawable_transform_affine (drawable, context,
+ &matrix, GIMP_TRANSFORM_FORWARD,
+ interpolation_type, 3,
+ clip_result, progress))
+ {
+ success = FALSE;
+ }
+ }
+ else
+ {
+ gimp_item_transform (GIMP_ITEM (drawable), context, &matrix,
+ GIMP_TRANSFORM_FORWARD,
+ interpolation_type, 3,
+ clip_result, progress);
}
if (progress)
@@ -466,12 +518,21 @@ drawable_transform_rotate_simple_invoker (GimpProcedure *procedure,
gimp_transform_get_rotate_center (x, y, width, height,
auto_center, &cx, &cy);
- if (! gimp_drawable_transform_rotate (drawable, context,
- rotate_type,
- cx, cy,
- clip_result))
+ if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
+ ! gimp_channel_is_empty (gimp_image_get_mask (gimp_item_get_image (GIMP_ITEM (drawable)))))
+ {
+ if (! gimp_drawable_transform_rotate (drawable, context,
+ rotate_type, cx, cy,
+ clip_result))
+ {
+ success = FALSE;
+ }
+ }
+ else
{
- success = FALSE;
+ gimp_item_rotate (GIMP_ITEM (drawable), context,
+ rotate_type, cx, cy,
+ clip_result);
}
}
}
@@ -546,12 +607,23 @@ drawable_transform_rotate_invoker (GimpProcedure *procedure,
if (progress)
gimp_progress_start (progress, _("Rotating"), FALSE);
- if (! gimp_drawable_transform_affine (drawable, context,
- &matrix, transform_direction,
- interpolation, recursion_level,
- clip_result, progress))
+ if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
+ ! gimp_channel_is_empty (gimp_image_get_mask (gimp_item_get_image (GIMP_ITEM (drawable)))))
{
- success = FALSE;
+ if (! gimp_drawable_transform_affine (drawable, context,
+ &matrix, transform_direction,
+ interpolation, recursion_level,
+ clip_result, progress))
+ {
+ success = FALSE;
+ }
+ }
+ else
+ {
+ gimp_item_transform (GIMP_ITEM (drawable), context, &matrix,
+ transform_direction,
+ interpolation, recursion_level,
+ clip_result, progress);
}
if (progress)
@@ -627,12 +699,23 @@ drawable_transform_rotate_default_invoker (GimpProcedure *procedure,
if (progress)
gimp_progress_start (progress, _("Rotating"), FALSE);
- if (! gimp_drawable_transform_affine (drawable, context,
- &matrix, GIMP_TRANSFORM_FORWARD,
- interpolation_type, 3,
- clip_result, progress))
+ if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
+ ! gimp_channel_is_empty (gimp_image_get_mask (gimp_item_get_image (GIMP_ITEM (drawable)))))
+ {
+ if (! gimp_drawable_transform_affine (drawable, context,
+ &matrix, GIMP_TRANSFORM_FORWARD,
+ interpolation_type, 3,
+ clip_result, progress))
+ {
+ success = FALSE;
+ }
+ }
+ else
{
- success = FALSE;
+ gimp_item_transform (GIMP_ITEM (drawable), context, &matrix,
+ GIMP_TRANSFORM_FORWARD,
+ interpolation_type, 3,
+ clip_result, progress);
}
if (progress)
@@ -707,12 +790,23 @@ drawable_transform_scale_invoker (GimpProcedure *procedure,
if (progress)
gimp_progress_start (progress, _("Scaling"), FALSE);
- if (! gimp_drawable_transform_affine (drawable, context,
- &matrix, transform_direction,
- interpolation, recursion_level,
- clip_result, progress))
+ if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
+ ! gimp_channel_is_empty (gimp_image_get_mask (gimp_item_get_image (GIMP_ITEM (drawable)))))
{
- success = FALSE;
+ if (! gimp_drawable_transform_affine (drawable, context,
+ &matrix, transform_direction,
+ interpolation, recursion_level,
+ clip_result, progress))
+ {
+ success = FALSE;
+ }
+ }
+ else
+ {
+ gimp_item_transform (GIMP_ITEM (drawable), context, &matrix,
+ transform_direction,
+ interpolation, recursion_level,
+ clip_result, progress);
}
if (progress)
@@ -785,12 +879,23 @@ drawable_transform_scale_default_invoker (GimpProcedure *procedure,
if (progress)
gimp_progress_start (progress, _("Scaling"), FALSE);
- if (! gimp_drawable_transform_affine (drawable, context,
- &matrix, GIMP_TRANSFORM_FORWARD,
- interpolation_type, 3,
- clip_result, progress))
+ if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
+ ! gimp_channel_is_empty (gimp_image_get_mask (gimp_item_get_image (GIMP_ITEM (drawable)))))
+ {
+ if (! gimp_drawable_transform_affine (drawable, context,
+ &matrix, GIMP_TRANSFORM_FORWARD,
+ interpolation_type, 3,
+ clip_result, progress))
+ {
+ success = FALSE;
+ }
+ }
+ else
{
- success = FALSE;
+ gimp_item_transform (GIMP_ITEM (drawable), context, &matrix,
+ GIMP_TRANSFORM_FORWARD,
+ interpolation_type, 3,
+ clip_result, progress);
}
if (progress)
@@ -861,12 +966,23 @@ drawable_transform_shear_invoker (GimpProcedure *procedure,
if (progress)
gimp_progress_start (progress, _("Shearing"), FALSE);
- if (! gimp_drawable_transform_affine (drawable, context,
- &matrix, transform_direction,
- interpolation, recursion_level,
- clip_result, progress))
+ if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
+ ! gimp_channel_is_empty (gimp_image_get_mask (gimp_item_get_image (GIMP_ITEM (drawable)))))
{
- success = FALSE;
+ if (! gimp_drawable_transform_affine (drawable, context,
+ &matrix, transform_direction,
+ interpolation, recursion_level,
+ clip_result, progress))
+ {
+ success = FALSE;
+ }
+ }
+ else
+ {
+ gimp_item_transform (GIMP_ITEM (drawable), context, &matrix,
+ transform_direction,
+ interpolation, recursion_level,
+ clip_result, progress);
}
if (progress)
@@ -935,12 +1051,23 @@ drawable_transform_shear_default_invoker (GimpProcedure *procedure,
if (progress)
gimp_progress_start (progress, _("Shearing"), FALSE);
- if (! gimp_drawable_transform_affine (drawable, context,
- &matrix, GIMP_TRANSFORM_FORWARD,
- interpolation_type, 3,
- clip_result, progress))
+ if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
+ ! gimp_channel_is_empty (gimp_image_get_mask (gimp_item_get_image (GIMP_ITEM (drawable)))))
+ {
+ if (! gimp_drawable_transform_affine (drawable, context,
+ &matrix, GIMP_TRANSFORM_FORWARD,
+ interpolation_type, 3,
+ clip_result, progress))
+ {
+ success = FALSE;
+ }
+ }
+ else
{
- success = FALSE;
+ gimp_item_transform (GIMP_ITEM (drawable), context, &matrix,
+ GIMP_TRANSFORM_FORWARD,
+ interpolation_type, 3,
+ clip_result, progress);
}
if (progress)
@@ -1022,12 +1149,23 @@ drawable_transform_2d_invoker (GimpProcedure *procedure,
if (progress)
gimp_progress_start (progress, _("2D Transform"), FALSE);
- if (! gimp_drawable_transform_affine (drawable, context,
- &matrix, transform_direction,
- interpolation, recursion_level,
- clip_result, progress))
+ if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
+ ! gimp_channel_is_empty (gimp_image_get_mask (gimp_item_get_image (GIMP_ITEM (drawable)))))
{
- success = FALSE;
+ if (! gimp_drawable_transform_affine (drawable, context,
+ &matrix, transform_direction,
+ interpolation, recursion_level,
+ clip_result, progress))
+ {
+ success = FALSE;
+ }
+ }
+ else
+ {
+ gimp_item_transform (GIMP_ITEM (drawable), context, &matrix,
+ transform_direction,
+ interpolation, recursion_level,
+ clip_result, progress);
}
if (progress)
@@ -1107,12 +1245,23 @@ drawable_transform_2d_default_invoker (GimpProcedure *procedure,
if (progress)
gimp_progress_start (progress, _("2D Transforming"), FALSE);
- if (! gimp_drawable_transform_affine (drawable, context,
- &matrix, GIMP_TRANSFORM_FORWARD,
- interpolation_type, 3,
- clip_result, progress))
+ if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
+ ! gimp_channel_is_empty (gimp_image_get_mask (gimp_item_get_image (GIMP_ITEM (drawable)))))
+ {
+ if (! gimp_drawable_transform_affine (drawable, context,
+ &matrix, GIMP_TRANSFORM_FORWARD,
+ interpolation_type, 3,
+ clip_result, progress))
+ {
+ success = FALSE;
+ }
+ }
+ else
{
- success = FALSE;
+ gimp_item_transform (GIMP_ITEM (drawable), context, &matrix,
+ GIMP_TRANSFORM_FORWARD,
+ interpolation_type, 3,
+ clip_result, progress);
}
if (progress)
@@ -1202,12 +1351,23 @@ drawable_transform_matrix_invoker (GimpProcedure *procedure,
if (progress)
gimp_progress_start (progress, _("2D Transforming"), FALSE);
- if (! gimp_drawable_transform_affine (drawable, context,
- &matrix, transform_direction,
- interpolation, recursion_level,
- clip_result, progress))
+ if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
+ ! gimp_channel_is_empty (gimp_image_get_mask (gimp_item_get_image (GIMP_ITEM (drawable)))))
{
- success = FALSE;
+ if (! gimp_drawable_transform_affine (drawable, context,
+ &matrix, transform_direction,
+ interpolation, recursion_level,
+ clip_result, progress))
+ {
+ success = FALSE;
+ }
+ }
+ else
+ {
+ gimp_item_transform (GIMP_ITEM (drawable), context, &matrix,
+ transform_direction,
+ interpolation, recursion_level,
+ clip_result, progress);
}
if (progress)
@@ -1295,12 +1455,23 @@ drawable_transform_matrix_default_invoker (GimpProcedure *procedure,
if (progress)
gimp_progress_start (progress, _("2D Transforming"), FALSE);
- if (! gimp_drawable_transform_affine (drawable, context,
- &matrix, GIMP_TRANSFORM_FORWARD,
- interpolation_type, 3,
- clip_result, progress))
+ if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
+ ! gimp_channel_is_empty (gimp_image_get_mask (gimp_item_get_image (GIMP_ITEM (drawable)))))
+ {
+ if (! gimp_drawable_transform_affine (drawable, context,
+ &matrix, GIMP_TRANSFORM_FORWARD,
+ interpolation_type, 3,
+ clip_result, progress))
+ {
+ success = FALSE;
+ }
+ }
+ else
{
- success = FALSE;
+ gimp_item_transform (GIMP_ITEM (drawable), context, &matrix,
+ GIMP_TRANSFORM_FORWARD,
+ interpolation_type, 3,
+ clip_result, progress);
}
if (progress)
diff --git a/app/pdb/transform-tools-cmds.c b/app/pdb/transform-tools-cmds.c
index f9b60eb..a2c519f 100644
--- a/app/pdb/transform-tools-cmds.c
+++ b/app/pdb/transform-tools-cmds.c
@@ -28,6 +28,7 @@
#include "config/gimpcoreconfig.h"
#include "core/gimp-transform-utils.h"
#include "core/gimp.h"
+#include "core/gimpchannel.h"
#include "core/gimpdrawable-transform.h"
#include "core/gimpdrawable.h"
#include "core/gimpimage.h"
@@ -72,10 +73,19 @@ flip_invoker (GimpProcedure *procedure,
gimp_transform_get_flip_axis (x, y, width, height,
flip_type, TRUE, &axis);
- if (! gimp_drawable_transform_flip (drawable, context,
- flip_type, axis, FALSE))
+ if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
+ ! gimp_channel_is_empty (gimp_image_get_mask (gimp_item_get_image (GIMP_ITEM (drawable)))))
{
- success = FALSE;
+ if (! gimp_drawable_transform_flip (drawable, context,
+ flip_type, axis, FALSE))
+ {
+ success = FALSE;
+ }
+ }
+ else
+ {
+ gimp_item_flip (GIMP_ITEM (drawable), context,
+ flip_type, axis, FALSE);
}
}
}
@@ -152,13 +162,24 @@ perspective_invoker (GimpProcedure *procedure,
if (progress)
gimp_progress_start (progress, _("Perspective"), FALSE);
- if (! gimp_drawable_transform_affine (drawable, context,
- &matrix,
- GIMP_TRANSFORM_FORWARD,
- interpolation_type, 3,
- FALSE, progress))
+ if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
+ ! gimp_channel_is_empty (gimp_image_get_mask (gimp_item_get_image (GIMP_ITEM (drawable)))))
+ {
+ if (! gimp_drawable_transform_affine (drawable, context,
+ &matrix,
+ GIMP_TRANSFORM_FORWARD,
+ interpolation_type, 3,
+ FALSE, progress))
+ {
+ success = FALSE;
+ }
+ }
+ else
{
- success = FALSE;
+ gimp_item_transform (GIMP_ITEM (drawable), context, &matrix,
+ GIMP_TRANSFORM_FORWARD,
+ interpolation, 3,
+ FALSE, progress);
}
if (progress)
@@ -223,13 +244,24 @@ rotate_invoker (GimpProcedure *procedure,
if (progress)
gimp_progress_start (progress, _("Rotating"), FALSE);
- if (! gimp_drawable_transform_affine (drawable, context,
- &matrix,
- GIMP_TRANSFORM_FORWARD,
- interpolation_type, 3,
- FALSE, progress))
+ if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
+ ! gimp_channel_is_empty (gimp_image_get_mask (gimp_item_get_image (GIMP_ITEM (drawable)))))
+ {
+ if (! gimp_drawable_transform_affine (drawable, context,
+ &matrix,
+ GIMP_TRANSFORM_FORWARD,
+ interpolation_type, 3,
+ FALSE, progress))
+ {
+ success = FALSE;
+ }
+ }
+ else
{
- success = FALSE;
+ gimp_item_transform (GIMP_ITEM (drawable), context, &matrix,
+ GIMP_TRANSFORM_FORWARD,
+ interpolation, 3,
+ FALSE, progress);
}
if (progress)
@@ -301,13 +333,24 @@ scale_invoker (GimpProcedure *procedure,
if (progress)
gimp_progress_start (progress, _("Scaling"), FALSE);
- if (! gimp_drawable_transform_affine (drawable, context,
- &matrix,
- GIMP_TRANSFORM_FORWARD,
- interpolation_type, 3,
- FALSE, progress))
+ if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
+ ! gimp_channel_is_empty (gimp_image_get_mask (gimp_item_get_image (GIMP_ITEM (drawable)))))
{
- success = FALSE;
+ if (! gimp_drawable_transform_affine (drawable, context,
+ &matrix,
+ GIMP_TRANSFORM_FORWARD,
+ interpolation_type, 3,
+ FALSE, progress))
+ {
+ success = FALSE;
+ }
+ }
+ else
+ {
+ gimp_item_transform (GIMP_ITEM (drawable), context, &matrix,
+ GIMP_TRANSFORM_FORWARD,
+ interpolation, 3,
+ FALSE, progress);
}
if (progress)
@@ -374,13 +417,24 @@ shear_invoker (GimpProcedure *procedure,
if (progress)
gimp_progress_start (progress, _("Shearing"), FALSE);
- if (! gimp_drawable_transform_affine (drawable, context,
- &matrix,
- GIMP_TRANSFORM_FORWARD,
- interpolation_type, 3,
- FALSE, progress))
+ if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
+ ! gimp_channel_is_empty (gimp_image_get_mask (gimp_item_get_image (GIMP_ITEM (drawable)))))
+ {
+ if (! gimp_drawable_transform_affine (drawable, context,
+ &matrix,
+ GIMP_TRANSFORM_FORWARD,
+ interpolation_type, 3,
+ FALSE, progress))
+ {
+ success = FALSE;
+ }
+ }
+ else
{
- success = FALSE;
+ gimp_item_transform (GIMP_ITEM (drawable), context, &matrix,
+ GIMP_TRANSFORM_FORWARD,
+ interpolation, 3,
+ FALSE, progress);
}
if (progress)
@@ -452,12 +506,23 @@ transform_2d_invoker (GimpProcedure *procedure,
if (progress)
gimp_progress_start (progress, _("2D Transform"), FALSE);
- if (! gimp_drawable_transform_affine (drawable, context,
- &matrix, GIMP_TRANSFORM_FORWARD,
- interpolation_type, 3,
- FALSE, progress))
+ if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
+ ! gimp_channel_is_empty (gimp_image_get_mask (gimp_item_get_image (GIMP_ITEM (drawable)))))
+ {
+ if (! gimp_drawable_transform_affine (drawable, context,
+ &matrix, GIMP_TRANSFORM_FORWARD,
+ interpolation_type, 3,
+ FALSE, progress))
+ {
+ success = FALSE;
+ }
+ }
+ else
{
- success = FALSE;
+ gimp_item_transform (GIMP_ITEM (drawable), context, &matrix,
+ GIMP_TRANSFORM_FORWARD,
+ interpolation, 3,
+ FALSE, progress);
}
if (progress)
diff --git a/tools/pdbgen/pdb/drawable_transform.pdb b/tools/pdbgen/pdb/drawable_transform.pdb
index addd6ff..c2879c8 100644
--- a/tools/pdbgen/pdb/drawable_transform.pdb
+++ b/tools/pdbgen/pdb/drawable_transform.pdb
@@ -54,12 +54,23 @@ $assemble_matrix
if (progress)
gimp_progress_start (progress, _(\"$progress_text\"), FALSE);
- if (! gimp_drawable_transform_affine (drawable, context,
- &matrix, transform_direction,
- interpolation, recursion_level,
- clip_result, progress))
+ if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
+ ! gimp_channel_is_empty (gimp_image_get_mask (gimp_item_get_image (GIMP_ITEM (drawable)))))
{
- success = FALSE;
+ if (! gimp_drawable_transform_affine (drawable, context,
+ &matrix, transform_direction,
+ interpolation, recursion_level,
+ clip_result, progress))
+ {
+ success = FALSE;
+ }
+ }
+ else
+ {
+ gimp_item_transform (GIMP_ITEM (drawable), context, &matrix,
+ transform_direction,
+ interpolation, recursion_level,
+ clip_result, progress);
}
if (progress)
@@ -106,14 +117,25 @@ $assemble_matrix
if (progress)
gimp_progress_start (progress, _(\"$progress_text\"), FALSE);
- if (! gimp_drawable_transform_affine (drawable, context,
- &matrix, GIMP_TRANSFORM_FORWARD,
- interpolation_type, 3,
- clip_result, progress))
+ if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
+ ! gimp_channel_is_empty (gimp_image_get_mask (gimp_item_get_image (GIMP_ITEM (drawable)))))
{
- success = FALSE;
+ if (! gimp_drawable_transform_affine (drawable, context,
+ &matrix, GIMP_TRANSFORM_FORWARD,
+ interpolation_type, 3,
+ clip_result, progress))
+ {
+ success = FALSE;
+ }
}
-
+ else
+ {
+ gimp_item_transform (GIMP_ITEM (drawable), context, &matrix,
+ GIMP_TRANSFORM_FORWARD,
+ interpolation_type, 3,
+ clip_result, progress);
+ }
+
if (progress)
gimp_progress_end (progress);
}
@@ -161,12 +183,19 @@ sub drawable_transform_flip_simple {
gimp_transform_get_flip_axis (x, y, width, height,
flip_type, auto_center, &axis);
- if (! gimp_drawable_transform_flip (drawable, context,
- flip_type,
- axis,
- clip_result))
+ if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
+ ! gimp_channel_is_empty (gimp_image_get_mask (gimp_item_get_image (GIMP_ITEM (drawable)))))
{
- success = FALSE;
+ if (! gimp_drawable_transform_flip (drawable, context,
+ flip_type, axis, clip_result))
+ {
+ success = FALSE;
+ }
+ }
+ else
+ {
+ gimp_item_flip (GIMP_ITEM (drawable), context,
+ flip_type, axis, clip_result);
}
}
}
@@ -399,12 +428,21 @@ sub drawable_transform_rotate_simple {
gimp_transform_get_rotate_center (x, y, width, height,
auto_center, &cx, &cy);
- if (! gimp_drawable_transform_rotate (drawable, context,
- rotate_type,
- cx, cy,
- clip_result))
+ if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
+ ! gimp_channel_is_empty (gimp_image_get_mask (gimp_item_get_image (GIMP_ITEM (drawable)))))
+ {
+ if (! gimp_drawable_transform_rotate (drawable, context,
+ rotate_type, cx, cy,
+ clip_result))
+ {
+ success = FALSE;
+ }
+ }
+ else
{
- success = FALSE;
+ gimp_item_rotate (GIMP_ITEM (drawable), context,
+ rotate_type, cx, cy,
+ clip_result);
}
}
}
@@ -848,6 +886,7 @@ CODE
"config/gimpcoreconfig.h"
"core/gimp.h"
"core/gimp-transform-utils.h"
+ "core/gimpchannel.h"
"core/gimpimage.h"
"core/gimpdrawable.h"
"core/gimpdrawable-transform.h"
diff --git a/tools/pdbgen/pdb/transform_tools.pdb b/tools/pdbgen/pdb/transform_tools.pdb
index a20ce73..6a48e3d 100644
--- a/tools/pdbgen/pdb/transform_tools.pdb
+++ b/tools/pdbgen/pdb/transform_tools.pdb
@@ -47,10 +47,19 @@ sub flip {
gimp_transform_get_flip_axis (x, y, width, height,
flip_type, TRUE, &axis);
- if (! gimp_drawable_transform_flip (drawable, context,
- flip_type, axis, FALSE))
+ if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
+ ! gimp_channel_is_empty (gimp_image_get_mask (gimp_item_get_image (GIMP_ITEM (drawable)))))
{
- success = FALSE;
+ if (! gimp_drawable_transform_flip (drawable, context,
+ flip_type, axis, FALSE))
+ {
+ success = FALSE;
+ }
+ }
+ else
+ {
+ gimp_item_flip (GIMP_ITEM (drawable), context,
+ flip_type, axis, FALSE);
}
}
}
@@ -129,13 +138,24 @@ sub perspective {
if (progress)
gimp_progress_start (progress, _("Perspective"), FALSE);
- if (! gimp_drawable_transform_affine (drawable, context,
- &matrix,
- GIMP_TRANSFORM_FORWARD,
- interpolation_type, 3,
- FALSE, progress))
+ if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
+ ! gimp_channel_is_empty (gimp_image_get_mask (gimp_item_get_image (GIMP_ITEM (drawable)))))
+ {
+ if (! gimp_drawable_transform_affine (drawable, context,
+ &matrix,
+ GIMP_TRANSFORM_FORWARD,
+ interpolation_type, 3,
+ FALSE, progress))
+ {
+ success = FALSE;
+ }
+ }
+ else
{
- success = FALSE;
+ gimp_item_transform (GIMP_ITEM (drawable), context, &matrix,
+ GIMP_TRANSFORM_FORWARD,
+ interpolation, 3,
+ FALSE, progress);
}
if (progress)
@@ -194,13 +214,24 @@ sub rotate {
if (progress)
gimp_progress_start (progress, _("Rotating"), FALSE);
- if (! gimp_drawable_transform_affine (drawable, context,
- &matrix,
- GIMP_TRANSFORM_FORWARD,
- interpolation_type, 3,
- FALSE, progress))
+ if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
+ ! gimp_channel_is_empty (gimp_image_get_mask (gimp_item_get_image (GIMP_ITEM (drawable)))))
+ {
+ if (! gimp_drawable_transform_affine (drawable, context,
+ &matrix,
+ GIMP_TRANSFORM_FORWARD,
+ interpolation_type, 3,
+ FALSE, progress))
+ {
+ success = FALSE;
+ }
+ }
+ else
{
- success = FALSE;
+ gimp_item_transform (GIMP_ITEM (drawable), context, &matrix,
+ GIMP_TRANSFORM_FORWARD,
+ interpolation, 3,
+ FALSE, progress);
}
if (progress)
@@ -270,13 +301,24 @@ sub scale {
if (progress)
gimp_progress_start (progress, _("Scaling"), FALSE);
- if (! gimp_drawable_transform_affine (drawable, context,
- &matrix,
- GIMP_TRANSFORM_FORWARD,
- interpolation_type, 3,
- FALSE, progress))
+ if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
+ ! gimp_channel_is_empty (gimp_image_get_mask (gimp_item_get_image (GIMP_ITEM (drawable)))))
{
- success = FALSE;
+ if (! gimp_drawable_transform_affine (drawable, context,
+ &matrix,
+ GIMP_TRANSFORM_FORWARD,
+ interpolation_type, 3,
+ FALSE, progress))
+ {
+ success = FALSE;
+ }
+ }
+ else
+ {
+ gimp_item_transform (GIMP_ITEM (drawable), context, &matrix,
+ GIMP_TRANSFORM_FORWARD,
+ interpolation, 3,
+ FALSE, progress);
}
if (progress)
@@ -338,13 +380,24 @@ sub shear {
if (progress)
gimp_progress_start (progress, _("Shearing"), FALSE);
- if (! gimp_drawable_transform_affine (drawable, context,
- &matrix,
- GIMP_TRANSFORM_FORWARD,
- interpolation_type, 3,
- FALSE, progress))
+ if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
+ ! gimp_channel_is_empty (gimp_image_get_mask (gimp_item_get_image (GIMP_ITEM (drawable)))))
+ {
+ if (! gimp_drawable_transform_affine (drawable, context,
+ &matrix,
+ GIMP_TRANSFORM_FORWARD,
+ interpolation_type, 3,
+ FALSE, progress))
+ {
+ success = FALSE;
+ }
+ }
+ else
{
- success = FALSE;
+ gimp_item_transform (GIMP_ITEM (drawable), context, &matrix,
+ GIMP_TRANSFORM_FORWARD,
+ interpolation, 3,
+ FALSE, progress);
}
if (progress)
@@ -410,12 +463,23 @@ sub transform_2d {
if (progress)
gimp_progress_start (progress, _("2D Transform"), FALSE);
- if (! gimp_drawable_transform_affine (drawable, context,
- &matrix, GIMP_TRANSFORM_FORWARD,
- interpolation_type, 3,
- FALSE, progress))
+ if (! gimp_viewable_get_children (GIMP_VIEWABLE (drawable)) &&
+ ! gimp_channel_is_empty (gimp_image_get_mask (gimp_item_get_image (GIMP_ITEM (drawable)))))
+ {
+ if (! gimp_drawable_transform_affine (drawable, context,
+ &matrix, GIMP_TRANSFORM_FORWARD,
+ interpolation_type, 3,
+ FALSE, progress))
+ {
+ success = FALSE;
+ }
+ }
+ else
{
- success = FALSE;
+ gimp_item_transform (GIMP_ITEM (drawable), context, &matrix,
+ GIMP_TRANSFORM_FORWARD,
+ interpolation, 3,
+ FALSE, progress);
}
if (progress)
@@ -430,6 +494,7 @@ CODE
@headers = qw("libgimpmath/gimpmath.h"
"config/gimpcoreconfig.h"
"core/gimp.h"
+ "core/gimpchannel.h"
"core/gimp-transform-utils.h"
"core/gimpimage.h"
"core/gimpdrawable.h"
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]