[gimp/blend-tool-fun: 10/10] experiment with handles
- From: Michael Henning <mhenning src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp/blend-tool-fun: 10/10] experiment with handles
- Date: Thu, 26 Jun 2014 16:58:39 +0000 (UTC)
commit e6f03c2e02c326d17fb246bb181fcee6af31f231
Author: Michael Henning <drawoc darkrefraction com>
Date: Thu Jun 26 12:57:06 2014 -0400
experiment with handles
app/tools/gimpblendtool.c | 68 ++++++++++++++++++++++++++++++++++++--------
app/tools/gimpblendtool.h | 4 ++
2 files changed, 59 insertions(+), 13 deletions(-)
---
diff --git a/app/tools/gimpblendtool.c b/app/tools/gimpblendtool.c
index 5d8fe95..c88b71d 100644
--- a/app/tools/gimpblendtool.c
+++ b/app/tools/gimpblendtool.c
@@ -57,7 +57,9 @@
#include "gimp-intl.h"
-#define POINT_GRAB_THRESHOLD_SQ (SQR (GIMP_TOOL_HANDLE_SIZE_CIRCLE / 2))
+#define HANDLE_DIAMETER 40
+
+#define POINT_GRAB_THRESHOLD_SQ (SQR (HANDLE_DIAMETER / 2))
/* local function prototypes */
@@ -520,31 +522,59 @@ gimp_blend_tool_draw (GimpDrawTool *draw_tool)
{
GimpBlendTool *blend_tool = GIMP_BLEND_TOOL (draw_tool);
- blend_tool->line =
+ /*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);
+ blend_tool->end_y);*/
+
+ //GimpCanvasGroup *group;
+ blend_tool->start_group = gimp_draw_tool_add_stroke_group (draw_tool);
+ blend_tool->end_group = gimp_draw_tool_add_stroke_group (draw_tool);
+ gimp_draw_tool_push_group (draw_tool, blend_tool->start_group);
blend_tool->start_handle =
gimp_draw_tool_add_handle (draw_tool,
- GIMP_HANDLE_FILLED_CIRCLE,
+ GIMP_HANDLE_CIRCLE,
blend_tool->start_x,
blend_tool->start_y,
- GIMP_TOOL_HANDLE_SIZE_CIRCLE,
- GIMP_TOOL_HANDLE_SIZE_CIRCLE,
+ 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,
+ blend_tool->start_y,
+ HANDLE_DIAMETER,
+ HANDLE_DIAMETER,
+ GIMP_HANDLE_ANCHOR_CENTER);
+
+ gimp_draw_tool_pop_group (draw_tool);
+ gimp_draw_tool_push_group (draw_tool, blend_tool->end_group);
+
blend_tool->end_handle =
gimp_draw_tool_add_handle (draw_tool,
- GIMP_HANDLE_FILLED_CIRCLE,
+ GIMP_HANDLE_CIRCLE,
blend_tool->end_x,
blend_tool->end_y,
- GIMP_TOOL_HANDLE_SIZE_CIRCLE,
- GIMP_TOOL_HANDLE_SIZE_CIRCLE,
+ 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,
+ blend_tool->end_y,
+ HANDLE_DIAMETER,
+ HANDLE_DIAMETER,
+ GIMP_HANDLE_ANCHOR_CENTER);
+
+ gimp_draw_tool_pop_group (draw_tool);
+
gimp_blend_tool_update_item_hilight (blend_tool);
}
@@ -553,11 +583,11 @@ gimp_blend_tool_update_items (GimpBlendTool *blend_tool)
{
if (gimp_draw_tool_is_active (GIMP_DRAW_TOOL (blend_tool)))
{
- gimp_canvas_line_set (blend_tool->line,
+ /*gimp_canvas_line_set (blend_tool->line,
blend_tool->start_x,
blend_tool->start_y,
blend_tool->end_x,
- blend_tool->end_y);
+ blend_tool->end_y);*/
gimp_canvas_handle_set_position (blend_tool->start_handle,
blend_tool->start_x,
@@ -567,6 +597,14 @@ gimp_blend_tool_update_items (GimpBlendTool *blend_tool)
blend_tool->end_x,
blend_tool->end_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_cross,
+ blend_tool->end_x,
+ blend_tool->end_y);
+
gimp_blend_tool_update_item_hilight (blend_tool);
}
}
@@ -583,10 +621,14 @@ gimp_blend_tool_update_item_hilight (GimpBlendTool *blend_tool)
else
hilight_point = gimp_blend_tool_get_point_under_cursor (blend_tool);
- gimp_canvas_item_set_highlight (blend_tool->start_handle,
+ gimp_canvas_item_set_highlight (blend_tool->start_group,
hilight_point == POINT_START);
- gimp_canvas_item_set_highlight (blend_tool->end_handle,
+ gimp_canvas_item_set_highlight (blend_tool->end_group,
hilight_point == POINT_END);
+ /*gimp_canvas_item_set_highlight (blend_tool->start_handle_cross,
+ hilight_point == POINT_START);
+ gimp_canvas_item_set_highlight (blend_tool->end_handle_cross,
+ hilight_point == POINT_END);*/
}
}
diff --git a/app/tools/gimpblendtool.h b/app/tools/gimpblendtool.h
index 6f35d04..ab1f9fe 100644
--- a/app/tools/gimpblendtool.h
+++ b/app/tools/gimpblendtool.h
@@ -59,6 +59,10 @@ struct _GimpBlendTool
GimpCanvasItem *start_handle;
GimpCanvasItem *line;
GimpCanvasItem *end_handle;
+ GimpCanvasItem *start_handle_cross;
+GimpCanvasItem *end_handle_cross;
+ GimpCanvasItem *start_group;
+GimpCanvasItem *end_group;
GeglNode *graph;
GeglNode *render_node;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]