Ignore:
Timestamp:
Oct 26, 2008, 1:29:10 PM (11 years ago)
Author:
nico
Message:
  • Add php binding for 9 new functions
  • Improve examples/demo.php
File:
1 edited

Legend:

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

    r3107 r3108  
    1919
    2020static function_entry caca_functions[] = {
     21        PHP_FE(caca_create_event, NULL)
    2122        PHP_FE(caca_create_canvas, NULL)
    2223        PHP_FE(caca_manage_canvas, NULL)
     
    3536        PHP_FE(caca_get_char, NULL)
    3637        PHP_FE(caca_put_str, NULL)
    37         PHP_FE(caca_printf, NULL)
    3838        PHP_FE(caca_clear_canvas, NULL)
    3939        PHP_FE(caca_set_canvas_handle, NULL)
     
    6767        PHP_FE(caca_draw_box, NULL)
    6868        PHP_FE(caca_draw_thin_box, NULL)
     69        PHP_FE(caca_draw_cp437_box, NULL)
    6970        PHP_FE(caca_fill_box, NULL)
    7071        PHP_FE(caca_draw_triangle, NULL)
     
    168169}
    169170
    170 //--------CACA'S RESSOURCES DESTRUCTORS-----------//
     171//-------- Caca's ressources destructors -----------//
    171172
    172173static void php_caca_canvas_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC) {
     
    190191
    191192static void php_caca_event_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC) {
    192 }
    193 
    194 //--------INITIALIZATION---------//
     193        efree((caca_event_t *) rsrc->ptr);
     194}
     195
     196//-------- Initialization ---------//
    195197
    196198PHP_MINIT_FUNCTION(caca) {
     
    292294}
    293295
    294 //----------SOME USEFULL MACROS---------------//
     296//---------- Some usefull macros ---------------//
    295297
    296298#define FETCH_CANVAS(canvas) \
     
    321323        RETURN_STRING(str, 0);
    322324
    323 
    324 //-------CACA'S FUNCTIONS----------------//
     325//------- PHP Binding's specific functions ----------//
     326
     327PHP_FUNCTION(caca_create_event) {
     328        caca_event_t *event;
     329        event = emalloc(sizeof(caca_event_t));
     330        ZEND_REGISTER_RESOURCE(return_value, event, le_caca_event);
     331}
     332
     333//------- Caca's functions ----------------//
    325334
    326335PHP_FUNCTION(caca_create_canvas) {
     
    414423PHP_FUNCTION(caca_put_char) {
    415424        zval *_zval;
    416         long x, y, c = 0;
    417         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlll", &_zval, &x, &y, &c) == FAILURE) {
    418                 RETURN_FALSE;
    419         }
    420         caca_canvas_t *canvas;
    421         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas);
    422         RETURN_BOOL(caca_put_char(canvas, x, y, c) == 0);
     425        char *str;
     426        long str_len, x, y = 0;
     427        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlls", &_zval, &x, &y, &str, &str_len) == FAILURE) {
     428                RETURN_FALSE;
     429        }
     430        caca_canvas_t *canvas;
     431        ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas);
     432        if (str_len != 1) {
     433                RETURN_FALSE;
     434        }
     435        RETURN_BOOL(caca_put_char(canvas, x, y, str[0]) == 0);
    423436}
    424437
     
    444457        ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas);
    445458        RETURN_BOOL(caca_put_str(canvas, x, y, str) == 0);
    446 }
    447 
    448 PHP_FUNCTION(caca_printf) {
    449459}
    450460
     
    620630
    621631PHP_FUNCTION(caca_draw_ellipse) {
     632        zval *_zval;
     633        char *str;
     634        long str_len, xa, ya, xb, yb = 0;
     635        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlllls", &_zval, &xa, &ya, &xb, &yb, &str, &str_len) == FAILURE) {
     636                RETURN_FALSE;
     637        }
     638        caca_canvas_t *canvas;
     639        ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas);
     640        if (str_len != 1) {
     641                RETURN_FALSE;
     642        }
     643        RETURN_BOOL(caca_draw_ellipse(canvas, xa, ya, xb, yb, str[0]) == 0);
    622644}
    623645
    624646PHP_FUNCTION(caca_draw_thin_ellipse) {
     647        zval *_zval;
     648        long xa, ya, xb, yb = 0;
     649        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllll", &_zval, &xa, &ya, &xb, &yb) == FAILURE) {
     650                RETURN_FALSE;
     651        }
     652        caca_canvas_t *canvas;
     653        ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas);
     654        RETURN_BOOL(caca_draw_thin_ellipse(canvas, xa, ya, xb, yb) == 0);
    625655}
    626656
    627657PHP_FUNCTION(caca_fill_ellipse) {
     658        zval *_zval;
     659        char *str;
     660        long str_len, xa, ya, xb, yb = 0;
     661        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlllls", &_zval, &xa, &ya, &xb, &yb, &str, &str_len) == FAILURE) {
     662                RETURN_FALSE;
     663        }
     664        caca_canvas_t *canvas;
     665        ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas);
     666        if (str_len != 1) {
     667                RETURN_FALSE;
     668        }
     669        RETURN_BOOL(caca_fill_ellipse(canvas, xa, ya, xb, yb, str[0]) == 0);
    628670}
    629671
    630672PHP_FUNCTION(caca_draw_box) {
     673        zval *_zval;
     674        char *str;
     675        long str_len, xa, ya, xb, yb = 0;
     676        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlllls", &_zval, &xa, &ya, &xb, &yb, &str, &str_len) == FAILURE) {
     677                RETURN_FALSE;
     678        }
     679        caca_canvas_t *canvas;
     680        ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas);
     681        if (str_len != 1) {
     682                RETURN_FALSE;
     683        }
     684        RETURN_BOOL(caca_draw_box(canvas, xa, ya, xb, yb, str[0]) == 0);
    631685}
    632686
    633687PHP_FUNCTION(caca_draw_thin_box) {
     688        zval *_zval;
     689        long xa, ya, xb, yb = 0;
     690        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllll", &_zval, &xa, &ya, &xb, &yb) == FAILURE) {
     691                RETURN_FALSE;
     692        }
     693        caca_canvas_t *canvas;
     694        ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas);
     695        RETURN_BOOL(caca_draw_thin_box(canvas, xa, ya, xb, yb) == 0);
     696}
     697
     698PHP_FUNCTION(caca_draw_cp437_box) {
     699        zval *_zval;
     700        long xa, ya, xb, yb = 0;
     701        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllll", &_zval, &xa, &ya, &xb, &yb) == FAILURE) {
     702                RETURN_FALSE;
     703        }
     704        caca_canvas_t *canvas;
     705        ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas);
     706        RETURN_BOOL(caca_draw_cp437_box(canvas, xa, ya, xb, yb) == 0);
    634707}
    635708
    636709PHP_FUNCTION(caca_fill_box) {
     710        zval *_zval;
     711        char *str;
     712        long str_len, xa, ya, xb, yb = 0;
     713        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlllls", &_zval, &xa, &ya, &xb, &yb, &str, &str_len) == FAILURE) {
     714                RETURN_FALSE;
     715        }
     716        caca_canvas_t *canvas;
     717        ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas);
     718        if (str_len != 1) {
     719                RETURN_FALSE;
     720        }
     721        RETURN_BOOL(caca_fill_box(canvas, xa, ya, xb, yb, str[0]) == 0);
    637722}
    638723
     
    901986                ZEND_FETCH_RESOURCE(event, caca_event_t*, &_zval2, -1, PHP_CACA_EVENT_RES_NAME, le_caca_event);
    902987        }
    903         RETURN_BOOL(caca_get_event(display, g, event, aa) == 0);
     988        RETURN_LONG(caca_get_event(display, g, event, aa));
    904989}
    905990
     
    9171002
    9181003PHP_FUNCTION(caca_get_event_type) {
     1004        caca_event_t *event;
     1005        FETCH_EVENT(event);
     1006        RETURN_LONG(caca_get_event_type(event));
    9191007}
    9201008
    9211009PHP_FUNCTION(caca_get_event_key_ch) {
     1010        caca_event_t *event;
     1011        FETCH_EVENT(event);
     1012        RETURN_LONG(caca_get_event_key_ch(event));
    9221013}
    9231014
Note: See TracChangeset for help on using the changeset viewer.