com gtk/php-gtk: Add GdkPixbuf::get_pixels().: ext/gtk+/gdk-types.defs ext/gtk+/gdk.overrides

[email protected] (David Soria Parra) Sun, 19 Mar 2006 03:01:35 +0000
Newsgroups php.gtk.cvs
Message-ID <[email protected]>
Commit:    9708cf1a706a3386db63731f53012986f4c1ea3c
Author:    Andrei Zmievski <[email protected]>         Sun, 19 Mar 2006 03:01:35 +0000
Parents:   c85129e17a6606a88c25ce701d8024b83843455c
Branches:  master

Link:       http://git.php.net/?p=gtk/php-gtk.git;a=commitdiff;h=9708cf1a706a3386db63731f53012986f4c1ea3c

Log:
Add GdkPixbuf::get_pixels().

Changed paths:
  M  ext/gtk+/gdk-types.defs
  M  ext/gtk+/gdk.overrides


Diff:
9708cf1a706a3386db63731f53012986f4c1ea3c
diff --git a/ext/gtk+/gdk-types.defs b/ext/gtk+/gdk-types.defs
index 7eb32fa..d89521b 100644
--- a/ext/gtk+/gdk-types.defs
+++ b/ext/gtk+/gdk-types.defs
@@ -107,10 +107,6 @@
   (parent "GObject")
   (c-name "GdkPixbuf")
   (gtype-id "GDK_TYPE_PIXBUF")
-  (fields
-; XXXX this next one isn't a real field.  added for Python bindings
-   '("guchar*" "pixel_array")
-  )
 )
 
 (define-object PixbufAnimation
diff --git a/ext/gtk+/gdk.overrides b/ext/gtk+/gdk.overrides
index e9bf7bd..b9d9bed 100644
--- a/ext/gtk+/gdk.overrides
+++ b/ext/gtk+/gdk.overrides
@@ -1608,11 +1608,31 @@ PHP_METHOD
     php_gtk_build_value(&return_value, "(NN)", php_pixmap, php_mask);
 }
 
-%%override-prop GdkPixbuf pixel_array
-PHPG_PROP_READER
+%%
+override gdk_pixbuf_get_pixels
+PHP_METHOD
 {
-    /* TODO */
-    return SUCCESS;
+    GdkPixbuf *pixbuf;
+    guchar *pixels;
+    gint rowstride, height;
+
+    NOT_STATIC_METHOD();
+
+    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "")) {
+        return;
+    }
+    
+    pixbuf = GDK_PIXBUF(PHPG_GOBJECT(this_ptr));
+    pixels = gdk_pixbuf_get_pixels(pixbuf);
+    rowstride = gdk_pixbuf_get_rowstride(pixbuf);
+    height = gdk_pixbuf_get_height(pixbuf);
+
+    if (pixels == NULL) {
+        php_error(E_WARNING, "Could not get pixel data");
+        return;
+    }
+
+    RETURN_STRINGL(pixels, rowstride*height, 1);
 }
 
 %% }}}