[gimp] Revert "app: Refactor GimpBlendTool to not use update methods."
- From: Michael Henning <mhenning src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] Revert "app: Refactor GimpBlendTool to not use update methods."
- Date: Sun, 19 Oct 2014 01:09:03 +0000 (UTC)
commit c298485ba478e28b3aac150d3e6cafb649bb0e1d
Author: Michael Henning <drawoc darkrefraction com>
Date: Sat Oct 18 19:05:56 2014 -0400
Revert "app: Refactor GimpBlendTool to not use update methods."
This reverts commit 8a2a9775b97a5423d0a000a1054462328efda5ab.
Conflicts:
app/tools/gimpblendtool.c
app/tools/gimpblendtool.c | 224 +++++++++++++++++++++++++-------------------
app/tools/gimpblendtool.h | 6 +
2 files changed, 133 insertions(+), 97 deletions(-)
---
diff --git a/app/tools/gimpblendtool.c b/app/tools/gimpblendtool.c
index 3b89ae5..07924dc 100644
--- a/app/tools/gimpblendtool.c
+++ b/app/tools/gimpblendtool.c
@@ -56,6 +56,7 @@
#include "gimp-intl.h"
+#define SHOW_LINE TRUE
#define HANDLE_CROSS_DIAMETER 18
#define HANDLE_DIAMETER 40
@@ -109,6 +110,8 @@ static void gimp_blend_tool_cursor_update (GimpTool *tool,
GimpDisplay *display);
static void gimp_blend_tool_draw (GimpDrawTool *draw_tool);
+static void gimp_blend_tool_update_items (GimpBlendTool *blend_tool);
+static void gimp_blend_tool_update_item_hilight (GimpBlendTool *blend_tool);
static GimpBlendToolPoint gimp_blend_tool_get_point_under_cursor (GimpBlendTool *blend_tool);
@@ -290,12 +293,11 @@ gimp_blend_tool_oper_update (GimpTool *tool,
GimpDisplay *display)
{
GimpBlendTool *blend_tool = GIMP_BLEND_TOOL (tool);
- GimpDrawTool *draw_tool = GIMP_DRAW_TOOL (tool);
- gimp_draw_tool_pause (draw_tool);
blend_tool->mouse_x = coords->x;
blend_tool->mouse_y = coords->y;
- gimp_draw_tool_resume (draw_tool);
+
+ gimp_blend_tool_update_item_hilight (blend_tool);
}
static void
@@ -307,7 +309,6 @@ gimp_blend_tool_button_press (GimpTool *tool,
GimpDisplay *display)
{
GimpBlendTool *blend_tool = GIMP_BLEND_TOOL (tool);
- GimpDrawTool *draw_tool = GIMP_DRAW_TOOL (tool);
blend_tool->mouse_x = coords->x;
blend_tool->mouse_y = coords->y;
@@ -318,13 +319,11 @@ gimp_blend_tool_button_press (GimpTool *tool,
gimp_blend_tool_halt_preview (blend_tool);
}
- gimp_draw_tool_pause (draw_tool);
-
blend_tool->grabbed_point = gimp_blend_tool_get_point_under_cursor (blend_tool);
if (blend_tool->grabbed_point == POINT_NONE)
{
- if (gimp_draw_tool_is_active (draw_tool))
+ if (gimp_draw_tool_is_active (GIMP_DRAW_TOOL (blend_tool)))
{
gimp_tool_control (tool, GIMP_TOOL_ACTION_COMMIT, display);
gimp_tool_control (tool, GIMP_TOOL_ACTION_HALT, display);
@@ -347,8 +346,7 @@ gimp_blend_tool_button_press (GimpTool *tool,
state & gimp_get_constrain_behavior_mask ());
tool->display = display;
-
- gimp_draw_tool_resume (draw_tool);
+ gimp_blend_tool_update_items (blend_tool);
if (blend_tool->grabbed_point != POINT_FILL_MODE &&
blend_tool->grabbed_point != POINT_INIT_MODE)
@@ -403,15 +401,10 @@ gimp_blend_tool_motion (GimpTool *tool,
GimpDisplay *display)
{
GimpBlendTool *blend_tool = GIMP_BLEND_TOOL (tool);
- GimpDrawTool *draw_tool = GIMP_DRAW_TOOL (tool);
- gdouble last_x;
- gdouble last_y;
-
- gimp_draw_tool_pause (draw_tool);
/* Save the mouse coordinates from last call */
- last_x = blend_tool->mouse_x;
- last_y = blend_tool->mouse_y;
+ gdouble last_x = blend_tool->mouse_x;
+ gdouble last_y = blend_tool->mouse_y;
blend_tool->mouse_x = coords->x;
blend_tool->mouse_y = coords->y;
@@ -443,7 +436,7 @@ gimp_blend_tool_motion (GimpTool *tool,
gimp_tool_pop_status (tool, display);
gimp_blend_tool_push_status (blend_tool, state, display);
- gimp_draw_tool_resume (draw_tool);
+ gimp_blend_tool_update_items (blend_tool);
gimp_blend_tool_update_preview_coords (blend_tool);
gimp_image_map_apply (blend_tool->image_map, NULL);
@@ -520,17 +513,16 @@ gimp_blend_tool_active_modifier_key (GimpTool *tool,
GimpDisplay *display)
{
GimpBlendTool *blend_tool = GIMP_BLEND_TOOL (tool);
- GimpDrawTool *draw_tool = GIMP_DRAW_TOOL (tool);
if (key == gimp_get_constrain_behavior_mask ())
{
- gimp_draw_tool_pause (draw_tool);
gimp_blend_tool_point_motion (blend_tool, press);
- gimp_draw_tool_resume (draw_tool);
gimp_tool_pop_status (tool, display);
gimp_blend_tool_push_status (blend_tool, state, display);
+ gimp_blend_tool_update_items (blend_tool);
+
gimp_blend_tool_update_preview_coords (blend_tool);
gimp_image_map_apply (blend_tool->image_map, NULL);
}
@@ -578,18 +570,27 @@ gimp_blend_tool_cursor_update (GimpTool *tool,
static void
gimp_blend_tool_draw (GimpDrawTool *draw_tool)
{
- GimpBlendTool *blend_tool = GIMP_BLEND_TOOL (draw_tool);
- GimpCanvasItem *start_handle_cross, *end_handle_cross;
- GimpBlendToolPoint hilight_point;
- gboolean start_visible, end_visible;
-
- gimp_draw_tool_add_line (draw_tool,
- blend_tool->start_x,
- blend_tool->start_y,
- blend_tool->end_x,
- blend_tool->end_y);
-
- start_handle_cross =
+ GimpBlendTool *blend_tool = GIMP_BLEND_TOOL (draw_tool);
+
+ blend_tool->line =
+ gimp_draw_tool_add_line (draw_tool,
+ blend_tool->start_x,
+ blend_tool->start_y,
+ blend_tool->end_x,
+ blend_tool->end_y);
+
+ gimp_canvas_item_set_visible (blend_tool->line, SHOW_LINE);
+
+ blend_tool->start_handle_circle =
+ gimp_draw_tool_add_handle (draw_tool,
+ GIMP_HANDLE_CIRCLE,
+ blend_tool->start_x,
+ blend_tool->start_y,
+ HANDLE_DIAMETER,
+ HANDLE_DIAMETER,
+ GIMP_HANDLE_ANCHOR_CENTER);
+
+ blend_tool->start_handle_cross =
gimp_draw_tool_add_handle (draw_tool,
GIMP_HANDLE_CROSS,
blend_tool->start_x,
@@ -598,7 +599,16 @@ gimp_blend_tool_draw (GimpDrawTool *draw_tool)
HANDLE_CROSS_DIAMETER,
GIMP_HANDLE_ANCHOR_CENTER);
- end_handle_cross =
+ blend_tool->end_handle_circle =
+ gimp_draw_tool_add_handle (draw_tool,
+ GIMP_HANDLE_CIRCLE,
+ blend_tool->end_x,
+ blend_tool->end_y,
+ HANDLE_DIAMETER,
+ HANDLE_DIAMETER,
+ GIMP_HANDLE_ANCHOR_CENTER);
+
+ blend_tool->end_handle_cross =
gimp_draw_tool_add_handle (draw_tool,
GIMP_HANDLE_CROSS,
blend_tool->end_x,
@@ -607,78 +617,98 @@ gimp_blend_tool_draw (GimpDrawTool *draw_tool)
HANDLE_CROSS_DIAMETER,
GIMP_HANDLE_ANCHOR_CENTER);
- /* Calculate handle visibility */
- if (blend_tool->grabbed_point)
+ gimp_blend_tool_update_item_hilight (blend_tool);
+}
+
+static void
+gimp_blend_tool_update_items (GimpBlendTool *blend_tool)
+{
+ if (gimp_draw_tool_is_active (GIMP_DRAW_TOOL (blend_tool)))
{
- start_visible = FALSE;
- end_visible = FALSE;
+ gimp_canvas_line_set (blend_tool->line,
+ blend_tool->start_x,
+ blend_tool->start_y,
+ blend_tool->end_x,
+ blend_tool->end_y);
+
+ gimp_canvas_handle_set_position (blend_tool->start_handle_circle,
+ blend_tool->start_x,
+ blend_tool->start_y);
+
+ gimp_canvas_handle_set_position (blend_tool->start_handle_cross,
+ blend_tool->start_x,
+ blend_tool->start_y);
+
+ gimp_canvas_handle_set_position (blend_tool->end_handle_circle,
+ blend_tool->end_x,
+ blend_tool->end_y);
+
+ gimp_canvas_handle_set_position (blend_tool->end_handle_cross,
+ blend_tool->end_x,
+ blend_tool->end_y);
+
+ gimp_blend_tool_update_item_hilight (blend_tool);
}
- else
+}
+
+static void
+gimp_blend_tool_update_item_hilight (GimpBlendTool *blend_tool)
+{
+ GimpDrawTool *draw_tool = GIMP_DRAW_TOOL (blend_tool);
+ if (gimp_draw_tool_is_active (draw_tool))
{
- gdouble dist;
- dist = gimp_draw_tool_calc_distance_square (draw_tool,
- draw_tool->display,
- blend_tool->mouse_x,
- blend_tool->mouse_y,
- blend_tool->start_x,
- blend_tool->start_y);
-
- start_visible = dist < FULL_HANDLE_THRESHOLD_SQ;
-
- dist = gimp_draw_tool_calc_distance_square (draw_tool,
- draw_tool->display,
- blend_tool->mouse_x,
- blend_tool->mouse_y,
- blend_tool->end_x,
- blend_tool->end_y);
-
- end_visible = dist < FULL_HANDLE_THRESHOLD_SQ;
- }
+ GimpBlendToolPoint hilight_point;
+ gboolean start_visible, end_visible;
- /* Update hilights */
- if (blend_tool->grabbed_point)
- hilight_point = blend_tool->grabbed_point;
- else
- hilight_point = gimp_blend_tool_get_point_under_cursor (blend_tool);
+ /* Calculate handle visibility */
+ if (blend_tool->grabbed_point)
+ {
+ start_visible = FALSE;
+ end_visible = FALSE;
+ }
+ else
+ {
+ gdouble dist;
+ dist = gimp_draw_tool_calc_distance_square (draw_tool,
+ draw_tool->display,
+ blend_tool->mouse_x,
+ blend_tool->mouse_y,
+ blend_tool->start_x,
+ blend_tool->start_y);
+
+ start_visible = dist < FULL_HANDLE_THRESHOLD_SQ;
+
+ dist = gimp_draw_tool_calc_distance_square (draw_tool,
+ draw_tool->display,
+ blend_tool->mouse_x,
+ blend_tool->mouse_y,
+ blend_tool->end_x,
+ blend_tool->end_y);
+
+ end_visible = dist < FULL_HANDLE_THRESHOLD_SQ;
+ }
- if (start_visible)
- {
- GimpCanvasItem *start_handle_circle;
-
- start_handle_circle =
- gimp_draw_tool_add_handle (draw_tool,
- GIMP_HANDLE_CIRCLE,
- blend_tool->start_x,
- blend_tool->start_y,
- HANDLE_DIAMETER,
- HANDLE_DIAMETER,
- GIMP_HANDLE_ANCHOR_CENTER);
-
- gimp_canvas_item_set_highlight (start_handle_circle,
+ gimp_canvas_item_set_visible (blend_tool->start_handle_circle,
+ start_visible);
+ gimp_canvas_item_set_visible (blend_tool->end_handle_circle,
+ end_visible);
+
+ /* Update hilights */
+ if (blend_tool->grabbed_point)
+ hilight_point = blend_tool->grabbed_point;
+ else
+ hilight_point = gimp_blend_tool_get_point_under_cursor (blend_tool);
+
+ gimp_canvas_item_set_highlight (blend_tool->start_handle_circle,
+ hilight_point == POINT_START);
+ gimp_canvas_item_set_highlight (blend_tool->start_handle_cross,
hilight_point == POINT_START);
- }
- if (end_visible)
- {
- GimpCanvasItem *end_handle_circle;
-
- end_handle_circle =
- gimp_draw_tool_add_handle (draw_tool,
- GIMP_HANDLE_CIRCLE,
- blend_tool->end_x,
- blend_tool->end_y,
- HANDLE_DIAMETER,
- HANDLE_DIAMETER,
- GIMP_HANDLE_ANCHOR_CENTER);
-
- gimp_canvas_item_set_highlight (end_handle_circle,
+ gimp_canvas_item_set_highlight (blend_tool->end_handle_circle,
hilight_point == POINT_END);
- }
-
- gimp_canvas_item_set_highlight (start_handle_cross,
- hilight_point == POINT_START);
- gimp_canvas_item_set_highlight (end_handle_cross,
- hilight_point == POINT_END);
+ gimp_canvas_item_set_highlight (blend_tool->end_handle_cross,
+ hilight_point == POINT_END);
+ }
}
static GimpBlendToolPoint
diff --git a/app/tools/gimpblendtool.h b/app/tools/gimpblendtool.h
index 0105aea..0362b0b 100644
--- a/app/tools/gimpblendtool.h
+++ b/app/tools/gimpblendtool.h
@@ -60,6 +60,12 @@ struct _GimpBlendTool
gdouble mouse_x; /* pointer x coord */
gdouble mouse_y; /* pointer y coord */
+ GimpCanvasItem *line;
+ GimpCanvasItem *start_handle_circle;
+ GimpCanvasItem *start_handle_cross;
+ GimpCanvasItem *end_handle_circle;
+ GimpCanvasItem *end_handle_cross;
+
GeglNode *graph;
GeglNode *render_node;
GimpImageMap *image_map;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]