Re: GdkPixbuf::save() override
| From: | Andrei Zmievski | Date: | Wed, 01 Mar 2006 21:15:30 +0000 |
| Subject: | Re: GdkPixbuf::save() override | ||
| References: | 1 | Groups: | php.gtk.dev |
| Request: | Send a blank email to php-gtk-dev+get-2472@lists.php.net to get a copy of this message | ||
I will review soon.
On Feb 28, 2006, at 11:04 PM, xxoes wrote:
I have write an overrid for GdkPixbuf::save() %% override gdk_pixbuf_save PHP_METHOD { char *filename; char *type; char **option_keys = NULL; char **option_values = NULL; GError *error = NULL; int argc,i,options; zval ***args; NOT_STATIC_METHOD();argc = ZEND_NUM_ARGS();options = (argc-2)/2;args = (zval ***)emalloc(argc * sizeof(zval **));if(argc < 2 || zend_get_parameters_array_ex(argc,args)==FAILURE) {efree(args); WRONG_PARAM_COUNT;} else if(argc%2) {efree(args); php_error(E_WARNING, "%s::%s() requires arguments 3-n to be key/value pairs", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C)); return;} option_keys = (char**)emalloc((options+1) * sizeof(char**)); option_values = (char**)emalloc((options+1) * sizeof(char**)); for(i=0;i<argc;i++) {if(Z_TYPE_PP(args[i]) != IS_STRING) { convert_to_string_ex(args[i]); }if(i == 0) { filename = Z_STRVAL_PP(args[i]); } else if(i == 1) { type = Z_STRVAL_PP(args[i]); } else if(!(i%2)) { option_keys[(i-2)/2] = Z_STRVAL_PP(args[i]); } else { option_values[(i-2)/2] = Z_STRVAL_PP(args[i]); }} option_keys[(i-2)/2] = 0; option_values[(i-2)/2] = 0; if(gdk_pixbuf_savev(GDK_PIXBUF(PHPG_GOBJECT(this_ptr)), filename, type, option_keys, option_values, &error)) {efree(args); efree(option_keys); efree(option_values); RETURN_TRUE;} else {efree(args); efree(option_keys); efree(option_values); if(error) { php_error(E_WARNING, "%s::%s() error->code = %u, error->message = %s", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C), error->code,error->message); } else { php_error(E_WARNING, "%s::%s() Bad option name or wrong option value", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C)); } RETURN_FALSE;} } mfg xxoes -- PHP-GTK Development Mailing List (http://gtk.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php