## GocGroup

GocGroup — Group item

## Functions

void | goc_group_add_child ()
void | goc_group_adjust_bounds ()
void | goc_group_adjust_coords ()
void | goc_group_cairo_transform ()
void | goc_group_clear ()
int | goc_group_find_child ()
void | goc_group_freeze ()
GocItem * | goc_group_get_child ()
GPtrArray * | goc_group_get_children ()
GocGroup * | goc_group_new ()
void | goc_group_remove_child ()
void | goc_group_set_clip_path ()

## Types and Values

| GocGroup
struct | GocGroupClass

## Object Hierarchy

        GObject
        ╰── GocItem
            ╰── GocGroup

## Description

A GocGroup is a GocItem which just contains other items.

The contents of the canvas are stored as a tree where GocGroup items are branches and other items are leafs.

## Functions

### goc_group_add_child ()

    void
    goc_group_add_child (GocGroup *parent,
                         GocItem *item);

Adds `item` as a new child to `parent` .

#### Parameters

parent | GocGroup |
item | GocItem |

### goc_group_adjust_bounds ()

    void
    goc_group_adjust_bounds (GocGroup const *group,
                             double *x0,
                             double *y0,
                             double *x1,
                             double *y1);

Adds `group` horizontal offset to `x0` and `x1` , and vertical offset to `y0` and `y1` . This function is called recursively so that when returning `x0` , `y0` , `x1` , and `y1` are absolute coordinates in canvas space,

#### Parameters

group | GocGroup |
x0 | first horizontal coordinate |
y0 | first vertical coordinate |
x1 | last horizontal coordinate |
y1 | last vertical coordinate |

### goc_group_adjust_coords ()

    void
    goc_group_adjust_coords (GocGroup const *group,
                             double *x,
                             double *y);

Adds `group` horizontal offset to `x0` , and vertical offset to `y0` . This function is called recursively so that when returning `x0` and `y0` are absolute coordinates in canvas space,

#### Parameters

group | GocGroup |
x | horizontal coordinate |
y | vertical coordinate |

### goc_group_cairo_transform ()

    void
    goc_group_cairo_transform (GocGroup const *group,
                               cairo_t *cr,
                               double x,
                               double y);

Translates `cr` current context so that operations start at (`x` ,`y` ), which are `group` relative coordinates, and is scaled according to the containing GocCanvas current scale (see `goc_canvas_get_pixels_per_unit()`). The translation takes all `group` ancestors into account.

This function does not call `cairo_save()`.

[skip]

#### Parameters

group | GocGroup |
cr | cairo_t |
x | horizontal coordinate |
y | vertical coordinate |

### goc_group_clear ()

    void
    goc_group_clear (GocGroup *group);

Destroys all `group` children.

#### Parameters

group | GocGroup |

### goc_group_find_child ()

    int
    goc_group_find_child (GocGroup *group,
                          GocItem *item);

#### Parameters

group | GocGroup |
item | GocItem |

#### Returns

The index of `item` in `group` , or -1 if `item` is not in `group` .

### goc_group_freeze ()

    void
    goc_group_freeze (GocGroup *group,
                      gboolean freeze);

### goc_group_get_child ()

    GocItem *
    goc_group_get_child (GocGroup *group,
                         unsigned  n);

#### Parameters

group | GocGroup |
n | number |

#### Returns

The `n` 'th item, zero-bases, in the group or `NULL` if `n` is too big.

[transfer none][nullable]

### goc_group_get_children ()

    GPtrArray *
    goc_group_get_children (GocGroup *group);

#### Parameters

group | GocGroup |

#### Returns

An array of the items in `group` .

[transfer container][element-type GocItem]

### goc_group_new ()

    GocGroup *
    goc_group_new (GocGroup *parent);

Creates a new GocGroup as a child of `parent` .

#### Parameters

parent | GocGroup |

#### Returns

the newly created GocGroup.

[transfer none]

### goc_group_remove_child ()

    void
    goc_group_remove_child (GocGroup *parent,
                            GocItem *item);

Removes `item` from `parent` . This function will fail if `item` is not a child of `parent` .

#### Parameters

parent | GocGroup |
item | GocItem |

### goc_group_set_clip_path ()

    void
    goc_group_set_clip_path (GocGroup *group,
                             GOPath *clip_path,
                             cairo_fill_rule_t clip_rule);

Clips the drawing inside `path` .

[skip]

#### Parameters

group | GocGroup |
clip_path | GOPath |
clip_rule | cairo_fill_rule_t |

## Types and Values

### GocGroup

    typedef struct _GocGroup GocGroup;

### struct GocGroupClass

    struct GocGroupClass {
    	GocItemClass base;
    };

#### Members

GocItemClass `base`; | base class. |