]> git.sur5r.net Git - glabels/blob - src/label.h
Imported Upstream version 3.4.0
[glabels] / src / label.h
1 /*
2  *  label.h
3  *  Copyright (C) 2001-2009  Jim Evins <evins@snaught.com>.
4  *
5  *  This file is part of gLabels.
6  *
7  *  gLabels is free software: you can redistribute it and/or modify
8  *  it under the terms of the GNU General Public License as published by
9  *  the Free Software Foundation, either version 3 of the License, or
10  *  (at your option) any later version.
11  *
12  *  gLabels is distributed in the hope that it will be useful,
13  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  *  GNU General Public License for more details.
16  *
17  *  You should have received a copy of the GNU General Public License
18  *  along with gLabels.  If not, see <http://www.gnu.org/licenses/>.
19  */
20
21 #ifndef __LABEL_H__
22 #define __LABEL_H__
23
24 #include <gtk/gtk.h>
25 #include <cairo.h>
26
27 #include <libglabels/libglabels.h>
28 #include "merge.h"
29 #include "color.h"
30 #include "pixbuf-cache.h"
31 #include "svg-cache.h"
32
33 G_BEGIN_DECLS
34
35 typedef struct {
36         gdouble x1;
37         gdouble y1;
38         gdouble x2;
39         gdouble y2;
40 } glLabelRegion;
41
42 #define GL_TYPE_LABEL            (gl_label_get_type ())
43 #define GL_LABEL(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GL_TYPE_LABEL, glLabel))
44 #define GL_LABEL_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GL_TYPE_LABEL, glLabelClass))
45 #define GL_IS_LABEL(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GL_TYPE_LABEL))
46 #define GL_IS_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GL_TYPE_LABEL))
47
48 typedef struct _glLabel          glLabel;
49 typedef struct _glLabelClass     glLabelClass;
50
51 typedef struct _glLabelPrivate   glLabelPrivate;
52
53 #include "label-object.h"
54 struct _glLabel {
55         GObject         object;
56
57         glLabelPrivate *priv;
58 };
59
60 struct _glLabelClass {
61         GObjectClass         parent_class;
62
63         void (*selection_changed) (glLabel       *view,
64                                    gpointer       user_data);
65
66         void (*changed)           (glLabel       *label,
67                                    gpointer       user_data);
68
69         void (*name_changed)      (glLabel       *label,
70                                    gpointer       user_data);
71
72         void (*modified_changed)  (glLabel       *label,
73                                    gpointer       user_data);
74
75         void (*merge_changed)     (glLabel       *label,
76                                    gpointer       user_data);
77
78         void (*size_changed)      (glLabel       *label,
79                                    gpointer       user_data);
80 };
81
82
83 GType         gl_label_get_type                (void) G_GNUC_CONST;
84
85 GObject      *gl_label_new                     (void);
86
87
88 void          gl_label_set_filename            (glLabel       *label,
89                                                 const gchar   *filename);
90
91 gchar        *gl_label_get_filename            (glLabel       *label);
92
93 gchar        *gl_label_get_short_name          (glLabel       *label);
94
95 gboolean      gl_label_is_untitled             (glLabel       *label);
96
97
98 void          gl_label_set_compression         (glLabel       *label,
99                                                 gint           compression);
100
101 gint          gl_label_get_compression         (glLabel       *label);
102
103
104 void          gl_label_set_modified            (glLabel       *label);
105
106 void          gl_label_clear_modified          (glLabel       *label);
107
108 gboolean      gl_label_is_modified             (glLabel       *label);
109
110
111 void          gl_label_set_template            (glLabel            *label,
112                                                 const lglTemplate  *template,
113                                                 gboolean            checkpoint);
114
115 const lglTemplate *gl_label_get_template       (glLabel            *label);
116
117 void          gl_label_set_rotate_flag         (glLabel       *label,
118                                                 gboolean       rotate_flag,
119                                                 gboolean       checkpoint);
120
121 gboolean      gl_label_get_rotate_flag         (glLabel       *label);
122
123 void          gl_label_get_size                (glLabel       *label,
124                                                 gdouble       *w,
125                                                 gdouble       *h);
126
127 gchar        *gl_label_get_dimensions_string   (glLabel       *label);
128
129 void          gl_label_set_merge               (glLabel       *label,
130                                                 glMerge       *merge,
131                                                 gboolean       checkpoint);
132
133 glMerge      *gl_label_get_merge               (glLabel       *label);
134
135 GHashTable   *gl_label_get_pixbuf_cache        (glLabel       *label);
136
137
138 GHashTable   *gl_label_get_svg_cache           (glLabel       *label);
139
140
141 void          gl_label_add_object              (glLabel       *label,
142                                                 glLabelObject *object);
143
144
145 void          gl_label_delete_object           (glLabel       *label,
146                                                 glLabelObject *object);
147
148 const GList  *gl_label_get_object_list         (glLabel       *label);
149
150
151
152 /*
153  * Modify selection methods
154  */
155 void          gl_label_select_object           (glLabel       *label,
156                                                 glLabelObject *object);
157
158 void          gl_label_unselect_object         (glLabel       *label,
159                                                 glLabelObject *object);
160
161 void          gl_label_select_all              (glLabel       *label);
162
163 void          gl_label_unselect_all            (glLabel       *label);
164
165 void          gl_label_select_region           (glLabel       *label,
166                                                 glLabelRegion *region);
167
168
169 /*
170  * Selection query methods
171  */
172 gboolean       gl_label_is_selection_empty      (glLabel       *label);
173
174 gboolean       gl_label_is_selection_atomic     (glLabel       *label);
175
176 glLabelObject *gl_label_get_1st_selected_object (glLabel       *label);
177
178 GList         *gl_label_get_selection_list      (glLabel       *label);
179
180 gboolean       gl_label_can_selection_text      (glLabel       *label);
181
182 gboolean       gl_label_can_selection_fill      (glLabel       *label);
183
184 gboolean       gl_label_can_selection_line_color(glLabel       *label);
185
186 gboolean       gl_label_can_selection_line_width(glLabel       *label);
187
188
189 /*
190  * Perform operations on selections
191  */
192 void          gl_label_delete_selection          (glLabel       *label);
193
194 void          gl_label_raise_selection_to_top    (glLabel       *label);
195
196 void          gl_label_lower_selection_to_bottom (glLabel       *label);
197
198 void          gl_label_rotate_selection          (glLabel       *label,
199                                                   gdouble        theta_degs);
200
201 void          gl_label_rotate_selection_left     (glLabel       *label);
202
203 void          gl_label_rotate_selection_right    (glLabel       *label);
204
205 void          gl_label_flip_selection_horiz      (glLabel       *label);
206
207 void          gl_label_flip_selection_vert       (glLabel       *label);
208
209 void          gl_label_align_selection_left      (glLabel       *label);
210
211 void          gl_label_align_selection_right     (glLabel       *label);
212
213 void          gl_label_align_selection_hcenter   (glLabel       *label);
214
215 void          gl_label_align_selection_top       (glLabel       *label);
216
217 void          gl_label_align_selection_bottom    (glLabel       *label);
218
219 void          gl_label_align_selection_vcenter   (glLabel       *label);
220
221 void          gl_label_center_selection_horiz    (glLabel       *label);
222
223 void          gl_label_center_selection_vert     (glLabel       *label);
224
225 void          gl_label_move_selection            (glLabel       *label,
226                                                   gdouble        dx,
227                                                   gdouble        dy);
228
229 void          gl_label_set_selection_font_family(glLabel        *label,
230                                                  const gchar    *font_family);
231
232 void          gl_label_set_selection_font_size  (glLabel        *label,
233                                                  gdouble         font_size);
234
235 void          gl_label_set_selection_font_weight(glLabel        *label,
236                                                  PangoWeight     font_weight);
237
238 void          gl_label_set_selection_font_italic_flag (glLabel   *label,
239                                                        gboolean   font_italic_flag);
240
241 void          gl_label_set_selection_text_alignment (glLabel        *label,
242                                                      PangoAlignment  text_alignment);
243
244 void          gl_label_set_selection_text_valignment (glLabel        *label,
245                                                       glValignment    text_valignment);
246
247 void          gl_label_set_selection_text_line_spacing (glLabel  *label,
248                                                         gdouble   text_line_spacing);
249
250 void          gl_label_set_selection_text_color (glLabel        *label,
251                                                  glColorNode    *text_color_node);
252
253 void          gl_label_set_selection_fill_color (glLabel        *label,
254                                                  glColorNode    *fill_color_node);
255
256 void          gl_label_set_selection_line_color (glLabel        *label,
257                                                  glColorNode    *line_color_node);
258
259 void          gl_label_set_selection_line_width (glLabel        *label,
260                                                  gdouble         line_width);
261
262
263 /*
264  * Clipboard operations
265  */
266 void          gl_label_cut_selection             (glLabel       *label);
267
268 void          gl_label_copy_selection            (glLabel       *label);
269
270 void          gl_label_paste                     (glLabel       *label);
271
272 gboolean      gl_label_can_paste                 (glLabel       *label);
273
274
275 /*
276  * Set/get current default values.
277  */
278 void       gl_label_set_default_font_family      (glLabel            *label,
279                                                   const gchar       *font_family);
280
281 void       gl_label_set_default_font_size        (glLabel            *label,
282                                                   gdouble            font_size);
283
284 void       gl_label_set_default_font_weight      (glLabel            *label,
285                                                   PangoWeight        font_weight);
286
287 void       gl_label_set_default_font_italic_flag (glLabel            *label,
288                                                   gboolean           font_italic_flag);
289
290 void       gl_label_set_default_text_color       (glLabel            *label,
291                                                   guint              text_color);
292
293 void       gl_label_set_default_text_alignment   (glLabel            *label,
294                                                   PangoAlignment     text_alignment);
295
296 void       gl_label_set_default_text_valignment  (glLabel            *label,
297                                                   glValignment       text_valignment);
298
299 void       gl_label_set_default_line_width       (glLabel            *label,
300                                                   gdouble            line_width);
301
302 void       gl_label_set_default_line_color       (glLabel            *label,
303                                                   guint              line_color);
304
305 void       gl_label_set_default_fill_color       (glLabel            *label,
306                                                   guint              fill_color);
307
308 void       gl_label_set_default_text_line_spacing(glLabel            *label,
309                                                   gdouble            text_line_spacing);
310
311 gchar           *gl_label_get_default_font_family      (glLabel            *label);
312
313 gdouble          gl_label_get_default_font_size        (glLabel            *label);
314
315 PangoWeight      gl_label_get_default_font_weight      (glLabel            *label);
316
317 gboolean         gl_label_get_default_font_italic_flag (glLabel            *label);
318
319 guint            gl_label_get_default_text_color       (glLabel            *label);
320
321 PangoAlignment   gl_label_get_default_text_alignment   (glLabel            *label);
322
323 glValignment     gl_label_get_default_text_valignment  (glLabel            *label);
324
325 gdouble          gl_label_get_default_text_line_spacing(glLabel            *label);
326
327 gdouble          gl_label_get_default_line_width       (glLabel            *label);
328
329 guint            gl_label_get_default_line_color       (glLabel            *label);
330
331 guint            gl_label_get_default_fill_color       (glLabel            *view);
332
333
334 /*
335  * Drawing methods
336  */
337 void           gl_label_draw                   (glLabel       *label,
338                                                 cairo_t       *cr,
339                                                 gboolean       screen_flag,
340                                                 glMergeRecord *record);
341
342 glLabelObject *gl_label_object_at              (glLabel       *label,
343                                                 cairo_t       *cr,
344                                                 gdouble        x_pixels,
345                                                 gdouble        y_pixels);
346
347 glLabelObject *gl_label_get_handle_at          (glLabel             *label,
348                                                 cairo_t             *cr,
349                                                 gdouble              x_pixels,
350                                                 gdouble              y_pixels,
351                                                 glLabelObjectHandle *handle);
352
353
354 /*
355  * Undo/Redo methods
356  */
357 void          gl_label_checkpoint              (glLabel       *label,
358                                                 const gchar   *description);
359
360 gboolean      gl_label_can_undo                (glLabel       *label);
361 gboolean      gl_label_can_redo                (glLabel       *label);
362
363 gchar        *gl_label_get_undo_description    (glLabel       *label);
364 gchar        *gl_label_get_redo_description    (glLabel       *label);
365
366 void          gl_label_undo                    (glLabel       *label);
367 void          gl_label_redo                    (glLabel       *label);
368
369
370 G_END_DECLS
371
372
373 #endif /* __LABEL_H__ */
374
375
376
377
378 /*
379  * Local Variables:       -- emacs
380  * mode: C                -- emacs
381  * c-basic-offset: 8      -- emacs
382  * tab-width: 8           -- emacs
383  * indent-tabs-mode: nil  -- emacs
384  * End:                   -- emacs
385  */