## ClutterFlowLayout

ClutterFlowLayout — A reflowing layout manager

## Functions

ClutterLayoutManager * | clutter_flow_layout_new ()
void | clutter_flow_layout_set_homogeneous ()
gboolean | clutter_flow_layout_get_homogeneous ()
void | clutter_flow_layout_set_orientation ()
ClutterFlowOrientation | clutter_flow_layout_get_orientation ()
void | clutter_flow_layout_set_snap_to_grid ()
gboolean | clutter_flow_layout_get_snap_to_grid ()
void | clutter_flow_layout_set_column_spacing ()
gfloat | clutter_flow_layout_get_column_spacing ()
void | clutter_flow_layout_set_row_spacing ()
gfloat | clutter_flow_layout_get_row_spacing ()
void | clutter_flow_layout_set_column_width ()
void | clutter_flow_layout_get_column_width ()
void | clutter_flow_layout_set_row_height ()
void | clutter_flow_layout_get_row_height ()

## Properties

gfloat | column-spacing | Read / Write
gboolean | homogeneous | Read / Write
gfloat | max-column-width | Read / Write
gfloat | max-row-height | Read / Write
gfloat | min-column-width | Read / Write
gfloat | min-row-height | Read / Write
ClutterFlowOrientation | orientation | Read / Write / Construct
gfloat | row-spacing | Read / Write
gboolean | snap-to-grid | Read / Write

## Types and Values

enum | ClutterFlowOrientation
struct | ClutterFlowLayout
struct | ClutterFlowLayoutClass

## Object Hierarchy

        GObject
        ╰── GInitiallyUnowned
            ╰── ClutterLayoutManager
                ╰── ClutterFlowLayout

## Description

ClutterFlowLayout is a layout manager which implements the following policy:

- the preferred natural size depends on the value of the “orientation” property; the layout will try to maintain all its children on a single row or column;

- if either the width or the height allocated are smaller than the preferred ones, the layout will wrap; in this case, the preferred height or width, respectively, will take into account the amount of columns and rows;

- each line (either column or row) in reflowing will have the size of the biggest cell on that line; if the “homogeneous” property is set to `FALSE` the actor will be allocated within that area, and if set to `TRUE` instead the actor will be given exactly that area;

- the size of the columns or rows can be controlled for both minimum and maximum; the spacing can also be controlled in both columns and rows.

The flow-layout example shows how to use the ClutterFlowLayout.

ClutterFlowLayout is available since Clutter 1.2

## Functions

### clutter_flow_layout_new ()

    ClutterLayoutManager *
    clutter_flow_layout_new (ClutterFlowOrientation orientation);

Creates a new ClutterFlowLayout with the given `orientation`

#### Parameters

orientation | the orientation of the flow layout |

#### Returns

the newly created ClutterFlowLayout

Since: 1.2

### clutter_flow_layout_set_homogeneous ()

    void
    clutter_flow_layout_set_homogeneous (ClutterFlowLayout *layout,
                                         gboolean homogeneous);

Sets whether the `layout` should allocate the same space for each child

#### Parameters

layout | a ClutterFlowLayout |
homogeneous | whether the layout should be homogeneous or not |

Since: 1.2

### clutter_flow_layout_get_homogeneous ()

    gboolean
    clutter_flow_layout_get_homogeneous (ClutterFlowLayout *layout);

Retrieves whether the `layout` is homogeneous

#### Parameters

layout | a ClutterFlowLayout |

#### Returns

`TRUE` if the ClutterFlowLayout is homogeneous

Since: 1.2

### clutter_flow_layout_set_orientation ()

    void
    clutter_flow_layout_set_orientation (ClutterFlowLayout *layout,
                                         ClutterFlowOrientation orientation);

Sets the orientation of the flow layout

The orientation controls the direction used to allocate the children: either horizontally or vertically. The orientation also controls the direction of the overflowing

#### Parameters

layout | a ClutterFlowLayout |
orientation | the orientation of the layout |

Since: 1.2

### clutter_flow_layout_get_orientation ()

    ClutterFlowOrientation
    clutter_flow_layout_get_orientation (ClutterFlowLayout *layout);

Retrieves the orientation of the `layout`

#### Parameters

layout | a ClutterFlowLayout |

#### Returns

the orientation of the ClutterFlowLayout

Since: 1.2

### clutter_flow_layout_set_snap_to_grid ()

    void
    clutter_flow_layout_set_snap_to_grid (ClutterFlowLayout *layout,
                                          gboolean snap_to_grid);

Whether the `layout` should place its children on a grid.

#### Parameters

layout | a ClutterFlowLayout |
snap_to_grid | `TRUE` if `layout` should place its children on a grid |

Since: 1.16

### clutter_flow_layout_get_snap_to_grid ()

    gboolean
    clutter_flow_layout_get_snap_to_grid (ClutterFlowLayout *layout);

Retrieves the value of “snap-to-grid” property

#### Parameters

layout | a ClutterFlowLayout |

#### Returns

`TRUE` if the `layout` is placing its children on a grid

Since: 1.16

### clutter_flow_layout_set_column_spacing ()

    void
    clutter_flow_layout_set_column_spacing
                                   (ClutterFlowLayout *layout,
                                    gfloat spacing);

Sets the space between columns, in pixels

#### Parameters

layout | a ClutterFlowLayout |
spacing | the space between columns |

Since: 1.2

### clutter_flow_layout_get_column_spacing ()

    gfloat
    clutter_flow_layout_get_column_spacing
                                   (ClutterFlowLayout *layout);

Retrieves the spacing between columns

#### Parameters

layout | a ClutterFlowLayout |

#### Returns

the spacing between columns of the ClutterFlowLayout, in pixels

Since: 1.2

### clutter_flow_layout_set_row_spacing ()

    void
    clutter_flow_layout_set_row_spacing (ClutterFlowLayout *layout,
                                         gfloat spacing);

Sets the spacing between rows, in pixels

#### Parameters

layout | a ClutterFlowLayout |
spacing | the space between rows |

Since: 1.2

### clutter_flow_layout_get_row_spacing ()

    gfloat
    clutter_flow_layout_get_row_spacing (ClutterFlowLayout *layout);

Retrieves the spacing between rows

#### Parameters

layout | a ClutterFlowLayout |

#### Returns

the spacing between rows of the ClutterFlowLayout, in pixels

Since: 1.2

### clutter_flow_layout_set_column_width ()

    void
    clutter_flow_layout_set_column_width (ClutterFlowLayout *layout,
                                          gfloat min_width,
                                          gfloat max_width);

Sets the minimum and maximum widths that a column can have

#### Parameters

layout | a ClutterFlowLayout |
min_width | minimum width of a column |
max_width | maximum width of a column |

Since: 1.2

### clutter_flow_layout_get_column_width ()

    void
    clutter_flow_layout_get_column_width (ClutterFlowLayout *layout,
                                          gfloat *min_width,
                                          gfloat *max_width);

Retrieves the minimum and maximum column widths

#### Parameters

layout | a ClutterFlowLayout |
min_width | return location for the minimum column width, or `NULL`. | [out]
max_width | return location for the maximum column width, or `NULL`. | [out]

Since: 1.2

### clutter_flow_layout_set_row_height ()

    void
    clutter_flow_layout_set_row_height (ClutterFlowLayout *layout,
                                        gfloat min_height,
                                        gfloat max_height);

Sets the minimum and maximum heights that a row can have

#### Parameters

layout | a ClutterFlowLayout |
min_height | the minimum height of a row |
max_height | the maximum height of a row |

Since: 1.2

### clutter_flow_layout_get_row_height ()

    void
    clutter_flow_layout_get_row_height (ClutterFlowLayout *layout,
                                        gfloat *min_height,
                                        gfloat *max_height);

Retrieves the minimum and maximum row heights

#### Parameters

layout | a ClutterFlowLayout |
min_height | return location for the minimum row height, or `NULL`. | [out]
max_height | return location for the maximum row height, or `NULL`. | [out]

Since: 1.2

## Types and Values

### enum ClutterFlowOrientation

The direction of the arrangement of the children inside a ClutterFlowLayout

#### Members

CLUTTER_FLOW_HORIZONTAL | Arrange the children of the flow layout horizontally first |
CLUTTER_FLOW_VERTICAL | Arrange the children of the flow layout vertically first |

Since: 1.2

### struct ClutterFlowLayout

    struct ClutterFlowLayout;

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

Since: 1.2

### struct ClutterFlowLayoutClass

    struct ClutterFlowLayoutClass {
    };

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

Since: 1.2

## Property Details

### The `“column-spacing”` property

      “column-spacing”           gfloat

The spacing between columns, in pixels; the value of this property is honoured by horizontal non-overflowing layouts and by vertical overflowing layouts

Flags: Read / Write

Allowed values: >= 0

Default value: 0

Since: 1.2

### The `“homogeneous”` property

      “homogeneous”              gboolean

Whether each child inside the ClutterFlowLayout should receive the same allocation

Flags: Read / Write

Default value: FALSE

Since: 1.2

### The `“max-column-width”` property

      “max-column-width”         gfloat

Maximum width for each column in the layout, in pixels. If set to -1 the width will be the maximum child width

Flags: Read / Write

Allowed values: >= -1

Default value: -1

Since: 1.2

### The `“max-row-height”` property

      “max-row-height”           gfloat

Maximum height for each row in the layout, in pixels. If set to -1 the width will be the maximum child height

Flags: Read / Write

Allowed values: >= -1

Default value: -1

Since: 1.2

### The `“min-column-width”` property

      “min-column-width”         gfloat

Minimum width for each column in the layout, in pixels

Flags: Read / Write

Allowed values: >= 0

Default value: 0

Since: 1.2

### The `“min-row-height”` property

      “min-row-height”           gfloat

Minimum height for each row in the layout, in pixels

Flags: Read / Write

Allowed values: >= 0

Default value: 0

Since: 1.2

### The `“orientation”` property

      “orientation”              ClutterFlowOrientation

The orientation of the ClutterFlowLayout. The children of the layout will be layed out following the orientation.

This property also controls the overflowing directions

Flags: Read / Write / Construct

Default value: CLUTTER_FLOW_HORIZONTAL

Since: 1.2

### The `“row-spacing”` property

      “row-spacing”              gfloat

The spacing between rows, in pixels; the value of this property is honoured by vertical non-overflowing layouts and by horizontal overflowing layouts

Flags: Read / Write

Allowed values: >= 0

Default value: 0

Since: 1.2

### The `“snap-to-grid”` property

      “snap-to-grid”             gboolean

Whether the ClutterFlowLayout should arrange its children on a grid

Flags: Read / Write

Default value: TRUE

Since: 1.16