8 delete_event (GtkWidget *widget, GdkEvent *event, gpointer data)
14 destroy (GtkWidget *widget, gpointer data)
20 main (int argc, char **argv)
24 GdkPixmap *gdk_pixmap;
25 GtkWidget *window, *box, *text, *label;
30 gtk_init (&argc, &argv);
34 fprintf (stderr, "Usage: gtk-m17n LANGUAGE\n");
39 lang = msymbol (argv[1]);
40 mt = mlanguage_text (lang);
43 fprintf (stderr, "No native name for the language \"%s\".\n", argv[1]);
47 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
48 box = gtk_vbox_new (FALSE, 0);
49 text = gtk_drawing_area_new ();
50 label = gtk_label_new (title);
51 gtk_box_pack_start (GTK_BOX (box), text, TRUE, FALSE, 0);
52 gtk_box_pack_start (GTK_BOX (box), label, TRUE, FALSE, 0);
53 gtk_container_add (GTK_CONTAINER (window), box);
54 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
55 GTK_SIGNAL_FUNC (delete_event), NULL);
56 gtk_signal_connect (GTK_OBJECT (window), "destroy",
57 GTK_SIGNAL_FUNC (destroy), NULL);
59 /* Draw on TEXT widget by m17n-lib. */
64 MPlist *param = mplist ();
65 MFace *face = mface ();
66 MFontset *fontset = mfontset ("generic");
69 gdk_pixmap = gdk_pixmap_new (window->window,
71 mface_put_prop (face, Msize, (void *) -600);
72 mface_put_prop (face, Mfontset, fontset);
74 mface_put_prop (face, Mfamily, msymbol (argv[2]));
75 mplist_add (param, Mdevice,
76 mplist_add (param, Mface, face);
77 frame = mframe (param);
78 m17n_object_unref (face);
79 m17n_object_unref (param);
83 fprintf (stderr, "Frame creation failed. Perhaps no GD library.\n");
91 memset (&control, 0, sizeof (control));
92 control.anti_alias = 1;
93 mdraw_text_extents (frame, mt, 0, mtext_len (mt), &control,
96 image = gdImageCreateTrueColor (metric.width, metric.height);
97 bg_color = gdImageColorAllocate (image, 255, 255, 255);
98 gdImageFilledRectangle (image, 0, 0, metric.width - 1, metric.height - 1,
101 mdraw_text_with_control (frame, (MDrawWindow) image,
102 - metric.x, - metric.y,
103 mt, 0, mtext_len (mt), &control);
106 m17n_object_unref (frame);
111 gtk_label_set_attributes (GTK_LABEL (label), attr_list);
113 len = mconv_encode_buffer (msymbol ("utf-8"), mt,
114 (unsigned char *) title, 256);
121 GtkWidget *window, *box, *text, *label;
122 int n_channels, rowstride;
125 PangoAttrList *attr_list = pango_attr_list_new ();
126 PangoAttribute *attr = pango_attr_size_new (60 * PANGO_SCALE);
128 pango_attr_list_insert (attr_list, attr);
130 pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, 0, 8,
131 metric.width, metric.height);
132 n_channels = gdk_pixbuf_get_n_channels (pixbuf);
133 rowstride = gdk_pixbuf_get_rowstride (pixbuf);
134 pixels = gdk_pixbuf_get_pixels (pixbuf);
136 for (y = 0; y < metric.height; y++)
137 for (x = 0; x < metric.width; x++)
139 int cid = gdImageGetPixel (image, x, y);
140 p = pixels + y * rowstride + x * n_channels;
142 p[0] = gdImageRed (image, cid);
143 p[1] = gdImageGreen (image, cid);
144 p[2] = gdImageBlue (image, cid);
146 gdImageDestroy (image);
148 gtk_widget_show (text);
149 gtk_widget_show (label);
150 gtk_widget_show (box);
151 gtk_widget_show (window);