X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtkcellareacontext.h;h=c42aba7b8717a0831349be9479ca4a037a1d2d25;hb=HEAD;hp=0782f7836489cfeb1d09a0203207ee48ba40af2a;hpb=5f7787ab2ead2cdd11ebe17b16dd9498daaaf9c5;p=~andy%2Fgtk diff --git a/gtk/gtkcellareacontext.h b/gtk/gtkcellareacontext.h index 0782f7836..c42aba7b8 100644 --- a/gtk/gtkcellareacontext.h +++ b/gtk/gtkcellareacontext.h @@ -16,26 +16,24 @@ * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library. If not, see . */ +#ifndef __GTK_CELL_AREA_CONTEXT_H__ +#define __GTK_CELL_AREA_CONTEXT_H__ + #if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) #error "Only can be included directly." #endif -#ifndef __GTK_CELL_AREA_CONTEXT_H__ -#define __GTK_CELL_AREA_CONTEXT_H__ - #include G_BEGIN_DECLS -#define GTK_TYPE_CELL_AREA_CONTEXT (gtk_cell_area_context_get_type ()) -#define GTK_CELL_AREA_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_CELL_AREA_CONTEXT, GtkCellAreaContext)) +#define GTK_TYPE_CELL_AREA_CONTEXT (gtk_cell_area_context_get_type ()) +#define GTK_CELL_AREA_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_CELL_AREA_CONTEXT, GtkCellAreaContext)) #define GTK_CELL_AREA_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_CELL_AREA_CONTEXT, GtkCellAreaContextClass)) -#define GTK_IS_CELL_AREA_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_CELL_AREA_CONTEXT)) +#define GTK_IS_CELL_AREA_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_CELL_AREA_CONTEXT)) #define GTK_IS_CELL_AREA_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_CELL_AREA_CONTEXT)) #define GTK_CELL_AREA_CONTEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_CELL_AREA_CONTEXT, GtkCellAreaContextClass)) @@ -44,80 +42,93 @@ typedef struct _GtkCellAreaContextClass GtkCellAreaContextClass; struct _GtkCellAreaContext { + /*< private >*/ GObject parent_instance; GtkCellAreaContextPrivate *priv; }; +/** + * GtkCellAreaContextClass: + * @allocate: This tells the context that an allocation width or height + * (or both) have been decided for a group of rows. The context should + * store any allocations for internally aligned cells at this point so + * that they dont need to be recalculated at gtk_cell_area_render() time. + * @reset: Clear any previously stored information about requested and + * allocated sizes for the context. + * @get_preferred_height_for_width: Returns the aligned height for the given + * width that context must store while collecting sizes for it's rows. + * @get_preferred_width_for_height: Returns the aligned width for the given + * height that context must store while collecting sizes for it's rows. + */ struct _GtkCellAreaContextClass { + /*< private >*/ GObjectClass parent_class; - /* Subclasses can use this to flush their alignments/allocations */ - void (* flush_preferred_width) (GtkCellAreaContext *context); - void (* flush_preferred_height) (GtkCellAreaContext *context); - void (* flush_allocation) (GtkCellAreaContext *context); - - /* These must be invoked after a series of requests before consulting - * the context values, implementors use this to push the overall - * requests while acconting for any internal alignments */ - void (* sum_preferred_width) (GtkCellAreaContext *context); - void (* sum_preferred_height) (GtkCellAreaContext *context); - - /* Store an allocation value for a GtkCellArea contextual to a range of - * treemodel rows */ - void (* allocate_width) (GtkCellAreaContext *context, - gint width); - void (* allocate_height) (GtkCellAreaContext *context, - gint height); - + /*< public >*/ + void (* allocate) (GtkCellAreaContext *context, + gint width, + gint height); + void (* reset) (GtkCellAreaContext *context); + void (* get_preferred_height_for_width) (GtkCellAreaContext *context, + gint width, + gint *minimum_height, + gint *natural_height); + void (* get_preferred_width_for_height) (GtkCellAreaContext *context, + gint height, + gint *minimum_width, + gint *natural_width); + + /*< private >*/ /* Padding for future expansion */ void (*_gtk_reserved1) (void); void (*_gtk_reserved2) (void); void (*_gtk_reserved3) (void); void (*_gtk_reserved4) (void); + void (*_gtk_reserved5) (void); + void (*_gtk_reserved6) (void); }; -GType gtk_cell_area_context_get_type (void) G_GNUC_CONST; - -GtkCellArea *gtk_cell_area_context_get_area (GtkCellAreaContext *context); - -/* Apis for GtkCellArea clients to flush the cache */ -void gtk_cell_area_context_flush (GtkCellAreaContext *context); -void gtk_cell_area_context_flush_preferred_width (GtkCellAreaContext *context); -void gtk_cell_area_context_flush_preferred_height (GtkCellAreaContext *context); -void gtk_cell_area_context_flush_allocation (GtkCellAreaContext *context); - -/* Apis for GtkCellArea clients to sum up the results of a series of requests, this - * call is required to reduce the processing while calculating the size of each row */ -void gtk_cell_area_context_sum_preferred_width (GtkCellAreaContext *context); -void gtk_cell_area_context_sum_preferred_height (GtkCellAreaContext *context); - -/* Apis to set an allocation size in one dimension or another, the subclass specific context - * will store allocated positions/sizes for individual cells or groups of cells */ -void gtk_cell_area_context_allocate_width (GtkCellAreaContext *context, - gint width); -void gtk_cell_area_context_allocate_height (GtkCellAreaContext *context, - gint height); - -/* Apis for GtkCellArea clients to consult cached values for multiple GtkTreeModel rows */ -void gtk_cell_area_context_get_preferred_width (GtkCellAreaContext *context, - gint *minimum_width, - gint *natural_width); -void gtk_cell_area_context_get_preferred_height (GtkCellAreaContext *context, - gint *minimum_height, - gint *natural_height); -void gtk_cell_area_context_get_allocation (GtkCellAreaContext *context, - gint *width, - gint *height); - -/* Apis for GtkCellArea implementations to update cached values for multiple GtkTreeModel rows */ -void gtk_cell_area_context_push_preferred_width (GtkCellAreaContext *context, - gint minimum_width, - gint natural_width); -void gtk_cell_area_context_push_preferred_height (GtkCellAreaContext *context, - gint minimum_height, - gint natural_height); +GType gtk_cell_area_context_get_type (void) G_GNUC_CONST; + +/* Main apis */ +GtkCellArea *gtk_cell_area_context_get_area (GtkCellAreaContext *context); +void gtk_cell_area_context_allocate (GtkCellAreaContext *context, + gint width, + gint height); +void gtk_cell_area_context_reset (GtkCellAreaContext *context); + +/* Apis for GtkCellArea clients to consult cached values + * for a series of GtkTreeModel rows + */ +void gtk_cell_area_context_get_preferred_width (GtkCellAreaContext *context, + gint *minimum_width, + gint *natural_width); +void gtk_cell_area_context_get_preferred_height (GtkCellAreaContext *context, + gint *minimum_height, + gint *natural_height); +void gtk_cell_area_context_get_preferred_height_for_width (GtkCellAreaContext *context, + gint width, + gint *minimum_height, + gint *natural_height); +void gtk_cell_area_context_get_preferred_width_for_height (GtkCellAreaContext *context, + gint height, + gint *minimum_width, + gint *natural_width); +void gtk_cell_area_context_get_allocation (GtkCellAreaContext *context, + gint *width, + gint *height); + +/* Apis for GtkCellArea implementations to update cached values + * for multiple GtkTreeModel rows + */ +void gtk_cell_area_context_push_preferred_width (GtkCellAreaContext *context, + gint minimum_width, + gint natural_width); +void gtk_cell_area_context_push_preferred_height (GtkCellAreaContext *context, + gint minimum_height, + gint natural_height); G_END_DECLS