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>
43 GL_LABEL_OBJECT_ELLIPSE,
44 GL_LABEL_OBJECT_IMAGE,
45 GL_LABEL_OBJECT_BARCODE,
46 GL_LABEL_OBJECT_N_TYPES
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;
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))
73 typedef struct _glLabelObject glLabelObject;
74 typedef struct _glLabelObjectClass glLabelObjectClass;
76 typedef struct _glLabelObjectPrivate glLabelObjectPrivate;
81 struct _glLabelObject {
84 glLabelObjectPrivate *priv;
87 struct _glLabelObjectClass {
88 GObjectClass parent_class;
94 void (*set_size) (glLabelObject *object,
99 void (*set_font_family) (glLabelObject *object,
100 const gchar *font_family,
101 gboolean checkpoint);
103 void (*set_font_size) (glLabelObject *object,
105 gboolean checkpoint);
107 void (*set_font_weight) (glLabelObject *object,
108 PangoWeight font_weight,
109 gboolean checkpoint);
111 void (*set_font_italic_flag) (glLabelObject *object,
112 gboolean font_italic_flag,
113 gboolean checkpoint);
115 void (*set_text_alignment) (glLabelObject *object,
116 PangoAlignment text_alignment,
117 gboolean checkpoint);
119 void (*set_text_valignment) (glLabelObject *object,
120 glValignment text_valignment,
121 gboolean checkpoint);
123 void (*set_text_line_spacing)(glLabelObject *object,
124 gdouble text_line_spacing,
125 gboolean checkpoint);
127 void (*set_text_color) (glLabelObject *object,
128 glColorNode *text_color_node,
129 gboolean checkpoint);
131 void (*set_fill_color) (glLabelObject *object,
132 glColorNode *fill_color_node,
133 gboolean checkpoint);
135 void (*set_line_color) (glLabelObject *object,
136 glColorNode *line_color_node,
137 gboolean checkpoint);
139 void (*set_line_width) (glLabelObject *object,
141 gboolean checkpoint);
143 void (*get_size) (glLabelObject *object,
147 gchar * (*get_font_family) (glLabelObject *object);
149 gdouble (*get_font_size) (glLabelObject *object);
151 PangoWeight (*get_font_weight) (glLabelObject *object);
153 gboolean (*get_font_italic_flag) (glLabelObject *object);
155 PangoAlignment (*get_text_alignment) (glLabelObject *object);
157 glValignment (*get_text_valignment) (glLabelObject *object);
159 gdouble (*get_text_line_spacing) (glLabelObject *object);
161 glColorNode * (*get_text_color) (glLabelObject *object);
163 glColorNode * (*get_fill_color) (glLabelObject *object);
165 glColorNode * (*get_line_color) (glLabelObject *object);
167 gdouble (*get_line_width) (glLabelObject *object);
169 void (*copy) (glLabelObject *dst_object
171 glLabelObject *src_object);
176 void (*draw_shadow) (glLabelObject *object,
178 gboolean screen_flag,
179 glMergeRecord *record);
181 void (*draw_object) (glLabelObject *object,
183 gboolean screen_flag,
184 glMergeRecord *record);
186 void (*draw_handles) (glLabelObject *object,
190 * Cairo context query methods
192 gboolean (*object_at) (glLabelObject *object,
197 glLabelObjectHandle (*handle_at) (glLabelObject *object,
207 void (*changed) (glLabelObject *object,
210 void (*moved) (glLabelObject *object,
217 GType gl_label_object_get_type (void) G_GNUC_CONST;
219 GObject *gl_label_object_new (glLabel *label);
222 glLabelObject *gl_label_object_dup (glLabelObject *src_object,
226 void gl_label_object_emit_changed (glLabelObject *object);
228 void gl_label_object_set_parent (glLabelObject *object,
231 glLabel *gl_label_object_get_parent (glLabelObject *object);
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);
238 void gl_label_object_set_name (glLabelObject *object,
241 gchar *gl_label_object_get_name (glLabelObject *object);
244 void gl_label_object_set_position (glLabelObject *object,
247 gboolean checkpoint);
249 void gl_label_object_set_position_relative (glLabelObject *object,
252 gboolean checkpoint);
254 void gl_label_object_set_size (glLabelObject *object,
257 gboolean checkpoint);
259 void gl_label_object_set_raw_size (glLabelObject *object,
262 gboolean checkpoint);
264 void gl_label_object_set_size_honor_aspect (glLabelObject *object,
267 gboolean checkpoint);
269 void gl_label_object_set_font_family (glLabelObject *object,
270 const gchar *font_family,
271 gboolean checkpoint);
273 void gl_label_object_set_font_size (glLabelObject *object,
275 gboolean checkpoint);
277 void gl_label_object_set_font_weight (glLabelObject *object,
278 PangoWeight font_weight,
279 gboolean checkpoint);
281 void gl_label_object_set_font_italic_flag (glLabelObject *object,
282 gboolean font_italic_flag,
283 gboolean checkpoint);
285 void gl_label_object_set_text_alignment (glLabelObject *object,
286 PangoAlignment text_alignment,
287 gboolean checkpoint);
289 void gl_label_object_set_text_valignment (glLabelObject *object,
290 glValignment text_valignment,
291 gboolean checkpoint);
293 void gl_label_object_set_text_color (glLabelObject *object,
294 glColorNode *text_color_node,
295 gboolean checkpoint);
297 void gl_label_object_set_text_line_spacing (glLabelObject *object,
298 gdouble text_line_spacing,
299 gboolean checkpoint);
301 void gl_label_object_set_fill_color (glLabelObject *object,
302 glColorNode *fill_color_node,
303 gboolean checkpoint);
305 void gl_label_object_set_line_color (glLabelObject *object,
306 glColorNode *line_color_node,
307 gboolean checkpoint);
309 void gl_label_object_set_line_width (glLabelObject *object,
311 gboolean checkpoint);
314 void gl_label_object_set_shadow_state (glLabelObject *object,
316 gboolean checkpoint);
318 void gl_label_object_set_shadow_offset (glLabelObject *object,
321 gboolean checkpoint);
323 void gl_label_object_set_shadow_color (glLabelObject *object,
324 glColorNode *color_node,
325 gboolean checkpoint);
327 void gl_label_object_set_shadow_opacity (glLabelObject *object,
329 gboolean checkpoint);
332 void gl_label_object_flip_horiz (glLabelObject *object);
334 void gl_label_object_flip_vert (glLabelObject *object);
336 void gl_label_object_rotate (glLabelObject *object,
339 void gl_label_object_set_matrix (glLabelObject *object,
340 cairo_matrix_t *matrix);
343 void gl_label_object_get_position (glLabelObject *object,
347 void gl_label_object_get_size (glLabelObject *object,
351 void gl_label_object_get_raw_size (glLabelObject *object,
355 void gl_label_object_get_extent (glLabelObject *object,
356 glLabelRegion *region);
358 gboolean gl_label_object_can_text (glLabelObject *object);
361 gchar *gl_label_object_get_font_family (glLabelObject *object);
363 gdouble gl_label_object_get_font_size (glLabelObject *object);
365 PangoWeight gl_label_object_get_font_weight (glLabelObject *object);
367 gboolean gl_label_object_get_font_italic_flag (glLabelObject *object);
369 PangoAlignment gl_label_object_get_text_alignment (glLabelObject *object);
371 glValignment gl_label_object_get_text_valignment (glLabelObject *object);
373 gdouble gl_label_object_get_text_line_spacing (glLabelObject *object);
375 glColorNode *gl_label_object_get_text_color (glLabelObject *object);
378 gboolean gl_label_object_can_fill (glLabelObject *object);
380 glColorNode* gl_label_object_get_fill_color (glLabelObject *object);
383 gboolean gl_label_object_can_line_color (glLabelObject *object);
385 glColorNode *gl_label_object_get_line_color (glLabelObject *object);
387 gboolean gl_label_object_can_line_width (glLabelObject *object);
389 gdouble gl_label_object_get_line_width (glLabelObject *object);
392 void gl_label_object_get_matrix (glLabelObject *object,
393 cairo_matrix_t *matrix);
395 gboolean gl_label_object_get_shadow_state (glLabelObject *object);
397 void gl_label_object_get_shadow_offset (glLabelObject *object,
401 glColorNode* gl_label_object_get_shadow_color (glLabelObject *object);
403 gdouble gl_label_object_get_shadow_opacity (glLabelObject *object);
406 void gl_label_object_draw (glLabelObject *object,
408 gboolean screen_flag,
409 glMergeRecord *record);
411 gboolean gl_label_object_is_located_at (glLabelObject *object,
416 void gl_label_object_draw_handles (glLabelObject *object,
419 glLabelObjectHandle gl_label_object_handle_at (glLabelObject *object,
426 * Specific handle drawing methods.
428 void gl_label_object_draw_handles_box (glLabelObject *object,
431 void gl_label_object_draw_handles_line (glLabelObject *object,
436 * Specific handle query methods.
438 glLabelObjectHandle gl_label_object_box_handle_at (glLabelObject *object,
443 glLabelObjectHandle gl_label_object_line_handle_at (glLabelObject *object,
452 #endif /* __LABEL_OBJECT_H__ */
458 * Local Variables: -- emacs
460 * c-basic-offset: 8 -- emacs
461 * tab-width: 8 -- emacs
462 * indent-tabs-mode: nil -- emacs