## GooCanvas Types GooCanvas Types — types used in GooCanvas. |

## Functions

GooCanvasPoints * | goo_canvas_points_new ()
void | goo_canvas_points_get_point ()
void | goo_canvas_points_set_point ()
GooCanvasPoints * | goo_canvas_points_ref ()
void | goo_canvas_points_unref ()
GooCanvasLineDash * | goo_canvas_line_dash_new ()
GooCanvasLineDash * | goo_canvas_line_dash_newv ()
GooCanvasLineDash * | goo_canvas_line_dash_ref ()
void | goo_canvas_line_dash_unref ()
void | goo_canvas_line_dash_set_offset ()
GArray * | goo_canvas_parse_path_data ()
void | goo_canvas_create_path ()

## Types and Values

struct | GooCanvasBounds
enum | GooCanvasItemVisibility
enum | GooCanvasPointerEvents
enum | GooCanvasAnimateType
enum | GooCanvasAnchorType
struct | GooCanvasPoints
struct | GooCanvasLineDash
enum | GooCanvasPathCommandType
union | GooCanvasPathCommand
typedef | GooCairoAntialias
typedef | GooCairoFillRule
typedef | GooCairoHintMetrics
typedef | GooCairoLineCap
typedef | GooCairoLineJoin
typedef | GooCairoOperator
typedef | GooCairoMatrix
typedef | GooCairoPattern

## Object Hierarchy

        GBoxed
        ├── GooCairoMatrix
        ├── GooCairoPattern
        ├── GooCanvasLineDash
        ╰── GooCanvasPoints
        GEnum
        ├── GooCairoAntialias
        ├── GooCairoFillRule
        ├── GooCairoHintMetrics
        ├── GooCairoLineCap
        ├── GooCairoLineJoin
        ├── GooCairoOperator
        ├── GooCanvasAnchorType
        ├── GooCanvasAnimateType
        ├── GooCanvasItemVisibility
        ╰── GooCanvasPathCommandType
        GFlags
        ╰── GooCanvasPointerEvents

## Description

This section describes the types used throughout GooCanvas.

## Functions

### goo_canvas_points_new ()

    GooCanvasPoints *
    goo_canvas_points_new (int num_points);

Creates a new GooCanvasPoints struct with space for the given number of points. It should be freed with `goo_canvas_points_unref()`.

#### Parameters

num_points | the number of points to create space for. |

#### Returns

a new GooCanvasPoints struct.

[transfer full]

### goo_canvas_points_get_point ()

    void
    goo_canvas_points_get_point (GooCanvasPoints *points,
                                 int idx,
                                 double *x,
                                 double *y);

Gets the coordinates of a point in the GooCanvasPoints struct.

#### Parameters

points | a GooCanvasPoints struct. |
idx | index of point to get. |
x | location to store x coordinate. | [out]
y | location to store y coordinate. | [out]

Since: 2.0.1

### goo_canvas_points_set_point ()

    void
    goo_canvas_points_set_point (GooCanvasPoints *points,
                                 int idx,
                                 double x,
                                 double y);

Sets the coordinates of a point in the GooCanvasPoints struct.

#### Parameters

points | a GooCanvasPoints struct. |
idx | index of point to set. |
x | x value to set point coordinate to. |
y | y value to set point coordinate to. |

Since: 2.0.1

### goo_canvas_points_ref ()

    GooCanvasPoints *
    goo_canvas_points_ref (GooCanvasPoints *points);

Increments the reference count of the given GooCanvasPoints struct.

#### Parameters

points | a GooCanvasPoints struct. |

#### Returns

the GooCanvasPoints struct.

### goo_canvas_points_unref ()

    void
    goo_canvas_points_unref (GooCanvasPoints *points);

Decrements the reference count of the given GooCanvasPoints struct, freeing it if the reference count falls to zero.

#### Parameters

points | a GooCanvasPoints struct. |

### goo_canvas_line_dash_new ()

    GooCanvasLineDash *
    goo_canvas_line_dash_new (gint num_dashes,
                              ...);

Creates a new dash pattern.

#### Parameters

num_dashes | the number of dashes and gaps in the pattern. |
... | the length of each dash and gap. |

#### Returns

a new dash pattern.

### goo_canvas_line_dash_newv ()

    GooCanvasLineDash *
    goo_canvas_line_dash_newv (gint num_dashes,
                               double *dashes);

Creates a new dash pattern. Takes ownership of the `dashes` vector.

#### Parameters

num_dashes | the number of dashes and gaps in the pattern. |
dashes | a g_new-allocated vector of doubles, the length of each dash and gap. | [array length=num_dashes][transfer full]

#### Returns

a new dash pattern.

### goo_canvas_line_dash_ref ()

    GooCanvasLineDash *
    goo_canvas_line_dash_ref (GooCanvasLineDash *dash);

Increments the reference count of the dash pattern.

#### Parameters

dash | a GooCanvasLineDash. |

#### Returns

the dash pattern.

### goo_canvas_line_dash_unref ()

    void
    goo_canvas_line_dash_unref (GooCanvasLineDash *dash);

Decrements the reference count of the dash pattern. If it falls to 0 it is freed.

#### Parameters

dash | a GooCanvasLineDash. |

### goo_canvas_line_dash_set_offset ()

    void
    goo_canvas_line_dash_set_offset (GooCanvasLineDash *dash,
                                     double dash_offset);

Sets the start offset into the dash pattern.

#### Parameters

dash | a GooCanvasLinedash. |
dash_offset | the start offset into the dash pattern. |

Since: 2.0.2

### goo_canvas_parse_path_data ()

    GArray *
    goo_canvas_parse_path_data (const gchar *path_data);

Parses the given SVG path specification string.

#### Parameters

path_data | the sequence of path commands, specified as a string using the same syntax as in the Scalable Vector Graphics (SVG) path element. |

#### Returns

a GArray of GooCanvasPathCommand elements.

[element-type GooCanvasPathCommand][transfer full]

### goo_canvas_create_path ()

    void
    goo_canvas_create_path (GArray *commands,
                            cairo_t *cr);

Creates the path specified by the given GooCanvasPathCommand array.

#### Parameters

commands | an array of GooCanvasPathCommand. | [element-type GooCanvasPathCommand]
cr | a cairo context. |

## Types and Values

### struct GooCanvasBounds

    struct GooCanvasBounds {
      gdouble x1, y1, x2, y2;
    };

GooCanvasBounds represents the bounding box of an item in the canvas.

#### Members

gdouble `x1`; | the left edge. |
gdouble `y1`; | the top edge. |
gdouble `x2`; | the right edge. |
gdouble `y2`; | the bottom edge. |

### enum GooCanvasItemVisibility

The GooCanvasItemVisibility enumeration is used to specify when a canvas item is visible.

#### Members

GOO_CANVAS_ITEM_HIDDEN | the item is invisible, and is not allocated any space in layout container items such as GooCanvasTable. |
GOO_CANVAS_ITEM_INVISIBLE | the item is invisible, but it is still allocated space in layout container items. |
GOO_CANVAS_ITEM_VISIBLE | the item is visible. |
GOO_CANVAS_ITEM_VISIBLE_ABOVE_THRESHOLD | the item is visible when the canvas scale setting is greater than or equal to the item's visibility threshold setting. |

### enum GooCanvasPointerEvents

Specifies when an item receives pointer events such as mouse clicks.

#### Members

GOO_CANVAS_EVENTS_VISIBLE_MASK | a mask indicating that the item only receives events when it is visible. |
GOO_CANVAS_EVENTS_PAINTED_MASK | a mask indicating that the item only receives events when the specified parts of it are painted. |
GOO_CANVAS_EVENTS_FILL_MASK | a mask indicating that the filled part of the item receives events. |
GOO_CANVAS_EVENTS_STROKE_MASK | a mask indicating that the stroked part of the item receives events. |
GOO_CANVAS_EVENTS_NONE | the item doesn't receive events at all. |
GOO_CANVAS_EVENTS_VISIBLE_PAINTED | the item receives events in its painted areas when it is visible (the default). |
GOO_CANVAS_EVENTS_VISIBLE_FILL | the item's interior receives events when it is visible. |
GOO_CANVAS_EVENTS_VISIBLE_STROKE | the item's perimeter receives events when it is visible. |
GOO_CANVAS_EVENTS_VISIBLE | the item receives events when it is visible, whether it is painted or not. |
GOO_CANVAS_EVENTS_PAINTED | the item receives events in its painted areas, whether it is visible or not. |
GOO_CANVAS_EVENTS_FILL | the item's interior receives events, whether it is visible or painted or not. |
GOO_CANVAS_EVENTS_STROKE | the item's perimeter receives events, whether it is visible or painted or not. |
GOO_CANVAS_EVENTS_ALL | the item's perimeter and interior receive events, whether it is visible or painted or not. |

### enum GooCanvasAnimateType

GooCanvasAnimateType is used to specify what happens when the end of an animation is reached.

#### Members

GOO_CANVAS_ANIMATE_FREEZE | the item remains in the final position. |
GOO_CANVAS_ANIMATE_RESET | the item is moved back to the initial position. |
GOO_CANVAS_ANIMATE_RESTART | the animation is restarted from the initial position. |
GOO_CANVAS_ANIMATE_BOUNCE | the animation bounces back and forth between the start and end positions. |

### enum GooCanvasAnchorType

GooCanvasAnchorType is used to specify the positions of objects relative to a particular anchor point.

#### Members

GOO_CANVAS_ANCHOR_CENTER | the anchor is in the center of the object. |
GOO_CANVAS_ANCHOR_NORTH | the anchor is at the top of the object, centered horizontally. |
GOO_CANVAS_ANCHOR_NORTH_WEST | the anchor is at the top-left of the object. |
GOO_CANVAS_ANCHOR_NORTH_EAST | the anchor is at the top-right of the object. |
GOO_CANVAS_ANCHOR_SOUTH | the anchor is at the bottom of the object, centered horizontally. |
GOO_CANVAS_ANCHOR_SOUTH_WEST | the anchor is at the bottom-left of the object. |
GOO_CANVAS_ANCHOR_SOUTH_EAST | the anchor is at the bottom-right of the object. |
GOO_CANVAS_ANCHOR_WEST | the anchor is on the left of the object, centered vertically. |
GOO_CANVAS_ANCHOR_EAST | the anchor is on the right of the object, centered vertically. |
GOO_CANVAS_ANCHOR_N | see GOO_CANVAS_ANCHOR_NORTH. |
GOO_CANVAS_ANCHOR_NW | see GOO_CANVAS_ANCHOR_NORTH_WEST. |
GOO_CANVAS_ANCHOR_NE | see GOO_CANVAS_ANCHOR_NORTH_EAST. |
GOO_CANVAS_ANCHOR_S | see GOO_CANVAS_ANCHOR_SOUTH. |
GOO_CANVAS_ANCHOR_SW | see GOO_CANVAS_ANCHOR_SOUTH_WEST. |
GOO_CANVAS_ANCHOR_SE | see GOO_CANVAS_ANCHOR_SOUTH_EAST. |
GOO_CANVAS_ANCHOR_W | see GOO_CANVAS_ANCHOR_WEST. |
GOO_CANVAS_ANCHOR_E | see GOO_CANVAS_ANCHOR_EAST. |

### struct GooCanvasPoints

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

GooCairoPoints represents an array of points.

#### Members

double *`coords`; | the coordinates of the points, in pairs. |
int `num_points`; | the number of points. |
int `ref_count`; | the reference count of the struct. |

### struct GooCanvasLineDash

    struct GooCanvasLineDash {
      int ref_count;
      int num_dashes;
      double *dashes;
      double dash_offset;
    };

GooCanvasLineDash specifies a dash pattern to be used when drawing items.

#### Members

int `ref_count`; | the reference count of the struct. |
int `num_dashes`; | the number of dashes and gaps between them. |
double *`dashes`; | the sizes of each dash and gap. |
double `dash_offset`; | the start offset into the dash pattern. |

### enum GooCanvasPathCommandType

GooCanvasPathCommandType specifies the type of each command in the path. See the path element in the Scalable Vector Graphics (SVG) specification for more details.

#### Members

GOO_CANVAS_PATH_MOVE_TO | move to the given point. |
GOO_CANVAS_PATH_CLOSE_PATH | close the current path, drawing a line from the current position to the start of the path. |
GOO_CANVAS_PATH_LINE_TO | draw a line to the given point. |
GOO_CANVAS_PATH_HORIZONTAL_LINE_TO | draw a horizontal line to the given x coordinate. |
GOO_CANVAS_PATH_VERTICAL_LINE_TO | draw a vertical line to the given y coordinate. |
GOO_CANVAS_PATH_CURVE_TO | draw a bezier curve using two control points to the given point. |
GOO_CANVAS_PATH_SMOOTH_CURVE_TO | draw a bezier curve using a reflection of the last control point of the last curve as the first control point, and one new control point, to the given point. |
GOO_CANVAS_PATH_QUADRATIC_CURVE_TO | draw a quadratic bezier curve using a single control point to the given point. |
GOO_CANVAS_PATH_SMOOTH_QUADRATIC_CURVE_TO | draw a quadratic bezier curve using a reflection of the control point from the previous curve as the control point, to the given point. |
GOO_CANVAS_PATH_ELLIPTICAL_ARC | draw an elliptical arc, using the given 2 radii, the x axis rotation, and the 2 flags to disambiguate the arc, to the given point. |

### union GooCanvasPathCommand

GooCanvasPathCommand holds the data for each command in the path.

The `relative` flag specifies that the coordinates for the command are relative to the current point. Otherwise they are assumed to be absolute coordinates.

### GooCairoAntialias

GooCairoAntialias is simply a wrapper for the cairo_antialias_t type, allowing it to be used for GObject properties.

See the cairo_antialias_t documentation.

### GooCairoFillRule

GooCairoFillRule is simply a wrapper for the cairo_fill_rule_t type, allowing it to be used for GObject properties.

See the cairo_fill_rule_t documentation.

### GooCairoHintMetrics

GooCairoHintMetrics is simply a wrapper for the cairo_hint_metrics_t type, allowing it to be used for GObject properties.

See the cairo_hint_metrics_t documentation.

### GooCairoLineCap

GooCairoLineCap is simply a wrapper for the cairo_line_cap_t type, allowing it to be used for GObject properties.

See the cairo_line_cap_t documentation.

### GooCairoLineJoin

GooCairoLineJoin is simply a wrapper for the cairo_line_join_t type, allowing it to be used for GObject properties.

See the cairo_line_join_t documentation.

### GooCairoOperator

GooCairoOperator is simply a wrapper for the cairo_operator_t type, allowing it to be used for GObject properties.

See the cairo_operator_t documentation.

### GooCairoMatrix

GooCairoMatrix is simply a wrapper for the cairo_matrix_t type, allowing it to be used for GObject properties.

See the cairo_matrix_t documentation.

### GooCairoPattern

GooCairoPattern is simply a wrapper for the cairo_pattern_t type, allowing it to be used for GObject properties.

See the cairo_pattern_t documentation.