]> git.sur5r.net Git - glabels/blob - glabels2/src/label-object.h
2009-09-22 Jim Evins <evins@snaught.com>
[glabels] / glabels2 / 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 <pango/pango.h>
26 #include <cairo.h>
27
28 G_BEGIN_DECLS
29
30 typedef enum {
31         GL_LABEL_OBJECT_TEXT,
32         GL_LABEL_OBJECT_BOX,
33         GL_LABEL_OBJECT_LINE,
34         GL_LABEL_OBJECT_ELLIPSE,
35         GL_LABEL_OBJECT_IMAGE,
36         GL_LABEL_OBJECT_BARCODE,
37         GL_LABEL_OBJECT_N_TYPES
38 } glLabelObjectType;
39
40
41 #define GL_TYPE_LABEL_OBJECT              (gl_label_object_get_type ())
42 #define GL_LABEL_OBJECT(obj)              (G_TYPE_CHECK_INSTANCE_CAST ((obj), GL_TYPE_LABEL_OBJECT, glLabelObject))
43 #define GL_LABEL_OBJECT_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), GL_TYPE_LABEL_OBJECT, glLabelObjectClass))
44 #define GL_IS_LABEL_OBJECT(obj)           (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GL_TYPE_LABEL_OBJECT))
45 #define GL_IS_LABEL_OBJECT_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), GL_TYPE_LABEL_OBJECT))
46 #define GL_LABEL_OBJECT_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), GL_TYPE_LABEL_OBJECT, glLabelObjectClass))
47
48
49 typedef struct _glLabelObject          glLabelObject;
50 typedef struct _glLabelObjectClass     glLabelObjectClass;
51
52 typedef struct _glLabelObjectPrivate   glLabelObjectPrivate;
53
54 #include "label.h"
55 #include "color.h"
56
57 struct _glLabelObject {
58         GObject               object;
59
60         glLabel              *parent;
61
62         glLabelObjectPrivate *priv;
63 };
64
65 struct _glLabelObjectClass {
66         GObjectClass          parent_class;
67
68         /*
69          * Methods
70          */
71
72         void              (*set_size)             (glLabelObject     *object,
73                                                    gdouble            w,
74                                                    gdouble            h);
75
76         void              (*get_size)             (glLabelObject     *object,
77                                                    gdouble           *w,
78                                                    gdouble           *h);
79
80         void              (*set_font_family)      (glLabelObject     *object,
81                                                    const gchar       *font_family);
82
83         void              (*set_font_size)        (glLabelObject     *object,
84                                                    gdouble            font_size);
85
86         void              (*set_font_weight)      (glLabelObject     *object,
87                                                    PangoWeight        font_weight);
88
89         void              (*set_font_italic_flag) (glLabelObject     *object,
90                                                    gboolean           font_italic_flag);
91
92         void              (*set_text_alignment)   (glLabelObject     *object,
93                                                    PangoAlignment     text_alignment);
94
95         void              (*set_text_line_spacing) (glLabelObject    *object,
96                                                     gdouble           text_line_spacing);
97
98         void              (*set_text_color)       (glLabelObject     *object,
99                                                    glColorNode       *text_color_node);
100
101         void              (*set_fill_color)       (glLabelObject     *object,
102                                                    glColorNode       *fill_color_node);
103
104         void              (*set_line_color)       (glLabelObject     *object,
105                                                    glColorNode       *line_color_node);
106
107         void              (*set_line_width)       (glLabelObject     *object,
108                                                    gdouble            line_width);
109
110         gchar            *(*get_font_family)      (glLabelObject     *object);
111
112         gdouble           (*get_font_size)        (glLabelObject     *object);
113
114         PangoWeight       (*get_font_weight)      (glLabelObject     *object);
115
116         gboolean          (*get_font_italic_flag) (glLabelObject     *object);
117
118         PangoAlignment    (*get_text_alignment)   (glLabelObject     *object);
119
120         gdouble           (*get_text_line_spacing) (glLabelObject    *object);
121
122         glColorNode*      (*get_text_color)       (glLabelObject     *object);
123
124         glColorNode*      (*get_fill_color)       (glLabelObject     *object);
125
126         glColorNode*      (*get_line_color)       (glLabelObject     *object);
127
128         gdouble           (*get_line_width)       (glLabelObject     *object);
129
130         void              (*copy)                 (glLabelObject     *dst_object,
131                                                    glLabelObject     *src_object);
132
133         /*
134          * Draw methods
135          */
136         void        (*draw_shadow)      (glLabelObject *object,
137                                          cairo_t       *cr,
138                                          gboolean       screen_flag,
139                                          glMergeRecord *record);
140
141         void        (*draw_object)      (glLabelObject *object,
142                                          cairo_t       *cr,
143                                          gboolean       screen_flag,
144                                          glMergeRecord *record);
145
146
147         /*
148          * Signals
149          */
150         void (*changed)     (glLabelObject     *object,
151                              gpointer            user_data);
152
153         void (*moved)       (glLabelObject     *object,
154                              gdouble            dx,
155                              gdouble            dy,
156                              gpointer           user_data);
157
158         void (*flip_rotate) (glLabelObject     *object,
159                              gpointer           user_data);
160
161         void (*top)         (glLabelObject     *object,
162                              gpointer           user_data);
163
164         void (*bottom)      (glLabelObject     *object,
165                              gpointer           user_data);
166
167         void (*removed)     (glLabelObject     *object,
168                              gpointer            user_data);
169
170 };
171
172 GType          gl_label_object_get_type              (void) G_GNUC_CONST;
173
174 GObject       *gl_label_object_new                   (glLabel           *label);
175
176
177 glLabelObject *gl_label_object_dup                   (glLabelObject     *src_object,
178                                                       glLabel           *label);
179
180 void           gl_label_object_emit_changed          (glLabelObject     *object);
181
182
183 void           gl_label_object_set_parent            (glLabelObject     *object,
184                                                       glLabel           *label);
185
186 glLabel       *gl_label_object_get_parent            (glLabelObject     *object);
187
188
189 void           gl_label_object_remove                (glLabelObject     *object);
190
191 void           gl_label_object_set_name              (glLabelObject     *object,
192                                                       gchar             *name);
193
194 gchar         *gl_label_object_get_name              (glLabelObject     *object);
195
196
197 void           gl_label_object_set_position          (glLabelObject     *object,
198                                                       gdouble            x,
199                                                       gdouble            y);
200
201 void           gl_label_object_set_position_relative (glLabelObject     *object,
202                                                       gdouble            dx,
203                                                       gdouble            dy);
204
205 void           gl_label_object_get_position          (glLabelObject     *object,
206                                                       gdouble           *x,
207                                                       gdouble           *y);
208
209 void           gl_label_object_set_size              (glLabelObject     *object,
210                                                       gdouble            w,
211                                                       gdouble            h);
212
213 void           gl_label_object_set_size_honor_aspect (glLabelObject     *object,
214                                                       gdouble            w,
215                                                       gdouble            h);
216
217 void           gl_label_object_get_size              (glLabelObject     *object,
218                                                       gdouble           *w,
219                                                       gdouble           *h);
220
221 void           gl_label_object_get_raw_size          (glLabelObject     *object,
222                                                       gdouble           *w,
223                                                       gdouble           *h);
224
225 void           gl_label_object_get_extent            (glLabelObject     *object,
226                                                       glLabelRegion     *region);
227
228 gboolean       gl_label_object_can_text              (glLabelObject     *object);
229
230 void           gl_label_object_set_font_family       (glLabelObject     *object,
231                                                       const gchar       *font_family);
232
233 void           gl_label_object_set_font_size         (glLabelObject     *object,
234                                                       gdouble            font_size);
235
236 void           gl_label_object_set_font_weight       (glLabelObject     *object,
237                                                       PangoWeight        font_weight);
238
239 void           gl_label_object_set_font_italic_flag  (glLabelObject     *object,
240                                                       gboolean           font_italic_flag);
241
242 void           gl_label_object_set_text_alignment    (glLabelObject     *object,
243                                                       PangoAlignment     text_alignment);
244
245 void           gl_label_object_set_text_color        (glLabelObject     *object,
246                                                       glColorNode       *text_color_node);
247
248 void           gl_label_object_set_text_line_spacing (glLabelObject     *object,
249                                                       gdouble            text_line_spacing);
250
251
252 gchar           *gl_label_object_get_font_family       (glLabelObject     *object);
253
254 gdouble          gl_label_object_get_font_size         (glLabelObject     *object);
255
256 PangoWeight      gl_label_object_get_font_weight       (glLabelObject     *object);
257
258 gboolean         gl_label_object_get_font_italic_flag  (glLabelObject     *object);
259
260 PangoAlignment   gl_label_object_get_text_alignment    (glLabelObject     *object);
261
262 gdouble          gl_label_object_get_text_line_spacing (glLabelObject     *object);
263
264 glColorNode     *gl_label_object_get_text_color        (glLabelObject     *object);
265
266
267 gboolean       gl_label_object_can_fill              (glLabelObject     *object);
268
269 void           gl_label_object_set_fill_color        (glLabelObject     *object,
270                                                       glColorNode       *fill_color_node);
271
272 glColorNode*   gl_label_object_get_fill_color        (glLabelObject     *object);
273
274
275 gboolean       gl_label_object_can_line_color        (glLabelObject     *object);
276
277 void           gl_label_object_set_line_color        (glLabelObject     *object,
278                                                       glColorNode       *line_color_node);
279
280 glColorNode   *gl_label_object_get_line_color        (glLabelObject     *object);
281
282 gboolean       gl_label_object_can_line_width        (glLabelObject     *object);
283
284 void           gl_label_object_set_line_width        (glLabelObject     *object,
285                                                       gdouble            line_width);
286
287 gdouble        gl_label_object_get_line_width        (glLabelObject     *object);
288
289
290 void           gl_label_object_raise_to_top          (glLabelObject     *object);
291
292 void           gl_label_object_lower_to_bottom       (glLabelObject     *object);
293
294
295 void           gl_label_object_flip_horiz            (glLabelObject     *object);
296
297 void           gl_label_object_flip_vert             (glLabelObject     *object);
298
299 void           gl_label_object_rotate                (glLabelObject     *object,
300                                                       gdouble            theta_degs);
301
302 void           gl_label_object_set_matrix            (glLabelObject     *object,
303                                                       cairo_matrix_t    *matrix);
304
305 void           gl_label_object_get_matrix            (glLabelObject     *object,
306                                                       cairo_matrix_t    *matrix);
307
308 void           gl_label_object_set_shadow_state      (glLabelObject     *object,
309                                                       gboolean           state);
310
311 void           gl_label_object_set_shadow_offset     (glLabelObject     *object,
312                                                       gdouble            x,
313                                                       gdouble            y);
314
315 void           gl_label_object_set_shadow_color      (glLabelObject     *object,
316                                                       glColorNode       *color_node);
317
318 void           gl_label_object_set_shadow_opacity    (glLabelObject     *object,
319                                                       gdouble            alpha);
320
321 gboolean       gl_label_object_get_shadow_state      (glLabelObject     *object);
322
323 void           gl_label_object_get_shadow_offset     (glLabelObject     *object,
324                                                       gdouble           *x,
325                                                       gdouble           *y);
326
327 glColorNode*   gl_label_object_get_shadow_color      (glLabelObject     *object);
328
329 gdouble        gl_label_object_get_shadow_opacity    (glLabelObject     *object);
330
331 void           gl_label_object_draw                  (glLabelObject     *object,
332                                                       cairo_t           *cr,
333                                                       gboolean           screen_flag,
334                                                       glMergeRecord     *record);
335
336
337
338
339 G_END_DECLS
340
341 #endif /* __LABEL_OBJECT_H__ */
342
343
344
345
346 /*
347  * Local Variables:       -- emacs
348  * mode: C                -- emacs
349  * c-basic-offset: 8      -- emacs
350  * tab-width: 8           -- emacs
351  * indent-tabs-mode: nil  -- emacs
352  * End:                   -- emacs
353  */