Ignore:
Timestamp:
10/25/08 17:41:39 (5 years ago)
Author:
nico
Message:
  • Add binding for 6 new caca's functions
  • Add a nice php sample file examples/example1.php that shows a smart pink ping
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcaca/trunk/caca-php/php_caca.c

    r3101 r3104  
    329329                RETURN_FALSE; 
    330330        } 
    331         RETURN_BOOL(caca_create_canvas(width, height) == 0); 
     331        caca_canvas_t *canvas = caca_create_canvas(width, height); 
     332        if (!canvas) { 
     333                RETURN_FALSE; 
     334        } 
     335        ZEND_REGISTER_RESOURCE(return_value, canvas, le_caca_canvas); 
    332336} 
    333337 
     
    391395                RETURN_FALSE; 
    392396        } 
    393  
    394397        caca_canvas_t *canvas; 
    395398        ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     
    415418                RETURN_FALSE; 
    416419        } 
    417  
    418420        caca_canvas_t *canvas; 
    419421        ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     
    427429                RETURN_FALSE; 
    428430        } 
    429  
    430431        caca_canvas_t *canvas; 
    431432        ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     
    440441                RETURN_FALSE; 
    441442        } 
    442  
    443443        caca_canvas_t *canvas; 
    444444        ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     
    461461                RETURN_FALSE; 
    462462        } 
    463  
    464463        caca_canvas_t *canvas; 
    465464        ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     
    480479 
    481480PHP_FUNCTION(caca_blit) { 
    482         zval *_zval1, *_zval2, *_zval3; 
     481        zval *_zval1, *_zval2, *_zval3 = NULL; 
    483482        long x, y = 0; 
    484         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllrr", &_zval1, &x, &y, &_zval2, &_zval3) == FAILURE) { 
    485                 RETURN_FALSE; 
    486         } 
    487  
    488         caca_canvas_t *dst, *src, *mask; 
     483        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllr|r", &_zval1, &x, &y, &_zval2, &_zval3) == FAILURE) { 
     484                RETURN_FALSE; 
     485        } 
     486        caca_canvas_t *dst, *src, *mask = NULL; 
    489487        ZEND_FETCH_RESOURCE(dst, caca_canvas_t*, &_zval1, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    490488        ZEND_FETCH_RESOURCE(src, caca_canvas_t*, &_zval2, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    491         ZEND_FETCH_RESOURCE(mask, caca_canvas_t*, &_zval3, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    492  
    493         RETURN_BOOL(caca_blit(dst, x, y, src, mask) == 0); 
     489        if (_zval3) { 
     490                ZEND_FETCH_RESOURCE(mask, caca_canvas_t*, &_zval3, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     491        } 
     492        RETURN_BOOL(caca_blit(dst, x, y, src, NULL) == 0); 
    494493} 
    495494 
     
    500499                RETURN_FALSE; 
    501500        } 
    502  
    503501        caca_canvas_t *canvas; 
    504502        ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     
    564562 
    565563PHP_FUNCTION(caca_set_color_ansi) { 
     564        zval *_zval; 
     565        long foreground, background = 0; 
     566        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &_zval, &foreground, &background) == FAILURE) { 
     567                RETURN_FALSE; 
     568        } 
     569        caca_canvas_t *canvas; 
     570        ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     571        RETURN_BOOL(caca_set_color_ansi(canvas, foreground, background) == 0); 
    566572} 
    567573 
     
    735741 
    736742PHP_FUNCTION(caca_import_memory) { 
     743        zval *_zval; 
     744        char *src, *type; 
     745        long src_len, type_len = 0; 
     746        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss", &_zval, &src, &src_len, &type, &type_len) == FAILURE) { 
     747                RETURN_FALSE; 
     748        } 
     749        caca_canvas_t *canvas; 
     750        ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     751 
     752        RETURN_LONG(caca_import_memory(canvas, src, src_len, type)); 
    737753} 
    738754 
     
    747763 
    748764PHP_FUNCTION(caca_create_display) { 
     765        caca_canvas_t *canvas; 
     766        FETCH_CANVAS(canvas); 
     767 
     768        caca_display_t *display = caca_create_display(canvas); 
     769        ZEND_REGISTER_RESOURCE(return_value, display, le_caca_display); 
    749770} 
    750771 
    751772PHP_FUNCTION(caca_create_display_with_driver) { 
     773        zval *_zval; 
     774        char *str; 
     775        long str_len = 0; 
     776        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &_zval, &str, &str_len) == FAILURE) { 
     777                RETURN_FALSE; 
     778        } 
     779        caca_canvas_t *canvas; 
     780        ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     781 
     782        caca_display_t *display = caca_create_display_with_driver(canvas, str); 
     783        if (!display) { 
     784                RETURN_FALSE; 
     785        } 
     786        ZEND_REGISTER_RESOURCE(return_value, display, le_caca_display); 
    752787} 
    753788 
     
    765800 
    766801PHP_FUNCTION(caca_refresh_display) { 
     802        caca_display_t *display; 
     803        FETCH_DISPLAY(display); 
     804        RETURN_BOOL(caca_refresh_display(display) == 0); 
    767805} 
    768806 
Note: See TracChangeset for help on using the changeset viewer.