[gimp] app: FG select: reorder functions to match all other tools
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: FG select: reorder functions to match all other tools
- Date: Fri, 18 Apr 2014 19:54:23 +0000 (UTC)
commit ebc4910a7c697f66fd0cfaf8c2c550a2033aaa50
Author: Michael Natterer <mitch gimp org>
Date: Fri Apr 18 21:52:38 2014 +0200
app: FG select: reorder functions to match all other tools
app/tools/gimpforegroundselecttool.c | 434 +++++++++++++++++-----------------
1 files changed, 217 insertions(+), 217 deletions(-)
---
diff --git a/app/tools/gimpforegroundselecttool.c b/app/tools/gimpforegroundselecttool.c
index dabe833..0560d13 100644
--- a/app/tools/gimpforegroundselecttool.c
+++ b/app/tools/gimpforegroundselecttool.c
@@ -78,10 +78,25 @@ static gboolean gimp_foreground_select_tool_initialize (GimpTool *tool
static void gimp_foreground_select_tool_control (GimpTool *tool,
GimpToolAction action,
GimpDisplay *display);
-static void gimp_foreground_select_tool_oper_update (GimpTool *tool,
+static void gimp_foreground_select_tool_button_press (GimpTool *tool,
const GimpCoords *coords,
+ guint32 time,
+ GdkModifierType state,
+ GimpButtonPressType press_type,
+ GimpDisplay *display);
+static void gimp_foreground_select_tool_button_release (GimpTool *tool,
+ const GimpCoords *coords,
+ guint32 time,
+ GdkModifierType state,
+ GimpButtonReleaseType release_type,
+ GimpDisplay *display);
+static void gimp_foreground_select_tool_motion (GimpTool *tool,
+ const GimpCoords *coords,
+ guint32 time,
GdkModifierType state,
- gboolean proximity,
+ GimpDisplay *display);
+static gboolean gimp_foreground_select_tool_key_press (GimpTool *tool,
+ GdkEventKey *kevent,
GimpDisplay *display);
static void gimp_foreground_select_tool_modifier_key (GimpTool *tool,
GdkModifierType key,
@@ -94,28 +109,13 @@ static void gimp_foreground_select_tool_active_modifier_key
gboolean press,
GdkModifierType state,
GimpDisplay *display);
-static void gimp_foreground_select_tool_cursor_update (GimpTool *tool,
- const GimpCoords *coords,
- GdkModifierType state,
- GimpDisplay *display);
-static gboolean gimp_foreground_select_tool_key_press (GimpTool *tool,
- GdkEventKey *kevent,
- GimpDisplay *display);
-static void gimp_foreground_select_tool_button_press (GimpTool *tool,
- const GimpCoords *coords,
- guint32 time,
- GdkModifierType state,
- GimpButtonPressType press_type,
- GimpDisplay *display);
-static void gimp_foreground_select_tool_button_release (GimpTool *tool,
+static void gimp_foreground_select_tool_oper_update (GimpTool *tool,
const GimpCoords *coords,
- guint32 time,
GdkModifierType state,
- GimpButtonReleaseType release_type,
+ gboolean proximity,
GimpDisplay *display);
-static void gimp_foreground_select_tool_motion (GimpTool *tool,
+static void gimp_foreground_select_tool_cursor_update (GimpTool *tool,
const GimpCoords *coords,
- guint32 time,
GdkModifierType state,
GimpDisplay *display);
static void gimp_foreground_select_tool_options_notify (GimpTool *tool,
@@ -186,14 +186,14 @@ gimp_foreground_select_tool_class_init (GimpForegroundSelectToolClass *klass)
tool_class->initialize = gimp_foreground_select_tool_initialize;
tool_class->control = gimp_foreground_select_tool_control;
- tool_class->oper_update = gimp_foreground_select_tool_oper_update;
- tool_class->modifier_key = gimp_foreground_select_tool_modifier_key;
- tool_class->active_modifier_key = gimp_foreground_select_tool_active_modifier_key;
- tool_class->cursor_update = gimp_foreground_select_tool_cursor_update;
- tool_class->key_press = gimp_foreground_select_tool_key_press;
tool_class->button_press = gimp_foreground_select_tool_button_press;
tool_class->button_release = gimp_foreground_select_tool_button_release;
tool_class->motion = gimp_foreground_select_tool_motion;
+ tool_class->key_press = gimp_foreground_select_tool_key_press;
+ tool_class->modifier_key = gimp_foreground_select_tool_modifier_key;
+ tool_class->active_modifier_key = gimp_foreground_select_tool_active_modifier_key;
+ tool_class->oper_update = gimp_foreground_select_tool_oper_update;
+ tool_class->cursor_update = gimp_foreground_select_tool_cursor_update;
tool_class->options_notify = gimp_foreground_select_tool_options_notify;
draw_tool_class->draw = gimp_foreground_select_tool_draw;
@@ -335,129 +335,118 @@ gimp_foreground_select_tool_control (GimpTool *tool,
}
static void
-gimp_foreground_select_tool_oper_update (GimpTool *tool,
- const GimpCoords *coords,
- GdkModifierType state,
- gboolean proximity,
- GimpDisplay *display)
+gimp_foreground_select_tool_button_press (GimpTool *tool,
+ const GimpCoords *coords,
+ guint32 time,
+ GdkModifierType state,
+ GimpButtonPressType press_type,
+ GimpDisplay *display)
{
- GimpForegroundSelectTool *fg_select = GIMP_FOREGROUND_SELECT_TOOL (tool);
- GimpForegroundSelectOptions *options;
- const gchar *status_stage = NULL;
- const gchar *status_mode = NULL;
-
- options = GIMP_FOREGROUND_SELECT_TOOL_GET_OPTIONS (fg_select);
-
- GIMP_TOOL_CLASS (parent_class)->oper_update (tool, coords, state, proximity,
- display);
+ GimpForegroundSelectTool *fg_select = GIMP_FOREGROUND_SELECT_TOOL (tool);
+ GimpDrawTool *draw_tool = GIMP_DRAW_TOOL (tool);
if (fg_select->state == MATTING_STATE_FREE_SELECT)
{
- if (GIMP_SELECTION_TOOL (tool)->function == SELECTION_SELECT)
- status_stage = _("Roughly outline the object to extract");
+ GIMP_TOOL_CLASS (parent_class)->button_press (tool, coords, time, state,
+ press_type, display);
}
else
{
- GimpDrawTool *draw_tool = GIMP_DRAW_TOOL (tool);
+ GimpVector2 point = gimp_vector2_new (coords->x, coords->y);
gimp_draw_tool_pause (draw_tool);
+ if (gimp_draw_tool_is_active (draw_tool) && draw_tool->display != display)
+ gimp_draw_tool_stop (draw_tool);
+
+ gimp_tool_control_activate (tool->control);
+
fg_select->last_coords = *coords;
- gimp_draw_tool_resume (draw_tool);
+ g_return_if_fail (fg_select->stroke == NULL);
+ fg_select->stroke = g_array_new (FALSE, FALSE, sizeof (GimpVector2));
- if (options->draw_mode == GIMP_MATTING_DRAW_MODE_FOREGROUND)
- status_mode = _("Selecting foreground,");
- else if (options->draw_mode == GIMP_MATTING_DRAW_MODE_BACKGROUND)
- status_mode = _("Selecting background,");
- else
- status_mode = _("Selecting unknown,");
+ g_array_append_val (fg_select->stroke, point);
- if (fg_select->state == MATTING_STATE_PAINT_TRIMAP)
- status_stage = _("press Enter to preview.");
- else
- status_stage = _("press Escape to exit preview or Enter to apply.");
- }
+ if (!gimp_draw_tool_is_active (draw_tool))
+ gimp_draw_tool_start (draw_tool, display);
- if (proximity && status_stage)
- {
- if (status_mode)
- gimp_tool_replace_status (tool, display, "%s %s", status_mode, status_stage);
- else
- gimp_tool_replace_status (tool, display, "%s", status_stage);
+ gimp_draw_tool_resume (draw_tool);
}
}
static void
-gimp_foreground_select_tool_modifier_key (GimpTool *tool,
- GdkModifierType key,
- gboolean press,
- GdkModifierType state,
- GimpDisplay *display)
+gimp_foreground_select_tool_button_release (GimpTool *tool,
+ const GimpCoords *coords,
+ guint32 time,
+ GdkModifierType state,
+ GimpButtonReleaseType release_type,
+ GimpDisplay *display)
{
GimpForegroundSelectTool *fg_select = GIMP_FOREGROUND_SELECT_TOOL (tool);
if (fg_select->state == MATTING_STATE_FREE_SELECT)
{
- GIMP_TOOL_CLASS (parent_class)->modifier_key (tool, key, press, state,
- display);
+ GIMP_TOOL_CLASS (parent_class)->button_release (tool, coords, time, state,
+ release_type, display);
}
else
{
-#if 0
- if (key == gimp_get_toggle_behavior_mask ())
- {
- GimpForegroundSelectOptions *options;
+ gimp_draw_tool_pause (GIMP_DRAW_TOOL (tool));
- options = GIMP_FOREGROUND_SELECT_TOOL_GET_OPTIONS (tool);
+ gimp_tool_control_halt (tool->control);
- g_object_set (options,
- "background", ! options->background,
- NULL);
+ if (release_type == GIMP_BUTTON_RELEASE_CANCEL)
+ {
+ gimp_foreground_select_tool_cancel_paint (fg_select);
}
-#endif
+ else
+ {
+ gimp_foreground_select_tool_stroke_paint (fg_select);
+
+ if (fg_select->state == MATTING_STATE_PREVIEW_MASK)
+ gimp_foreground_select_tool_preview (fg_select, display);
+ else
+ gimp_foreground_select_tool_set_trimap (fg_select, display);
+ }
+
+ gimp_draw_tool_resume (GIMP_DRAW_TOOL (tool));
}
}
static void
-gimp_foreground_select_tool_active_modifier_key (GimpTool *tool,
- GdkModifierType key,
- gboolean press,
- GdkModifierType state,
- GimpDisplay *display)
+gimp_foreground_select_tool_motion (GimpTool *tool,
+ const GimpCoords *coords,
+ guint32 time,
+ GdkModifierType state,
+ GimpDisplay *display)
{
GimpForegroundSelectTool *fg_select = GIMP_FOREGROUND_SELECT_TOOL (tool);
if (fg_select->state == MATTING_STATE_FREE_SELECT)
{
- GIMP_TOOL_CLASS (parent_class)->active_modifier_key (tool, key, press,
- state, display);
+ GIMP_TOOL_CLASS (parent_class)->motion (tool, coords, time, state,
+ display);
}
-}
+ else
+ {
+ GimpVector2 *last = &g_array_index (fg_select->stroke,
+ GimpVector2,
+ fg_select->stroke->len - 1);
-static void
-gimp_foreground_select_tool_cursor_update (GimpTool *tool,
- const GimpCoords *coords,
- GdkModifierType state,
- GimpDisplay *display)
-{
- GimpForegroundSelectTool *fg_select = GIMP_FOREGROUND_SELECT_TOOL (tool);
+ gimp_draw_tool_pause (GIMP_DRAW_TOOL (tool));
- if (fg_select->state == MATTING_STATE_PAINT_TRIMAP)
- {
- switch (GIMP_SELECTION_TOOL (tool)->function)
+ fg_select->last_coords = *coords;
+
+ if (last->x != (gint) coords->x || last->y != (gint) coords->y)
{
- case SELECTION_MOVE_MASK:
- case SELECTION_MOVE:
- case SELECTION_MOVE_COPY:
- case SELECTION_ANCHOR:
- return;
- default:
- break;
+ GimpVector2 point = gimp_vector2_new (coords->x, coords->y);
+
+ g_array_append_val (fg_select->stroke, point);
}
- }
- GIMP_TOOL_CLASS (parent_class)->cursor_update (tool, coords, state, display);
+ gimp_draw_tool_resume (GIMP_DRAW_TOOL (tool));
+ }
}
static gboolean
@@ -505,163 +494,129 @@ gimp_foreground_select_tool_key_press (GimpTool *tool,
}
static void
-gimp_foreground_select_tool_button_press (GimpTool *tool,
- const GimpCoords *coords,
- guint32 time,
- GdkModifierType state,
- GimpButtonPressType press_type,
- GimpDisplay *display)
+gimp_foreground_select_tool_modifier_key (GimpTool *tool,
+ GdkModifierType key,
+ gboolean press,
+ GdkModifierType state,
+ GimpDisplay *display)
{
GimpForegroundSelectTool *fg_select = GIMP_FOREGROUND_SELECT_TOOL (tool);
- GimpDrawTool *draw_tool = GIMP_DRAW_TOOL (tool);
if (fg_select->state == MATTING_STATE_FREE_SELECT)
{
- GIMP_TOOL_CLASS (parent_class)->button_press (tool, coords, time, state,
- press_type, display);
+ GIMP_TOOL_CLASS (parent_class)->modifier_key (tool, key, press, state,
+ display);
}
else
{
- GimpVector2 point = gimp_vector2_new (coords->x, coords->y);
-
- gimp_draw_tool_pause (draw_tool);
-
- if (gimp_draw_tool_is_active (draw_tool) && draw_tool->display != display)
- gimp_draw_tool_stop (draw_tool);
-
- gimp_tool_control_activate (tool->control);
-
- fg_select->last_coords = *coords;
-
- g_return_if_fail (fg_select->stroke == NULL);
- fg_select->stroke = g_array_new (FALSE, FALSE, sizeof (GimpVector2));
-
- g_array_append_val (fg_select->stroke, point);
+#if 0
+ if (key == gimp_get_toggle_behavior_mask ())
+ {
+ GimpForegroundSelectOptions *options;
- if (!gimp_draw_tool_is_active (draw_tool))
- gimp_draw_tool_start (draw_tool, display);
+ options = GIMP_FOREGROUND_SELECT_TOOL_GET_OPTIONS (tool);
- gimp_draw_tool_resume (draw_tool);
+ g_object_set (options,
+ "background", ! options->background,
+ NULL);
+ }
+#endif
}
}
static void
-gimp_foreground_select_tool_button_release (GimpTool *tool,
- const GimpCoords *coords,
- guint32 time,
- GdkModifierType state,
- GimpButtonReleaseType release_type,
- GimpDisplay *display)
+gimp_foreground_select_tool_active_modifier_key (GimpTool *tool,
+ GdkModifierType key,
+ gboolean press,
+ GdkModifierType state,
+ GimpDisplay *display)
{
GimpForegroundSelectTool *fg_select = GIMP_FOREGROUND_SELECT_TOOL (tool);
if (fg_select->state == MATTING_STATE_FREE_SELECT)
{
- GIMP_TOOL_CLASS (parent_class)->button_release (tool, coords, time, state,
- release_type, display);
+ GIMP_TOOL_CLASS (parent_class)->active_modifier_key (tool, key, press,
+ state, display);
}
- else
- {
- gimp_draw_tool_pause (GIMP_DRAW_TOOL (tool));
+}
- gimp_tool_control_halt (tool->control);
+static void
+gimp_foreground_select_tool_oper_update (GimpTool *tool,
+ const GimpCoords *coords,
+ GdkModifierType state,
+ gboolean proximity,
+ GimpDisplay *display)
+{
+ GimpForegroundSelectTool *fg_select = GIMP_FOREGROUND_SELECT_TOOL (tool);
+ GimpForegroundSelectOptions *options;
+ const gchar *status_stage = NULL;
+ const gchar *status_mode = NULL;
- if (release_type == GIMP_BUTTON_RELEASE_CANCEL)
- {
- gimp_foreground_select_tool_cancel_paint (fg_select);
- }
- else
- {
- gimp_foreground_select_tool_stroke_paint (fg_select);
+ options = GIMP_FOREGROUND_SELECT_TOOL_GET_OPTIONS (fg_select);
- if (fg_select->state == MATTING_STATE_PREVIEW_MASK)
- gimp_foreground_select_tool_preview (fg_select, display);
- else
- gimp_foreground_select_tool_set_trimap (fg_select, display);
- }
+ GIMP_TOOL_CLASS (parent_class)->oper_update (tool, coords, state, proximity,
+ display);
- gimp_draw_tool_resume (GIMP_DRAW_TOOL (tool));
+ if (fg_select->state == MATTING_STATE_FREE_SELECT)
+ {
+ if (GIMP_SELECTION_TOOL (tool)->function == SELECTION_SELECT)
+ status_stage = _("Roughly outline the object to extract");
}
-}
+ else
+ {
+ GimpDrawTool *draw_tool = GIMP_DRAW_TOOL (tool);
-static void
-gimp_foreground_select_tool_response (GimpToolGui *gui,
- gint response_id,
- GimpForegroundSelectTool *fg_select)
-{
- GimpTool *tool = GIMP_TOOL (fg_select);
- GimpDisplay *display = tool->display;
+ gimp_draw_tool_pause (draw_tool);
- switch (response_id)
- {
- case RESPONSE_PREVIEW:
- if (fg_select->state == MATTING_STATE_PREVIEW_MASK)
- gimp_foreground_select_tool_set_trimap (fg_select, display);
- else
- gimp_foreground_select_tool_preview (fg_select, display);
- break;
+ fg_select->last_coords = *coords;
- case RESPONSE_APPLY:
- if (fg_select->state != MATTING_STATE_PREVIEW_MASK)
- gimp_foreground_select_tool_preview (fg_select, display);
- gimp_foreground_select_tool_apply (fg_select, display);
- break;
+ gimp_draw_tool_resume (draw_tool);
- default:
- gimp_tool_control (tool, GIMP_TOOL_ACTION_HALT, display);
- break;
- }
-}
+ if (options->draw_mode == GIMP_MATTING_DRAW_MODE_FOREGROUND)
+ status_mode = _("Selecting foreground,");
+ else if (options->draw_mode == GIMP_MATTING_DRAW_MODE_BACKGROUND)
+ status_mode = _("Selecting background,");
+ else
+ status_mode = _("Selecting unknown,");
-static void
-gimp_foreground_select_tool_update_gui (GimpForegroundSelectTool *fg_select)
-{
- if (fg_select->state == MATTING_STATE_PAINT_TRIMAP)
- {
- gimp_tool_gui_set_description (fg_select->gui, _("Paint mask"));
+ if (fg_select->state == MATTING_STATE_PAINT_TRIMAP)
+ status_stage = _("press Enter to preview.");
+ else
+ status_stage = _("press Escape to exit preview or Enter to apply.");
}
- else if (fg_select->state == MATTING_STATE_PREVIEW_MASK)
+
+ if (proximity && status_stage)
{
- gimp_tool_gui_set_description (fg_select->gui, _("Preview"));
+ if (status_mode)
+ gimp_tool_replace_status (tool, display, "%s %s", status_mode, status_stage);
+ else
+ gimp_tool_replace_status (tool, display, "%s", status_stage);
}
-
- gimp_tool_gui_set_response_sensitive (fg_select->gui, RESPONSE_PREVIEW, TRUE);
- gimp_tool_gui_set_response_sensitive (fg_select->gui, RESPONSE_APPLY, TRUE);
}
static void
-gimp_foreground_select_tool_motion (GimpTool *tool,
- const GimpCoords *coords,
- guint32 time,
- GdkModifierType state,
- GimpDisplay *display)
+gimp_foreground_select_tool_cursor_update (GimpTool *tool,
+ const GimpCoords *coords,
+ GdkModifierType state,
+ GimpDisplay *display)
{
GimpForegroundSelectTool *fg_select = GIMP_FOREGROUND_SELECT_TOOL (tool);
- if (fg_select->state == MATTING_STATE_FREE_SELECT)
- {
- GIMP_TOOL_CLASS (parent_class)->motion (tool, coords, time, state,
- display);
- }
- else
+ if (fg_select->state == MATTING_STATE_PAINT_TRIMAP)
{
- GimpVector2 *last = &g_array_index (fg_select->stroke,
- GimpVector2,
- fg_select->stroke->len - 1);
-
- gimp_draw_tool_pause (GIMP_DRAW_TOOL (tool));
-
- fg_select->last_coords = *coords;
-
- if (last->x != (gint) coords->x || last->y != (gint) coords->y)
+ switch (GIMP_SELECTION_TOOL (tool)->function)
{
- GimpVector2 point = gimp_vector2_new (coords->x, coords->y);
-
- g_array_append_val (fg_select->stroke, point);
+ case SELECTION_MOVE_MASK:
+ case SELECTION_MOVE:
+ case SELECTION_MOVE_COPY:
+ case SELECTION_ANCHOR:
+ return;
+ default:
+ break;
}
-
- gimp_draw_tool_resume (GIMP_DRAW_TOOL (tool));
}
+
+ GIMP_TOOL_CLASS (parent_class)->cursor_update (tool, coords, state, display);
}
static void
@@ -1077,3 +1032,48 @@ gimp_foreground_select_tool_cancel_paint (GimpForegroundSelectTool *fg_select)
g_array_free (fg_select->stroke, TRUE);
fg_select->stroke = NULL;
}
+
+static void
+gimp_foreground_select_tool_response (GimpToolGui *gui,
+ gint response_id,
+ GimpForegroundSelectTool *fg_select)
+{
+ GimpTool *tool = GIMP_TOOL (fg_select);
+ GimpDisplay *display = tool->display;
+
+ switch (response_id)
+ {
+ case RESPONSE_PREVIEW:
+ if (fg_select->state == MATTING_STATE_PREVIEW_MASK)
+ gimp_foreground_select_tool_set_trimap (fg_select, display);
+ else
+ gimp_foreground_select_tool_preview (fg_select, display);
+ break;
+
+ case RESPONSE_APPLY:
+ if (fg_select->state != MATTING_STATE_PREVIEW_MASK)
+ gimp_foreground_select_tool_preview (fg_select, display);
+ gimp_foreground_select_tool_apply (fg_select, display);
+ break;
+
+ default:
+ gimp_tool_control (tool, GIMP_TOOL_ACTION_HALT, display);
+ break;
+ }
+}
+
+static void
+gimp_foreground_select_tool_update_gui (GimpForegroundSelectTool *fg_select)
+{
+ if (fg_select->state == MATTING_STATE_PAINT_TRIMAP)
+ {
+ gimp_tool_gui_set_description (fg_select->gui, _("Paint mask"));
+ }
+ else if (fg_select->state == MATTING_STATE_PREVIEW_MASK)
+ {
+ gimp_tool_gui_set_description (fg_select->gui, _("Preview"));
+ }
+
+ gimp_tool_gui_set_response_sensitive (fg_select->gui, RESPONSE_PREVIEW, TRUE);
+ gimp_tool_gui_set_response_sensitive (fg_select->gui, RESPONSE_APPLY, TRUE);
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]