com gtk/php-gtk: Add GdkPixbuf::new_from_xpm_data( );: ext/gtk+/gdk.overrides
[email protected] (David Soria Parra) Sat, 18 Mar 2006 20:05:41 +0000
| Newsgroups | php.gtk.cvs |
|---|---|
| Message-ID | <[email protected]> |
Commit: ed74f57cfbc82934e9ba145732746bb417e0c298 Author: Andrei Zmievski <[email protected]> Sat, 18 Mar 2006 20:05:41 +0000 Parents: 0684056d85fa3464cbcf263a507ba24ca3cba80f Branches: master Link: http://git.php.net/?p=gtk/php-gtk.git;a=commitdiff;h=ed74f57cfbc82934e9ba145732746bb417e0c298 Log: Add GdkPixbuf::new_from_xpm_data(); Changed paths: M ext/gtk+/gdk.overrides Diff: ed74f57cfbc82934e9ba145732746bb417e0c298 diff --git a/ext/gtk+/gdk.overrides b/ext/gtk+/gdk.overrides index 80747f1..ac9dee2 100644 --- a/ext/gtk+/gdk.overrides +++ b/ext/gtk+/gdk.overrides @@ -1449,6 +1449,41 @@ PHP_METHOD phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC); } +%% +override gdk_pixbuf_new_from_xpm_data +PHP_METHOD +{ + zval *php_data; + int size, i; + gchar **data; + zval **line; + GdkPixbuf *pixbuf; + + if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "a/", &php_data)) { + return; + } + + size = zend_hash_num_elements(Z_ARRVAL_P(php_data)); + data = safe_emalloc(size, sizeof(gchar *), 0); + + for (i = 0, zend_hash_internal_pointer_reset(Z_ARRVAL_P(php_data)); + zend_hash_get_current_data(Z_ARRVAL_P(php_data), (void **)&line) == SUCCESS; + zend_hash_move_forward(Z_ARRVAL_P(php_data))) { + + convert_to_string_ex(line); + data[i++] = Z_STRVAL_PP(line); + } + + pixbuf = gdk_pixbuf_new_from_xpm_data((const char **)data); + efree(data); + + if (pixbuf == NULL) { + PHPG_THROW_CONSTRUCT_EXCEPTION(GdkPixbuf); + } + + phpg_gobject_new(&return_value, (GObject *)pixbuf TSRMLS_CC); + g_object_unref(pixbuf); /* phpg_gobject_new() increments reference count */ +} %% add-arginfo GdkPixbuf render_pixmap_and_mask