[gimp] gimpcanvashandle: implement drop shaped handle
- From: Simon Budig <simon src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] gimpcanvashandle: implement drop shaped handle
- Date: Fri, 15 May 2020 00:56:51 +0000 (UTC)
commit 44352cb7690c0712a4237cc14b4f0fce5379b1f3
Author: Simon Budig <simon budig de>
Date: Fri May 15 02:20:33 2020 +0200
gimpcanvashandle: implement drop shaped handle
app/display/display-enums.h | 4 +++-
app/display/gimpcanvashandle.c | 26 ++++++++++++++++++++++++++
2 files changed, 29 insertions(+), 1 deletion(-)
---
diff --git a/app/display/display-enums.h b/app/display/display-enums.h
index 4cc84a86f6..71374f2856 100644
--- a/app/display/display-enums.h
+++ b/app/display/display-enums.h
@@ -101,7 +101,9 @@ typedef enum
GIMP_HANDLE_DASHED_DIAMOND,
GIMP_HANDLE_FILLED_DIAMOND,
GIMP_HANDLE_CROSS,
- GIMP_HANDLE_CROSSHAIR
+ GIMP_HANDLE_CROSSHAIR,
+ GIMP_HANDLE_DROP,
+ GIMP_HANDLE_FILLED_DROP
} GimpHandleType;
diff --git a/app/display/gimpcanvashandle.c b/app/display/gimpcanvashandle.c
index 954eead5ef..db6895f91e 100644
--- a/app/display/gimpcanvashandle.c
+++ b/app/display/gimpcanvashandle.c
@@ -279,6 +279,8 @@ gimp_canvas_handle_transform (GimpCanvasItem *item,
case GIMP_HANDLE_DIAMOND:
case GIMP_HANDLE_DASHED_DIAMOND:
case GIMP_HANDLE_FILLED_DIAMOND:
+ case GIMP_HANDLE_DROP:
+ case GIMP_HANDLE_FILLED_DROP:
gimp_canvas_item_shift_to_center (private->anchor,
*x, *y,
private->width,
@@ -319,6 +321,8 @@ gimp_canvas_handle_draw (GimpCanvasItem *item,
case GIMP_HANDLE_DASHED_DIAMOND:
case GIMP_HANDLE_FILLED_DIAMOND:
case GIMP_HANDLE_CROSS:
+ case GIMP_HANDLE_DROP:
+ case GIMP_HANDLE_FILLED_DROP:
cairo_save (cr);
cairo_translate (cr, tx, ty);
cairo_rotate (cr, private->start_angle);
@@ -397,6 +401,18 @@ gimp_canvas_handle_draw (GimpCanvasItem *item,
_gimp_canvas_item_stroke (item, cr);
break;
+ case GIMP_HANDLE_DROP:
+ case GIMP_HANDLE_FILLED_DROP:
+ cairo_move_to (cr, x + private->width, y);
+ gimp_cairo_arc (cr, x, y, (gdouble) private->width / 2.0,
+ G_PI / 3, G_PI * 4 / 3.);
+ cairo_close_path (cr);
+ if (private->type == GIMP_HANDLE_DROP)
+ _gimp_canvas_item_stroke (item, cr);
+ else
+ _gimp_canvas_item_fill (item, cr);
+ break;
+
default:
gimp_assert_not_reached ();
}
@@ -499,6 +515,14 @@ gimp_canvas_handle_get_extents (GimpCanvasItem *item)
rectangle.height = private->height + 4.0;
break;
+ case GIMP_HANDLE_DROP:
+ case GIMP_HANDLE_FILLED_DROP:
+ rectangle.x = x - private->width / 2.0 - 2.0;
+ rectangle.y = y - private->height / 2.0 - 2.0;
+ rectangle.width = private->width * 1.21 + 4.0;
+ rectangle.height = private->height + 4.0;
+ break;
+
default:
break;
}
@@ -549,6 +573,8 @@ gimp_canvas_handle_hit (GimpCanvasItem *item,
case GIMP_HANDLE_FILLED_CIRCLE:
case GIMP_HANDLE_CROSS:
case GIMP_HANDLE_CROSSHAIR:
+ case GIMP_HANDLE_DROP:
+ case GIMP_HANDLE_FILLED_DROP:
{
gint width = private->width;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]