Update Spanish translation
[gnumeric.git] / src / sheet-object.h
blob5d9d91a1d934b0075dbf916dfe6825fdc92f6ca8
1 #ifndef _GNM_SHEET_OBJECT_H_
2 # define _GNM_SHEET_OBJECT_H_
4 #include <gnumeric.h>
5 #include <gsf/gsf-output.h>
6 #include <goffice/goffice.h>
8 G_BEGIN_DECLS
10 /***********************************************************/
12 typedef enum {
13 GNM_SO_RESIZE_MANUAL, /* can be manually resized */
14 GNM_SO_RESIZE_AUTO, /* automatically resized like cell bounded widgets */
15 GNM_SO_RESIZE_NONE /* can't be resized like some sheet components */
16 } GnmSOResizeMode;
18 typedef enum {
19 GNM_SO_ANCHOR_TWO_CELLS, /* move and size (if sizeable) with cells) */
20 GNM_SO_ANCHOR_ONE_CELL, /* move with cells */
21 GNM_SO_ANCHOR_ABSOLUTE /* anchored to the sheet */
22 } GnmSOAnchorMode;
23 GType gnm_sheet_object_anchor_mode_get_type (void);
24 #define GNM_SHEET_OBJECT_ANCHOR_MODE_TYPE (gnm_sheet_object_anchor_mode_get_type ())
26 struct _SheetObjectAnchor {
27 GODrawingAnchor base;
29 GnmRange cell_bound; /* cellpos containing corners */
30 double offset[4]; /* offsets from the top left (in LTR of cell_bound) */
31 GnmSOAnchorMode mode;
33 GType sheet_object_anchor_get_type (void); /* Boxed type */
35 #define GNM_SO_TYPE (sheet_object_get_type ())
36 #define GNM_SO(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GNM_SO_TYPE, SheetObject))
37 #define GNM_IS_SO(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), GNM_SO_TYPE))
38 GType sheet_object_get_type (void);
40 #define GNM_SO_IMAGEABLE_TYPE (sheet_object_imageable_get_type ())
41 #define GNM_SO_IMAGEABLE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GNM_SO_IMAGEABLE_TYPE, SheetObjectImageableIface))
42 #define GNM_IS_SO_IMAGEABLE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNM_SO_IMAGEABLE_TYPE))
44 GType sheet_object_imageable_get_type (void);
46 #define GNM_SO_EXPORTABLE_TYPE (sheet_object_exportable_get_type ())
47 #define GNM_SO_EXPORTABLE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GNM_SO_EXPORTABLE_TYPE, SheetObjectExportableIface))
48 #define GNM_IS_SO_EXPORTABLE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNM_SO_EXPORTABLE_TYPE))
50 GType sheet_object_exportable_get_type (void);
52 gboolean sheet_object_set_sheet (SheetObject *so, Sheet *sheet);
53 Sheet *sheet_object_get_sheet (SheetObject const *so);
54 void sheet_object_clear_sheet (SheetObject *so);
56 void sheet_object_set_name (SheetObject *so, const char *name);
57 void sheet_object_set_print_flag (SheetObject *so, gboolean *print);
59 SheetObject *sheet_object_dup (SheetObject const *so);
60 gboolean sheet_object_can_print (SheetObject const *so);
61 gboolean sheet_object_can_resize (SheetObject const *so);
62 gboolean sheet_object_can_edit (SheetObject const *so);
64 void sheet_object_get_editor (SheetObject *so, SheetControl *sc);
65 void sheet_object_populate_menu (SheetObject *so, GPtrArray *actions);
66 GtkWidget * sheet_object_build_menu (SheetObjectView *view,
67 GPtrArray const *actions,
68 unsigned *i);
69 void sheet_object_update_bounds (SheetObject *so, GnmCellPos const *p);
70 void sheet_object_default_size (SheetObject *so, double *w, double *h);
71 gint sheet_object_adjust_stacking(SheetObject *so, gint positions);
72 gint sheet_object_get_stacking (SheetObject *so);
73 SheetObjectView *sheet_object_new_view (SheetObject *so,
74 SheetObjectViewContainer *container);
75 SheetObjectView *sheet_object_get_view (SheetObject const *so,
76 SheetObjectViewContainer *container);
77 GnmRange const *sheet_object_get_range (SheetObject const *so);
78 void sheet_object_set_anchor (SheetObject *so,
79 SheetObjectAnchor const *anchor);
81 SheetObjectAnchor const *sheet_object_get_anchor (SheetObject const *so);
82 void sheet_object_position_pts_get (SheetObject const *so, double *coords);
84 void sheet_object_invalidate_sheet (SheetObject *so,
85 Sheet const *sheet);
87 typedef void (*SheetObjectForeachDepFunc) (GnmDependent *dep,
88 SheetObject *so,
89 gpointer user);
90 void sheet_object_foreach_dep (SheetObject *so,
91 SheetObjectForeachDepFunc func,
92 gpointer user);
95 /* Object Management */
96 void sheet_objects_relocate (GnmExprRelocateInfo const *rinfo,
97 gboolean update, GOUndo **pundo);
98 void sheet_objects_clear (Sheet const *sheet, GnmRange const *r,
99 GType t, GOUndo **pundo);
100 GOUndo *sheet_object_move_undo (GSList *objects, gboolean objects_created);
101 GOUndo *sheet_object_move_do (GSList *objects, GSList *anchors,
102 gboolean objects_created);
103 GSList *sheet_objects_get (Sheet const *sheet, GnmRange const *r,
104 GType t);
105 void sheet_objects_dup (Sheet const *src, Sheet *dst, GnmRange *range);
107 void sheet_object_direction_set (SheetObject *so, gdouble const *coords);
108 gboolean sheet_object_rubber_band_directly (SheetObject const *so);
109 void sheet_object_set_anchor_mode (SheetObject *so, GnmSOAnchorMode const *mode);
111 /* Anchor utilities */
112 void sheet_object_anchor_to_pts (SheetObjectAnchor const *anchor,
113 Sheet const *sheet, double *res_pts);
114 void sheet_object_anchor_to_offset_pts (SheetObjectAnchor const *anchor,
115 Sheet const *sheet, double *res_pts);
116 void sheet_object_anchor_init (SheetObjectAnchor *anchor,
117 GnmRange const *r,
118 const double *offsets,
119 GODrawingAnchorDir direction,
120 GnmSOAnchorMode mode);
121 void sheet_object_pts_to_anchor (SheetObjectAnchor *anchor,
122 Sheet const *sheet, double const *res_pts);
123 SheetObjectAnchor *
124 sheet_object_anchor_dup (SheetObjectAnchor const *src);
126 /* Image rendering */
127 GtkTargetList *sheet_object_get_target_list (SheetObject const *so);
128 void sheet_object_write_image (SheetObject const *so,
129 char const *format,
130 double resolution,
131 GsfOutput *output,
132 GError **err);
134 /* Object export */
135 GtkTargetList *sheet_object_exportable_get_target_list (SheetObject const *so);
136 void sheet_object_write_object (SheetObject const *so,
137 char const *format,
138 GsfOutput *output, GError **err,
139 GnmConventions const *convs);
141 /* cairo rendering */
142 void sheet_object_draw_cairo (SheetObject const *so, cairo_t *cr, gboolean rtl);
143 void sheet_object_draw_cairo_sized (SheetObject const *so, cairo_t *cr, double width, double height);
145 /* management routine to register all the builtin object types */
146 void sheet_objects_init (void);
147 G_END_DECLS
149 #endif /* _GNM_SHEET_OBJECT_H_ */