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