[gimp] app: add gimp_tool_widget_add_polygon() and add_polygon_from_coords()



commit 9e2a3c7aeea6169fe3fff357f4841f5db019f0df
Author: Michael Natterer <mitch gimp org>
Date:   Fri Jun 23 01:44:56 2017 +0200

    app: add gimp_tool_widget_add_polygon() and add_polygon_from_coords()

 app/display/gimptoolwidget.c |   45 ++++++++++++++++++++++++++++++++++
 app/display/gimptoolwidget.h |   55 +++++++++++++++++++++++++----------------
 2 files changed, 78 insertions(+), 22 deletions(-)
---
diff --git a/app/display/gimptoolwidget.c b/app/display/gimptoolwidget.c
index d2d3374..cae5df4 100644
--- a/app/display/gimptoolwidget.c
+++ b/app/display/gimptoolwidget.c
@@ -31,6 +31,7 @@
 #include "gimpcanvashandle.h"
 #include "gimpcanvasline.h"
 #include "gimpcanvaspath.h"
+#include "gimpcanvaspolygon.h"
 #include "gimpcanvastransformguides.h"
 #include "gimpdisplayshell.h"
 #include "gimptoolwidget.h"
@@ -386,6 +387,50 @@ gimp_tool_widget_add_line (GimpToolWidget *widget,
 }
 
 GimpCanvasItem *
+gimp_tool_widget_add_polygon (GimpToolWidget    *widget,
+                              GimpMatrix3       *transform,
+                              const GimpVector2 *points,
+                              gint               n_points,
+                              gboolean           filled)
+{
+  GimpCanvasItem *item;
+
+  g_return_val_if_fail (GIMP_IS_TOOL_WIDGET (widget), NULL);
+  g_return_val_if_fail (points == NULL || n_points > 0, NULL);
+
+  item = gimp_canvas_polygon_new (widget->private->shell,
+                                  points, n_points,
+                                  transform, filled);
+
+  gimp_tool_widget_add_item (widget, item);
+  g_object_unref (item);
+
+  return item;
+}
+
+GimpCanvasItem *
+gimp_tool_widget_add_polygon_from_coords (GimpToolWidget    *widget,
+                                          GimpMatrix3       *transform,
+                                          const GimpCoords  *points,
+                                          gint               n_points,
+                                          gboolean           filled)
+{
+  GimpCanvasItem *item;
+
+  g_return_val_if_fail (GIMP_IS_TOOL_WIDGET (widget), NULL);
+  g_return_val_if_fail (points == NULL || n_points > 0, NULL);
+
+  item = gimp_canvas_polygon_new_from_coords (widget->private->shell,
+                                              points, n_points,
+                                              transform, filled);
+
+  gimp_tool_widget_add_item (widget, item);
+  g_object_unref (item);
+
+  return item;
+}
+
+GimpCanvasItem *
 gimp_tool_widget_add_handle (GimpToolWidget   *widget,
                              GimpHandleType    type,
                              gdouble           x,
diff --git a/app/display/gimptoolwidget.h b/app/display/gimptoolwidget.h
index b9536dc..108f4a7 100644
--- a/app/display/gimptoolwidget.h
+++ b/app/display/gimptoolwidget.h
@@ -132,29 +132,40 @@ void               gimp_tool_widget_pop_group        (GimpToolWidget  *widget);
 
 /*  for subclasses, convenience functions to add specific items
  */
-GimpCanvasItem * gimp_tool_widget_add_line   (GimpToolWidget       *widget,
-                                              gdouble               x1,
-                                              gdouble               y1,
-                                              gdouble               x2,
-                                              gdouble               y2);
-GimpCanvasItem * gimp_tool_widget_add_handle (GimpToolWidget       *widget,
-                                              GimpHandleType        type,
-                                              gdouble               x,
-                                              gdouble               y,
-                                              gint                  width,
-                                              gint                  height,
-                                              GimpHandleAnchor      anchor);
+GimpCanvasItem * gimp_tool_widget_add_line    (GimpToolWidget       *widget,
+                                               gdouble               x1,
+                                               gdouble               y1,
+                                               gdouble               x2,
+                                               gdouble               y2);
+GimpCanvasItem * gimp_tool_widget_add_polygon (GimpToolWidget       *widget,
+                                               GimpMatrix3          *transform,
+                                               const GimpVector2    *points,
+                                               gint                  n_points,
+                                               gboolean              filled);
+GimpCanvasItem * gimp_tool_widget_add_polygon_from_coords
+                                              (GimpToolWidget       *widget,
+                                               GimpMatrix3          *transform,
+                                               const GimpCoords     *points,
+                                               gint                  n_points,
+                                               gboolean              filled);
+GimpCanvasItem * gimp_tool_widget_add_handle  (GimpToolWidget       *widget,
+                                               GimpHandleType        type,
+                                               gdouble               x,
+                                               gdouble               y,
+                                               gint                  width,
+                                               gint                  height,
+                                               GimpHandleAnchor      anchor);
 GimpCanvasItem * gimp_tool_widget_add_transform_guides
-                                             (GimpToolWidget       *widget,
-                                              const GimpMatrix3    *transform,
-                                              gdouble               x1,
-                                              gdouble               y1,
-                                              gdouble               x2,
-                                              gdouble               y2,
-                                              GimpGuidesType        type,
-                                              gint                  n_guides);
-GimpCanvasItem * gimp_tool_widget_add_path   (GimpToolWidget       *widget,
-                                              const GimpBezierDesc *desc);
+                                              (GimpToolWidget       *widget,
+                                               const GimpMatrix3    *transform,
+                                               gdouble               x1,
+                                               gdouble               y1,
+                                               gdouble               x2,
+                                               gdouble               y2,
+                                               GimpGuidesType        type,
+                                               gint                  n_guides);
+GimpCanvasItem * gimp_tool_widget_add_path    (GimpToolWidget       *widget,
+                                               const GimpBezierDesc *desc);
 
 /*  for tools, to be called from the respective GimpTool method
  *  implementations


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]