]> git.sur5r.net Git - glabels/blob - src/label.h
Imported Upstream version 3.2.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
128 void          gl_label_set_merge               (glLabel       *label,
129                                                 glMerge       *merge,
130                                                 gboolean       checkpoint);
131
132 glMerge      *gl_label_get_merge               (glLabel       *label);
133
134 GHashTable   *gl_label_get_pixbuf_cache        (glLabel       *label);
135
136
137 GHashTable   *gl_label_get_svg_cache           (glLabel       *label);
138
139
140 void          gl_label_add_object              (glLabel       *label,
141                                                 glLabelObject *object);
142
143
144 void          gl_label_delete_object           (glLabel       *label,
145                                                 glLabelObject *object);
146
147 const GList  *gl_label_get_object_list         (glLabel       *label);
148
149
150
151 /*
152  * Modify selection methods
153  */
154 void          gl_label_select_object           (glLabel       *label,
155                                                 glLabelObject *object);
156
157 void          gl_label_unselect_object         (glLabel       *label,
158                                                 glLabelObject *object);
159
160 void          gl_label_select_all              (glLabel       *label);
161
162 void          gl_label_unselect_all            (glLabel       *label);
163
164 void          gl_label_select_region           (glLabel       *label,
165                                                 glLabelRegion *region);
166
167
168 /*
169  * Selection query methods
170  */
171 gboolean       gl_label_is_selection_empty      (glLabel       *label);
172
173 gboolean       gl_label_is_selection_atomic     (glLabel       *label);
174
175 glLabelObject *gl_label_get_1st_selected_object (glLabel       *label);
176
177 GList         *gl_label_get_selection_list      (glLabel       *label);
178
179 gboolean       gl_label_can_selection_text      (glLabel       *label);
180
181 gboolean       gl_label_can_selection_fill      (glLabel       *label);
182
183 gboolean       gl_label_can_selection_line_color(glLabel       *label);
184
185 gboolean       gl_label_can_selection_line_width(glLabel       *label);
186
187
188 /*
189  * Perform operations on selections
190  */
191 void          gl_label_delete_selection          (glLabel       *label);
192
193 void          gl_label_raise_selection_to_top    (glLabel       *label);
194
195 void          gl_label_lower_selection_to_bottom (glLabel       *label);
196
197 void          gl_label_rotate_selection          (glLabel       *label,
198                                                   gdouble        theta_degs);
199
200 void          gl_label_rotate_selection_left     (glLabel       *label);
201
202 void          gl_label_rotate_selection_right    (glLabel       *label);
203
204 void          gl_label_flip_selection_horiz      (glLabel       *label);
205
206 void          gl_label_flip_selection_vert       (glLabel       *label);
207
208 void          gl_label_align_selection_left      (glLabel       *label);
209
210 void          gl_label_align_selection_right     (glLabel       *label);
211
212 void          gl_label_align_selection_hcenter   (glLabel       *label);
213
214 void          gl_label_align_selection_top       (glLabel       *label);
215
216 void          gl_label_align_selection_bottom    (glLabel       *label);
217
218 void          gl_label_align_selection_vcenter   (glLabel       *label);
219
220 void          gl_label_center_selection_horiz    (glLabel       *label);
221
222 void          gl_label_center_selection_vert     (glLabel       *label);
223
224 void          gl_label_move_selection            (glLabel       *label,
225                                                   gdouble        dx,
226                                                   gdouble        dy);
227
228 void          gl_label_set_selection_font_family(glLabel        *label,
229                                                  const gchar    *font_family);
230
231 void          gl_label_set_selection_font_size  (glLabel        *label,
232                                                  gdouble         font_size);
233
234 void          gl_label_set_selection_font_weight(glLabel        *label,
235                                                  PangoWeight     font_weight);
236
237 void          gl_label_set_selection_font_italic_flag (glLabel   *label,
238                                                        gboolean   font_italic_flag);
239
240 void          gl_label_set_selection_text_alignment (glLabel        *label,
241                                                      PangoAlignment  text_alignment);
242
243 void          gl_label_set_selection_text_valignment (glLabel        *label,
244                                                       glValignment    text_valignment);
245
246 void          gl_label_set_selection_text_line_spacing (glLabel  *label,
247                                                         gdouble   text_line_spacing);
248
249 void          gl_label_set_selection_text_color (glLabel        *label,
250                                                  glColorNode    *text_color_node);
251
252 void          gl_label_set_selection_fill_color (glLabel        *label,
253                                                  glColorNode    *fill_color_node);
254
255 void          gl_label_set_selection_line_color (glLabel        *label,
256                                                  glColorNode    *line_color_node);
257
258 void          gl_label_set_selection_line_width (glLabel        *label,
259                                                  gdouble         line_width);
260
261
262 /*
263  * Clipboard operations
264  */
265 void          gl_label_cut_selection             (glLabel       *label);
266
267 void          gl_label_copy_selection            (glLabel       *label);
268
269 void          gl_label_paste                     (glLabel       *label);
270
271 gboolean      gl_label_can_paste                 (glLabel       *label);
272
273
274 /*
275  * Set/get current default values.
276  */
277 void       gl_label_set_default_font_family      (glLabel            *label,
278                                                   const gchar       *font_family);
279
280 void       gl_label_set_default_font_size        (glLabel            *label,
281                                                   gdouble            font_size);
282
283 void       gl_label_set_default_font_weight      (glLabel            *label,
284                                                   PangoWeight        font_weight);
285
286 void       gl_label_set_default_font_italic_flag (glLabel            *label,
287                                                   gboolean           font_italic_flag);
288
289 void       gl_label_set_default_text_color       (glLabel            *label,
290                                                   guint              text_color);
291
292 void       gl_label_set_default_text_alignment   (glLabel            *label,
293                                                   PangoAlignment     text_alignment);
294
295 void       gl_label_set_default_text_valignment  (glLabel            *label,
296                                                   glValignment       text_valignment);
297
298 void       gl_label_set_default_line_width       (glLabel            *label,
299                                                   gdouble            line_width);
300
301 void       gl_label_set_default_line_color       (glLabel            *label,
302                                                   guint              line_color);
303
304 void       gl_label_set_default_fill_color       (glLabel            *label,
305                                                   guint              fill_color);
306
307 void       gl_label_set_default_text_line_spacing(glLabel            *label,
308                                                   gdouble            text_line_spacing);
309
310 gchar           *gl_label_get_default_font_family      (glLabel            *label);
311
312 gdouble          gl_label_get_default_font_size        (glLabel            *label);
313
314 PangoWeight      gl_label_get_default_font_weight      (glLabel            *label);
315
316 gboolean         gl_label_get_default_font_italic_flag (glLabel            *label);
317
318 guint            gl_label_get_default_text_color       (glLabel            *label);
319
320 PangoAlignment   gl_label_get_default_text_alignment   (glLabel            *label);
321
322 glValignment     gl_label_get_default_text_valignment  (glLabel            *label);
323
324 gdouble          gl_label_get_default_text_line_spacing(glLabel            *label);
325
326 gdouble          gl_label_get_default_line_width       (glLabel            *label);
327
328 guint            gl_label_get_default_line_color       (glLabel            *label);
329
330 guint            gl_label_get_default_fill_color       (glLabel            *view);
331
332
333 /*
334  * Drawing methods
335  */
336 void           gl_label_draw                   (glLabel       *label,
337                                                 cairo_t       *cr,
338                                                 gboolean       screen_flag,
339                                                 glMergeRecord *record);
340
341 glLabelObject *gl_label_object_at              (glLabel       *label,
342                                                 cairo_t       *cr,
343                                                 gdouble        x_pixels,
344                                                 gdouble        y_pixels);
345
346 glLabelObject *gl_label_get_handle_at          (glLabel             *label,
347                                                 cairo_t             *cr,
348                                                 gdouble              x_pixels,
349                                                 gdouble              y_pixels,
350                                                 glLabelObjectHandle *handle);
351
352
353 /*
354  * Undo/Redo methods
355  */
356 void          gl_label_checkpoint              (glLabel       *label,
357                                                 const gchar   *description);
358
359 gboolean      gl_label_can_undo                (glLabel       *label);
360 gboolean      gl_label_can_redo                (glLabel       *label);
361
362 gchar        *gl_label_get_undo_description    (glLabel       *label);
363 gchar        *gl_label_get_redo_description    (glLabel       *label);
364
365 void          gl_label_undo                    (glLabel       *label);
366 void          gl_label_redo                    (glLabel       *label);
367
368
369 G_END_DECLS
370
371
372 #endif /* __LABEL_H__ */
373
374
375
376
377 /*
378  * Local Variables:       -- emacs
379  * mode: C                -- emacs
380  * c-basic-offset: 8      -- emacs
381  * tab-width: 8           -- emacs
382  * indent-tabs-mode: nil  -- emacs
383  * End:                   -- emacs
384  */