<!-- ##### SECTION Title ##### -->
mate-canvas-util

<!-- ##### SECTION Short_Description ##### -->
Canvas utility functions

<!-- ##### SECTION Long_Description ##### -->
<para>
Some useful canvas utility functions.
</para>

<para>
The #MateCanvasPoints structure manages an array of points (X and Y
coordinates) and is used by #MateCanvasLine and #MateCanvasPolygon canvas
items.
</para>

<para>
To create a #MateCanvasPoints structure call mate_canvas_points_new() and
when finished using it call mate_canvas_points_free().
</para>

<para>
Of note is that the #MateCanvasPoints structure is actually managed
by a reference count, so it won't be freed until this count reaches
0. To increment its reference count call mate_canvas_points_ref() and
to decrement it call mate_canvas_points_unref().
</para>

<!-- ##### SECTION See_Also ##### -->
<para>

</para>

<!-- ##### SECTION Stability_Level ##### -->


<!-- ##### SECTION Image ##### -->


<!-- ##### STRUCT MateCanvasPoints ##### -->
<para>
A structure to manage an array of points (X and Y coordinates). The memory
management of this structure is handled with functions below, but the point
coordinates are meant to be written directly into the array pointed to by
the <structfield>coords</structfield> field.
</para>

@coords: Array of coordinates (num_points * 2 in size), X coordinates are
stored in the even-numbered indices, and Y coordinates are stored in the
odd-numbered indices.
@num_points: Read-only - Number of points in this array.
@ref_count: Read-only - Count of references to this array of points

<!-- ##### FUNCTION mate_canvas_points_new ##### -->
<para>

</para>

@num_points: 
@Returns: 


<!-- ##### FUNCTION mate_canvas_points_ref ##### -->
<para>

</para>

@points: 
@Returns: 


<!-- ##### MACRO mate_canvas_points_unref ##### -->
<para>
A synonym for mate_canvas_points_free(). It decrements a #MateCanvasPoints
reference by 1 and frees it when there are no more references.
</para>



<!-- ##### FUNCTION mate_canvas_points_free ##### -->
<para>

</para>

@points: 


<!-- ##### FUNCTION mate_canvas_get_miter_points ##### -->
<para>

</para>

@x1: 
@y1: 
@x2: 
@y2: 
@x3: 
@y3: 
@width: 
@mx1: 
@my1: 
@mx2: 
@my2: 
@Returns: 


<!-- ##### FUNCTION mate_canvas_get_butt_points ##### -->
<para>

</para>

@x1: 
@y1: 
@x2: 
@y2: 
@width: 
@project: 
@bx1: 
@by1: 
@bx2: 
@by2: 


<!-- ##### FUNCTION mate_canvas_polygon_to_point ##### -->
<para>

</para>

@poly: 
@num_points: 
@x: 
@y: 
@Returns: 


<!-- ##### FUNCTION mate_canvas_render_svp ##### -->
<para>

</para>

@buf: 
@svp: 
@rgba: 


<!-- ##### FUNCTION mate_canvas_update_svp ##### -->
<para>

</para>

@canvas: 
@p_svp: 
@new_svp: 


<!-- ##### FUNCTION mate_canvas_update_svp_clip ##### -->
<para>

</para>

@canvas: 
@p_svp: 
@new_svp: 
@clip_svp: 


<!-- ##### FUNCTION mate_canvas_item_reset_bounds ##### -->
<para>

</para>

@item: 


<!-- ##### FUNCTION mate_canvas_item_update_svp ##### -->
<para>

</para>

@item: 
@p_svp: 
@new_svp: 


<!-- ##### FUNCTION mate_canvas_item_update_svp_clip ##### -->
<para>

</para>

@item: 
@p_svp: 
@new_svp: 
@clip_svp: 


<!-- ##### FUNCTION mate_canvas_item_request_redraw_svp ##### -->
<para>

</para>

@item: 
@svp: 


<!-- ##### FUNCTION mate_canvas_update_bbox ##### -->
<para>

</para>

@item: 
@x1: 
@y1: 
@x2: 
@y2: 


<!-- ##### FUNCTION mate_canvas_buf_ensure_buf ##### -->
<para>

</para>

@buf: 


<!-- ##### FUNCTION mate_canvas_join_gdk_to_art ##### -->
<para>

</para>

@gdk_join: 
@Returns: 


<!-- ##### FUNCTION mate_canvas_cap_gdk_to_art ##### -->
<para>

</para>

@gdk_cap: 
@Returns: 


