diff options
-rw-r--r-- | demos/testpixbuf-drawable.c | 107 | ||||
-rw-r--r-- | gdk-pixbuf/ChangeLog | 9 | ||||
-rw-r--r-- | gdk-pixbuf/Makefile.am | 4 |
3 files changed, 119 insertions, 1 deletions
diff --git a/demos/testpixbuf-drawable.c b/demos/testpixbuf-drawable.c new file mode 100644 index 0000000000..d7a941e4ea --- /dev/null +++ b/demos/testpixbuf-drawable.c @@ -0,0 +1,107 @@ +#include <gtk/gtk.h> +#include <gdk/gdkx.h> +#include <gdk-pixbuf/gdk-pixbuf.h> +#include <gdk-pixbuf/gdk-pixbuf-drawable.h> + +void close_app(GtkWidget *widget, gpointer data) +{ + gtk_main_quit(); +} + +void expose_cb(GtkWidget *drawing_area, GdkEventExpose *evt, gpointer +data) +{ + GdkPixbuf *pixbuf; + gint x1, y1, x2, y2; + + pixbuf = (GdkPixbuf *) gtk_object_get_data(GTK_OBJECT(drawing_area), + "pixbuf"); + + if(pixbuf->art_pixbuf->has_alpha) + { + gdk_draw_rgb_32_image(drawing_area->window, + drawing_area->style->black_gc, + evt->area.x, evt->area.y, + evt->area.width, + evt->area.height, + GDK_RGB_DITHER_MAX, + pixbuf->art_pixbuf->pixels + + (evt->area.y * pixbuf->art_pixbuf->rowstride) + + (evt->area.x * pixbuf->art_pixbuf->n_channels), + pixbuf->art_pixbuf->rowstride); + } + else + { + gdk_draw_rgb_image(drawing_area->window, + drawing_area->style->white_gc, + evt->area.x, evt->area.y, + evt->area.width, + evt->area.height, + GDK_RGB_DITHER_NORMAL, + pixbuf->art_pixbuf->pixels + + (evt->area.y * pixbuf->art_pixbuf->rowstride) + + (evt->area.x * pixbuf->art_pixbuf->n_channels), + pixbuf->art_pixbuf->rowstride); + } +} +void configure_cb(GtkWidget *drawing_area, GdkEventConfigure *evt, +gpointer data) +{ + GdkPixbuf *pixbuf, spb; + + pixbuf = (GdkPixbuf *) gtk_object_get_data(GTK_OBJECT(drawing_area), + "pixbuf"); + + g_print("X:%d Y:%d\n", evt->width, evt->height); +#if 0 + if(((evt->width) != (pixbuf->art_pixbuf->width)) || + ((evt->height) != (pixbuf->art_pixbuf->height))) + gdk_pixbuf_scale(pixbuf, evt->width, evt->height); +#endif +} + +int main(int argc, char **argv) +{ + GdkWindow *root; + GtkWidget *window; + GtkWidget *vbox; + GtkWidget *drawing_area; + GdkPixbuf *pixbuf; + gint width, height; + gint x, y; + + gtk_init(&argc, &argv); + gdk_rgb_set_verbose(TRUE); + gdk_rgb_init(); + + gtk_widget_set_default_colormap(gdk_rgb_get_cmap()); + gtk_widget_set_default_visual(gdk_rgb_get_visual()); + + root = gdk_window_foreign_new(GDK_ROOT_WINDOW()); + pixbuf = gdk_pixbuf_rgb_from_drawable(root, 0, 0, 150, 160); + + window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_signal_connect(GTK_OBJECT(window), "delete_event", + GTK_SIGNAL_FUNC(close_app), NULL); + gtk_signal_connect(GTK_OBJECT(window), "destroy", + + GTK_SIGNAL_FUNC(close_app), NULL); + + vbox = gtk_vbox_new(FALSE, 0); + gtk_container_add(GTK_CONTAINER(window), vbox); + + drawing_area = gtk_drawing_area_new(); + gtk_drawing_area_size(GTK_DRAWING_AREA(drawing_area), + pixbuf->art_pixbuf->width, + pixbuf->art_pixbuf->height); + gtk_signal_connect(GTK_OBJECT(drawing_area), "expose_event", + GTK_SIGNAL_FUNC(expose_cb), NULL); + + gtk_signal_connect(GTK_OBJECT(drawing_area), "configure_event", + GTK_SIGNAL_FUNC(configure_cb), NULL); + gtk_object_set_data(GTK_OBJECT(drawing_area), "pixbuf", pixbuf); + gtk_box_pack_start(GTK_BOX(vbox), drawing_area, TRUE, TRUE, 0); + + gtk_widget_show_all(window); + gtk_main(); +} diff --git a/gdk-pixbuf/ChangeLog b/gdk-pixbuf/ChangeLog index 31fcb963ed..162ecd5af8 100644 --- a/gdk-pixbuf/ChangeLog +++ b/gdk-pixbuf/ChangeLog @@ -1,3 +1,12 @@ +1999-11-13 Cody Russell <bratsche@dfw.net> + * src/testpixbuf-drawable.c: Added a test program for drawable + code. + + * src/Makefile.am: Build testpixbuf-drawable. + +1999-11-12 Cody Russell <bratsche@dfw.net> + * src/gdk-pixbuf-drawable.c: Merged in Michael Zucchi's changes. + 1999-11-10 Federico Mena Quintero <federico@redhat.com> * doc/tmpl/gdk-pixbuf-loader.sgml: Populated. diff --git a/gdk-pixbuf/Makefile.am b/gdk-pixbuf/Makefile.am index 387690bf29..216caaac06 100644 --- a/gdk-pixbuf/Makefile.am +++ b/gdk-pixbuf/Makefile.am @@ -32,7 +32,7 @@ libexec_LTLIBRARIES = \ $(TIFF_LIB) \ $(PNM_LIB) -noinst_PROGRAMS = testpixbuf +noinst_PROGRAMS = testpixbuf testpixbuf-drawable DEPS = libgdk_pixbuf.la @@ -43,6 +43,8 @@ LDADDS = libgdk_pixbuf.la $(LIBART_LIBS) $(GLIB_LIBS) testpixbuf_LDADD = $(LDADDS) $(LIBART_LIBS) $(GNOME_LIBS) -lgmodule +testpixbuf_drawable_LDADD = $(LDADDS) $(GNOME_LIBS) + # # The GdkPixBuf library # |