/* vim: set ts=8 sw=8 noexpandtab: */ #include #include #include #include #include #include "config.h" static gboolean expose_cb (GtkWidget *widget, GdkEventExpose *event, ccss_style_t const *style) { cairo_t *cr; char *font_family; cr = gdk_cairo_create (widget->window); font_family = NULL; ccss_style_get_string (style, "font-family", &font_family); if (font_family) { PangoContext *context; PangoLayout *layout; context = gtk_widget_get_pango_context (widget); layout = pango_layout_new (context); pango_layout_set_text (layout, font_family, strlen (font_family)); pango_cairo_show_layout (cr, layout); g_object_unref (G_OBJECT (layout)), layout = NULL; } cairo_destroy (cr); return FALSE; } static char const _css[] = " \ box { \ font-family: Helvetica; \ } \ "; int main (int argc, char **argv) { ccss_grammar_t *grammar; ccss_stylesheet_t *stylesheet; ccss_style_t *style; GtkWidget *window; GtkWidget *area; gtk_init (&argc, &argv); grammar = ccss_cairo_grammar_create (); stylesheet = ccss_grammar_create_stylesheet_from_buffer (grammar, _css, sizeof (_css), NULL); style = ccss_stylesheet_query_type (stylesheet, "box"); g_assert (style); #ifdef CCSS_DEBUG ccss_style_dump (style); #endif window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size (GTK_WINDOW (window), 160, 90); g_signal_connect (G_OBJECT (window), "delete-event", G_CALLBACK (gtk_main_quit), NULL); area = gtk_drawing_area_new (); gtk_container_add (GTK_CONTAINER (window), area); g_signal_connect (G_OBJECT (area), "expose-event", G_CALLBACK (expose_cb), style); gtk_widget_show_all (window); gtk_main (); ccss_style_destroy (style); ccss_stylesheet_destroy (stylesheet); ccss_grammar_destroy (grammar); return EXIT_SUCCESS; }