]> git.sur5r.net Git - glabels/blob - src/label-object.h
Imported Upstream version 2.2.8
[glabels] / src / label-object.h
1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */
2
3 /*
4  *  (GLABELS) Label and Business Card Creation program for GNOME
5  *
6  *  label_object.h:  GLabels label object base class
7  *
8  *  Copyright (C) 2001-2007  Jim Evins <evins@snaught.com>.
9  *
10  *  This program is free software; you can redistribute it and/or modify
11  *  it under the terms of the GNU General Public License as published by
12  *  the Free Software Foundation; either version 2 of the License, or
13  *  (at your option) any later version.
14  *
15  *  This program is distributed in the hope that it will be useful,
16  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
17  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  *  GNU General Public License for more details.
19  *
20  *  You should have received a copy of the GNU General Public License
21  *  along with this program; if not, write to the Free Software
22  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
23  */
24
25 #ifndef __LABEL_OBJECT_H__
26 #define __LABEL_OBJECT_H__
27
28 #include <glib-object.h>
29 #include <pango/pango.h>
30 #include <cairo.h>
31
32 G_BEGIN_DECLS
33
34 typedef enum {
35         GL_LABEL_OBJECT_TEXT,
36         GL_LABEL_OBJECT_BOX,
37         GL_LABEL_OBJECT_LINE,
38         GL_LABEL_OBJECT_ELLIPSE,
39         GL_LABEL_OBJECT_IMAGE,
40         GL_LABEL_OBJECT_BARCODE,
41         GL_LABEL_OBJECT_N_TYPES
42 } glLabelObjectType;
43
44
45 #define GL_TYPE_LABEL_OBJECT              (gl_label_object_get_type ())
46 #define GL_LABEL_OBJECT(obj)              (G_TYPE_CHECK_INSTANCE_CAST ((obj), GL_TYPE_LABEL_OBJECT, glLabelObject))
47 #define GL_LABEL_OBJECT_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), GL_TYPE_LABEL_OBJECT, glLabelObjectClass))
48 #define GL_IS_LABEL_OBJECT(obj)           (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GL_TYPE_LABEL_OBJECT))
49 #define GL_IS_LABEL_OBJECT_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), GL_TYPE_LABEL_OBJECT))
50 #define GL_LABEL_OBJECT_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), GL_TYPE_LABEL_OBJECT, glLabelObjectClass))
51
52
53 typedef struct _glLabelObject          glLabelObject;
54 typedef struct _glLabelObjectClass     glLabelObjectClass;
55
56 typedef struct _glLabelObjectPrivate   glLabelObjectPrivate;
57
58 #include "label.h"
59 #include "color.h"
60
61 struct _glLabelObject {
62         GObject               object;
63
64         glLabel              *parent;
65
66         glLabelObjectPrivate *priv;
67 };
68
69 struct _glLabelObjectClass {
70         GObjectClass          parent_class;
71
72         /*
73          * Methods
74          */
75
76         void              (*set_size)             (glLabelObject     *object,
77                                                    gdouble            w,
78                                                    gdouble            h);
79
80         void              (*get_size)             (glLabelObject     *object,
81                                                    gdouble           *w,
82                                                    gdouble           *h);
83
84         void              (*set_font_family)      (glLabelObject     *object,
85                                                    const gchar       *font_family);
86
87         void              (*set_font_size)        (glLabelObject     *object,
88                                                    gdouble            font_size);
89
90         void              (*set_font_weight)      (glLabelObject     *object,
91                                                    PangoWeight        font_weight);
92
93         void              (*set_font_italic_flag) (glLabelObject     *object,
94                                                    gboolean           font_italic_flag);
95
96         void              (*set_text_alignment)   (glLabelObject     *object,
97                                                    PangoAlignment     text_alignment);
98
99         void              (*set_text_line_spacing) (glLabelObject    *object,
100                                                     gdouble           text_line_spacing);
101
102         void              (*set_text_color)       (glLabelObject     *object,
103                                                    glColorNode       *text_color_node);
104
105         void              (*set_fill_color)       (glLabelObject     *object,
106                                                    glColorNode       *fill_color_node);
107
108         void              (*set_line_color)       (glLabelObject     *object,
109                                                    glColorNode       *line_color_node);
110
111         void              (*set_line_width)       (glLabelObject     *object,
112                                                    gdouble            line_width);
113
114         gchar            *(*get_font_family)      (glLabelObject     *object);
115
116         gdouble           (*get_font_size)        (glLabelObject     *object);
117
118         PangoWeight       (*get_font_weight)      (glLabelObject     *object);
119
120         gboolean          (*get_font_italic_flag) (glLabelObject     *object);
121
122         PangoAlignment    (*get_text_alignment)   (glLabelObject     *object);
123
124         gdouble           (*get_text_line_spacing) (glLabelObject    *object);
125
126         glColorNode*      (*get_text_color)       (glLabelObject     *object);
127
128         glColorNode*      (*get_fill_color)       (glLabelObject     *object);
129
130         glColorNode*      (*get_line_color)       (glLabelObject     *object);
131
132         gdouble           (*get_line_width)       (glLabelObject     *object);
133
134         void              (*copy)                 (glLabelObject     *dst_object,
135                                                    glLabelObject     *src_object);
136
137         /*
138          * Draw methods
139          */
140         void        (*draw_shadow)      (glLabelObject *object,
141                                          cairo_t       *cr,
142                                          gboolean       screen_flag,
143                                          glMergeRecord *record);
144
145         void        (*draw_object)      (glLabelObject *object,
146                                          cairo_t       *cr,
147                                          gboolean       screen_flag,
148                                          glMergeRecord *record);
149
150
151         /*
152          * Signals
153          */
154         void (*changed)     (glLabelObject     *object,
155                              gpointer            user_data);
156
157         void (*moved)       (glLabelObject     *object,
158                              gdouble            dx,
159                              gdouble            dy,
160                              gpointer           user_data);
161
162         void (*flip_rotate) (glLabelObject     *object,
163                              gpointer           user_data);
164
165         void (*top)         (glLabelObject     *object,
166                              gpointer           user_data);
167
168         void (*bottom)      (glLabelObject     *object,
169                              gpointer           user_data);
170
171         void (*removed)     (glLabelObject     *object,
172                              gpointer            user_data);
173
174 };
175
176 GType          gl_label_object_get_type              (void) G_GNUC_CONST;
177
178 GObject       *gl_label_object_new                   (glLabel           *label);
179
180
181 glLabelObject *gl_label_object_dup                   (glLabelObject     *src_object,
182                                                       glLabel           *label);
183
184 void           gl_label_object_emit_changed          (glLabelObject     *object);
185
186
187 void           gl_label_object_set_parent            (glLabelObject     *object,
188                                                       glLabel           *label);
189
190 glLabel       *gl_label_object_get_parent            (glLabelObject     *object);
191
192
193 void           gl_label_object_remove                (glLabelObject     *object);
194
195 void           gl_label_object_set_name              (glLabelObject     *object,
196                                                       gchar             *name);
197
198 gchar         *gl_label_object_get_name              (glLabelObject     *object);
199
200
201 void           gl_label_object_set_position          (glLabelObject     *object,
202                                                       gdouble            x,
203                                                       gdouble            y);
204
205 void           gl_label_object_set_position_relative (glLabelObject     *object,
206                                                       gdouble            dx,
207                                                       gdouble            dy);
208
209 void           gl_label_object_get_position          (glLabelObject     *object,
210                                                       gdouble           *x,
211                                                       gdouble           *y);
212
213 void           gl_label_object_set_size              (glLabelObject     *object,
214                                                       gdouble            w,
215                                                       gdouble            h);
216
217 void           gl_label_object_set_size_honor_aspect (glLabelObject     *object,
218                                                       gdouble            w,
219                                                       gdouble            h);
220
221 void           gl_label_object_get_size              (glLabelObject     *object,
222                                                       gdouble           *w,
223                                                       gdouble           *h);
224
225 void           gl_label_object_get_raw_size          (glLabelObject     *object,
226                                                       gdouble           *w,
227                                                       gdouble           *h);
228
229 void           gl_label_object_get_extent            (glLabelObject     *object,
230                                                       glLabelRegion     *region);
231
232 gboolean       gl_label_object_can_text              (glLabelObject     *object);
233
234 void           gl_label_object_set_font_family       (glLabelObject     *object,
235                                                       const gchar       *font_family);
236
237 void           gl_label_object_set_font_size         (glLabelObject     *object,
238                                                       gdouble            font_size);
239
240 void           gl_label_object_set_font_weight       (glLabelObject     *object,
241                                                       PangoWeight        font_weight);
242
243 void           gl_label_object_set_font_italic_flag  (glLabelObject     *object,
244                                                       gboolean           font_italic_flag);
245
246 void           gl_label_object_set_text_alignment    (glLabelObject     *object,
247                                                       PangoAlignment     text_alignment);
248
249 void           gl_label_object_set_text_color        (glLabelObject     *object,
250                                                       glColorNode       *text_color_node);
251
252 void           gl_label_object_set_text_line_spacing (glLabelObject     *object,
253                                                       gdouble            text_line_spacing);
254
255
256 gchar           *gl_label_object_get_font_family       (glLabelObject     *object);
257
258 gdouble          gl_label_object_get_font_size         (glLabelObject     *object);
259
260 PangoWeight      gl_label_object_get_font_weight       (glLabelObject     *object);
261
262 gboolean         gl_label_object_get_font_italic_flag  (glLabelObject     *object);
263
264 PangoAlignment   gl_label_object_get_text_alignment    (glLabelObject     *object);
265
266 gdouble          gl_label_object_get_text_line_spacing (glLabelObject     *object);
267
268 glColorNode     *gl_label_object_get_text_color        (glLabelObject     *object);
269
270
271 gboolean       gl_label_object_can_fill              (glLabelObject     *object);
272
273 void           gl_label_object_set_fill_color        (glLabelObject     *object,
274                                                       glColorNode       *fill_color_node);
275
276 glColorNode*   gl_label_object_get_fill_color        (glLabelObject     *object);
277
278
279 gboolean       gl_label_object_can_line_color        (glLabelObject     *object);
280
281 void           gl_label_object_set_line_color        (glLabelObject     *object,
282                                                       glColorNode       *line_color_node);
283
284 glColorNode   *gl_label_object_get_line_color        (glLabelObject     *object);
285
286 gboolean       gl_label_object_can_line_width        (glLabelObject     *object);
287
288 void           gl_label_object_set_line_width        (glLabelObject     *object,
289                                                       gdouble            line_width);
290
291 gdouble        gl_label_object_get_line_width        (glLabelObject     *object);
292
293
294 void           gl_label_object_raise_to_top          (glLabelObject     *object);
295
296 void           gl_label_object_lower_to_bottom       (glLabelObject     *object);
297
298
299 void           gl_label_object_flip_horiz            (glLabelObject     *object);
300
301 void           gl_label_object_flip_vert             (glLabelObject     *object);
302
303 void           gl_label_object_rotate                (glLabelObject     *object,
304                                                       gdouble            theta_degs);
305
306 void           gl_label_object_set_matrix            (glLabelObject     *object,
307                                                       cairo_matrix_t    *matrix);
308
309 void           gl_label_object_get_matrix            (glLabelObject     *object,
310                                                       cairo_matrix_t    *matrix);
311
312 void           gl_label_object_set_shadow_state      (glLabelObject     *object,
313                                                       gboolean           state);
314
315 void           gl_label_object_set_shadow_offset     (glLabelObject     *object,
316                                                       gdouble            x,
317                                                       gdouble            y);
318
319 void           gl_label_object_set_shadow_color      (glLabelObject     *object,
320                                                       glColorNode       *color_node);
321
322 void           gl_label_object_set_shadow_opacity    (glLabelObject     *object,
323                                                       gdouble            alpha);
324
325 gboolean       gl_label_object_get_shadow_state      (glLabelObject     *object);
326
327 void           gl_label_object_get_shadow_offset     (glLabelObject     *object,
328                                                       gdouble           *x,
329                                                       gdouble           *y);
330
331 glColorNode*   gl_label_object_get_shadow_color      (glLabelObject     *object);
332
333 gdouble        gl_label_object_get_shadow_opacity    (glLabelObject     *object);
334
335 void           gl_label_object_draw                  (glLabelObject     *object,
336                                                       cairo_t           *cr,
337                                                       gboolean           screen_flag,
338                                                       glMergeRecord     *record);
339
340
341
342
343 G_END_DECLS
344
345 #endif /* __LABEL_OBJECT_H__ */