Ignore:
Timestamp:
Oct 26, 2008, 9:51:04 PM (11 years ago)
Author:
nico
Message:
  • Add php binding for 15 new functions
  • Add new sample program "examples/drivers.php"
Location:
libcaca/trunk/caca-php
Files:
1 added
1 edited

Legend:

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

    r3112 r3113  
    328328        ZEND_FETCH_RESOURCE(event, caca_event_t*, &_zval, -1, PHP_CACA_EVENT_RES_NAME, le_caca_event);
    329329
     330#define FETCH_LONG(l) \
     331        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &l) == FAILURE) { \
     332                RETURN_FALSE; \
     333        }
     334
    330335#define RETURN_CHAR(c) \
    331336        char *str = emalloc(2); \
     
    391396        caca_canvas_t *canvas;
    392397        FETCH_CANVAS(canvas);
    393         RETURN_STRING(estrdup(caca_get_canvas_chars(canvas)), 0); //TODO: check that return \0 terminated string
     398        RETURN_STRING((char *) caca_get_canvas_chars(canvas), 1); //TODO: check that return \0 terminated string
    394399}
    395400
     
    397402        caca_canvas_t *canvas;
    398403        FETCH_CANVAS(canvas);
    399         RETURN_STRING(estrdup(caca_get_canvas_attrs(canvas)), 0); //TODO: check that return \0 terminated string
     404        RETURN_STRING((char *) caca_get_canvas_attrs(canvas), 1); //TODO: check that return \0 terminated string
    400405}
    401406
     
    409414
    410415PHP_FUNCTION(caca_get_version) {
    411         RETURN_STRING(estrdup(caca_get_version()), 0);
     416        RETURN_STRING((char *) caca_get_version(), 1);
    412417}
    413418
     
    621626
    622627PHP_FUNCTION(caca_set_color_argb) {
     628        zval *_zval;
     629        long foreground, background = 0;
     630        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &_zval, &foreground, &background) == FAILURE) {
     631                RETURN_FALSE;
     632        }
     633        caca_canvas_t *canvas;
     634        ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas);
     635        RETURN_SUCCESS(caca_set_color_argb(canvas, foreground, background));
    623636}
    624637
    625638PHP_FUNCTION(caca_attr_to_ansi) {
     639        long l;
     640        FETCH_LONG(l);
     641        RETURN_LONG(caca_attr_to_ansi(l));
    626642}
    627643
    628644PHP_FUNCTION(caca_attr_to_ansi_fg) {
     645        long l;
     646        FETCH_LONG(l);
     647        RETURN_LONG(caca_attr_to_ansi_fg(l));
    629648}
    630649
    631650PHP_FUNCTION(caca_attr_to_ansi_bg) {
     651        long l;
     652        FETCH_LONG(l);
     653        RETURN_LONG(caca_attr_to_ansi_bg(l));
    632654}
    633655
    634656PHP_FUNCTION(caca_attr_to_rgb12_fg) {
     657        long l;
     658        FETCH_LONG(l);
     659        RETURN_LONG(caca_attr_to_rgb12_fg(l));
    635660}
    636661
    637662PHP_FUNCTION(caca_attr_to_rgb12_bg) {
     663        long l;
     664        FETCH_LONG(l);
     665        RETURN_LONG(caca_attr_to_rgb12_bg(l));
    638666}
    639667
     
    841869
    842870PHP_FUNCTION(caca_get_frame_count) {
     871        zval *_zval;
     872        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) {
     873                RETURN_FALSE;
     874        }
     875        caca_canvas_t *canvas;
     876        ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas);
     877        RETURN_LONG(caca_get_canvas_count(canvas));
    843878}
    844879
    845880PHP_FUNCTION(caca_set_frame) {
     881        zval *_zval;
     882        long id;
     883        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &_zval, &id) == FAILURE) {
     884                RETURN_FALSE;
     885        }
     886        caca_canvas_t *canvas;
     887        ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas);
     888        RETURN_SUCCESS(caca_set_frame(canvas, id));
    846889}
    847890
    848891PHP_FUNCTION(caca_set_frame_name) {
     892        zval *_zval;
     893        char *str;
     894        long str_len;
     895        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &_zval, &str, &str_len) == FAILURE) {
     896                RETURN_FALSE;
     897        }
     898        caca_canvas_t *canvas;
     899        ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas);
     900        RETURN_SUCCESS(caca_set_frame_name(canvas, str));
    849901}
    850902
    851903PHP_FUNCTION(caca_create_frame) {
     904        zval *_zval;
     905        long id;
     906        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &_zval, &id) == FAILURE) {
     907                RETURN_FALSE;
     908        }
     909        caca_canvas_t *canvas;
     910        ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas);
     911        RETURN_SUCCESS(caca_create_frame(canvas, id));
    852912}
    853913
    854914PHP_FUNCTION(caca_free_frame) {
     915        zval *_zval;
     916        long id;
     917        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &_zval, &id) == FAILURE) {
     918                RETURN_FALSE;
     919        }
     920        caca_canvas_t *canvas;
     921        ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas);
     922        RETURN_SUCCESS(caca_free_frame(canvas, id));
    855923}
    856924
     
    10221090
    10231091PHP_FUNCTION(caca_get_display_driver_list) {
     1092        char const * const *list = caca_get_display_driver_list();
     1093        int i;
     1094        array_init(return_value);       
     1095        for(i = 0; list[i]; i += 2)
     1096                add_assoc_string(return_value, (char*) list[i], (char*) list[i + 1], 1);
    10241097}
    10251098
    10261099PHP_FUNCTION(caca_get_display_driver) {
     1100        zval *_zval;
     1101        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) {
     1102                RETURN_FALSE;
     1103        }
     1104        caca_display_t *display;
     1105        ZEND_FETCH_RESOURCE(display, caca_display_t*, &_zval, -1, PHP_CACA_DISPLAY_RES_NAME, le_caca_display);
     1106        RETURN_STRING((char *) caca_get_display_driver(display), 1);
    10271107}
    10281108
    10291109PHP_FUNCTION(caca_set_display_driver) {
     1110        zval *_zval;
     1111        char *str;
     1112        long str_len;
     1113        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &_zval, &str, &str_len) == FAILURE) {
     1114                RETURN_FALSE;
     1115        }
     1116        caca_display_t *display;
     1117        ZEND_FETCH_RESOURCE(display, caca_display_t*, &_zval, -1, PHP_CACA_DISPLAY_RES_NAME, le_caca_display);
     1118        RETURN_SUCESS(caca_set_display_driver(display, str));
    10301119}
    10311120
    10321121PHP_FUNCTION(caca_get_canvas) {
     1122        zval *_zval;
     1123        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) {
     1124                RETURN_FALSE;
     1125        }
     1126        caca_display_t *display;
     1127        ZEND_FETCH_RESOURCE(display, caca_display_t*, &_zval, -1, PHP_CACA_DISPLAY_RES_NAME, le_caca_display);
     1128        caca_canvas_t *canvas = caca_get_canvas(display);
     1129        ZEND_REGISTER_RESOURCE(return_value, canvas, le_caca_canvas);
    10331130}
    10341131
Note: See TracChangeset for help on using the changeset viewer.