Re: GdkPixbuf::save() override

From: 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


« previous php.gtk.dev (#2472) next »