]> git.sur5r.net Git - glabels/blob - src/label-object.h
Allow user selection of barcode backend.
[glabels] / src / label-object.h
1 /*
2  *  label-object.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_OBJECT_H__
22 #define __LABEL_OBJECT_H__
23
24 #include <glib-object.h>
25 #include <gtk/gtk.h>
26 #include <pango/pango.h>
27 #include <cairo.h>
28
29 G_BEGIN_DECLS
30
31
32 typedef enum {
33         GL_LABEL_OBJECT_TEXT,
34         GL_LABEL_OBJECT_BOX,
35         GL_LABEL_OBJECT_LINE,
36         GL_LABEL_OBJECT_ELLIPSE,
37         GL_LABEL_OBJECT_IMAGE,
38         GL_LABEL_OBJECT_BARCODE,
39         GL_LABEL_OBJECT_N_TYPES
40 } glLabelObjectType;
41
42
43 typedef enum {
44         GL_LABEL_OBJECT_HANDLE_NONE = 0,
45         GL_LABEL_OBJECT_HANDLE_N,
46         GL_LABEL_OBJECT_HANDLE_E,
47         GL_LABEL_OBJECT_HANDLE_W,
48         GL_LABEL_OBJECT_HANDLE_S,
49         GL_LABEL_OBJECT_HANDLE_NW,
50         GL_LABEL_OBJECT_HANDLE_NE,
51         GL_LABEL_OBJECT_HANDLE_SE,
52         GL_LABEL_OBJECT_HANDLE_SW,
53         GL_LABEL_OBJECT_HANDLE_P1,
54         GL_LABEL_OBJECT_HANDLE_P2,
55 } glLabelObjectHandle;
56
57
58 #define GL_TYPE_LABEL_OBJECT              (gl_label_object_get_type ())
59 #define GL_LABEL_OBJECT(obj)              (G_TYPE_CHECK_INSTANCE_CAST ((obj), GL_TYPE_LABEL_OBJECT, glLabelObject))
60 #define GL_LABEL_OBJECT_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), GL_TYPE_LABEL_OBJECT, glLabelObjectClass))
61 #define GL_IS_LABEL_OBJECT(obj)           (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GL_TYPE_LABEL_OBJECT))
62 #define GL_IS_LABEL_OBJECT_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), GL_TYPE_LABEL_OBJECT))
63 #define GL_LABEL_OBJECT_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), GL_TYPE_LABEL_OBJECT, glLabelObjectClass))
64
65
66 typedef struct _glLabelObject          glLabelObject;
67 typedef struct _glLabelObjectClass     glLabelObjectClass;
68
69 typedef struct _glLabelObjectPrivate   glLabelObjectPrivate;
70
71 #include "label.h"
72 #include "color.h"
73
74 struct _glLabelObject {
75         GObject               object;
76
77         glLabelObjectPrivate *priv;
78 };
79
80 struct _glLabelObjectClass {
81         GObjectClass          parent_class;
82
83         /*
84          * Set/Get Methods
85          */
86
87         void              (*set_size)             (glLabelObject     *object,
88                                                    gdouble            w,
89                                                    gdouble            h,
90                                                    gboolean           checkpoint);
91
92         void              (*set_font_family)      (glLabelObject     *object,
93                                                    const gchar       *font_family,
94                                                    gboolean           checkpoint);
95
96         void              (*set_font_size)        (glLabelObject     *object,
97                                                    gdouble            font_size,
98                                                    gboolean           checkpoint);
99
100         void              (*set_font_weight)      (glLabelObject     *object,
101                                                    PangoWeight        font_weight,
102                                                    gboolean           checkpoint);
103
104         void              (*set_font_italic_flag) (glLabelObject     *object,
105                                                    gboolean           font_italic_flag,
106                                                    gboolean           checkpoint);
107
108         void              (*set_text_alignment)   (glLabelObject     *object,
109                                                    PangoAlignment     text_alignment,
110                                                    gboolean           checkpoint);
111
112         void              (*set_text_line_spacing)(glLabelObject     *object,
113                                                    gdouble            text_line_spacing,
114                                                    gboolean           checkpoint);
115
116         void              (*set_text_color)       (glLabelObject     *object,
117                                                    glColorNode       *text_color_node,
118                                                    gboolean           checkpoint);
119
120         void              (*set_fill_color)       (glLabelObject     *object,
121                                                    glColorNode       *fill_color_node,
122                                                    gboolean           checkpoint);
123
124         void              (*set_line_color)       (glLabelObject     *object,
125                                                    glColorNode       *line_color_node,
126                                                    gboolean           checkpoint);
127
128         void              (*set_line_width)       (glLabelObject     *object,
129                                                    gdouble            line_width,
130                                                    gboolean           checkpoint);
131
132         void              (*get_size)             (glLabelObject     *object,
133                                                    gdouble           *w,
134                                                    gdouble           *h);
135
136         gchar *           (*get_font_family)      (glLabelObject     *object);
137
138         gdouble           (*get_font_size)        (glLabelObject     *object);
139
140         PangoWeight       (*get_font_weight)      (glLabelObject     *object);
141
142         gboolean          (*get_font_italic_flag) (glLabelObject     *object);
143
144         PangoAlignment    (*get_text_alignment)   (glLabelObject     *object);
145
146         gdouble           (*get_text_line_spacing) (glLabelObject    *object);
147
148         glColorNode *     (*get_text_color)       (glLabelObject     *object);
149
150         glColorNode *     (*get_fill_color)       (glLabelObject     *object);
151
152         glColorNode *     (*get_line_color)       (glLabelObject     *object);
153
154         gdouble           (*get_line_width)       (glLabelObject     *object);
155
156         void              (*copy)                 (glLabelObject     *dst_object
157 ,
158                                                    glLabelObject     *src_object);
159
160         /*
161          * Draw methods
162          */
163         void        (*draw_shadow)      (glLabelObject *object,
164                                          cairo_t       *cr,
165                                          gboolean       screen_flag,
166                                          glMergeRecord *record);
167
168         void        (*draw_object)      (glLabelObject *object,
169                                          cairo_t       *cr,
170                                          gboolean       screen_flag,
171                                          glMergeRecord *record);
172
173         void        (*draw_handles)     (glLabelObject *object,
174                                          cairo_t       *cr);
175
176         /*
177          * Cairo context query methods
178          */
179         gboolean            (*object_at) (glLabelObject     *object,
180                                           cairo_t           *cr,
181                                           gdouble            x_pixels,
182                                           gdouble            y_pixels);
183
184         glLabelObjectHandle (*handle_at) (glLabelObject     *object,
185                                           cairo_t           *cr,
186                                           gdouble            x_pixels,
187                                           gdouble            y_pixels);
188
189
190         /*
191          * Signals
192          */
193
194         void        (*changed) (glLabelObject *object,
195                                 gpointer       user_data);
196
197 };
198
199
200
201 GType          gl_label_object_get_type              (void) G_GNUC_CONST;
202
203 GObject       *gl_label_object_new                   (glLabel           *label);
204
205
206 glLabelObject *gl_label_object_dup                   (glLabelObject     *src_object,
207                                                       glLabel           *label);
208
209
210 void           gl_label_object_emit_changed          (glLabelObject     *object);
211
212 void           gl_label_object_set_parent            (glLabelObject     *object,
213                                                       glLabel           *label);
214
215 glLabel       *gl_label_object_get_parent            (glLabelObject     *object);
216
217
218 void           gl_label_object_select                (glLabelObject     *object);
219 void           gl_label_object_unselect              (glLabelObject     *object);
220 gboolean       gl_label_object_is_selected           (glLabelObject     *object);
221
222 void           gl_label_object_set_name              (glLabelObject     *object,
223                                                       gchar             *name);
224
225 gchar         *gl_label_object_get_name              (glLabelObject     *object);
226
227
228 void           gl_label_object_set_position          (glLabelObject     *object,
229                                                       gdouble            x,
230                                                       gdouble            y,
231                                                       gboolean           checkpoint);
232
233 void           gl_label_object_set_position_relative (glLabelObject     *object,
234                                                       gdouble            dx,
235                                                       gdouble            dy,
236                                                       gboolean           checkpoint);
237
238 void           gl_label_object_set_size              (glLabelObject     *object,
239                                                       gdouble            w,
240                                                       gdouble            h,
241                                                       gboolean           checkpoint);
242
243 void           gl_label_object_set_size_honor_aspect (glLabelObject     *object,
244                                                       gdouble            w,
245                                                       gdouble            h,
246                                                       gboolean           checkpoint);
247
248 void           gl_label_object_set_font_family       (glLabelObject     *object,
249                                                       const gchar       *font_family,
250                                                       gboolean           checkpoint);
251
252 void           gl_label_object_set_font_size         (glLabelObject     *object,
253                                                       gdouble            font_size,
254                                                       gboolean           checkpoint);
255
256 void           gl_label_object_set_font_weight       (glLabelObject     *object,
257                                                       PangoWeight        font_weight,
258                                                       gboolean           checkpoint);
259
260 void           gl_label_object_set_font_italic_flag  (glLabelObject     *object,
261                                                       gboolean           font_italic_flag,
262                                                       gboolean           checkpoint);
263
264 void           gl_label_object_set_text_alignment    (glLabelObject     *object,
265                                                       PangoAlignment     text_alignment,
266                                                       gboolean           checkpoint);
267
268 void           gl_label_object_set_text_color        (glLabelObject     *object,
269                                                       glColorNode       *text_color_node,
270                                                       gboolean           checkpoint);
271
272 void           gl_label_object_set_text_line_spacing (glLabelObject     *object,
273                                                       gdouble            text_line_spacing,
274                                                       gboolean           checkpoint);
275
276 void           gl_label_object_set_fill_color        (glLabelObject     *object,
277                                                       glColorNode       *fill_color_node,
278                                                       gboolean           checkpoint);
279
280 void           gl_label_object_set_line_color        (glLabelObject     *object,
281                                                       glColorNode       *line_color_node,
282                                                       gboolean           checkpoint);
283
284 void           gl_label_object_set_line_width        (glLabelObject     *object,
285                                                       gdouble            line_width,
286                                                       gboolean           checkpoint);
287
288
289 void           gl_label_object_set_shadow_state      (glLabelObject     *object,
290                                                       gboolean           state,
291                                                       gboolean           checkpoint);
292
293 void           gl_label_object_set_shadow_offset     (glLabelObject     *object,
294                                                       gdouble            x,
295                                                       gdouble            y,
296                                                       gboolean           checkpoint);
297
298 void           gl_label_object_set_shadow_color      (glLabelObject     *object,
299                                                       glColorNode       *color_node,
300                                                       gboolean           checkpoint);
301
302 void           gl_label_object_set_shadow_opacity    (glLabelObject     *object,
303                                                       gdouble            alpha,
304                                                       gboolean           checkpoint);
305
306
307 void           gl_label_object_flip_horiz            (glLabelObject     *object);
308
309 void           gl_label_object_flip_vert             (glLabelObject     *object);
310
311 void           gl_label_object_rotate                (glLabelObject     *object,
312                                                       gdouble            theta_degs);
313
314 void           gl_label_object_set_matrix            (glLabelObject     *object,
315                                                       cairo_matrix_t    *matrix);
316
317
318 void           gl_label_object_get_position          (glLabelObject     *object,
319                                                       gdouble           *x,
320                                                       gdouble           *y);
321
322 void           gl_label_object_get_size              (glLabelObject     *object,
323                                                       gdouble           *w,
324                                                       gdouble           *h);
325
326 void           gl_label_object_get_raw_size          (glLabelObject     *object,
327                                                       gdouble           *w,
328                                                       gdouble           *h);
329
330 void           gl_label_object_get_extent            (glLabelObject     *object,
331                                                       glLabelRegion     *region);
332
333 gboolean       gl_label_object_can_text              (glLabelObject     *object);
334
335
336 gchar         *gl_label_object_get_font_family       (glLabelObject     *object);
337
338 gdouble        gl_label_object_get_font_size         (glLabelObject     *object);
339
340 PangoWeight    gl_label_object_get_font_weight       (glLabelObject     *object);
341
342 gboolean       gl_label_object_get_font_italic_flag  (glLabelObject     *object);
343
344 PangoAlignment gl_label_object_get_text_alignment    (glLabelObject     *object);
345
346 gdouble        gl_label_object_get_text_line_spacing (glLabelObject     *object);
347
348 glColorNode   *gl_label_object_get_text_color        (glLabelObject     *object);
349
350
351 gboolean       gl_label_object_can_fill              (glLabelObject     *object);
352
353 glColorNode*   gl_label_object_get_fill_color        (glLabelObject     *object);
354
355
356 gboolean       gl_label_object_can_line_color        (glLabelObject     *object);
357
358 glColorNode   *gl_label_object_get_line_color        (glLabelObject     *object);
359
360 gboolean       gl_label_object_can_line_width        (glLabelObject     *object);
361
362 gdouble        gl_label_object_get_line_width        (glLabelObject     *object);
363
364
365 void           gl_label_object_get_matrix            (glLabelObject     *object,
366                                                       cairo_matrix_t    *matrix);
367
368 gboolean       gl_label_object_get_shadow_state      (glLabelObject     *object);
369
370 void           gl_label_object_get_shadow_offset     (glLabelObject     *object,
371                                                       gdouble           *x,
372                                                       gdouble           *y);
373
374 glColorNode*   gl_label_object_get_shadow_color      (glLabelObject     *object);
375
376 gdouble        gl_label_object_get_shadow_opacity    (glLabelObject     *object);
377
378
379 void           gl_label_object_draw                  (glLabelObject     *object,
380                                                       cairo_t           *cr,
381                                                       gboolean           screen_flag,
382                                                       glMergeRecord     *record);
383
384 gboolean       gl_label_object_is_located_at         (glLabelObject     *object,
385                                                       cairo_t           *cr,
386                                                       gdouble            x_pixels,
387                                                       gdouble            y_pixels);
388
389 void           gl_label_object_draw_handles          (glLabelObject     *object,
390                                                       cairo_t           *cr);
391
392 glLabelObjectHandle gl_label_object_handle_at        (glLabelObject     *object,
393                                                       cairo_t           *cr,
394                                                       gdouble            x_pixels,
395                                                       gdouble            y_pixels);
396
397
398 /*
399  * Specific handle drawing methods.
400  */
401 void           gl_label_object_draw_handles_box      (glLabelObject     *object,
402                                                       cairo_t           *cr);
403
404 void           gl_label_object_draw_handles_line     (glLabelObject     *object,
405                                                       cairo_t           *cr);
406
407
408 /*
409  * Specific handle query methods.
410  */
411 glLabelObjectHandle gl_label_object_box_handle_at    (glLabelObject     *object,
412                                                       cairo_t           *cr,
413                                                       gdouble            x,
414                                                       gdouble            y);
415
416 glLabelObjectHandle gl_label_object_line_handle_at   (glLabelObject     *object,
417                                                       cairo_t           *cr,
418                                                       gdouble            x,
419                                                       gdouble            y);
420
421
422
423 G_END_DECLS
424
425 #endif /* __LABEL_OBJECT_H__ */
426
427
428
429
430 /*
431  * Local Variables:       -- emacs
432  * mode: C                -- emacs
433  * c-basic-offset: 8      -- emacs
434  * tab-width: 8           -- emacs
435  * indent-tabs-mode: nil  -- emacs
436  * End:                   -- emacs
437  */