]> Pileus Git - ~andy/gtk/blobdiff - demos/testpixbuf-drawable.c
Add xgettext:no-c-format comment to to handle '99% of the time. (#60473,
[~andy/gtk] / demos / testpixbuf-drawable.c
index 3d43244ca5545710f1d9e5f249e38ee3e8ccbb61..fa98d0e0370e3325c8a3684b81596221429efcbb 100644 (file)
@@ -1,22 +1,19 @@
 #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,
@@ -24,28 +21,28 @@ data)
                             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;
                            
@@ -53,13 +50,23 @@ gpointer data)
                                               "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;
@@ -68,14 +75,14 @@ int main(int argc, char **argv)
    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);
    
@@ -83,16 +90,15 @@ int main(int argc, char **argv)
    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);
 
@@ -103,4 +109,5 @@ int main(int argc, char **argv)
    
    gtk_widget_show_all(window);
    gtk_main();
+   return 0;
 }