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
Location:
libcaca/trunk/caca-php
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • libcaca/trunk/caca-php/examples/example1.php

    r3101 r3104  
    22<?
    33
    4 echo caca_put_str()."\n";
     4$pig_str = <<<EOT
     5                                   
     6    _._ _..._ .-',     _.._(`))   
     7   '-. `     '  /-._.-'    ',/     
     8      )         \            '.   
     9     / _    _    |             \   
     10    |  a    a    /   PHP        | 
     11    \   .-.                     ;
     12     '-('' ).-'       ,'       ;   
     13        '-;           |      .'   
     14           \           \    /   
     15           | 7  .__  _.-\   \   
     16           | |  |  ``/  /`  /     
     17      jgs /,_|  |   /,_/   /       
     18             /,_/      '`-'       
     19EOT;
     20
     21$canvas = caca_create_canvas(0, 0);
     22if (!$canvas) {
     23        die("Error while creating main canvas\n");
     24}
     25
     26$pig = caca_create_canvas(0, 0);
     27if (!$pig) {
     28        die("Error while creating canvas pig\n");
     29}
     30
     31$display = caca_create_display($canvas);
     32if (!$display) {
     33        die("Error while attaching canvas to display\n");
     34}
     35
     36
     37caca_set_color_ansi($pig, CACA_LIGHTRED, CACA_WHITE);
     38caca_import_memory($pig, $pig_str, "text");
     39caca_blit($canvas, caca_get_canvas_width($canvas) / 2 - 20, caca_get_canvas_height($canvas) /2 - 7, $pig);
     40caca_refresh_display($display);
     41
     42sleep(5);
     43
     44
  • 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.