cvs: php-gtk /ext/gtk+ gdk.overrides
| From: | Andrei Zmievski | Date: | Thu, 30 Mar 2006 17:15:24 +0000 |
| Subject: | cvs: php-gtk /ext/gtk+ gdk.overrides | ||
| Groups: | php.gtk.cvs | ||
| Request: | Send a blank email to php-gtk-cvs+get-2222@lists.php.net to get a copy of this message | ||
andrei Thu Mar 30 17:15:24 2006 UTC
Modified files:
/php-gtk/ext/gtk+ gdk.overrides
Log:
Override GdkDrawable::draw_rgb_image() and draw_rgb_32_image().
http://cvs.php.net/viewcvs.cgi/php-gtk/ext/gtk+/gdk.overrides?r1=1.51&r2=1.52&diff_format=u
Index: php-gtk/ext/gtk+/gdk.overrides
diff -u php-gtk/ext/gtk+/gdk.overrides:1.51 php-gtk/ext/gtk+/gdk.overrides:1.52
--- php-gtk/ext/gtk+/gdk.overrides:1.51 Sun Mar 19 03:01:35 2006
+++ php-gtk/ext/gtk+/gdk.overrides Thu Mar 30 17:15:24 2006
@@ -41,6 +41,8 @@
GdkColorInfoFlags
%%
ignore
+ gdk_draw_rgb_image_dithalign
+ gdk_draw_rgb_32_image_dithalign
gdk_gc_new2
gdk_pixbuf_new_from_inline
gdk_string_extents
@@ -400,6 +402,76 @@
php_gtk_build_value(&return_value, "(ii)", width, height);
}
+%%
+override gdk_draw_rgb_image
+PHP_METHOD
+{
+ zval *gc, *php_dith = NULL;
+ long x, y, width, height, rowstride = -1, xdith = 0, ydith = 0;
+ GdkRgbDither dith;
+ char *rgb_buf;
+ int rgb_buf_len;
+
+ NOT_STATIC_METHOD();
+
+ if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OiiiiVs#|iii", &gc, gdkgc_ce, &x,
&y, &width, &height, &php_dith, &rgb_buf, &rgb_buf_len, &rowstride,
&xdith, &ydith))
+ return;
+
+ if (php_dith && phpg_gvalue_get_enum(GDK_TYPE_RGB_DITHER, php_dith, (gint *)&dith) ==
FAILURE) {
+ return;
+ }
+
+ if (width <= 0 || height <= 0) {
+ php_error(E_WARNING, "width and height must be greater than 0");
+ return;
+ }
+
+ if (rowstride == -1) {
+ rowstride = width * 3;
+ }
+ if (rgb_buf_len < rowstride * (height-1) + width * 3) {
+ php_error(E_WARNING, "RGB buffer is not large enough");
+ return;
+ }
+
+ gdk_draw_rgb_image_dithalign(GDK_DRAWABLE(PHPG_GOBJECT(this_ptr)), GDK_GC(PHPG_GOBJECT(gc)),
(gint)x, (gint)y, (gint)width, (gint)height, dith, rgb_buf, (gint)rowstride, (gint)xdith,
(gint)ydith);
+}
+
+%%
+override gdk_draw_rgb_32_image
+PHP_METHOD
+{
+ zval *gc, *php_dith = NULL;
+ long x, y, width, height, rowstride = -1, xdith = 0, ydith = 0;
+ GdkRgbDither dith;
+ char *rgb_buf;
+ int rgb_buf_len;
+
+ NOT_STATIC_METHOD();
+
+ if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OiiiiVs#|iii", &gc, gdkgc_ce, &x,
&y, &width, &height, &php_dith, &rgb_buf, &rgb_buf_len, &rowstride,
&xdith, &ydith))
+ return;
+
+ if (php_dith && phpg_gvalue_get_enum(GDK_TYPE_RGB_DITHER, php_dith, (gint *)&dith) ==
FAILURE) {
+ return;
+ }
+
+ if (width <= 0 || height <= 0) {
+ php_error(E_WARNING, "width and height must be greater than 0");
+ return;
+ }
+
+ if (rowstride == -1) {
+ rowstride = width << 2;
+ }
+ if (rgb_buf_len < rowstride * (height-1) + (width << 2)) {
+ php_error(E_WARNING, "RGB buffer is not large enough");
+ return;
+ }
+
+ gdk_draw_rgb_32_image_dithalign(GDK_DRAWABLE(PHPG_GOBJECT(this_ptr)), GDK_GC(PHPG_GOBJECT(gc)),
(gint)x, (gint)y, (gint)width, (gint)height, dith, rgb_buf, (gint)rowstride, (gint)xdith,
(gint)ydith);
+}
+
%% }}}
%% {{{ GdkEvent