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 | |
31 | typedef struct _GtkTextBTreeNode GtkTextBTreeNode; |
32 | |
33 | |
34 | struct _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 | */ |
103 | void _gtk_text_attributes_fill_from_tags (GtkTextAttributes *values, |
104 | GPtrArray *tags); |
105 | void _gtk_text_tag_array_sort (GPtrArray *tags); |
106 | |
107 | gboolean _gtk_text_tag_affects_size (GtkTextTag *tag); |
108 | gboolean _gtk_text_tag_affects_nonsize_appearance (GtkTextTag *tag); |
109 | |
110 | #endif |
111 | |