8 create_tags (GtkTextBuffer *buffer)
11 gtk_text_buffer_create_tag (buffer, "italic",
12 "style", PANGO_STYLE_ITALIC, NULL);
14 gtk_text_buffer_create_tag (buffer, "bold",
15 "weight", PANGO_WEIGHT_BOLD, NULL);
17 gtk_text_buffer_create_tag (buffer, "x-large",
18 "scale", PANGO_SCALE_X_LARGE, NULL);
20 gtk_text_buffer_create_tag (buffer, "semi_blue_foreground",
21 "foreground", "rgba(0,0,255,0.5)", NULL);
23 gtk_text_buffer_create_tag (buffer, "semi_red_background",
24 "background", "rgba(255,0,0,0.5)", NULL);
26 gtk_text_buffer_create_tag (buffer, "word_wrap",
27 "wrap_mode", GTK_WRAP_WORD, NULL);
32 insert_text (GtkTextBuffer *buffer)
35 GtkTextIter start, end;
37 /* get start of buffer; each insertion will revalidate the
38 * iterator to point to just after the inserted text.
40 gtk_text_buffer_get_iter_at_offset (buffer, &iter, 0);
42 gtk_text_buffer_insert (buffer, &iter,
43 "This test shows text view rendering some text with rgba colors.\n\n", -1);
45 gtk_text_buffer_insert (buffer, &iter, "For example, you can have ", -1);
46 gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,
47 "italic translucent blue text", -1,
49 "semi_blue_foreground",
53 gtk_text_buffer_insert (buffer, &iter, ", or ", -1);
55 gtk_text_buffer_insert (buffer, &iter, ", ", -1);
56 gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,
57 "bold text with translucent red background", -1,
59 "semi_red_background",
62 gtk_text_buffer_insert (buffer, &iter, ".", -1);
64 /* Apply word_wrap tag to whole buffer */
65 gtk_text_buffer_get_bounds (buffer, &start, &end);
66 gtk_text_buffer_apply_tag_by_name (buffer, "word_wrap", &start, &end);
70 static cairo_pattern_t *
73 static cairo_pattern_t *static_pattern = NULL;
77 cairo_surface_t *surface =
78 cairo_image_surface_create_from_png ("gradient1.png");
82 static_pattern = cairo_pattern_create_for_surface (surface);
83 cairo_pattern_set_extend (static_pattern, CAIRO_EXTEND_REFLECT);
86 g_warning ("Failed to create surface for gradient1.png\n");
88 return static_pattern;
92 draw_background (GtkWidget *widget, cairo_t *cr)
94 GtkAllocation allocation;
97 gtk_widget_get_allocation (widget, &allocation);
102 pat = cairo_pattern_create_linear (0.0, 0.0, 30.0, 30.0);
103 cairo_pattern_add_color_stop_rgba (pat, 1, 0, 0, 0, 1);
104 cairo_pattern_add_color_stop_rgba (pat, 0, 1, 1, 1, 1);
105 cairo_pattern_set_extend (pat, CAIRO_EXTEND_REPEAT);
106 cairo_rectangle (cr, 0, 0, allocation.width, allocation.height);
107 cairo_set_source (cr, pat);
109 cairo_pattern_destroy (pat);
115 cairo_rectangle (cr, 0, 0, allocation.width, allocation.height);
116 cairo_set_source (cr, get_pattern ());
125 main (int argc, char **argv)
127 GtkWidget *window, *textview;
128 GtkTextBuffer *buffer;
130 gtk_init (&argc, &argv);
132 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
133 textview = gtk_text_view_new ();
134 buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview));
136 create_tags (buffer);
137 insert_text (buffer);
139 gtk_widget_show (textview);
140 gtk_container_add (GTK_CONTAINER (window), textview);
142 g_signal_connect (textview, "draw",
143 G_CALLBACK (draw_background), NULL);
146 gtk_widget_show (window);