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 30 typedef struct _GtkTextBTreeNode GtkTextBTreeNode; 31 32 33 struct _GtkTextTagPrivate 34 { 35 GtkTextTagTable *table; 36 37 char *name; /* Name of this tag. This field is actually 38 * a pointer to the key from the entry in 39 * tkxt->tagTable, so it needn't be freed 40 * explicitly. */ 41 int priority; /* Priority of this tag within widget. 0 42 * means lowest priority. Exactly one tag 43 * has each integer value between 0 and 44 * numTags-1. */ 45 /* 46 * Information for displaying text with this tag. The information 47 * belows acts as an override on information specified by lower-priority 48 * tags. If no value is specified, then the next-lower-priority tag 49 * on the text determins the value. The text widget itself provides 50 * defaults if no tag specifies an override. 51 */ 52 53 GtkTextAttributes *values; 54 55 /* Flags for whether a given value is set; if a value is unset, then 56 * this tag does not affect it. 57 */ 58 guint bg_color_set : 1; 59 guint fg_color_set : 1; 60 guint scale_set : 1; 61 guint justification_set : 1; 62 guint left_margin_set : 1; 63 guint indent_set : 1; 64 guint rise_set : 1; 65 guint strikethrough_set : 1; 66 guint right_margin_set : 1; 67 guint pixels_above_lines_set : 1; 68 guint pixels_below_lines_set : 1; 69 guint pixels_inside_wrap_set : 1; 70 guint tabs_set : 1; 71 guint underline_set : 1; 72 guint wrap_mode_set : 1; 73 guint bg_full_height_set : 1; 74 guint invisible_set : 1; 75 guint editable_set : 1; 76 guint language_set : 1; 77 guint pg_bg_color_set : 1; 78 guint fallback_set : 1; 79 guint letter_spacing_set : 1; 80 guint font_features_set : 1; 81 82 /* Whether these margins accumulate or override */ 83 guint accumulative_margin : 1; 84 }; 85 86 87 /* values should already have desired defaults; this function will override 88 * the defaults with settings in the given tags, which should be sorted in 89 * ascending order of priority 90 */ 91 void _gtk_text_attributes_fill_from_tags (GtkTextAttributes *values, 92 GtkTextTag **tags, 93 guint n_tags); 94 void _gtk_text_tag_array_sort (GtkTextTag **tag_array_p, 95 guint len); 96 97 gboolean _gtk_text_tag_affects_size (GtkTextTag *tag); 98 gboolean _gtk_text_tag_affects_nonsize_appearance (GtkTextTag *tag); 99 100 #endif 101