app: add gimp_canvas_polygon_new_from_coords()
and use it from gimp_draw_tool_draw_strokes().
This commit is contained in:
@ -282,3 +282,30 @@ gimp_canvas_polygon_new (const GimpVector2 *points,
|
|||||||
|
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GimpCanvasItem *
|
||||||
|
gimp_canvas_polygon_new_from_coords (const GimpCoords *points,
|
||||||
|
gint n_points,
|
||||||
|
gboolean filled)
|
||||||
|
{
|
||||||
|
GimpCanvasItem *item;
|
||||||
|
GimpCanvasPolygonPrivate *private;
|
||||||
|
gint i;
|
||||||
|
|
||||||
|
item = g_object_new (GIMP_TYPE_CANVAS_POLYGON,
|
||||||
|
"filled", filled,
|
||||||
|
NULL);
|
||||||
|
private = GET_PRIVATE (item);
|
||||||
|
|
||||||
|
/* puke */
|
||||||
|
private->points = g_new (GimpVector2, n_points);
|
||||||
|
private->n_points = n_points;
|
||||||
|
|
||||||
|
for (i = 0; i < n_points; i++)
|
||||||
|
{
|
||||||
|
private->points[i].x = points[i].x;
|
||||||
|
private->points[i].y = points[i].y;
|
||||||
|
}
|
||||||
|
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
@ -52,6 +52,9 @@ GType gimp_canvas_polygon_get_type (void) G_GNUC_CONST;
|
|||||||
GimpCanvasItem * gimp_canvas_polygon_new (const GimpVector2 *points,
|
GimpCanvasItem * gimp_canvas_polygon_new (const GimpVector2 *points,
|
||||||
gint n_points,
|
gint n_points,
|
||||||
gboolean filled);
|
gboolean filled);
|
||||||
|
GimpCanvasItem * gimp_canvas_polygon_new_from_coords (const GimpCoords *points,
|
||||||
|
gint n_points,
|
||||||
|
gboolean filled);
|
||||||
|
|
||||||
|
|
||||||
#endif /* __GIMP_CANVAS_POLYGON_H__ */
|
#endif /* __GIMP_CANVAS_POLYGON_H__ */
|
||||||
|
@ -1410,9 +1410,20 @@ gimp_draw_tool_draw_strokes (GimpDrawTool *draw_tool,
|
|||||||
|
|
||||||
g_return_if_fail (GIMP_IS_DRAW_TOOL (draw_tool));
|
g_return_if_fail (GIMP_IS_DRAW_TOOL (draw_tool));
|
||||||
|
|
||||||
if (n_points == 0)
|
if (points == NULL || n_points < 2)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (draw_tool->use_cairo)
|
||||||
|
{
|
||||||
|
GimpCanvasItem *item;
|
||||||
|
|
||||||
|
item = gimp_canvas_polygon_new_from_coords (points, n_points, filled);
|
||||||
|
|
||||||
|
draw_tool->items = g_list_append (draw_tool->items, item);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
shell = gimp_display_get_shell (draw_tool->display);
|
shell = gimp_display_get_shell (draw_tool->display);
|
||||||
|
|
||||||
coords = g_new (GdkPoint, n_points);
|
coords = g_new (GdkPoint, n_points);
|
||||||
|
Reference in New Issue
Block a user