3 * Copyright (C) 2001-2009 Jim Evins <evins@snaught.com>.
5 * This file is part of gLabels.
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.
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.
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/>.
21 #ifndef __LABEL_OBJECT_H__
22 #define __LABEL_OBJECT_H__
24 #include <glib-object.h>
26 #include <pango/pango.h>
36 GL_LABEL_OBJECT_ELLIPSE,
37 GL_LABEL_OBJECT_IMAGE,
38 GL_LABEL_OBJECT_BARCODE,
39 GL_LABEL_OBJECT_N_TYPES
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;
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))
66 typedef struct _glLabelObject glLabelObject;
67 typedef struct _glLabelObjectClass glLabelObjectClass;
69 typedef struct _glLabelObjectPrivate glLabelObjectPrivate;
74 struct _glLabelObject {
77 glLabelObjectPrivate *priv;
80 struct _glLabelObjectClass {
81 GObjectClass parent_class;
87 void (*set_size) (glLabelObject *object,
92 void (*set_font_family) (glLabelObject *object,
93 const gchar *font_family,
96 void (*set_font_size) (glLabelObject *object,
100 void (*set_font_weight) (glLabelObject *object,
101 PangoWeight font_weight,
102 gboolean checkpoint);
104 void (*set_font_italic_flag) (glLabelObject *object,
105 gboolean font_italic_flag,
106 gboolean checkpoint);
108 void (*set_text_alignment) (glLabelObject *object,
109 PangoAlignment text_alignment,
110 gboolean checkpoint);
112 void (*set_text_line_spacing)(glLabelObject *object,
113 gdouble text_line_spacing,
114 gboolean checkpoint);
116 void (*set_text_color) (glLabelObject *object,
117 glColorNode *text_color_node,
118 gboolean checkpoint);
120 void (*set_fill_color) (glLabelObject *object,
121 glColorNode *fill_color_node,
122 gboolean checkpoint);
124 void (*set_line_color) (glLabelObject *object,
125 glColorNode *line_color_node,
126 gboolean checkpoint);
128 void (*set_line_width) (glLabelObject *object,
130 gboolean checkpoint);
132 void (*get_size) (glLabelObject *object,
136 gchar * (*get_font_family) (glLabelObject *object);
138 gdouble (*get_font_size) (glLabelObject *object);
140 PangoWeight (*get_font_weight) (glLabelObject *object);
142 gboolean (*get_font_italic_flag) (glLabelObject *object);
144 PangoAlignment (*get_text_alignment) (glLabelObject *object);
146 gdouble (*get_text_line_spacing) (glLabelObject *object);
148 glColorNode * (*get_text_color) (glLabelObject *object);
150 glColorNode * (*get_fill_color) (glLabelObject *object);
152 glColorNode * (*get_line_color) (glLabelObject *object);
154 gdouble (*get_line_width) (glLabelObject *object);
156 void (*copy) (glLabelObject *dst_object
158 glLabelObject *src_object);
163 void (*draw_shadow) (glLabelObject *object,
165 gboolean screen_flag,
166 glMergeRecord *record);
168 void (*draw_object) (glLabelObject *object,
170 gboolean screen_flag,
171 glMergeRecord *record);
173 void (*draw_handles) (glLabelObject *object,
177 * Cairo context query methods
179 gboolean (*object_at) (glLabelObject *object,
184 glLabelObjectHandle (*handle_at) (glLabelObject *object,
194 void (*changed) (glLabelObject *object,
201 GType gl_label_object_get_type (void) G_GNUC_CONST;
203 GObject *gl_label_object_new (glLabel *label);
206 glLabelObject *gl_label_object_dup (glLabelObject *src_object,
210 void gl_label_object_emit_changed (glLabelObject *object);
212 void gl_label_object_set_parent (glLabelObject *object,
215 glLabel *gl_label_object_get_parent (glLabelObject *object);
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);
222 void gl_label_object_set_name (glLabelObject *object,
225 gchar *gl_label_object_get_name (glLabelObject *object);
228 void gl_label_object_set_position (glLabelObject *object,
231 gboolean checkpoint);
233 void gl_label_object_set_position_relative (glLabelObject *object,
236 gboolean checkpoint);
238 void gl_label_object_set_size (glLabelObject *object,
241 gboolean checkpoint);
243 void gl_label_object_set_size_honor_aspect (glLabelObject *object,
246 gboolean checkpoint);
248 void gl_label_object_set_font_family (glLabelObject *object,
249 const gchar *font_family,
250 gboolean checkpoint);
252 void gl_label_object_set_font_size (glLabelObject *object,
254 gboolean checkpoint);
256 void gl_label_object_set_font_weight (glLabelObject *object,
257 PangoWeight font_weight,
258 gboolean checkpoint);
260 void gl_label_object_set_font_italic_flag (glLabelObject *object,
261 gboolean font_italic_flag,
262 gboolean checkpoint);
264 void gl_label_object_set_text_alignment (glLabelObject *object,
265 PangoAlignment text_alignment,
266 gboolean checkpoint);
268 void gl_label_object_set_text_color (glLabelObject *object,
269 glColorNode *text_color_node,
270 gboolean checkpoint);
272 void gl_label_object_set_text_line_spacing (glLabelObject *object,
273 gdouble text_line_spacing,
274 gboolean checkpoint);
276 void gl_label_object_set_fill_color (glLabelObject *object,
277 glColorNode *fill_color_node,
278 gboolean checkpoint);
280 void gl_label_object_set_line_color (glLabelObject *object,
281 glColorNode *line_color_node,
282 gboolean checkpoint);
284 void gl_label_object_set_line_width (glLabelObject *object,
286 gboolean checkpoint);
289 void gl_label_object_set_shadow_state (glLabelObject *object,
291 gboolean checkpoint);
293 void gl_label_object_set_shadow_offset (glLabelObject *object,
296 gboolean checkpoint);
298 void gl_label_object_set_shadow_color (glLabelObject *object,
299 glColorNode *color_node,
300 gboolean checkpoint);
302 void gl_label_object_set_shadow_opacity (glLabelObject *object,
304 gboolean checkpoint);
307 void gl_label_object_flip_horiz (glLabelObject *object);
309 void gl_label_object_flip_vert (glLabelObject *object);
311 void gl_label_object_rotate (glLabelObject *object,
314 void gl_label_object_set_matrix (glLabelObject *object,
315 cairo_matrix_t *matrix);
318 void gl_label_object_get_position (glLabelObject *object,
322 void gl_label_object_get_size (glLabelObject *object,
326 void gl_label_object_get_raw_size (glLabelObject *object,
330 void gl_label_object_get_extent (glLabelObject *object,
331 glLabelRegion *region);
333 gboolean gl_label_object_can_text (glLabelObject *object);
336 gchar *gl_label_object_get_font_family (glLabelObject *object);
338 gdouble gl_label_object_get_font_size (glLabelObject *object);
340 PangoWeight gl_label_object_get_font_weight (glLabelObject *object);
342 gboolean gl_label_object_get_font_italic_flag (glLabelObject *object);
344 PangoAlignment gl_label_object_get_text_alignment (glLabelObject *object);
346 gdouble gl_label_object_get_text_line_spacing (glLabelObject *object);
348 glColorNode *gl_label_object_get_text_color (glLabelObject *object);
351 gboolean gl_label_object_can_fill (glLabelObject *object);
353 glColorNode* gl_label_object_get_fill_color (glLabelObject *object);
356 gboolean gl_label_object_can_line_color (glLabelObject *object);
358 glColorNode *gl_label_object_get_line_color (glLabelObject *object);
360 gboolean gl_label_object_can_line_width (glLabelObject *object);
362 gdouble gl_label_object_get_line_width (glLabelObject *object);
365 void gl_label_object_get_matrix (glLabelObject *object,
366 cairo_matrix_t *matrix);
368 gboolean gl_label_object_get_shadow_state (glLabelObject *object);
370 void gl_label_object_get_shadow_offset (glLabelObject *object,
374 glColorNode* gl_label_object_get_shadow_color (glLabelObject *object);
376 gdouble gl_label_object_get_shadow_opacity (glLabelObject *object);
379 void gl_label_object_draw (glLabelObject *object,
381 gboolean screen_flag,
382 glMergeRecord *record);
384 gboolean gl_label_object_is_located_at (glLabelObject *object,
389 void gl_label_object_draw_handles (glLabelObject *object,
392 glLabelObjectHandle gl_label_object_handle_at (glLabelObject *object,
399 * Specific handle drawing methods.
401 void gl_label_object_draw_handles_box (glLabelObject *object,
404 void gl_label_object_draw_handles_line (glLabelObject *object,
409 * Specific handle query methods.
411 glLabelObjectHandle gl_label_object_box_handle_at (glLabelObject *object,
416 glLabelObjectHandle gl_label_object_line_handle_at (glLabelObject *object,
425 #endif /* __LABEL_OBJECT_H__ */
431 * Local Variables: -- emacs
433 * c-basic-offset: 8 -- emacs
434 * tab-width: 8 -- emacs
435 * indent-tabs-mode: nil -- emacs