1 #ifndef _GNM_GRAPH_H_
2 # define _GNM_GRAPH_H_
3 
4 #include <gnumeric.h>
5 #include <sheet-object.h>
6 #include <goffice/goffice.h>
7 #include <glib-object.h>
8 
9 G_BEGIN_DECLS
10 
11 void	 gnm_go_data_set_sheet (GOData *dat, Sheet *sheet);
12 Sheet   *gnm_go_data_get_sheet (GOData const *dat);
13 GnmExprTop const *gnm_go_data_get_expr (GOData const *dat);
14 void	 gnm_go_data_foreach_dep (GOData *dat, SheetObject *so,
15 				  SheetObjectForeachDepFunc func, gpointer user);
16 
17 #define GNM_GO_DATA_SCALAR_TYPE	 (gnm_go_data_scalar_get_type ())
18 #define GNM_GO_DATA_SCALAR(o)	 (G_TYPE_CHECK_INSTANCE_CAST ((o), GNM_GO_DATA_SCALAR_TYPE, GnmGODataScalar))
19 #define GNM_IS_GO_DATA_SCALAR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNM_GO_DATA_SCALAR_TYPE))
20 
21 typedef struct _GnmGODataScalar GnmGODataScalar;
22 GType	 gnm_go_data_scalar_get_type  (void);
23 GOData	*gnm_go_data_scalar_new_expr  (Sheet *sheet, GnmExprTop const *texpr);
24 
25 #define GNM_GO_DATA_VECTOR_TYPE	 (gnm_go_data_vector_get_type ())
26 #define GNM_GO_DATA_VECTOR(o)	 (G_TYPE_CHECK_INSTANCE_CAST ((o), GNM_GO_DATA_VECTOR_TYPE, GnmGODataVector))
27 #define GNM_IS_GO_DATA_VECTOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNM_GO_DATA_VECTOR_TYPE))
28 
29 typedef struct _GnmGODataVector GnmGODataVector;
30 GType	 gnm_go_data_vector_get_type  (void);
31 GOData	*gnm_go_data_vector_new_expr  (Sheet *sheet, GnmExprTop const *texpr);
32 
33 #define GNM_GO_DATA_MATRIX_TYPE	 (gnm_go_data_matrix_get_type ())
34 #define GNM_GO_DATA_MATRIX(o)	 (G_TYPE_CHECK_INSTANCE_CAST ((o), GNM_GO_DATA_MATRIX_TYPE, GnmGODataMatrix))
35 #define GNM_IS_GO_DATA_MATRIX(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNM_GO_DATA_MATRIX_TYPE))
36 
37 typedef struct _GnmGODataMatrix GnmGODataMatrix;
38 GType	 gnm_go_data_matrix_get_type  (void);
39 GOData	*gnm_go_data_matrix_new_expr  (Sheet *sheet, GnmExprTop const *texpr);
40 
41 /* closure for data allocation */
42 typedef struct {
43 	int colrowmode; /* 0 = auto; 1 = columns; 2 = rows */
44 	gboolean share_x, new_sheet;
45 	GObject *obj;
46 	GogDataAllocator *dalloc;
47 	GnmSOAnchorMode anchor_mode;
48 } GnmGraphDataClosure;
49 
50 G_END_DECLS
51 
52 #endif /* _GNM_GRAPH_H_ */
53