4 #include <gtk/gtkobject.h>
9 #endif /* __cplusplus */
11 typedef struct _GtkTextIter GtkTextIter;
12 typedef struct _GtkTextBTreeNode GtkTextBTreeNode;
13 typedef struct _GtkTextTagTable GtkTextTagTable;
22 typedef struct _GtkTextAttributes GtkTextAttributes;
24 #define GTK_TYPE_TEXT_TAG (gtk_text_tag_get_type())
25 #define GTK_TEXT_TAG(obj) (GTK_CHECK_CAST ((obj), GTK_TYPE_TEXT_TAG, GtkTextTag))
26 #define GTK_TEXT_TAG_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_TEXT_TAG, GtkTextTagClass))
27 #define GTK_IS_TEXT_TAG(obj) (GTK_CHECK_TYPE ((obj), GTK_TYPE_TEXT_TAG))
28 #define GTK_IS_TEXT_TAG_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TEXT_TAG))
29 #define GTK_TEXT_TAG_GET_CLASS(obj) (GTK_CHECK_GET_CLASS ((obj), GTK_TYPE_TEXT_TAG, GtkTextTagClass))
31 typedef struct _GtkTextTag GtkTextTag;
32 typedef struct _GtkTextTagClass GtkTextTagClass;
35 GtkObject parent_instance;
37 GtkTextTagTable *table;
39 char *name; /* Name of this tag. This field is actually
40 * a pointer to the key from the entry in
41 * tkxt->tagTable, so it needn't be freed
43 int priority; /* Priority of this tag within widget. 0
44 * means lowest priority. Exactly one tag
45 * has each integer value between 0 and
48 * Information for displaying text with this tag. The information
49 * belows acts as an override on information specified by lower-priority
50 * tags. If no value is specified, then the next-lower-priority tag
51 * on the text determins the value. The text widget itself provides
52 * defaults if no tag specifies an override.
55 GtkTextAttributes *values;
57 /* Flags for whether a given value is set; if a value is unset, then
58 * this tag does not affect it.
60 guint bg_color_set : 1;
62 guint bg_stipple_set : 1;
63 guint fg_color_set : 1;
65 guint fg_stipple_set : 1;
66 guint justify_set : 1;
67 guint left_margin_set : 1;
68 guint left_wrapped_line_margin_set : 1;
70 guint strikethrough_set : 1;
71 guint right_margin_set : 1;
72 guint pixels_above_lines_set : 1;
73 guint pixels_below_lines_set : 1;
74 guint pixels_inside_wrap_set : 1;
76 guint underline_set : 1;
77 guint wrap_mode_set : 1;
78 guint bg_full_height_set : 1;
79 guint invisible_set : 1;
80 guint editable_set : 1;
81 guint language_set : 1;
87 struct _GtkTextTagClass {
88 GtkObjectClass parent_class;
90 gint (* event) (GtkTextTag *tag,
91 GtkObject *event_object, /* widget, canvas item, whatever */
92 GdkEvent *event, /* the event itself */
93 const GtkTextIter *iter); /* location of event in buffer */
96 GtkType gtk_text_tag_get_type (void) G_GNUC_CONST;
97 GtkTextTag *gtk_text_tag_new (const gchar *name);
98 gint gtk_text_tag_get_priority (GtkTextTag *tag);
99 void gtk_text_tag_set_priority (GtkTextTag *tag,
101 gint gtk_text_tag_event (GtkTextTag *tag,
102 GtkObject *event_object,
104 const GtkTextIter *iter);
107 * Style object created by folding a set of tags together
110 typedef struct _GtkTextAppearance GtkTextAppearance;
112 struct _GtkTextAppearance
116 GdkBitmap *bg_stipple;
117 GdkBitmap *fg_stipple;
119 guint underline : 4; /* PangoUnderline */
120 guint strikethrough : 1;
122 /* Whether to use background-related values; this is irrelevant for
123 * the values struct when in a tag, but is used for the composite
124 * values struct; it's true if any of the tags being composited
125 * had background stuff set.
129 /* This is only used when we are actually laying out and rendering
130 * a paragraph; not when a GtkTextAppearance is part of a
133 guint inside_selection : 1;
136 struct _GtkTextAttributes
140 GtkTextAppearance appearance;
142 GtkShadowType relief;
143 GtkJustification justify;
144 GtkTextDirection direction;
146 PangoFontDescription *font_desc;
152 gint left_wrapped_line_margin;
154 /* super/subscript offset, can be negative */
159 gint pixels_above_lines;
161 gint pixels_below_lines;
163 gint pixels_inside_wrap;
167 GtkWrapMode wrap_mode; /* How to handle wrap-around for this tag.
168 * Must be GTK_WRAPMODE_CHAR,
169 * GTK_WRAPMODE_NONE, GTK_WRAPMODE_WORD
177 /* Background is fit to full line height rather than
178 * baseline +/- ascent/descent (font height)
180 guint bg_full_height : 1;
182 /* can edit this text */
185 /* colors are allocated etc. */
194 GtkTextAttributes *gtk_text_attributes_new (void);
195 void gtk_text_attributes_copy (GtkTextAttributes *src,
196 GtkTextAttributes *dest);
197 void gtk_text_attributes_unref (GtkTextAttributes *values);
198 void gtk_text_attributes_ref (GtkTextAttributes *values);
202 #endif /* __cplusplus */