## ClutterGridLayout

ClutterGridLayout — A layout manager for a grid of actors

## Synopsis

    enum                ClutterGridPosition;
    struct              ClutterGridLayout;
    struct              ClutterGridLayoutClass;
    ClutterLayoutManager * clutter_grid_layout_new          (void);
    void                clutter_grid_layout_attach          (ClutterGridLayout *layout,
                                                             ClutterActor *child,
                                                             gint left,
                                                             gint top,
                                                             gint width,
                                                             gint height);
    void                clutter_grid_layout_attach_next_to  (ClutterGridLayout *layout,
                                                             ClutterActor *child,
                                                             ClutterActor *sibling,
                                                             ClutterGridPosition side,
                                                             gint width,
                                                             gint height);
    ClutterActor *      clutter_grid_layout_get_child_at    (ClutterGridLayout *layout,
                                                             gint left,
                                                             gint top);
    void                clutter_grid_layout_insert_column   (ClutterGridLayout *layout,
                                                             gint position);
    void                clutter_grid_layout_insert_row      (ClutterGridLayout *layout,
                                                             gint position);
    void                clutter_grid_layout_insert_next_to  (ClutterGridLayout *layout,
                                                             ClutterActor *sibling,
                                                             ClutterGridPosition side);

    void                clutter_grid_layout_set_orientation (ClutterGridLayout *layout,
                                                             ClutterOrientation orientation);
    ClutterOrientation  clutter_grid_layout_get_orientation (ClutterGridLayout *layout);
    void                clutter_grid_layout_set_column_homogeneous
                                                            (ClutterGridLayout *layout,
                                                             gboolean homogeneous);
    gboolean            clutter_grid_layout_get_column_homogeneous
                                                            (ClutterGridLayout *layout);
    void                clutter_grid_layout_set_row_homogeneous
                                                            (ClutterGridLayout *layout,
                                                             gboolean homogeneous);
    gboolean            clutter_grid_layout_get_row_homogeneous
                                                            (ClutterGridLayout *layout);
    void                clutter_grid_layout_set_column_spacing
                                                            (ClutterGridLayout *layout,
                                                             guint spacing);
    guint               clutter_grid_layout_get_column_spacing
                                                            (ClutterGridLayout *layout);
    void                clutter_grid_layout_set_row_spacing (ClutterGridLayout *layout,
                                                             guint spacing);
    guint               clutter_grid_layout_get_row_spacing (ClutterGridLayout *layout);

## Object Hierarchy

      GObject
       +----GInitiallyUnowned
             +----ClutterLayoutManager
                   +----ClutterGridLayout

## Properties

      "column-homogeneous"       gboolean              : Read / Write
      "column-spacing"           guint                 : Read / Write
      "orientation"              ClutterOrientation    : Read / Write
      "row-homogeneous"          gboolean              : Read / Write
      "row-spacing"              guint                 : Read / Write

## Description

ClutterGridLayout is a layout manager which arranges its child widgets in rows and columns. It is a very similar to ClutterTableLayout and ClutterBoxLayout, but it consistently uses ClutterActor's alignment and expansion flags instead of custom child properties.

Children are added using `clutter_grid_layout_attach()`. They can span multiple rows or columns. It is also possible to add a child next to an existing child, using `clutter_grid_layout_attach_next_to()`. The behaviour of ClutterGridLayout when several children occupy the same grid cell is undefined.

ClutterGridLayout can be used like a ClutterBoxLayout by just using `clutter_actor_add_child()`, which will place children next to each other in the direction determined by the "orientation" property.

## Details

### enum ClutterGridPosition

    typedef enum {
      CLUTTER_GRID_POSITION_LEFT,
      CLUTTER_GRID_POSITION_RIGHT,
      CLUTTER_GRID_POSITION_TOP,
      CLUTTER_GRID_POSITION_BOTTOM
    } ClutterGridPosition;

Grid position modes.

`CLUTTER_GRID_POSITION_LEFT` | left position
`CLUTTER_GRID_POSITION_RIGHT` | right position
`CLUTTER_GRID_POSITION_TOP` | top position
`CLUTTER_GRID_POSITION_BOTTOM` | bottom position

Since 1.12

### struct ClutterGridLayout

    struct ClutterGridLayout;

The ClutterGridLayout structure contains only private data and should be accessed using the provided API

Since 1.12

### struct ClutterGridLayoutClass

    struct ClutterGridLayoutClass {
    };

The ClutterGridLayoutClass structure contains only private data and should be accessed using the provided API

Since 1.12

### clutter_grid_layout_new ()

    ClutterLayoutManager * clutter_grid_layout_new          (void);

Creates a new ClutterGridLayout

Returns : | the new ClutterGridLayout

### clutter_grid_layout_attach ()

    void                clutter_grid_layout_attach          (ClutterGridLayout *layout,
                                                             ClutterActor *child,
                                                             gint left,
                                                             gint top,
                                                             gint width,
                                                             gint height);

Adds a widget to the grid.

The position of `child` is determined by `left` and `top`. The number of 'cells' that `child` will occupy is determined by `width` and `height`.

`layout` : | a ClutterGridLayout
`child` : | the ClutterActor to add
`left` : | the column number to attach the left side of `child` to
`top` : | the row number to attach the top side of `child` to
`width` : | the number of columns that `child` will span
`height` : | the number of rows that `child` will span

Since 1.12

### clutter_grid_layout_attach_next_to ()

    void                clutter_grid_layout_attach_next_to  (ClutterGridLayout *layout,
                                                             ClutterActor *child,
                                                             ClutterActor *sibling,
                                                             ClutterGridPosition side,
                                                             gint width,
                                                             gint height);

Adds a actor to the grid.

The actor is placed next to `sibling`, on the side determined by `side`. When `sibling` is `NULL`, the actor is placed in row (for left or right placement) or column 0 (for top or bottom placement), at the end indicated by `side`.

Attaching widgets labeled [1], [2], [3] with `sibling` == `NULL` and `side` == `CLUTTER_GRID_POSITION_LEFT` yields a layout of [3][2][1].

`layout` : | a ClutterGridLayout
`child` : | the actor to add
`sibling` : | the child of `layout` that `child` will be placed next to, or `NULL` to place `child` at the beginning or end. [allow-none]
`side` : | the side of `sibling` that `child` is positioned next to
`width` : | the number of columns that `child` will span
`height` : | the number of rows that `child` will span

Since 1.12

### clutter_grid_layout_get_child_at ()

    ClutterActor *      clutter_grid_layout_get_child_at    (ClutterGridLayout *layout,
                                                             gint left,
                                                             gint top);

Gets the child of `layout` whose area covers the grid cell whose upper left corner is at `left`, `top`.

`layout` : | a ClutterGridLayout
`left` : | the left edge of the cell
`top` : | the top edge of the cell
Returns : | the child at the given position, or `NULL`. [transfer none]

Since 1.12

### clutter_grid_layout_insert_column ()

    void                clutter_grid_layout_insert_column   (ClutterGridLayout *layout,
                                                             gint position);

Inserts a column at the specified position.

Children which are attached at or to the right of this position are moved one column to the right. Children which span across this position are grown to span the new column.

`layout` : | a ClutterGridLayout
`position` : | the position to insert the column at

Since 1.12

### clutter_grid_layout_insert_row ()

    void                clutter_grid_layout_insert_row      (ClutterGridLayout *layout,
                                                             gint position);

Inserts a row at the specified position.

Children which are attached at or below this position are moved one row down. Children which span across this position are grown to span the new row.

`layout` : | a ClutterGridLayout
`position` : | the position to insert the row at

Since 1.12

### clutter_grid_layout_insert_next_to ()

    void                clutter_grid_layout_insert_next_to  (ClutterGridLayout *layout,
                                                             ClutterActor *sibling,
                                                             ClutterGridPosition side);

Inserts a row or column at the specified position.

The new row or column is placed next to `sibling`, on the side determined by `side`. If `side` is `CLUTTER_GRID_POSITION_LEFT` or `CLUTTER_GRID_POSITION_BOTTOM`, a row is inserted. If `side` is `CLUTTER_GRID_POSITION_LEFT` of `CLUTTER_GRID_POSITION_RIGHT`, a column is inserted.

`layout` : | a ClutterGridLayout
`sibling` : | the child of `layout` that the new row or column will be placed next to
`side` : | the side of `sibling` that `child` is positioned next to

Since 1.12

### clutter_grid_layout_set_orientation ()

    void                clutter_grid_layout_set_orientation (ClutterGridLayout *layout,
                                                             ClutterOrientation orientation);

Sets the orientation of the `layout`

`layout` : | a ClutterGridLayout
`orientation` : | the orientation of the ClutterGridLayout

Since 1.12

### clutter_grid_layout_get_orientation ()

    ClutterOrientation  clutter_grid_layout_get_orientation (ClutterGridLayout *layout);

Retrieves the orientation of the `layout`.

`layout` : | a ClutterGridLayout
Returns : | the orientation of the layout

Since 1.12

### clutter_grid_layout_set_column_homogeneous ()

    void                clutter_grid_layout_set_column_homogeneous
                                                            (ClutterGridLayout *layout,
                                                             gboolean homogeneous);

Sets whether all columns of `layout` will have the same width.

`layout` : | a ClutterGridLayout
`homogeneous` : | `TRUE` to make columns homogeneous

Since 1.12

### clutter_grid_layout_get_column_homogeneous ()

    gboolean            clutter_grid_layout_get_column_homogeneous
                                                            (ClutterGridLayout *layout);

Returns whether all columns of `layout` have the same width.

`layout` : | a ClutterGridLayout
Returns : | whether all columns of `layout` have the same width.

### clutter_grid_layout_set_row_homogeneous ()

    void                clutter_grid_layout_set_row_homogeneous
                                                            (ClutterGridLayout *layout,
                                                             gboolean homogeneous);

Sets whether all rows of `layout` will have the same height.

`layout` : | a ClutterGridLayout
`homogeneous` : | `TRUE` to make rows homogeneous

Since 1.12

### clutter_grid_layout_get_row_homogeneous ()

    gboolean            clutter_grid_layout_get_row_homogeneous
                                                            (ClutterGridLayout *layout);

Returns whether all rows of `layout` have the same height.

`layout` : | a ClutterGridLayout
Returns : | whether all rows of `layout` have the same height.

Since 1.12

### clutter_grid_layout_set_column_spacing ()

    void                clutter_grid_layout_set_column_spacing
                                                            (ClutterGridLayout *layout,
                                                             guint spacing);

Sets the spacing between columns of `layout`

`layout` : | a ClutterGridLayout
`spacing` : | the spacing between columns of the layout, in pixels

Since 1.12

### clutter_grid_layout_get_column_spacing ()

    guint               clutter_grid_layout_get_column_spacing
                                                            (ClutterGridLayout *layout);

Retrieves the spacing set using `clutter_grid_layout_set_column_spacing()`

`layout` : | a ClutterGridLayout
Returns : | the spacing between coluns of `layout`

Since 1.12

### clutter_grid_layout_set_row_spacing ()

    void                clutter_grid_layout_set_row_spacing (ClutterGridLayout *layout,
                                                             guint spacing);

Sets the spacing between rows of `layout`

`layout` : | a ClutterGridLayout
`spacing` : | the spacing between rows of the layout, in pixels

Since 1.12

### clutter_grid_layout_get_row_spacing ()

    guint               clutter_grid_layout_get_row_spacing (ClutterGridLayout *layout);

Retrieves the spacing set using `clutter_grid_layout_set_row_spacing()`

`layout` : | a ClutterGridLayout
Returns : | the spacing between rows of `layout`

Since 1.12

## Property Details

### The `"column-homogeneous"` property

      "column-homogeneous"       gboolean              : Read / Write

Whether all columns of the layout should have the same width

Default value: FALSE

Since 1.12

### The `"column-spacing"` property

      "column-spacing"           guint                 : Read / Write

The amount of space in pixels between two consecutive columns

Default value: 0

Since 1.12

### The `"orientation"` property

      "orientation"              ClutterOrientation    : Read / Write

The orientation of the layout, either horizontal or vertical

Default value: CLUTTER_ORIENTATION_HORIZONTAL

Since 1.12

### The `"row-homogeneous"` property

      "row-homogeneous"          gboolean              : Read / Write

Whether all rows of the layout should have the same height

Default value: FALSE

Since 1.12

### The `"row-spacing"` property

      "row-spacing"              guint                 : Read / Write

The amount of space in pixels between two consecutive rows

Default value: 0

Since 1.12

## See Also

ClutterTableLayout, ClutterBoxLayout