ClutterFlowLayout

ClutterFlowLayout — A reflowing layout manager

Synopsis

enum                ClutterFlowOrientation;
struct              ClutterFlowLayout;
struct              ClutterFlowLayoutClass;
ClutterLayoutManager *  clutter_flow_layout_new         (ClutterFlowOrientation orientation);
void                clutter_flow_layout_set_homogeneous (ClutterFlowLayout *layout,
                                                         gboolean homogeneous);
gboolean            clutter_flow_layout_get_homogeneous (ClutterFlowLayout *layout);
void                clutter_flow_layout_set_orientation (ClutterFlowLayout *layout,
                                                         ClutterFlowOrientation orientation);
ClutterFlowOrientation  clutter_flow_layout_get_orientation
                                                        (ClutterFlowLayout *layout);

void                clutter_flow_layout_set_column_spacing
                                                        (ClutterFlowLayout *layout,
                                                         gfloat spacing);
gfloat              clutter_flow_layout_get_column_spacing
                                                        (ClutterFlowLayout *layout);
void                clutter_flow_layout_set_row_spacing (ClutterFlowLayout *layout,
                                                         gfloat spacing);
gfloat              clutter_flow_layout_get_row_spacing (ClutterFlowLayout *layout);
void                clutter_flow_layout_set_column_width
                                                        (ClutterFlowLayout *layout,
                                                         gfloat min_width,
                                                         gfloat max_width);
void                clutter_flow_layout_get_column_width
                                                        (ClutterFlowLayout *layout,
                                                         gfloat *min_width,
                                                         gfloat *max_width);
void                clutter_flow_layout_set_row_height  (ClutterFlowLayout *layout,
                                                         gfloat min_height,
                                                         gfloat max_height);
void                clutter_flow_layout_get_row_height  (ClutterFlowLayout *layout,
                                                         gfloat *min_height,
                                                         gfloat *max_height);

Object Hierarchy

  GObject
   +----GInitiallyUnowned
         +----ClutterLayoutManager
               +----ClutterFlowLayout

Properties

  "column-spacing"           gfloat                : Read / Write
  "homogeneous"              gboolean              : Read / Write
  "max-column-width"         gfloat                : Read / Write
  "max-row-height"           gfloat                : Read / Write
  "min-column-width"         gfloat                : Read / Write
  "min-row-height"           gfloat                : Read / Write
  "orientation"              ClutterFlowOrientation  : Read / Write / Construct
  "row-spacing"              gfloat                : Read / Write

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.

Figure 4. Horizontal flow layout

The image shows a ClutterFlowLayout with the "orientation" propert set to CLUTTER_FLOW_HORIZONTAL.

Horizontal flow layout


Figure 5. Vertical flow layout

The image shows a ClutterFlowLayout with the "orientation" propert set to CLUTTER_FLOW_VERTICAL.

Vertical flow layout


ClutterFlowLayout is available since Clutter 1.2

Details

enum ClutterFlowOrientation

typedef enum { /*< prefix=CLUTTER_FLOW >*/
  CLUTTER_FLOW_HORIZONTAL,
  CLUTTER_FLOW_VERTICAL
} ClutterFlowOrientation;

The direction of the arrangement of the children inside a ClutterFlowLayout

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


clutter_flow_layout_new ()

ClutterLayoutManager *  clutter_flow_layout_new         (ClutterFlowOrientation orientation);

Creates a new ClutterFlowLayout with the given orientation

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

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

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

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

layout :

a ClutterFlowLayout

Returns :

the orientation of the ClutterFlowLayout

Since 1.2


clutter_flow_layout_set_column_spacing ()

void                clutter_flow_layout_set_column_spacing
                                                        (ClutterFlowLayout *layout,
                                                         gfloat spacing);

Sets the space between columns, in pixels

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

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

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

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

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

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

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

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

Property Details

The "column-spacing" property

  "column-spacing"           gfloat                : Read / Write

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

Allowed values: >= 0

Default value: 0

Since 1.2


The "homogeneous" property

  "homogeneous"              gboolean              : Read / Write

Whether each child inside the ClutterFlowLayout should receive the same allocation

Default value: FALSE

Since 1.2


The "max-column-width" property

  "max-column-width"         gfloat                : Read / Write

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

Allowed values: >= -1

Default value: -1

Since 1.2


The "max-row-height" property

  "max-row-height"           gfloat                : Read / Write

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

Allowed values: >= -1

Default value: -1

Since 1.2


The "min-column-width" property

  "min-column-width"         gfloat                : Read / Write

Minimum width for each column in the layout, in pixels

Allowed values: >= 0

Default value: 0

Since 1.2


The "min-row-height" property

  "min-row-height"           gfloat                : Read / Write

Minimum height for each row in the layout, in pixels

Allowed values: >= 0

Default value: 0

Since 1.2


The "orientation" property

  "orientation"              ClutterFlowOrientation  : Read / Write / Construct

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

This property also controls the overflowing directions

Default value: CLUTTER_FLOW_HORIZONTAL

Since 1.2


The "row-spacing" property

  "row-spacing"              gfloat                : Read / Write

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

Allowed values: >= 0

Default value: 0

Since 1.2