mutter/clutter/clutter-grid-layout.h
Bastian Winkler 1eb869ec8f Add ClutterGridLayout
ClutterGridLayout is port of GtkGrid to a Clutter layout manager. All
the logic is taken from gtkgrid.c, so all the credits should go to
Matthias Clasen for writing this nice piece of code.

ClutterGridLayout supports adding children with it's own methods
GridLayout.attach() and GridLayout.attach_next_to() as well as
Actor.add_child() and friends. The latter adds children in a similar
fashion to ClutterBoxLayout

https://bugzilla.gnome.org/show_bug.cgi?id=677372
2012-06-05 12:28:25 +02:00

162 lines
6.8 KiB
C

/*
* Clutter.
*
* An OpenGL based 'interactive canvas' library.
*
* Copyright (C) 2010 Red Hat, Inc.
* Copyright (C) 2012 Bastian Winkler <buz@netbuz.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
* Author:
* Bastian Winkler <buz@netbuz.org>
*
* Based on GtkGrid widget by:
* Matthias Clasen
*/
#if !defined(__CLUTTER_H_INSIDE__) && !defined(CLUTTER_COMPILATION)
#error "Only <clutter/clutter.h> can be included directly."
#endif
#ifndef __CLUTTER_GRID_LAYOUT_H__
#define __CLUTTER_GRID_LAYOUT_H__
#include <clutter/clutter-layout-manager.h>
G_BEGIN_DECLS
#define CLUTTER_TYPE_GRID_LAYOUT (clutter_grid_layout_get_type ())
#define CLUTTER_GRID_LAYOUT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CLUTTER_TYPE_GRID_LAYOUT, ClutterGridLayout))
#define CLUTTER_IS_GRID_LAYOUT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CLUTTER_TYPE_GRID_LAYOUT))
#define CLUTTER_GRID_LAYOUT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CLUTTER_TYPE_GRID_LAYOUT, ClutterGridLayoutClass))
#define CLUTTER_IS_GRID_LAYOUT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CLUTTER_TYPE_GRID_LAYOUT))
#define CLUTTER_GRID_LAYOUT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_TYPE_GRID_LAYOUT, ClutterGridLayoutClass))
typedef struct _ClutterGridLayout ClutterGridLayout;
typedef struct _ClutterGridLayoutPrivate ClutterGridLayoutPrivate;
typedef struct _ClutterGridLayoutClass ClutterGridLayoutClass;
/**
* ClutterGridLayout:
*
* The #ClutterGridLayout structure contains only private data
* and should be accessed using the provided API
*
* Since: 1.12
*/
struct _ClutterGridLayout
{
/*< private >*/
ClutterLayoutManager parent_instance;
ClutterGridLayoutPrivate *priv;
};
/**
* ClutterGridLayoutClass:
*
* The #ClutterGridLayoutClass structure contains only private
* data and should be accessed using the provided API
*
* Since: 1.12
*/
struct _ClutterGridLayoutClass
{
/*< private >*/
ClutterLayoutManagerClass parent_class;
gpointer _padding[8];
};
CLUTTER_AVAILABLE_IN_1_12
GType clutter_grid_layout_get_type (void) G_GNUC_CONST;
CLUTTER_AVAILABLE_IN_1_12
ClutterLayoutManager * clutter_grid_layout_new (void);
CLUTTER_AVAILABLE_IN_1_12
void clutter_grid_layout_attach (ClutterGridLayout *layout,
ClutterActor *child,
gint left,
gint top,
gint width,
gint height);
CLUTTER_AVAILABLE_IN_1_12
void clutter_grid_layout_attach_next_to (ClutterGridLayout *layout,
ClutterActor *child,
ClutterActor *sibling,
ClutterGridPosition side,
gint width,
gint height);
CLUTTER_AVAILABLE_IN_1_12
ClutterActor * clutter_grid_layout_get_child_at (ClutterGridLayout *layout,
gint left,
gint top);
CLUTTER_AVAILABLE_IN_1_12
void clutter_grid_layout_insert_row (ClutterGridLayout *layout,
gint position);
CLUTTER_AVAILABLE_IN_1_12
void clutter_grid_layout_insert_column (ClutterGridLayout *layout,
gint position);
CLUTTER_AVAILABLE_IN_1_12
void clutter_grid_layout_insert_next_to (ClutterGridLayout *layout,
ClutterActor *sibling,
ClutterGridPosition side);
CLUTTER_AVAILABLE_IN_1_12
void clutter_grid_layout_set_orientation (ClutterGridLayout *layout,
ClutterOrientation orientation);
CLUTTER_AVAILABLE_IN_1_12
ClutterOrientation clutter_grid_layout_get_orientation (ClutterGridLayout *layout);
CLUTTER_AVAILABLE_IN_1_12
void clutter_grid_layout_set_column_spacing (ClutterGridLayout *layout,
guint spacing);
CLUTTER_AVAILABLE_IN_1_12
guint clutter_grid_layout_get_column_spacing (ClutterGridLayout *layout);
CLUTTER_AVAILABLE_IN_1_12
void clutter_grid_layout_set_row_spacing (ClutterGridLayout *layout,
guint spacing);
CLUTTER_AVAILABLE_IN_1_12
guint clutter_grid_layout_get_row_spacing (ClutterGridLayout *layout);
CLUTTER_AVAILABLE_IN_1_12
void clutter_grid_layout_set_column_homogeneous (ClutterGridLayout *layout,
gboolean homogeneous);
CLUTTER_AVAILABLE_IN_1_12
gboolean clutter_grid_layout_get_column_homogeneous (ClutterGridLayout *layout);
CLUTTER_AVAILABLE_IN_1_12
void clutter_grid_layout_set_row_homogeneous (ClutterGridLayout *layout,
gboolean homogeneous);
CLUTTER_AVAILABLE_IN_1_12
gboolean clutter_grid_layout_get_row_homogeneous (ClutterGridLayout *layout);
G_END_DECLS
#endif /* __CLUTTER_GRID_LAYOUT_H__ */