Changeset 3101 for libcaca/trunk


Ignore:
Timestamp:
Oct 25, 2008, 1:26:15 PM (12 years ago)
Author:
nico
Message:
  • Add php binding for 8 new caca's functions
Location:
libcaca/trunk/caca-php
Files:
2 edited

Legend:

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

    r3089 r3101  
    22<?
    33
    4 echo caca_get_version()."\n";
     4echo caca_put_str()."\n";
  • libcaca/trunk/caca-php/php_caca.c

    r3094 r3101  
    315315        ZEND_FETCH_RESOURCE(event, caca_event_t*, &_zval, -1, PHP_CACA_EVENT_RES_NAME, le_caca_event);
    316316
     317#define RETURN_CHAR(c) \
     318        char *str = emalloc(2); \
     319        str[0] = c; \
     320        str[1] = '\0'; \
     321        RETURN_STRING(str, 0);
     322
     323
    317324//-------CACA'S FUNCTIONS----------------//
    318325
     
    332339
    333340PHP_FUNCTION(caca_set_canvas_size) {
     341        zval *_zval;
     342        long width, height = 0;
     343        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &_zval, &width, &height) == FAILURE) {
     344                RETURN_FALSE;
     345        }
     346        caca_canvas_t *canvas;
     347        ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas);
     348        RETURN_BOOL(caca_set_canvas_size(canvas, width, height) == 0);
    334349}
    335350
     
    376391                RETURN_FALSE;
    377392        }
     393
    378394        caca_canvas_t *canvas;
    379395        ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas);
     
    394410
    395411PHP_FUNCTION(caca_put_char) {
     412        zval *_zval;
     413        long x, y, c = 0;
     414        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlll", &_zval, &x, &y, &c) == FAILURE) {
     415                RETURN_FALSE;
     416        }
     417
     418        caca_canvas_t *canvas;
     419        ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas);
     420        RETURN_BOOL(caca_put_char(canvas, x, y, c) == 0);
    396421}
    397422
    398423PHP_FUNCTION(caca_get_char) {
     424        zval *_zval;
     425        long x, y = 0;
     426        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &_zval, &x, &y) == FAILURE) {
     427                RETURN_FALSE;
     428        }
     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        RETURN_CHAR(caca_get_char(canvas, x, y));
    399433}
    400434
    401435PHP_FUNCTION(caca_put_str) {
     436        zval *_zval;
     437        char *str;
     438        long x, y, str_len = 0;
     439        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlls", &_zval, &x, &y, &str, &str_len) == FAILURE) {
     440                RETURN_FALSE;
     441        }
     442
     443        caca_canvas_t *canvas;
     444        ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas);
     445        RETURN_BOOL(caca_put_str(canvas, x, y, str) == 0);
    402446}
    403447
     
    406450
    407451PHP_FUNCTION(caca_clear_canvas) {
     452        caca_canvas_t *canvas;
     453        FETCH_CANVAS(canvas);
     454        RETURN_LONG(caca_clear_canvas(canvas));
    408455}
    409456
    410457PHP_FUNCTION(caca_set_canvas_handle) {
     458        zval *_zval;
     459        long x, y = 0;
     460        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &_zval, &x, &y) == FAILURE) {
     461                RETURN_FALSE;
     462        }
     463
     464        caca_canvas_t *canvas;
     465        ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas);
     466        RETURN_BOOL(caca_set_canvas_handle(canvas, x, y) == 0);
    411467}
    412468
     
    424480
    425481PHP_FUNCTION(caca_blit) {
     482        zval *_zval1, *_zval2, *_zval3;
     483        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;
     489        ZEND_FETCH_RESOURCE(dst, caca_canvas_t*, &_zval1, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas);
     490        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);
    426494}
    427495
    428496PHP_FUNCTION(caca_set_canvas_boundaries) {
     497        zval *_zval;
     498        long x, y, width, height = 0;
     499        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllll", &_zval, &x, &y, &width, &height) == FAILURE) {
     500                RETURN_FALSE;
     501        }
     502
     503        caca_canvas_t *canvas;
     504        ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas);
     505        RETURN_BOOL(caca_set_canvas_boundaries(canvas, x, y, width, height) == 0);
    429506}
    430507
Note: See TracChangeset for help on using the changeset viewer.