## gnome-canvas-util

gnome-canvas-util

## Functions

GnomeCanvasPoints * | gnome_canvas_points_new ()
GnomeCanvasPoints * | gnome_canvas_points_ref ()
void | gnome_canvas_points_free ()
int | gnome_canvas_get_miter_points ()
void | gnome_canvas_get_butt_points ()
double | gnome_canvas_polygon_to_point ()
void | gnome_canvas_render_svp ()
void | gnome_canvas_update_svp ()
void | gnome_canvas_update_svp_clip ()
void | gnome_canvas_item_reset_bounds ()
void | gnome_canvas_item_update_svp ()
void | gnome_canvas_item_update_svp_clip ()
void | gnome_canvas_item_request_redraw_svp ()
void | gnome_canvas_update_bbox ()
void | gnome_canvas_buf_ensure_buf ()
ArtPathStrokeJoinType | gnome_canvas_join_gdk_to_art ()
ArtPathStrokeCapType | gnome_canvas_cap_gdk_to_art ()

## Types and Values

struct | GnomeCanvasPoints
#define | gnome_canvas_points_unref

## Object Hierarchy

        GBoxed
        ╰── GnomeCanvasPoints

## Includes

    #include <libgnomecanvas/libgnomecanvas.h>

## Description

## Functions

### gnome_canvas_points_new ()

    GnomeCanvasPoints *
    gnome_canvas_points_new (int num_points);

Creates a structure that should be used to pass an array of points to items.

#### Parameters

num_points | The number of points to allocate space for in the array. |

#### Returns

A newly-created array of points. It should be filled in by the user.

### gnome_canvas_points_ref ()

    GnomeCanvasPoints *
    gnome_canvas_points_ref (GnomeCanvasPoints *points);

Increases the reference count of the specified points structure.

#### Parameters

points | A canvas points structure. |

#### Returns

The canvas points structure itself.

### gnome_canvas_points_free ()

    void
    gnome_canvas_points_free (GnomeCanvasPoints *points);

Decreases the reference count of the specified points structure. If it reaches zero, then the structure is freed.

#### Parameters

points | A canvas points structure. |

### gnome_canvas_get_miter_points ()

    int
    gnome_canvas_get_miter_points (double x1,
                                   double y1,
                                   double x2,
                                   double y2,
                                   double x3,
                                   double y3,
                                   double width,
                                   double *mx1,
                                   double *my1,
                                   double *mx2,
                                   double *my2);

Given three points forming an angle, computes the coordinates of the inside and outside points of the mitered corner formed by a line of a given width at that angle.

#### Parameters

x1 | X coordinate of the first point |
y1 | Y coordinate of the first point |
x2 | X coordinate of the second (angle) point |
y2 | Y coordinate of the second (angle) point |
x3 | X coordinate of the third point |
y3 | Y coordinate of the third point |
width | Width of the line |
mx1 | The X coordinate of the first miter point is returned here. |
my1 | The Y coordinate of the first miter point is returned here. |
mx2 | The X coordinate of the second miter point is returned here. |
my2 | The Y coordinate of the second miter point is returned here. |

#### Returns

FALSE if the angle is less than 11 degrees (this is the same threshold as X uses. If this occurs, the return points are not modified. Otherwise, returns TRUE.

### gnome_canvas_get_butt_points ()

    void
    gnome_canvas_get_butt_points (double x1,
                                  double y1,
                                  double x2,
                                  double y2,
                                  double width,
                                  int project,
                                  double *bx1,
                                  double *by1,
                                  double *bx2,
                                  double *by2);

Computes the butt points of a line segment.

#### Parameters

x1 | X coordinate of first point in the line |
y1 | Y cooordinate of first point in the line |
x2 | X coordinate of second point (endpoint) of the line |
y2 | Y coordinate of second point (endpoint) of the line |
width | Width of the line |
project | Whether the butt points should project out by width/2 distance |
bx1 | X coordinate of first butt point is returned here |
by1 | Y coordinate of first butt point is returned here |
bx2 | X coordinate of second butt point is returned here |
by2 | Y coordinate of second butt point is returned here |

### gnome_canvas_polygon_to_point ()

    double
    gnome_canvas_polygon_to_point (double *poly,
                                   int num_points,
                                   double x,
                                   double y);

Computes the distance between a point and a polygon.

#### Parameters

poly | Vertices of the polygon. X coordinates are in the even indices, and Y coordinates are in the odd indices |
num_points | Number of points in the polygon |
x | X coordinate of the point |
y | Y coordinate of the point |

#### Returns

The distance from the point to the polygon, or zero if the point is inside the polygon.

### gnome_canvas_render_svp ()

    void
    gnome_canvas_render_svp (GnomeCanvasBuf *buf,
                             ArtSVP *svp,
                             guint32 rgba);

Render the svp over the buf.

#### Parameters

buf | the canvas buffer to render over |
svp | the vector path to render |
rgba | the rgba color to render |

### gnome_canvas_update_svp ()

    void
    gnome_canvas_update_svp (GnomeCanvas *canvas,
                             ArtSVP **p_svp,
                             ArtSVP *new_svp);

Sets the svp to the new value, requesting repaint on what's changed. This function takes responsibility for freeing new_svp.

#### Parameters

canvas | the canvas containing the svp that needs updating. |
p_svp | a pointer to the existing svp |
new_svp | the new svp |

### gnome_canvas_update_svp_clip ()

    void
    gnome_canvas_update_svp_clip (GnomeCanvas *canvas,
                                  ArtSVP **p_svp,
                                  ArtSVP *new_svp,
                                  ArtSVP *clip_svp);

Sets the svp to the new value, clipping if necessary, and requesting repaint on what's changed. This function takes responsibility for freeing new_svp.

#### Parameters

canvas | the canvas containing the svp that needs updating. |
p_svp | a pointer to the existing svp |
new_svp | the new svp |
clip_svp | a clip path, if non-null |

### gnome_canvas_item_reset_bounds ()

    void
    gnome_canvas_item_reset_bounds (GnomeCanvasItem *item);

Resets the bounding box of a canvas item to an empty rectangle.

#### Parameters

item | A canvas item |

### gnome_canvas_item_update_svp ()

    void
    gnome_canvas_item_update_svp (GnomeCanvasItem *item,
                                  ArtSVP **p_svp,
                                  ArtSVP *new_svp);

Sets the svp to the new value, requesting repaint on what's changed. This function takes responsibility for freeing new_svp. This routine also adds the svp's bbox to the item's.

#### Parameters

item | the canvas item containing the svp that needs updating. |
p_svp | a pointer to the existing svp |
new_svp | the new svp |

### gnome_canvas_item_update_svp_clip ()

    void
    gnome_canvas_item_update_svp_clip (GnomeCanvasItem *item,
                                       ArtSVP **p_svp,
                                       ArtSVP *new_svp,
                                       ArtSVP *clip_svp);

Sets the svp to the new value, clipping if necessary, and requesting repaint on what's changed. This function takes responsibility for freeing new_svp.

#### Parameters

item | the canvas item containing the svp that needs updating. |
p_svp | a pointer to the existing svp |
new_svp | the new svp |
clip_svp | a clip path, if non-null |

### gnome_canvas_item_request_redraw_svp ()

    void
    gnome_canvas_item_request_redraw_svp (GnomeCanvasItem *item,
                                          const ArtSVP *svp);

Request redraw of the svp if in aa mode, or the entire item in in xlib mode.

#### Parameters

item | the item containing the svp |
svp | the svp that needs to be redrawn |

### gnome_canvas_update_bbox ()

    void
    gnome_canvas_update_bbox (GnomeCanvasItem *item,
                              int x1,
                              int y1,
                              int x2,
                              int y2);

Sets the bbox to the new value, requesting full repaint.

#### Parameters

item | the canvas item needing update |
x1 | Left coordinate of the new bounding box |
y1 | Top coordinate of the new bounding box |
x2 | Right coordinate of the new bounding box |
y2 | Bottom coordinate of the new bounding box |

### gnome_canvas_buf_ensure_buf ()

    void
    gnome_canvas_buf_ensure_buf (GnomeCanvasBuf *buf);

Ensure that the buffer is in RGB format, suitable for compositing.

#### Parameters

buf | the buf that needs to be represened in RGB format |

### gnome_canvas_join_gdk_to_art ()

    ArtPathStrokeJoinType
    gnome_canvas_join_gdk_to_art (GdkJoinStyle gdk_join);

Convert from GDK line join specifier to libart.

#### Parameters

gdk_join | a join type, represented in GDK format |

#### Returns

The line join specifier in libart format.

### gnome_canvas_cap_gdk_to_art ()

    ArtPathStrokeCapType
    gnome_canvas_cap_gdk_to_art (GdkCapStyle gdk_cap);

Convert from GDK line cap specifier to libart.

#### Parameters

gdk_cap | a cap type, represented in GDK format |

#### Returns

The line cap specifier in libart format.

## Types and Values

### struct GnomeCanvasPoints

    struct GnomeCanvasPoints {
    	double *coords;
    	int num_points;
    	int ref_count;
    };

### gnome_canvas_points_unref

    #define             gnome_canvas_points_unref