Ignore:
Timestamp:
Oct 25, 2008, 5:41:39 PM (11 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.