]> Pileus Git - ~andy/gtk/blobdiff - demos/testpixbuf-drawable.c
Don't handle errors when committing the completion
[~andy/gtk] / demos / testpixbuf-drawable.c
index 3d43244ca5545710f1d9e5f249e38ee3e8ccbb61..ad4e4a055cb509b19d206b03b42916e8f176b2a7 100644 (file)
@@ -1,66 +1,75 @@
-#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;
@@ -68,39 +77,39 @@ int main(int argc, char **argv)
    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;
 }