#include <config.h>
#include <gtk/gtk.h>
-#include <gdk/gdkx.h>
-#include "gdk-pixbuf.h"
-void close_app(GtkWidget *widget, gpointer data)
+int close_app(GtkWidget *widget, gpointer data)
{
gtk_main_quit();
+ return TRUE;
}
-void expose_cb(GtkWidget *drawing_area, GdkEventExpose *evt, gpointer
-data)
+int expose_cb(GtkWidget *drawing_area, GdkEventExpose *evt, gpointer data)
{
GdkPixbuf *pixbuf;
pixbuf = (GdkPixbuf *) gtk_object_get_data(GTK_OBJECT(drawing_area),
"pixbuf");
-
- if(pixbuf->art_pixbuf->has_alpha)
+ if(gdk_pixbuf_get_has_alpha (pixbuf))
{
gdk_draw_rgb_32_image(drawing_area->window,
drawing_area->style->black_gc,
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);
+ gdk_pixbuf_get_pixels (pixbuf) +
+ (evt->area.y * gdk_pixbuf_get_rowstride (pixbuf)) +
+ (evt->area.x * gdk_pixbuf_get_n_channels (pixbuf)),
+ gdk_pixbuf_get_rowstride (pixbuf));
}
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);
+ drawing_area->style->black_gc,
+ evt->area.x, evt->area.y,
+ evt->area.width,
+ evt->area.height,
+ GDK_RGB_DITHER_NORMAL,
+ gdk_pixbuf_get_pixels (pixbuf) +
+ (evt->area.y * gdk_pixbuf_get_rowstride (pixbuf)) +
+ (evt->area.x * gdk_pixbuf_get_n_channels (pixbuf)),
+ gdk_pixbuf_get_rowstride (pixbuf));
}
+ return FALSE;
}
-void configure_cb(GtkWidget *drawing_area, GdkEventConfigure *evt,
-gpointer data)
+int configure_cb(GtkWidget *drawing_area, GdkEventConfigure *evt, gpointer data)
{
GdkPixbuf *pixbuf;
"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
+ if(evt->width != gdk_pixbuf_get_width (pixbuf) || evt->height != gdk_pixbuf_get_height (pixbuf))
+ {
+ GdkWindow *root;
+ GdkPixbuf *new_pixbuf;
+
+ root = gdk_get_default_root_window ();
+ new_pixbuf = gdk_pixbuf_get_from_drawable(NULL, root, NULL,
+ 0, 0, 0, 0, evt->width, evt->height);
+ gtk_object_set_data(GTK_OBJECT(drawing_area), "pixbuf", new_pixbuf);
+ gdk_pixbuf_unref(pixbuf);
+ }
+
+ return FALSE;
}
+extern void pixbuf_init();
+
int main(int argc, char **argv)
{
GdkWindow *root;
GtkWidget *drawing_area;
GdkPixbuf *pixbuf;
+ pixbuf_init ();
+
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());
+ gtk_widget_set_default_colormap(gdk_rgb_get_colormap());
- root = gdk_window_foreign_new(GDK_ROOT_WINDOW());
+ root = gdk_get_default_root_window ();
pixbuf = gdk_pixbuf_get_from_drawable(NULL, root, NULL,
0, 0, 0, 0, 150, 160);
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_widget_set_size_request (GTK_WIDGET(drawing_area),
+ gdk_pixbuf_get_width (pixbuf),
+ gdk_pixbuf_get_height (pixbuf));
gtk_signal_connect(GTK_OBJECT(drawing_area), "expose_event",
GTK_SIGNAL_FUNC(expose_cb), NULL);
gtk_widget_show_all(window);
gtk_main();
+ return 0;
}