[gimp] app: add GimpTransformGridTool::apply_info() vfunc
- From: Ell <ell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: add GimpTransformGridTool::apply_info() vfunc
- Date: Mon, 27 Apr 2020 13:56:53 +0000 (UTC)
commit aa1a1f0a0c979fbc2d22c1fe6f4f8007b6227c32
Author: Ell <ell_se yahoo com>
Date: Mon Apr 27 16:44:40 2020 +0300
app: add GimpTransformGridTool::apply_info() vfunc
... which copies a TransInfo array to the current info array,
possibly with modifications. While the default implementation
simply copies the array as-is, the following commit will override
the function for the Unified Transform tool, to avoid copying the
pivot position when the pivot is locked.
Use the function in GimpTransformGridTool, instead of copying the
array directly, as necessary.
app/tools/gimptransformgridtool.c | 15 ++++++++++++---
app/tools/gimptransformgridtool.h | 2 ++
2 files changed, 14 insertions(+), 3 deletions(-)
---
diff --git a/app/tools/gimptransformgridtool.c b/app/tools/gimptransformgridtool.c
index be0f90a90c..1fc0015586 100644
--- a/app/tools/gimptransformgridtool.c
+++ b/app/tools/gimptransformgridtool.c
@@ -170,6 +170,8 @@ static GeglBuffer * gimp_transform_grid_tool_transform (GimpTransformTool
gint *new_offset_x,
gint *new_offset_y);
+static void gimp_transform_grid_tool_real_apply_info (GimpTransformGridTool *tg_tool,
+ const TransInfo info);
static gchar * gimp_transform_grid_tool_real_get_undo_desc (GimpTransformGridTool *tg_tool);
static void gimp_transform_grid_tool_real_update_widget (GimpTransformGridTool *tg_tool);
static void gimp_transform_grid_tool_real_widget_changed (GimpTransformGridTool *tg_tool);
@@ -278,6 +280,7 @@ gimp_transform_grid_tool_class_init (GimpTransformGridToolClass *klass)
klass->info_to_matrix = NULL;
klass->matrix_to_info = NULL;
+ klass->apply_info = gimp_transform_grid_tool_real_apply_info;
klass->get_undo_desc = gimp_transform_grid_tool_real_get_undo_desc;
klass->dialog = NULL;
klass->dialog_update = NULL;
@@ -1038,6 +1041,13 @@ gimp_transform_grid_tool_transform (GimpTransformTool *tr_tool,
return new_buffer;
}
+static void
+gimp_transform_grid_tool_real_apply_info (GimpTransformGridTool *tg_tool,
+ const TransInfo info)
+{
+ memcpy (tg_tool->trans_info, info, sizeof (TransInfo));
+}
+
static gchar *
gimp_transform_grid_tool_real_get_undo_desc (GimpTransformGridTool *tg_tool)
{
@@ -1467,9 +1477,8 @@ gimp_transform_grid_tool_response (GimpToolGui *gui,
if (tr_options->direction == GIMP_TRANSFORM_BACKWARD)
gimp_matrix3_invert (&transform);
- memcpy (tg_tool->trans_info, tg_tool->init_trans_info,
- sizeof (TransInfo));
-
+ GIMP_TRANSFORM_GRID_TOOL_GET_CLASS (tg_tool)->apply_info (
+ tg_tool, tg_tool->init_trans_info);
GIMP_TRANSFORM_GRID_TOOL_GET_CLASS (tg_tool)->matrix_to_info (
tg_tool, &transform);
diff --git a/app/tools/gimptransformgridtool.h b/app/tools/gimptransformgridtool.h
index cb90671db5..3a8341841b 100644
--- a/app/tools/gimptransformgridtool.h
+++ b/app/tools/gimptransformgridtool.h
@@ -81,6 +81,8 @@ struct _GimpTransformGridToolClass
GimpMatrix3 *transform);
void (* matrix_to_info) (GimpTransformGridTool *tg_tool,
const GimpMatrix3 *transform);
+ void (* apply_info) (GimpTransformGridTool *tg_tool,
+ const TransInfo info);
gchar * (* get_undo_desc) (GimpTransformGridTool *tg_tool);
void (* dialog) (GimpTransformGridTool *tg_tool);
void (* dialog_update) (GimpTransformGridTool *tg_tool);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]