[gimp] app: remove a lot of cruft from GimpTransformTool
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: remove a lot of cruft from GimpTransformTool
- Date: Sun, 18 Jun 2017 23:55:04 +0000 (UTC)
commit e13d3f17544821ed8cfeec7bf571fd90239b9941
Author: Michael Natterer <mitch gimp org>
Date: Mon Jun 19 01:53:01 2017 +0200
app: remove a lot of cruft from GimpTransformTool
All tools have a widget now so none of this stuff is needed any longer.
app/tools/gimphandletransformtool.c | 1 -
app/tools/gimpperspectiveclonetool.h | 28 ++
app/tools/gimpperspectivetool.c | 1 -
app/tools/gimprotatetool.c | 1 -
app/tools/gimpscaletool.c | 1 -
app/tools/gimpsheartool.c | 1 -
app/tools/gimptransformtool.c | 515 +++++++++++-----------------------
app/tools/gimptransformtool.h | 56 ----
app/tools/gimpunifiedtransformtool.c | 1 -
9 files changed, 194 insertions(+), 411 deletions(-)
---
diff --git a/app/tools/gimphandletransformtool.c b/app/tools/gimphandletransformtool.c
index 5432ac6..ce77054 100644
--- a/app/tools/gimphandletransformtool.c
+++ b/app/tools/gimphandletransformtool.c
@@ -155,7 +155,6 @@ gimp_handle_transform_tool_init (GimpHandleTransformTool *ht_tool)
GimpTransformTool *tr_tool = GIMP_TRANSFORM_TOOL (ht_tool);
tr_tool->progress_text = _("Handle transformation");
- tr_tool->use_grid = TRUE;
tr_tool->does_perspective = TRUE;
ht_tool->saved_handle_mode = GIMP_HANDLE_MODE_ADD_TRANSFORM;
diff --git a/app/tools/gimpperspectiveclonetool.h b/app/tools/gimpperspectiveclonetool.h
index 8ac7bc1..fc8721a 100644
--- a/app/tools/gimpperspectiveclonetool.h
+++ b/app/tools/gimpperspectiveclonetool.h
@@ -23,6 +23,34 @@
#include "gimptransformtool.h" /* for TransInfo */
+typedef enum
+{
+ TRANSFORM_CREATING,
+ TRANSFORM_HANDLE_NONE,
+ TRANSFORM_HANDLE_NW_P, /* perspective handles */
+ TRANSFORM_HANDLE_NE_P,
+ TRANSFORM_HANDLE_SW_P,
+ TRANSFORM_HANDLE_SE_P,
+ TRANSFORM_HANDLE_NW, /* north west */
+ TRANSFORM_HANDLE_NE, /* north east */
+ TRANSFORM_HANDLE_SW, /* south west */
+ TRANSFORM_HANDLE_SE, /* south east */
+ TRANSFORM_HANDLE_N, /* north */
+ TRANSFORM_HANDLE_S, /* south */
+ TRANSFORM_HANDLE_E, /* east */
+ TRANSFORM_HANDLE_W, /* west */
+ TRANSFORM_HANDLE_CENTER, /* for moving */
+ TRANSFORM_HANDLE_PIVOT, /* pivot for rotation and scaling */
+ TRANSFORM_HANDLE_N_S, /* shearing handles */
+ TRANSFORM_HANDLE_S_S,
+ TRANSFORM_HANDLE_E_S,
+ TRANSFORM_HANDLE_W_S,
+ TRANSFORM_HANDLE_ROTATION, /* rotation handle */
+
+ TRANSFORM_HANDLE_NUM /* keep this last so *handles[] is the right size */
+} TransformAction;
+
+
#define GIMP_TYPE_PERSPECTIVE_CLONE_TOOL (gimp_perspective_clone_tool_get_type ())
#define GIMP_PERSPECTIVE_CLONE_TOOL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj),
GIMP_TYPE_PERSPECTIVE_CLONE_TOOL, GimpPerspectiveCloneTool))
#define GIMP_PERSPECTIVE_CLONE_TOOL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),
GIMP_TYPE_PERSPECTIVE_CLONE_TOOL, GimpPerspectiveCloneToolClass))
diff --git a/app/tools/gimpperspectivetool.c b/app/tools/gimpperspectivetool.c
index baa8fe4..dc1fc00 100644
--- a/app/tools/gimpperspectivetool.c
+++ b/app/tools/gimpperspectivetool.c
@@ -114,7 +114,6 @@ gimp_perspective_tool_init (GimpPerspectiveTool *perspective_tool)
GIMP_TOOL_CURSOR_PERSPECTIVE);
tr_tool->progress_text = _("Perspective transformation");
- tr_tool->use_grid = TRUE;
tr_tool->does_perspective = TRUE;
}
diff --git a/app/tools/gimprotatetool.c b/app/tools/gimprotatetool.c
index 44dffff..0d6eb8a 100644
--- a/app/tools/gimprotatetool.c
+++ b/app/tools/gimprotatetool.c
@@ -127,7 +127,6 @@ gimp_rotate_tool_init (GimpRotateTool *rotate_tool)
gimp_tool_control_set_tool_cursor (tool->control, GIMP_TOOL_CURSOR_ROTATE);
tr_tool->progress_text = _("Rotating");
- tr_tool->use_grid = TRUE;
}
static gboolean
diff --git a/app/tools/gimpscaletool.c b/app/tools/gimpscaletool.c
index 320b694..34415fc 100644
--- a/app/tools/gimpscaletool.c
+++ b/app/tools/gimpscaletool.c
@@ -119,7 +119,6 @@ gimp_scale_tool_init (GimpScaleTool *scale_tool)
gimp_tool_control_set_tool_cursor (tool->control, GIMP_TOOL_CURSOR_RESIZE);
tr_tool->progress_text = _("Scaling");
- tr_tool->use_grid = TRUE;
}
static void
diff --git a/app/tools/gimpsheartool.c b/app/tools/gimpsheartool.c
index 6bd2118..6737553 100644
--- a/app/tools/gimpsheartool.c
+++ b/app/tools/gimpsheartool.c
@@ -117,7 +117,6 @@ gimp_shear_tool_init (GimpShearTool *shear_tool)
gimp_tool_control_set_tool_cursor (tool->control, GIMP_TOOL_CURSOR_SHEAR);
tr_tool->progress_text = _("Shearing");
- tr_tool->use_grid = TRUE;
}
static void
diff --git a/app/tools/gimptransformtool.c b/app/tools/gimptransformtool.c
index e57bbd9..3170802 100644
--- a/app/tools/gimptransformtool.c
+++ b/app/tools/gimptransformtool.c
@@ -17,22 +17,17 @@
#include "config.h"
-#include <stdlib.h>
-#include <string.h>
-
#include <gegl.h>
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
#include "libgimpmath/gimpmath.h"
-#include "libgimpconfig/gimpconfig.h"
#include "libgimpwidgets/gimpwidgets.h"
#include "tools-types.h"
#include "core/gimp.h"
#include "core/gimpboundary.h"
-#include "core/gimpcontext.h"
#include "core/gimpdrawable-transform.h"
#include "core/gimperror.h"
#include "core/gimpimage.h"
@@ -44,20 +39,14 @@
#include "core/gimpprogress.h"
#include "core/gimpprojection.h"
#include "core/gimptoolinfo.h"
-#include "core/gimp-transform-utils.h"
-#include "core/gimp-utils.h"
#include "vectors/gimpvectors.h"
#include "vectors/gimpstroke.h"
-#include "widgets/gimpdialogfactory.h"
#include "widgets/gimpwidgets-utils.h"
-#include "display/gimpcanvasgroup.h"
-#include "display/gimpcanvashandle.h"
+#include "display/gimpcanvasitem.h"
#include "display/gimpdisplay.h"
-#include "display/gimpdisplayshell.h"
-#include "display/gimpdisplayshell-transform.h"
#include "display/gimptoolgui.h"
#include "display/gimptoolwidget.h"
@@ -69,115 +58,112 @@
#include "gimp-intl.h"
-#define RESPONSE_RESET 1
-#define MIN_HANDLE_SIZE 6
-
-
-static void gimp_transform_tool_finalize (GObject *object);
-
-static gboolean gimp_transform_tool_initialize (GimpTool *tool,
- GimpDisplay *display,
- GError **error);
-static void gimp_transform_tool_control (GimpTool *tool,
- GimpToolAction action,
- GimpDisplay *display);
-static void gimp_transform_tool_button_press (GimpTool *tool,
- const GimpCoords *coords,
- guint32 time,
- GdkModifierType state,
- GimpButtonPressType press_type,
- GimpDisplay *display);
-static void gimp_transform_tool_button_release (GimpTool *tool,
- const GimpCoords *coords,
- guint32 time,
- GdkModifierType state,
- GimpButtonReleaseType release_type,
- GimpDisplay *display);
-static void gimp_transform_tool_motion (GimpTool *tool,
- const GimpCoords *coords,
- guint32 time,
- GdkModifierType state,
- GimpDisplay *display);
-static gboolean gimp_transform_tool_key_press (GimpTool *tool,
- GdkEventKey *kevent,
- GimpDisplay *display);
-static void gimp_transform_tool_modifier_key (GimpTool *tool,
- GdkModifierType key,
- gboolean press,
- GdkModifierType state,
- GimpDisplay *display);
-static void gimp_transform_tool_oper_update (GimpTool *tool,
- const GimpCoords *coords,
- GdkModifierType state,
- gboolean proximity,
- GimpDisplay *display);
-static void gimp_transform_tool_cursor_update (GimpTool *tool,
- const GimpCoords *coords,
- GdkModifierType state,
- GimpDisplay *display);
-static const gchar * gimp_transform_tool_get_undo_desc (GimpTool *tool,
- GimpDisplay *display);
-static const gchar * gimp_transform_tool_get_redo_desc (GimpTool *tool,
- GimpDisplay *display);
-static gboolean gimp_transform_tool_undo (GimpTool *tool,
- GimpDisplay *display);
-static gboolean gimp_transform_tool_redo (GimpTool *tool,
- GimpDisplay *display);
-static void gimp_transform_tool_options_notify (GimpTool *tool,
- GimpToolOptions *options,
- const GParamSpec *pspec);
-
-static void gimp_transform_tool_draw (GimpDrawTool *draw_tool);
-
-static void gimp_transform_tool_dialog_update (GimpTransformTool *tr_tool);
+#define RESPONSE_RESET 1
+
+
+static void gimp_transform_tool_finalize (GObject *object);
+
+static gboolean gimp_transform_tool_initialize (GimpTool *tool,
+ GimpDisplay *display,
+ GError **error);
+static void gimp_transform_tool_control (GimpTool *tool,
+ GimpToolAction action,
+ GimpDisplay *display);
+static void gimp_transform_tool_button_press (GimpTool *tool,
+ const GimpCoords *coords,
+ guint32 time,
+ GdkModifierType state,
+ GimpButtonPressType press_type,
+ GimpDisplay *display);
+static void gimp_transform_tool_button_release (GimpTool *tool,
+ const GimpCoords *coords,
+ guint32 time,
+ GdkModifierType state,
+ GimpButtonReleaseType release_type,
+ GimpDisplay *display);
+static void gimp_transform_tool_motion (GimpTool *tool,
+ const GimpCoords *coords,
+ guint32 time,
+ GdkModifierType state,
+ GimpDisplay *display);
+static gboolean gimp_transform_tool_key_press (GimpTool *tool,
+ GdkEventKey *kevent,
+ GimpDisplay *display);
+static void gimp_transform_tool_modifier_key (GimpTool *tool,
+ GdkModifierType key,
+ gboolean press,
+ GdkModifierType state,
+ GimpDisplay *display);
+static void gimp_transform_tool_oper_update (GimpTool *tool,
+ const GimpCoords *coords,
+ GdkModifierType state,
+ gboolean proximity,
+ GimpDisplay *display);
+static void gimp_transform_tool_cursor_update (GimpTool *tool,
+ const GimpCoords *coords,
+ GdkModifierType state,
+ GimpDisplay *display);
+static const gchar * gimp_transform_tool_get_undo_desc (GimpTool *tool,
+ GimpDisplay *display);
+static const gchar * gimp_transform_tool_get_redo_desc (GimpTool *tool,
+ GimpDisplay *display);
+static gboolean gimp_transform_tool_undo (GimpTool *tool,
+ GimpDisplay *display);
+static gboolean gimp_transform_tool_redo (GimpTool *tool,
+ GimpDisplay *display);
+static void gimp_transform_tool_options_notify (GimpTool *tool,
+ GimpToolOptions *options,
+ const GParamSpec *pspec);
+
+static void gimp_transform_tool_draw (GimpDrawTool *draw_tool);
+
+static void gimp_transform_tool_dialog_update (GimpTransformTool *tr_tool);
static GeglBuffer *
- gimp_transform_tool_real_transform (GimpTransformTool *tr_tool,
- GimpItem *item,
- GeglBuffer *orig_buffer,
- gint orig_offset_x,
- gint orig_offset_y,
- GimpColorProfile **buffer_profile,
- gint *new_offset_x,
- gint *new_offset_y);
-
-static void gimp_transform_tool_widget_changed (GimpToolWidget *widget,
- GimpTransformTool *tr_tool);
-static void gimp_transform_tool_widget_snap_offsets (GimpToolWidget *widget,
- gint offset_x,
- gint offset_y,
- gint width,
- gint height,
- GimpTransformTool *tr_tool);
-static void gimp_transform_tool_widget_status (GimpToolWidget *widget,
- const gchar *status,
- GimpTransformTool *tr_tool);
-
-static void gimp_transform_tool_halt (GimpTransformTool *tr_tool);
-static void gimp_transform_tool_set_function (GimpTransformTool *tr_tool,
- TransformAction function);
-static gboolean gimp_transform_tool_bounds (GimpTransformTool *tr_tool,
- GimpDisplay *display);
-static void gimp_transform_tool_dialog (GimpTransformTool *tr_tool);
-static void gimp_transform_tool_prepare (GimpTransformTool *tr_tool,
- GimpDisplay *display);
-static void gimp_transform_tool_transform (GimpTransformTool *tr_tool,
- GimpDisplay *display);
-
-static void gimp_transform_tool_response (GimpToolGui *gui,
- gint response_id,
- GimpTransformTool *tr_tool);
-
-static void gimp_transform_tool_update_sensitivity (GimpTransformTool *tr_tool);
-static GimpItem *gimp_transform_tool_get_active_item (GimpTransformTool *tr_tool,
- GimpImage *image);
-static GimpItem *gimp_transform_tool_check_active_item (GimpTransformTool *tr_tool,
- GimpImage *display,
- gboolean invisible_layer_ok,
- GError **error);
-static void gimp_transform_tool_hide_active_item (GimpTransformTool *tr_tool,
- GimpItem *item);
-static void gimp_transform_tool_show_active_item (GimpTransformTool *tr_tool);
+ gimp_transform_tool_real_transform (GimpTransformTool *tr_tool,
+ GimpItem *item,
+ GeglBuffer *orig_buffer,
+ gint orig_offset_x,
+ gint orig_offset_y,
+ GimpColorProfile **buffer_profile,
+ gint *new_offset_x,
+ gint *new_offset_y);
+
+static void gimp_transform_tool_widget_changed (GimpToolWidget *widget,
+ GimpTransformTool *tr_tool);
+static void gimp_transform_tool_widget_snap_offsets (GimpToolWidget *widget,
+ gint offset_x,
+ gint offset_y,
+ gint width,
+ gint height,
+ GimpTransformTool *tr_tool);
+static void gimp_transform_tool_widget_status (GimpToolWidget *widget,
+ const gchar *status,
+ GimpTransformTool *tr_tool);
+
+static void gimp_transform_tool_halt (GimpTransformTool *tr_tool);
+static gboolean gimp_transform_tool_bounds (GimpTransformTool *tr_tool,
+ GimpDisplay *display);
+static void gimp_transform_tool_dialog (GimpTransformTool *tr_tool);
+static void gimp_transform_tool_prepare (GimpTransformTool *tr_tool,
+ GimpDisplay *display);
+static void gimp_transform_tool_transform (GimpTransformTool *tr_tool,
+ GimpDisplay *display);
+
+static void gimp_transform_tool_response (GimpToolGui *gui,
+ gint response_id,
+ GimpTransformTool *tr_tool);
+
+static void gimp_transform_tool_update_sensitivity (GimpTransformTool *tr_tool);
+static GimpItem *gimp_transform_tool_get_active_item (GimpTransformTool *tr_tool,
+ GimpImage *image);
+static GimpItem *gimp_transform_tool_check_active_item (GimpTransformTool *tr_tool,
+ GimpImage *display,
+ gboolean invisible_layer_ok,
+ GError **error);
+static void gimp_transform_tool_hide_active_item (GimpTransformTool *tr_tool,
+ GimpItem *item);
+static void gimp_transform_tool_show_active_item (GimpTransformTool *tr_tool);
static TransInfo * trans_info_new (void);
static void trans_info_free (TransInfo *info);
@@ -218,12 +204,9 @@ gimp_transform_tool_class_init (GimpTransformToolClass *klass)
klass->dialog = NULL;
klass->dialog_update = NULL;
klass->prepare = NULL;
- klass->motion = NULL;
klass->recalc_matrix = NULL;
klass->get_undo_desc = NULL;
klass->transform = gimp_transform_tool_real_transform;
- klass->pick_function = NULL;
- klass->draw_gui = NULL;
klass->ok_button_label = _("_Transform");
}
@@ -246,7 +229,6 @@ gimp_transform_tool_init (GimpTransformTool *tr_tool)
gimp_tool_control_set_precision (tool->control,
GIMP_CURSOR_PRECISION_SUBPIXEL);
- tr_tool->function = TRANSFORM_CREATING;
tr_tool->progress_text = _("Transforming");
gimp_matrix3_identity (&tr_tool->transform);
@@ -304,8 +286,6 @@ gimp_transform_tool_initialize (GimpTool *tool,
tool->display = display;
tool->drawable = drawable;
- gimp_transform_tool_hide_active_item (tr_tool, item);
-
/* Initialize the transform tool dialog */
if (! tr_tool->gui)
gimp_transform_tool_dialog (tr_tool);
@@ -320,11 +300,10 @@ gimp_transform_tool_initialize (GimpTool *tool,
/* Get the on-canvas gui */
if (GIMP_TRANSFORM_TOOL_GET_CLASS (tr_tool)->get_widget)
- tr_tool->widget =
- GIMP_TRANSFORM_TOOL_GET_CLASS (tr_tool)->get_widget (tr_tool);
-
- if (tr_tool->widget)
{
+ tr_tool->widget =
+ GIMP_TRANSFORM_TOOL_GET_CLASS (tr_tool)->get_widget (tr_tool);
+
g_signal_connect (tr_tool->widget, "changed",
G_CALLBACK (gimp_transform_tool_widget_changed),
tr_tool);
@@ -336,11 +315,11 @@ gimp_transform_tool_initialize (GimpTool *tool,
tr_tool);
}
+ gimp_transform_tool_hide_active_item (tr_tool, item);
+
/* start drawing the bounding box and handles... */
gimp_draw_tool_start (GIMP_DRAW_TOOL (tool), display);
- tr_tool->function = TRANSFORM_CREATING;
-
/* Initialize undo and redo lists */
tr_tool->undo_list = g_list_prepend (NULL, trans_info_new ());
tr_tool->redo_list = NULL;
@@ -404,36 +383,9 @@ gimp_transform_tool_button_press (GimpTool *tool,
{
tr_tool->grab_widget = tr_tool->widget;
}
-
- gimp_tool_control_activate (tool->control);
-
- return;
}
- if (tr_tool->function == TRANSFORM_CREATING)
- GIMP_TOOL_GET_CLASS (tool)->oper_update (tool, coords, state, TRUE, display);
-
- tr_tool->lastx = tr_tool->mousex = coords->x;
- tr_tool->lasty = tr_tool->mousey = coords->y;
-
gimp_tool_control_activate (tool->control);
-
- if (GIMP_IS_CANVAS_HANDLE (tr_tool->handles[tr_tool->function]))
- {
- gdouble x, y;
-
- gimp_canvas_handle_get_position (tr_tool->handles[tr_tool->function],
- &x, &y);
-
- gimp_tool_control_set_snap_offsets (tool->control,
- SIGNED_ROUND (x - coords->x),
- SIGNED_ROUND (y - coords->y),
- 0, 0);
- }
- else
- {
- gimp_tool_control_set_snap_offsets (tool->control, 0, 0, 0, 0);
- }
}
void
@@ -486,17 +438,11 @@ gimp_transform_tool_button_release (GimpTool *tool,
coords, time, state, release_type);
tr_tool->grab_widget = NULL;
}
- else
- {
- /* if we are creating, there is nothing to be done...exit */
- if (tr_tool->function == TRANSFORM_CREATING && tr_tool->use_grid)
- return;
- }
if (release_type != GIMP_BUTTON_RELEASE_CANCEL)
{
/* This hack is to perform the flip immediately with the flip tool */
- if (! tr_tool->use_grid)
+ if (! tr_tool->widget)
{
gimp_transform_tool_response (NULL, GTK_RESPONSE_OK, tr_tool);
return;
@@ -507,9 +453,6 @@ gimp_transform_tool_button_release (GimpTool *tool,
}
else
{
- if (! tr_tool->widget)
- gimp_draw_tool_pause (GIMP_DRAW_TOOL (tool));
-
/* Restore the last saved state */
memcpy (tr_tool->trans_info, tr_tool->prev_trans_info,
sizeof (TransInfo));
@@ -519,9 +462,6 @@ gimp_transform_tool_button_release (GimpTool *tool,
/* recalculate the tool's transformation matrix */
gimp_transform_tool_recalc_matrix (tr_tool, tr_tool->widget);
-
- if (! tr_tool->widget)
- gimp_draw_tool_resume (GIMP_DRAW_TOOL (tool));
}
}
@@ -534,37 +474,10 @@ gimp_transform_tool_motion (GimpTool *tool,
{
GimpTransformTool *tr_tool = GIMP_TRANSFORM_TOOL (tool);
- if (tr_tool->widget)
- {
- if (tr_tool->grab_widget)
- {
- gimp_tool_widget_motion (tr_tool->grab_widget, coords, time, state);
- }
-
- return;
- }
-
- /* if we are creating, there is nothing to be done so exit. */
- if (tr_tool->function == TRANSFORM_CREATING || ! tr_tool->use_grid)
- return;
-
- gimp_draw_tool_pause (GIMP_DRAW_TOOL (tool));
-
- tr_tool->curx = coords->x;
- tr_tool->cury = coords->y;
-
- /* recalculate the tool's transformation matrix */
- if (GIMP_TRANSFORM_TOOL_GET_CLASS (tr_tool)->motion)
+ if (tr_tool->grab_widget)
{
- GIMP_TRANSFORM_TOOL_GET_CLASS (tr_tool)->motion (tr_tool);
-
- gimp_transform_tool_recalc_matrix (tr_tool, NULL);
+ gimp_tool_widget_motion (tr_tool->grab_widget, coords, time, state);
}
-
- tr_tool->lastx = tr_tool->curx;
- tr_tool->lasty = tr_tool->cury;
-
- gimp_draw_tool_resume (GIMP_DRAW_TOOL (tool));
}
static gboolean
@@ -651,9 +564,7 @@ gimp_transform_tool_oper_update (GimpTool *tool,
gboolean proximity,
GimpDisplay *display)
{
- GimpTransformTool *tr_tool = GIMP_TRANSFORM_TOOL (tool);
- GimpDrawTool *draw_tool = GIMP_DRAW_TOOL (tool);
- TransformAction function = TRANSFORM_HANDLE_NONE;
+ GimpTransformTool *tr_tool = GIMP_TRANSFORM_TOOL (tool);
if (tr_tool->widget)
{
@@ -661,23 +572,7 @@ gimp_transform_tool_oper_update (GimpTool *tool,
{
gimp_tool_widget_hover (tr_tool->widget, coords, state, proximity);
}
-
- return;
}
-
- if (display != tool->display || draw_tool->item == NULL)
- {
- gimp_transform_tool_set_function (tr_tool, function);
- return;
- }
-
- if (GIMP_TRANSFORM_TOOL_GET_CLASS (tr_tool)->pick_function)
- function = GIMP_TRANSFORM_TOOL_GET_CLASS (tr_tool)->pick_function (tr_tool,
- coords,
- state,
- display);
-
- gimp_transform_tool_set_function (tr_tool, function);
}
static void
@@ -759,9 +654,6 @@ gimp_transform_tool_undo (GimpTool *tool,
tr_tool->prev_trans_info = item->data;
- if (! tr_tool->widget)
- gimp_draw_tool_pause (GIMP_DRAW_TOOL (tool));
-
/* Restore the previous transformation info */
memcpy (tr_tool->trans_info, tr_tool->prev_trans_info,
sizeof (TransInfo));
@@ -772,9 +664,6 @@ gimp_transform_tool_undo (GimpTool *tool,
/* recalculate the tool's transformation matrix */
gimp_transform_tool_recalc_matrix (tr_tool, tr_tool->widget);
- if (! tr_tool->widget)
- gimp_draw_tool_resume (GIMP_DRAW_TOOL (tool));
-
return TRUE;
}
@@ -798,9 +687,6 @@ gimp_transform_tool_redo (GimpTool *tool,
tr_tool->redo_list = g_list_remove (tr_tool->redo_list,
tr_tool->prev_trans_info);
- if (! tr_tool->widget)
- gimp_draw_tool_pause (GIMP_DRAW_TOOL (tool));
-
/* Restore the previous transformation info */
memcpy (tr_tool->trans_info, tr_tool->prev_trans_info,
sizeof (TransInfo));
@@ -811,9 +697,6 @@ gimp_transform_tool_redo (GimpTool *tool,
/* recalculate the tool's transformation matrix */
gimp_transform_tool_recalc_matrix (tr_tool, tr_tool->widget);
- if (! tr_tool->widget)
- gimp_draw_tool_resume (GIMP_DRAW_TOOL (tool));
-
return TRUE;
}
@@ -833,74 +716,65 @@ gimp_transform_tool_options_notify (GimpTool *tool,
return;
}
- if (! tr_tool->use_grid)
- return;
-
if (! tr_tool->widget)
- gimp_draw_tool_pause (GIMP_DRAW_TOOL (tr_tool));
+ return;
if (! strcmp (pspec->name, "direction"))
{
- if (tr_tool->widget || tr_tool->function != TRANSFORM_CREATING)
+ if (tool->display)
{
- if (tool->display)
- {
- /* reget the selection bounds */
- gimp_transform_tool_bounds (tr_tool, tool->display);
+ /* reget the selection bounds */
+ gimp_transform_tool_bounds (tr_tool, tool->display);
- /* recalculate the tool's transformation matrix */
- gimp_transform_tool_recalc_matrix (tr_tool, tr_tool->widget);
- }
+ /* recalculate the tool's transformation matrix */
+ gimp_transform_tool_recalc_matrix (tr_tool, tr_tool->widget);
}
}
- if (! tr_tool->widget)
- gimp_draw_tool_resume (GIMP_DRAW_TOOL (tr_tool));
-
if (! strcmp (pspec->name, "show-preview"))
{
- if (tr_tool->widget && tr_tool->preview)
- gimp_canvas_item_set_visible (tr_tool->preview,
- tr_options->show_preview);
+ if (tr_tool->preview)
+ {
+ gboolean show_preview;
+
+ show_preview = gimp_transform_options_show_preview (tr_options);
+
+ gimp_canvas_item_set_visible (tr_tool->preview, show_preview);
+ }
}
else if (! strcmp (pspec->name, "preview-opacity"))
{
- if (tr_tool->widget && tr_tool->preview)
+ if (tr_tool->preview)
g_object_set (tr_tool->preview,
"opacity", tr_options->preview_opacity,
NULL);
}
else if (! strcmp (pspec->name, "grid-type"))
{
- if (tr_tool->widget)
- g_object_set (tr_tool->widget,
- "guide-type", tr_options->grid_type,
- NULL);
+ g_object_set (tr_tool->widget,
+ "guide-type", tr_options->grid_type,
+ NULL);
}
else if (! strcmp (pspec->name, "grid-size"))
{
- if (tr_tool->widget)
- g_object_set (tr_tool->widget,
- "n-guides", tr_options->grid_size,
- NULL);
+ g_object_set (tr_tool->widget,
+ "n-guides", tr_options->grid_size,
+ NULL);
}
else if (g_str_has_prefix (pspec->name, "constrain-") ||
g_str_has_prefix (pspec->name, "frompivot-") ||
! strcmp (pspec->name, "fixedpivot") ||
! strcmp (pspec->name, "cornersnap"))
{
- if (tr_tool->widget)
- {
- gboolean value;
+ gboolean value;
- g_object_get (options,
- pspec->name, &value,
- NULL);
+ g_object_get (options,
+ pspec->name, &value,
+ NULL);
- g_object_set (tr_tool->widget,
- pspec->name, value,
- NULL);
- }
+ g_object_set (tr_tool->widget,
+ pspec->name, value,
+ NULL);
gimp_transform_tool_dialog_update (tr_tool);
}
@@ -914,62 +788,37 @@ gimp_transform_tool_draw (GimpDrawTool *draw_tool)
GimpTransformOptions *options = GIMP_TRANSFORM_TOOL_GET_OPTIONS (tool);
GimpImage *image = gimp_display_get_image (tool->display);
- memset (tr_tool->handles, 0, sizeof (tr_tool->handles));
-
- if (tr_tool->use_grid)
+ if (tr_tool->widget)
{
- gboolean show_preview = gimp_transform_options_show_preview (options);
-
- if (tr_tool->widget || show_preview)
- {
- GimpMatrix3 matrix = tr_tool->transform;
+ GimpCanvasItem *item;
+ GimpMatrix3 matrix = tr_tool->transform;
+ gboolean show_preview;
- if (options->direction == GIMP_TRANSFORM_BACKWARD)
- gimp_matrix3_invert (&matrix);
+ show_preview = gimp_transform_options_show_preview (options);
- tr_tool->preview =
- gimp_draw_tool_add_transform_preview (draw_tool,
- tool->drawable,
- &matrix,
- tr_tool->x1,
- tr_tool->y1,
- tr_tool->x2,
- tr_tool->y2,
- tr_tool->does_perspective,
- options->preview_opacity);
- g_object_add_weak_pointer (G_OBJECT (tr_tool->preview),
- (gpointer) &tr_tool->preview);
-
- if (tr_tool->widget)
- gimp_canvas_item_set_visible (tr_tool->preview, show_preview);
- }
+ if (options->direction == GIMP_TRANSFORM_BACKWARD)
+ gimp_matrix3_invert (&matrix);
- if (tr_tool->widget)
- {
- GimpCanvasItem *item = gimp_tool_widget_get_item (tr_tool->widget);
+ tr_tool->preview =
+ gimp_draw_tool_add_transform_preview (draw_tool,
+ tool->drawable,
+ &matrix,
+ tr_tool->x1,
+ tr_tool->y1,
+ tr_tool->x2,
+ tr_tool->y2,
+ tr_tool->does_perspective,
+ options->preview_opacity);
+ g_object_add_weak_pointer (G_OBJECT (tr_tool->preview),
+ (gpointer) &tr_tool->preview);
- gimp_draw_tool_add_item (draw_tool, item);
+ gimp_canvas_item_set_visible (tr_tool->preview, show_preview);
- return;
- }
-
- gimp_draw_tool_add_transform_guides (draw_tool,
- &tr_tool->transform,
- options->grid_type,
- options->grid_size,
- tr_tool->x1,
- tr_tool->y1,
- tr_tool->x2,
- tr_tool->y2);
- }
+ item = gimp_tool_widget_get_item (tr_tool->widget);
- if (GIMP_TRANSFORM_TOOL_GET_CLASS (tr_tool)->draw_gui)
- GIMP_TRANSFORM_TOOL_GET_CLASS (tr_tool)->draw_gui (tr_tool);
+ gimp_draw_tool_add_item (draw_tool, item);
- if (tr_tool->handles[tr_tool->function])
- {
- gimp_canvas_item_set_highlight (tr_tool->handles[tr_tool->function],
- TRUE);
+ return;
}
if (options->type == GIMP_TRANSFORM_TYPE_SELECTION)
@@ -1378,8 +1227,6 @@ gimp_transform_tool_halt (GimpTransformTool *tr_tool)
g_clear_object (&tr_tool->widget);
- tr_tool->function = TRANSFORM_CREATING;
-
if (tr_tool->gui)
gimp_tool_gui_hide (tr_tool->gui);
@@ -1402,30 +1249,6 @@ gimp_transform_tool_halt (GimpTransformTool *tr_tool)
tool->drawable = NULL;
}
-static void
-gimp_transform_tool_set_function (GimpTransformTool *tr_tool,
- TransformAction function)
-{
- if (function != tr_tool->function)
- {
- if (tr_tool->handles[tr_tool->function] &&
- gimp_draw_tool_is_active (GIMP_DRAW_TOOL (tr_tool)))
- {
- gimp_canvas_item_set_highlight (tr_tool->handles[tr_tool->function],
- FALSE);
- }
-
- tr_tool->function = function;
-
- if (tr_tool->handles[tr_tool->function] &&
- gimp_draw_tool_is_active (GIMP_DRAW_TOOL (tr_tool)))
- {
- gimp_canvas_item_set_highlight (tr_tool->handles[tr_tool->function],
- TRUE);
- }
- }
-}
-
static gboolean
gimp_transform_tool_bounds (GimpTransformTool *tr_tool,
GimpDisplay *display)
@@ -1612,9 +1435,6 @@ gimp_transform_tool_response (GimpToolGui *gui,
gimp_transform_tool_update_sensitivity (tr_tool);
- if (! tr_tool->widget)
- gimp_draw_tool_pause (GIMP_DRAW_TOOL (tool));
-
/* Restore the previous transformation info */
memcpy (tr_tool->trans_info, tr_tool->prev_trans_info,
sizeof (TransInfo));
@@ -1625,9 +1445,6 @@ gimp_transform_tool_response (GimpToolGui *gui,
/* recalculate the tool's transformation matrix */
gimp_transform_tool_recalc_matrix (tr_tool, tr_tool->widget);
- if (! tr_tool->widget)
- gimp_draw_tool_resume (GIMP_DRAW_TOOL (tool));
-
/* update the undo actions / menu items */
gimp_image_flush (gimp_display_get_image (display));
break;
@@ -1775,7 +1592,7 @@ gimp_transform_tool_hide_active_item (GimpTransformTool *tr_tool,
/* hide only complete layers and channels, not layer masks */
if (options->type == GIMP_TRANSFORM_TYPE_LAYER &&
options->show_preview &&
- tr_tool->use_grid /* not for flip */ &&
+ tr_tool->widget /* not for flip */ &&
GIMP_IS_DRAWABLE (item) &&
! GIMP_IS_LAYER_MASK (item) &&
gimp_item_get_visible (item) &&
diff --git a/app/tools/gimptransformtool.h b/app/tools/gimptransformtool.h
index 4e893da..613b5a5 100644
--- a/app/tools/gimptransformtool.h
+++ b/app/tools/gimptransformtool.h
@@ -22,34 +22,6 @@
#include "gimpdrawtool.h"
-typedef enum
-{
- TRANSFORM_CREATING,
- TRANSFORM_HANDLE_NONE,
- TRANSFORM_HANDLE_NW_P, /* perspective handles */
- TRANSFORM_HANDLE_NE_P,
- TRANSFORM_HANDLE_SW_P,
- TRANSFORM_HANDLE_SE_P,
- TRANSFORM_HANDLE_NW, /* north west */
- TRANSFORM_HANDLE_NE, /* north east */
- TRANSFORM_HANDLE_SW, /* south west */
- TRANSFORM_HANDLE_SE, /* south east */
- TRANSFORM_HANDLE_N, /* north */
- TRANSFORM_HANDLE_S, /* south */
- TRANSFORM_HANDLE_E, /* east */
- TRANSFORM_HANDLE_W, /* west */
- TRANSFORM_HANDLE_CENTER, /* for moving */
- TRANSFORM_HANDLE_PIVOT, /* pivot for rotation and scaling */
- TRANSFORM_HANDLE_N_S, /* shearing handles */
- TRANSFORM_HANDLE_S_S,
- TRANSFORM_HANDLE_E_S,
- TRANSFORM_HANDLE_W_S,
- TRANSFORM_HANDLE_ROTATION, /* rotation handle */
-
- TRANSFORM_HANDLE_NUM /* keep this last so *handles[] is the right size */
-} TransformAction;
-
-
/* This is not the number of items in the enum above, but the max size
* of the enums at the top of each transformation tool, stored in
* trans_info and related
@@ -75,18 +47,6 @@ struct _GimpTransformTool
{
GimpDrawTool parent_instance;
- gdouble curx; /* current x coord */
- gdouble cury; /* current y coord */
-
- gdouble lastx; /* last x coord */
- gdouble lasty; /* last y coord */
-
- gdouble previousx; /* previous x coord */
- gdouble previousy; /* previous y coord */
-
- gdouble mousex; /* x coord where mouse was clicked */
- gdouble mousey; /* y coord where mouse was clicked */
-
gint x1, y1; /* upper left hand coordinate */
gint x2, y2; /* lower right hand coords */
@@ -103,18 +63,13 @@ struct _GimpTransformTool
GimpItem *hidden_item; /* the item that was hidden during
the transform */
- TransformAction function; /* current tool activity */
-
- gboolean use_grid; /* does the tool use the grid */
gboolean does_perspective; /* does the tool do non-affine
* transformations
*/
GimpToolWidget *widget;
GimpToolWidget *grab_widget;
-
GimpCanvasItem *preview;
- GimpCanvasItem *handles[TRANSFORM_HANDLE_NUM];
const gchar *progress_text;
@@ -129,21 +84,10 @@ struct _GimpTransformToolClass
void (* dialog) (GimpTransformTool *tool);
void (* dialog_update) (GimpTransformTool *tool);
void (* prepare) (GimpTransformTool *tool);
-
GimpToolWidget * (* get_widget) (GimpTransformTool *tool);
-
- void (* motion) (GimpTransformTool *tool);
void (* recalc_matrix) (GimpTransformTool *tool,
GimpToolWidget *widget);
gchar * (* get_undo_desc) (GimpTransformTool *tool);
- TransformAction (* pick_function) (GimpTransformTool *tool,
- const GimpCoords *coords,
- GdkModifierType state,
- GimpDisplay *display);
- void (* cursor_update) (GimpTransformTool *tr_tool,
- GimpCursorType *cursor,
- GimpCursorModifier *modifier);
- void (* draw_gui) (GimpTransformTool *tool);
GeglBuffer * (* transform) (GimpTransformTool *tool,
GimpItem *item,
GeglBuffer *orig_buffer,
diff --git a/app/tools/gimpunifiedtransformtool.c b/app/tools/gimpunifiedtransformtool.c
index ee87287..a6afe7c 100644
--- a/app/tools/gimpunifiedtransformtool.c
+++ b/app/tools/gimpunifiedtransformtool.c
@@ -111,7 +111,6 @@ gimp_unified_transform_tool_init (GimpUnifiedTransformTool *unified_tool)
GimpTransformTool *tr_tool = GIMP_TRANSFORM_TOOL (unified_tool);
tr_tool->progress_text = _("Unified transform");
- tr_tool->use_grid = TRUE;
tr_tool->does_perspective = TRUE;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]