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/>.
27 #include <libglabels/libglabels.h>
30 #include "pixbuf-cache.h"
31 #include "svg-cache.h"
42 #define GL_TYPE_LABEL (gl_label_get_type ())
43 #define GL_LABEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GL_TYPE_LABEL, glLabel))
44 #define GL_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GL_TYPE_LABEL, glLabelClass))
45 #define GL_IS_LABEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GL_TYPE_LABEL))
46 #define GL_IS_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GL_TYPE_LABEL))
48 typedef struct _glLabel glLabel;
49 typedef struct _glLabelClass glLabelClass;
51 typedef struct _glLabelPrivate glLabelPrivate;
53 #include "label-object.h"
60 struct _glLabelClass {
61 GObjectClass parent_class;
63 void (*selection_changed) (glLabel *view,
66 void (*changed) (glLabel *label,
69 void (*name_changed) (glLabel *label,
72 void (*modified_changed) (glLabel *label,
75 void (*merge_changed) (glLabel *label,
78 void (*size_changed) (glLabel *label,
83 GType gl_label_get_type (void) G_GNUC_CONST;
85 GObject *gl_label_new (void);
88 void gl_label_set_filename (glLabel *label,
89 const gchar *filename);
91 gchar *gl_label_get_filename (glLabel *label);
93 gchar *gl_label_get_short_name (glLabel *label);
95 gboolean gl_label_is_untitled (glLabel *label);
98 void gl_label_set_compression (glLabel *label,
101 gint gl_label_get_compression (glLabel *label);
104 void gl_label_set_modified (glLabel *label);
106 void gl_label_clear_modified (glLabel *label);
108 gboolean gl_label_is_modified (glLabel *label);
111 void gl_label_set_template (glLabel *label,
112 const lglTemplate *template,
113 gboolean checkpoint);
115 const lglTemplate *gl_label_get_template (glLabel *label);
117 void gl_label_set_rotate_flag (glLabel *label,
118 gboolean rotate_flag,
119 gboolean checkpoint);
121 gboolean gl_label_get_rotate_flag (glLabel *label);
123 void gl_label_get_size (glLabel *label,
128 void gl_label_set_merge (glLabel *label,
130 gboolean checkpoint);
132 glMerge *gl_label_get_merge (glLabel *label);
134 GHashTable *gl_label_get_pixbuf_cache (glLabel *label);
137 GHashTable *gl_label_get_svg_cache (glLabel *label);
140 void gl_label_add_object (glLabel *label,
141 glLabelObject *object);
144 void gl_label_delete_object (glLabel *label,
145 glLabelObject *object);
147 const GList *gl_label_get_object_list (glLabel *label);
152 * Modify selection methods
154 void gl_label_select_object (glLabel *label,
155 glLabelObject *object);
157 void gl_label_unselect_object (glLabel *label,
158 glLabelObject *object);
160 void gl_label_select_all (glLabel *label);
162 void gl_label_unselect_all (glLabel *label);
164 void gl_label_select_region (glLabel *label,
165 glLabelRegion *region);
169 * Selection query methods
171 gboolean gl_label_is_selection_empty (glLabel *label);
173 gboolean gl_label_is_selection_atomic (glLabel *label);
175 glLabelObject *gl_label_get_1st_selected_object (glLabel *label);
177 GList *gl_label_get_selection_list (glLabel *label);
179 gboolean gl_label_can_selection_text (glLabel *label);
181 gboolean gl_label_can_selection_fill (glLabel *label);
183 gboolean gl_label_can_selection_line_color(glLabel *label);
185 gboolean gl_label_can_selection_line_width(glLabel *label);
189 * Perform operations on selections
191 void gl_label_delete_selection (glLabel *label);
193 void gl_label_raise_selection_to_top (glLabel *label);
195 void gl_label_lower_selection_to_bottom (glLabel *label);
197 void gl_label_rotate_selection (glLabel *label,
200 void gl_label_rotate_selection_left (glLabel *label);
202 void gl_label_rotate_selection_right (glLabel *label);
204 void gl_label_flip_selection_horiz (glLabel *label);
206 void gl_label_flip_selection_vert (glLabel *label);
208 void gl_label_align_selection_left (glLabel *label);
210 void gl_label_align_selection_right (glLabel *label);
212 void gl_label_align_selection_hcenter (glLabel *label);
214 void gl_label_align_selection_top (glLabel *label);
216 void gl_label_align_selection_bottom (glLabel *label);
218 void gl_label_align_selection_vcenter (glLabel *label);
220 void gl_label_center_selection_horiz (glLabel *label);
222 void gl_label_center_selection_vert (glLabel *label);
224 void gl_label_move_selection (glLabel *label,
228 void gl_label_set_selection_font_family(glLabel *label,
229 const gchar *font_family);
231 void gl_label_set_selection_font_size (glLabel *label,
234 void gl_label_set_selection_font_weight(glLabel *label,
235 PangoWeight font_weight);
237 void gl_label_set_selection_font_italic_flag (glLabel *label,
238 gboolean font_italic_flag);
240 void gl_label_set_selection_text_alignment (glLabel *label,
241 PangoAlignment text_alignment);
243 void gl_label_set_selection_text_line_spacing (glLabel *label,
244 gdouble text_line_spacing);
246 void gl_label_set_selection_text_color (glLabel *label,
247 glColorNode *text_color_node);
249 void gl_label_set_selection_fill_color (glLabel *label,
250 glColorNode *fill_color_node);
252 void gl_label_set_selection_line_color (glLabel *label,
253 glColorNode *line_color_node);
255 void gl_label_set_selection_line_width (glLabel *label,
260 * Clipboard operations
262 void gl_label_cut_selection (glLabel *label);
264 void gl_label_copy_selection (glLabel *label);
266 void gl_label_paste (glLabel *label);
268 gboolean gl_label_can_paste (glLabel *label);
272 * Set/get current default values.
274 void gl_label_set_default_font_family (glLabel *label,
275 const gchar *font_family);
277 void gl_label_set_default_font_size (glLabel *label,
280 void gl_label_set_default_font_weight (glLabel *label,
281 PangoWeight font_weight);
283 void gl_label_set_default_font_italic_flag (glLabel *label,
284 gboolean font_italic_flag);
286 void gl_label_set_default_text_color (glLabel *label,
289 void gl_label_set_default_text_alignment (glLabel *label,
290 PangoAlignment text_alignment);
292 void gl_label_set_default_line_width (glLabel *label,
295 void gl_label_set_default_line_color (glLabel *label,
298 void gl_label_set_default_fill_color (glLabel *label,
301 void gl_label_set_default_text_line_spacing(glLabel *label,
302 gdouble text_line_spacing);
304 gchar *gl_label_get_default_font_family (glLabel *label);
306 gdouble gl_label_get_default_font_size (glLabel *label);
308 PangoWeight gl_label_get_default_font_weight (glLabel *label);
310 gboolean gl_label_get_default_font_italic_flag (glLabel *label);
312 guint gl_label_get_default_text_color (glLabel *label);
314 PangoAlignment gl_label_get_default_text_alignment (glLabel *label);
316 gdouble gl_label_get_default_text_line_spacing(glLabel *label);
318 gdouble gl_label_get_default_line_width (glLabel *label);
320 guint gl_label_get_default_line_color (glLabel *label);
322 guint gl_label_get_default_fill_color (glLabel *view);
328 void gl_label_draw (glLabel *label,
330 gboolean screen_flag,
331 glMergeRecord *record);
333 glLabelObject *gl_label_object_at (glLabel *label,
338 glLabelObject *gl_label_get_handle_at (glLabel *label,
342 glLabelObjectHandle *handle);
348 void gl_label_checkpoint (glLabel *label,
349 const gchar *description);
351 gboolean gl_label_can_undo (glLabel *label);
352 gboolean gl_label_can_redo (glLabel *label);
354 gchar *gl_label_get_undo_description (glLabel *label);
355 gchar *gl_label_get_redo_description (glLabel *label);
357 void gl_label_undo (glLabel *label);
358 void gl_label_redo (glLabel *label);
364 #endif /* __LABEL_H__ */
370 * Local Variables: -- emacs
372 * c-basic-offset: 8 -- emacs
373 * tab-width: 8 -- emacs
374 * indent-tabs-mode: nil -- emacs