/* Testing & playing with pango/gdk :-) Rendered text using pango/gdk. */ #include #define WIDTH 300 #define HEIGHT 200 /* function to pango'ise a string */ PangoLayout *pangoise(GtkWidget *widget) { PangoContext *pg_context = NULL; PangoLayout *pg_layout = NULL; PangoFontDescription *pg_desc = NULL; gchar *font = "Sans bold 30"; /* get the pango context for rendering */ pg_context = gtk_widget_get_pango_context(widget); pango_context_set_language(pg_context, pango_language_from_string ("ja_JP.UTF8")); /* create a pango layout */ //pg_layout = gtk_widget_create_pango_layout(widget, "Test layout"); //pango_layout_set_text(pg_layout, "Hello World", -1); pg_layout = pango_layout_new(pg_context); /* set the font */ /* pg_desc = pango_font_description_from_string(font); pango_layout_set_font_description(pg_layout, pg_desc); */ /* Another way of setting the fonts */ pg_desc = pango_font_description_new(); pango_font_description_set_family(pg_desc, "Sans"); pango_font_description_set_weight(pg_desc, PANGO_WEIGHT_BOLD); pango_font_description_set_size(pg_desc, 8*PANGO_SCALE); pango_layout_set_font_description(pg_layout, pg_desc); /* tell the widget about changed layout */ pango_layout_context_changed(pg_layout); pango_layout_set_text(pg_layout, "Hello World", -1); return pg_layout; } /* signal handler(s) */ gboolean handle_delete_event(GtkWidget *widget, GdkEvent *event, gpointer data) { return FALSE; } gboolean handle_destroy(GtkWidget *widget, gpointer data) { gtk_main_quit(); } int main(int argc, char *argv[]) { GtkWidget *window = NULL; GtkWidget *label = NULL; PangoLayout *pg_layout = NULL; /* setup GTK environment */ gtk_init(&argc, &argv); // create a window & attach required signals window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window), "Pango_Gdk example"); gtk_window_set_default_size(GTK_WINDOW(window), WIDTH, HEIGHT); gtk_signal_connect(GTK_OBJECT(window), "delete-event", GTK_SIGNAL_FUNC(handle_delete_event), NULL); gtk_signal_connect(GTK_OBJECT(window), "destroy", GTK_SIGNAL_FUNC(handle_destroy), NULL); /* create pango'd widget & add to window */ label = gtk_label_new(""); pg_layout = pangoise(label); gtk_label_set_text(GTK_LABEL(label), "Yahooo!"); pango_layout_context_changed(pg_layout); gtk_container_add(GTK_CONTAINER(window), label); gtk_widget_show_all(window); gtk_main(); }