-#include <config.h>
+#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();
+ 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)
+ pixbuf = (GdkPixbuf *) g_object_get_data (G_OBJECT (drawing_area), "pixbuf");
+ if (gdk_pixbuf_get_has_alpha (pixbuf))
{
- 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);
+ 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,
+ 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);
+ gdk_draw_rgb_image (drawing_area->window,
+ 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 = (GdkPixbuf *) gtk_object_get_data(GTK_OBJECT(drawing_area),
- "pixbuf");
+ pixbuf = (GdkPixbuf *) g_object_get_data (G_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
+ g_print ("X:%d Y:%d\n", evt->width, evt->height);
+ 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);
+ g_object_set_data (G_OBJECT (drawing_area), "pixbuf", new_pixbuf);
+ g_object_unref (pixbuf);
+ }
+
+ return FALSE;
}
-int main(int argc, char **argv)
+extern void pixbuf_init (void);
+
+int
+main (int argc, char **argv)
{
GdkWindow *root;
GtkWidget *window;
GtkWidget *drawing_area;
GdkPixbuf *pixbuf;
- gtk_init(&argc, &argv);
- gdk_rgb_set_verbose(TRUE);
- gdk_rgb_init();
+ pixbuf_init ();
- gtk_widget_set_default_colormap(gdk_rgb_get_cmap());
- gtk_widget_set_default_visual(gdk_rgb_get_visual());
+ gtk_init (&argc, &argv);
+ gdk_rgb_set_verbose (TRUE);
- root = gdk_window_foreign_new(GDK_ROOT_WINDOW());
- pixbuf = gdk_pixbuf_get_from_drawable(NULL, root, NULL,
- 0, 0, 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_widget_set_default_colormap (gdk_rgb_get_colormap ());
- GTK_SIGNAL_FUNC(close_app), NULL);
+ root = gdk_get_default_root_window ();
+ pixbuf = gdk_pixbuf_get_from_drawable (NULL, root, NULL,
+ 0, 0, 0, 0, 150, 160);
+
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ g_signal_connect (window, "delete_event",
+ G_CALLBACK (close_app), NULL);
+ g_signal_connect (window, "destroy",
+ G_CALLBACK (close_app), NULL);
- vbox = gtk_vbox_new(FALSE, 0);
- gtk_container_add(GTK_CONTAINER(window), vbox);
+ 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);
+ drawing_area = gtk_drawing_area_new ();
+ gtk_widget_set_size_request (GTK_WIDGET (drawing_area),
+ gdk_pixbuf_get_width (pixbuf),
+ gdk_pixbuf_get_height (pixbuf));
+ g_signal_connect (drawing_area, "expose_event",
+ G_CALLBACK (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);
+ g_signal_connect (drawing_area, "configure_event",
+ G_CALLBACK (configure_cb), NULL);
+ g_object_set_data (G_OBJECT (drawing_area), "pixbuf", pixbuf);
+ gtk_box_pack_start (GTK_BOX (vbox), drawing_area, TRUE, TRUE, 0);
- gtk_widget_show_all(window);
- gtk_main();
+ gtk_widget_show_all (window);
+ gtk_main ();
+ return 0;
}