1/* GTK - The GIMP Toolkit
2 * gtktexttagprivate.h Copyright (C) 2000 Red Hat, Inc.
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18/*
19 * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
20 * file for a list of people on the GTK+ Team. See the ChangeLog
21 * files for a list of changes. These files are distributed with
22 * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
23 */
24
25#ifndef __GTK_TEXT_TAG_PRIVATE_H__
26#define __GTK_TEXT_TAG_PRIVATE_H__
27
28#include <gtk/gtk.h>
29#include <gtk/gtktextattributes.h>
30
31typedef struct _GtkTextBTreeNode GtkTextBTreeNode;
32
33
34struct _GtkTextTagPrivate
35{
36 GtkTextTagTable *table;
37
38 char *name; /* Name of this tag. This field is actually
39 * a pointer to the key from the entry in
40 * tkxt->tagTable, so it needn't be freed
41 * explicitly. */
42 /*
43 * Information for displaying text with this tag. The information
44 * belows acts as an override on information specified by lower-priority
45 * tags. If no value is specified, then the next-lower-priority tag
46 * on the text determines the value. The text widget itself provides
47 * defaults if no tag specifies an override.
48 */
49
50 GtkTextAttributes *values;
51
52 int priority; /* Priority of this tag within widget. 0
53 * means lowest priority. Exactly one tag
54 * has each integer value between 0 and
55 * numTags-1. */
56 /* Flags for whether a given value is set; if a value is unset, then
57 * this tag does not affect it.
58 */
59 guint bg_color_set : 1;
60 guint fg_color_set : 1;
61 guint underline_rgba_set : 1;
62 guint overline_rgba_set : 1;
63 guint strikethrough_rgba_set : 1;
64 guint scale_set : 1;
65 guint justification_set : 1;
66 guint left_margin_set : 1;
67 guint indent_set : 1;
68 guint rise_set : 1;
69 guint strikethrough_set : 1;
70 guint right_margin_set : 1;
71 guint pixels_above_lines_set : 1;
72 guint pixels_below_lines_set : 1;
73 guint pixels_inside_wrap_set : 1;
74 guint line_height_set : 1;
75 guint tabs_set : 1;
76 guint underline_set : 1;
77 guint overline_set : 1;
78 guint wrap_mode_set : 1;
79 guint bg_full_height_set : 1;
80 guint invisible_set : 1;
81 guint editable_set : 1;
82 guint language_set : 1;
83 guint pg_bg_color_set : 1;
84 guint fallback_set : 1;
85 guint letter_spacing_set : 1;
86 guint font_features_set : 1;
87 guint allow_breaks_set : 1;
88 guint show_spaces_set : 1;
89 guint insert_hyphens_set : 1;
90 guint text_transform_set : 1;
91 guint word_set : 1;
92 guint sentence_set : 1;
93
94 /* Whether these margins accumulate or override */
95 guint accumulative_margin : 1;
96};
97
98
99/* values should already have desired defaults; this function will override
100 * the defaults with settings in the given tags, which should be sorted in
101 * ascending order of priority
102*/
103void _gtk_text_attributes_fill_from_tags (GtkTextAttributes *values,
104 GPtrArray *tags);
105void _gtk_text_tag_array_sort (GPtrArray *tags);
106
107gboolean _gtk_text_tag_affects_size (GtkTextTag *tag);
108gboolean _gtk_text_tag_affects_nonsize_appearance (GtkTextTag *tag);
109
110#endif
111

source code of gtk/gtk/gtktexttagprivate.h