-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1,SHA512 Weitian Leung wrote:
> I used to simply call gtk_widget_shape_combine_mask and > gdk_window_set_back_pixmap to create the irregularly-shaped window > with the png image with gtk+2.0. I happened to know one working code snippet existed in an input method server called "gcin". The attached codes works for all image format that GTK+ supports, and also works for animated gif files. Kind regards Wen-Yen Chuang (caleb) -----BEGIN PGP SIGNATURE----- iEYEARECAAYFAk6AgGUACgkQdEpXpumNYVl73wCdHpK7/Tefxm02kYZJouSWm7CF qMwAn2qDZckRct+agytpu7GDc0YhWGNtiQIcBAEBCgAGBQJOgIBlAAoJELc3H0m+ i6gZHOEQAIr/QE5QMDNKCu2G4klwor+JkiHKuBm3kpm++pixT2DAo2N0DJDkaHns XXcirFcJxb6pYXPFoM+kPA9uZp9EdmS8xpjNAutLxi/z64LRyNDKrCFWIbVsDJvL mqJo2nQ/McEGpTx7kL+qpYUbzu+RY7ylTQlyr8+DwnyrgNN2runrJ2qz113tl5gI dYxGer4LaE2Pkbn/KQdgPZLy02l46HjWqqGutY13hPuASKkFPLjsVWmURvblQHEx 4tXwYcRvg7cbOp1wDjIi51UX5tGNakXcBFGOoMIULesUOLOaPGtwvBqG0TxaB3bM 7gMQVYZ2sMjVcW7EhM9UcWvutn9z4DkXB2ERovMjLSsmTQRFx1Jx+u5xm//3cddL SXf6bk40zJ6+/q+N2PrkYDUE9smXd+xuVf07tjNbkeLljLuSeKNs1DxW4hmE7eq0 IOa+H3a2cV0mLsmvDqCnqfqaB3zBq8crI0Z2z95MDJJMDpTvLxVSygIK5f78imRT F6XAxALPUCgBjMz/iBiNwFHs1iBRpcNZ72DHpYyxZ8n/6rZZcTwDr+O7CrEJbM1P HjblEQbS8INfXfknGUi36CwPTi1aj0dONjIlVTxIlBNB0139C6hM9goL1ucak7SJ 9/5Rv8KnCWoAw44fJB21Kpl+IYc7NXqK316YoYHobFfkw5ICERz8 =Ucjr -----END PGP SIGNATURE-----
#if GTK_CHECK_VERSION(2,91,0) GdkPixbuf *pixbuf = NULL; GdkPixbufAnimation *anime = NULL; switch(gtk_image_get_storage_type(GTK_IMAGE(image))) { case GTK_IMAGE_PIXBUF: pixbuf = gtk_image_get_pixbuf(GTK_IMAGE(image)); break; case GTK_IMAGE_ANIMATION: anime = gtk_image_get_animation(GTK_IMAGE(image)); pixbuf = gdk_pixbuf_animation_get_static_image(anime); break; default: break; } cairo_surface_t *img = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, gdk_pixbuf_get_width(pixbuf), gdk_pixbuf_get_height(pixbuf)); cairo_t *cr = cairo_create(img); gdk_cairo_set_source_pixbuf(cr, pixbuf, 0, 0); cairo_paint(cr); cairo_region_t *mask = gdk_cairo_region_create_from_surface(img); gtk_widget_shape_combine_region(gwin_message, mask); cairo_region_destroy(mask); cairo_destroy(cr); cairo_surface_destroy(img); #else GdkBitmap *bitmap = NULL; gdk_pixbuf_render_pixmap_and_mask(gdk_pixbuf_new_from_file(icon, NULL), NULL, &bitmap, 128); gtk_widget_shape_combine_mask(gwin_message, bitmap, 0, 0); #endif
_______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list