/* gcc 391684.c -o 391684 `pkg-config --libs --cflags gtk+-2.0 cairo` */ #include #include #include static void paint (GtkWidget *widget, GdkEventExpose *eev, gpointer data) { cairo_t *cr; cr = gdk_cairo_create (widget->window); cairo_save (cr); cairo_set_fill_rule (cr, CAIRO_FILL_RULE_WINDING); cairo_translate (cr, 50, 50); cairo_move_to (cr, 13.5, 13.5); cairo_curve_to (cr, 13.5, 6, 7.45703, 0, 0, 0); cairo_curve_to (cr, -7.45703, 0, -13.5, 6, -13.5, 13.5); cairo_curve_to (cr, -13.5, 20.9539, -7.45703, 27, 0, 27); cairo_curve_to (cr, 7.45703, 27, 13.5, 20.9539, 13.5, 13.5); // cairo_close_path (cr); // that does not change anything // cairo_new_sub_path (cr); // that does not change anything cairo_move_to (cr, 0, 0); cairo_line_to (cr, 353, 0); cairo_line_to (cr, 353, 27); cairo_line_to (cr, 0, 27); cairo_line_to (cr, 0, 0); // cairo_close_path (cr); // that does not change anything cairo_set_source_rgb (cr, 0, 1, 0); cairo_fill (cr); cairo_restore (cr); cairo_destroy (cr); } gint main (gint argc, gchar **argv) { GtkWidget *window; GtkWidget *canvas; gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); g_signal_connect (G_OBJECT (window), "delete-event", G_CALLBACK (gtk_main_quit), NULL); canvas = gtk_drawing_area_new (); gtk_widget_set_size_request (canvas, 700, 500); g_signal_connect (G_OBJECT (canvas), "expose-event", G_CALLBACK (paint), NULL); gtk_container_add (GTK_CONTAINER (window), canvas); gtk_widget_show_all (window); gtk_main (); return 0; }