Changeset 3091


Ignore:
Timestamp:
Oct 25, 2008, 12:09:30 AM (11 years ago)
Author:
nico
Message:
  • Add caca's php constants definition
  • Add php binding for 13 new functions
Location:
libcaca/trunk/caca-php
Files:
2 edited

Legend:

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

    r3089 r3091  
    1919
    2020static function_entry caca_functions[] = {
     21        PHP_FE(caca_create_canvas, NULL)
    2122        PHP_FE(caca_manage_canvas, NULL)
    2223        PHP_FE(caca_unmanage_canvas, NULL)
     
    2425        PHP_FE(caca_get_canvas_width, NULL)
    2526        PHP_FE(caca_get_canvas_height, NULL)
    26         PHP_FE(caca_free_canvas, NULL)
     27        PHP_FE(caca_get_canvas_chars, NULL)
     28        PHP_FE(caca_get_canvas_attrs, NULL)
    2729        PHP_FE(caca_rand, NULL)
    2830        PHP_FE(caca_get_version, NULL)
     
    3133        PHP_FE(caca_get_cursor_y, NULL)
    3234        PHP_FE(caca_put_char, NULL)
     35        PHP_FE(caca_get_char, NULL)
    3336        PHP_FE(caca_put_str, NULL)
    3437        PHP_FE(caca_printf, NULL)
     
    4649        PHP_FE(caca_stretch_left, NULL)
    4750        PHP_FE(caca_stretch_right, NULL)
     51        PHP_FE(caca_get_attr, NULL)
    4852        PHP_FE(caca_set_attr, NULL)
    4953        PHP_FE(caca_put_attr, NULL)
     
    9094        PHP_FE(caca_get_dither_algorithm, NULL)
    9195        PHP_FE(caca_dither_bitmap, NULL)
    92         PHP_FE(caca_free_dither, NULL)
    9396        PHP_FE(caca_get_font_list, NULL)
    9497        PHP_FE(caca_get_font_width, NULL)
    9598        PHP_FE(caca_get_font_height, NULL)
    9699        PHP_FE(caca_render_canvas, NULL)
    97         PHP_FE(caca_free_font, NULL)
    98100        PHP_FE(caca_canvas_set_figfont, NULL)
    99101        PHP_FE(caca_put_figchar, NULL)
     
    108110        PHP_FE(caca_get_display_driver, NULL)
    109111        PHP_FE(caca_set_display_driver, NULL)
    110         PHP_FE(caca_free_display, NULL)
    111112        PHP_FE(caca_refresh_display, NULL)
    112113        PHP_FE(caca_set_display_time, NULL)
     
    157158        php_info_print_table_end();
    158159}
     160
     161//--------CACA'S RESSOURCES DESTRUCTORS-----------//
     162
     163static void php_caca_canvas_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC) {
     164        caca_free_canvas(rsrc->ptr);
     165}
     166
     167static void php_caca_dither_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC) {
     168        caca_free_dither(rsrc->ptr);
     169}
     170
     171static void php_caca_font_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC) {
     172        caca_free_font(rsrc->ptr);
     173}
     174
     175static void php_caca_file_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC) {
     176}
     177
     178static void php_caca_display_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC) {
     179        caca_free_display(rsrc->ptr);
     180}
     181
     182static void php_caca_event_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC) {
     183}
     184
    159185//--------INITIALIZATION---------//
    160186
    161187PHP_MINIT_FUNCTION(caca) {
     188
     189        le_caca_canvas = zend_register_list_destructors_ex(php_caca_canvas_dtor, NULL, PHP_CACA_CANVAS_RES_NAME, module_number);
     190        le_caca_dither = zend_register_list_destructors_ex(php_caca_dither_dtor, NULL, PHP_CACA_DITHER_RES_NAME, module_number);
     191        le_caca_font = zend_register_list_destructors_ex(php_caca_font_dtor, NULL, PHP_CACA_FONT_RES_NAME, module_number);
     192        le_caca_file = zend_register_list_destructors_ex(php_caca_file_dtor, NULL, PHP_CACA_FILE_RES_NAME, module_number);
     193        le_caca_display = zend_register_list_destructors_ex(php_caca_display_dtor, NULL, PHP_CACA_DISPLAY_RES_NAME, module_number);
     194        le_caca_event = zend_register_list_destructors_ex(php_caca_event_dtor, NULL, PHP_CACA_EVENT_RES_NAME, module_number);
    162195       
    163196        REGISTER_LONG_CONSTANT("CACA_BLACK", CACA_BLACK, CONST_CS | CONST_PERSISTENT);
     
    184217        REGISTER_LONG_CONSTANT("CACA_BLINK", CACA_BLINK, CONST_CS | CONST_PERSISTENT);
    185218
     219        REGISTER_LONG_CONSTANT("CACA_EVENT_NONE", CACA_EVENT_NONE, CONST_CS | CONST_PERSISTENT);
     220        REGISTER_LONG_CONSTANT("CACA_EVENT_KEY_PRESS", CACA_EVENT_KEY_PRESS, CONST_CS | CONST_PERSISTENT);
     221        REGISTER_LONG_CONSTANT("CACA_EVENT_KEY_RELEASE", CACA_EVENT_KEY_RELEASE, CONST_CS | CONST_PERSISTENT);
     222        REGISTER_LONG_CONSTANT("CACA_EVENT_MOUSE_PRESS", CACA_EVENT_MOUSE_PRESS, CONST_CS | CONST_PERSISTENT);
     223        REGISTER_LONG_CONSTANT("CACA_EVENT_MOUSE_RELEASE", CACA_EVENT_MOUSE_RELEASE, CONST_CS | CONST_PERSISTENT);
     224        REGISTER_LONG_CONSTANT("CACA_EVENT_MOUSE_MOTION", CACA_EVENT_MOUSE_MOTION, CONST_CS | CONST_PERSISTENT);
     225        REGISTER_LONG_CONSTANT("CACA_EVENT_RESIZE", CACA_EVENT_RESIZE, CONST_CS | CONST_PERSISTENT);
     226        REGISTER_LONG_CONSTANT("CACA_EVENT_QUIT", CACA_EVENT_QUIT, CONST_CS | CONST_PERSISTENT);
     227        REGISTER_LONG_CONSTANT("CACA_EVENT_ANY", CACA_EVENT_ANY, CONST_CS | CONST_PERSISTENT);
     228
     229        REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_A", CACA_KEY_CTRL_A, CONST_CS | CONST_PERSISTENT);
     230        REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_B", CACA_KEY_CTRL_B, CONST_CS | CONST_PERSISTENT);
     231        REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_C", CACA_KEY_CTRL_C, CONST_CS | CONST_PERSISTENT);
     232        REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_D", CACA_KEY_CTRL_D, CONST_CS | CONST_PERSISTENT);
     233        REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_E", CACA_KEY_CTRL_E, CONST_CS | CONST_PERSISTENT);
     234        REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_F", CACA_KEY_CTRL_F, CONST_CS | CONST_PERSISTENT);
     235        REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_G", CACA_KEY_CTRL_G, CONST_CS | CONST_PERSISTENT);
     236        REGISTER_LONG_CONSTANT("CACA_KEY_BACKSPACE", CACA_KEY_BACKSPACE, CONST_CS | CONST_PERSISTENT);
     237        REGISTER_LONG_CONSTANT("CACA_KEY_TAB", CACA_KEY_TAB, CONST_CS | CONST_PERSISTENT);
     238        REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_J", CACA_KEY_CTRL_J, CONST_CS | CONST_PERSISTENT);
     239        REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_K", CACA_KEY_CTRL_K, CONST_CS | CONST_PERSISTENT);
     240        REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_L", CACA_KEY_CTRL_L, CONST_CS | CONST_PERSISTENT);
     241        REGISTER_LONG_CONSTANT("CACA_KEY_RETURN", CACA_KEY_RETURN, CONST_CS | CONST_PERSISTENT);
     242        REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_N", CACA_KEY_CTRL_N, CONST_CS | CONST_PERSISTENT);
     243        REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_O", CACA_KEY_CTRL_O, CONST_CS | CONST_PERSISTENT);
     244        REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_P", CACA_KEY_CTRL_P, CONST_CS | CONST_PERSISTENT);
     245        REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_Q", CACA_KEY_CTRL_Q, CONST_CS | CONST_PERSISTENT);
     246        REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_R", CACA_KEY_CTRL_R, CONST_CS | CONST_PERSISTENT);
     247        REGISTER_LONG_CONSTANT("CACA_KEY_PAUSE", CACA_KEY_PAUSE, CONST_CS | CONST_PERSISTENT);
     248        REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_T", CACA_KEY_CTRL_T, CONST_CS | CONST_PERSISTENT);
     249        REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_U", CACA_KEY_CTRL_U, CONST_CS | CONST_PERSISTENT);
     250        REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_V", CACA_KEY_CTRL_V, CONST_CS | CONST_PERSISTENT);
     251        REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_W", CACA_KEY_CTRL_W, CONST_CS | CONST_PERSISTENT);
     252        REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_X", CACA_KEY_CTRL_X, CONST_CS | CONST_PERSISTENT);
     253        REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_Y", CACA_KEY_CTRL_Y, CONST_CS | CONST_PERSISTENT);
     254        REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_Z", CACA_KEY_CTRL_Z, CONST_CS | CONST_PERSISTENT);
     255        REGISTER_LONG_CONSTANT("CACA_KEY_ESCAPE", CACA_KEY_ESCAPE, CONST_CS | CONST_PERSISTENT);
     256        REGISTER_LONG_CONSTANT("CACA_KEY_DELETE", CACA_KEY_DELETE, CONST_CS | CONST_PERSISTENT);
     257        REGISTER_LONG_CONSTANT("CACA_KEY_UP", CACA_KEY_UP, CONST_CS | CONST_PERSISTENT);
     258        REGISTER_LONG_CONSTANT("CACA_KEY_DOWN", CACA_KEY_DOWN, CONST_CS | CONST_PERSISTENT);
     259        REGISTER_LONG_CONSTANT("CACA_KEY_LEFT", CACA_KEY_LEFT, CONST_CS | CONST_PERSISTENT);
     260        REGISTER_LONG_CONSTANT("CACA_KEY_RIGHT", CACA_KEY_RIGHT, CONST_CS | CONST_PERSISTENT);
     261        REGISTER_LONG_CONSTANT("CACA_KEY_INSERT", CACA_KEY_INSERT, CONST_CS | CONST_PERSISTENT);
     262        REGISTER_LONG_CONSTANT("CACA_KEY_HOME", CACA_KEY_HOME, CONST_CS | CONST_PERSISTENT);
     263        REGISTER_LONG_CONSTANT("CACA_KEY_END", CACA_KEY_END, CONST_CS | CONST_PERSISTENT);
     264        REGISTER_LONG_CONSTANT("CACA_KEY_PAGEUP", CACA_KEY_PAGEUP, CONST_CS | CONST_PERSISTENT);
     265        REGISTER_LONG_CONSTANT("CACA_KEY_PAGEDOWN", CACA_KEY_PAGEDOWN, CONST_CS | CONST_PERSISTENT);
     266        REGISTER_LONG_CONSTANT("CACA_KEY_F1", CACA_KEY_F1, CONST_CS | CONST_PERSISTENT);
     267        REGISTER_LONG_CONSTANT("CACA_KEY_F2", CACA_KEY_F2, CONST_CS | CONST_PERSISTENT);
     268        REGISTER_LONG_CONSTANT("CACA_KEY_F3", CACA_KEY_F3, CONST_CS | CONST_PERSISTENT);
     269        REGISTER_LONG_CONSTANT("CACA_KEY_F4", CACA_KEY_F4, CONST_CS | CONST_PERSISTENT);
     270        REGISTER_LONG_CONSTANT("CACA_KEY_F5", CACA_KEY_F5, CONST_CS | CONST_PERSISTENT);
     271        REGISTER_LONG_CONSTANT("CACA_KEY_F6", CACA_KEY_F6, CONST_CS | CONST_PERSISTENT);
     272        REGISTER_LONG_CONSTANT("CACA_KEY_F7", CACA_KEY_F7, CONST_CS | CONST_PERSISTENT);
     273        REGISTER_LONG_CONSTANT("CACA_KEY_F8", CACA_KEY_F8, CONST_CS | CONST_PERSISTENT);
     274        REGISTER_LONG_CONSTANT("CACA_KEY_F9", CACA_KEY_F9, CONST_CS | CONST_PERSISTENT);
     275        REGISTER_LONG_CONSTANT("CACA_KEY_F10", CACA_KEY_F10, CONST_CS | CONST_PERSISTENT);
     276        REGISTER_LONG_CONSTANT("CACA_KEY_F11", CACA_KEY_F11, CONST_CS | CONST_PERSISTENT);
     277        REGISTER_LONG_CONSTANT("CACA_KEY_F12", CACA_KEY_F12, CONST_CS | CONST_PERSISTENT);
     278        REGISTER_LONG_CONSTANT("CACA_KEY_F13", CACA_KEY_F13, CONST_CS | CONST_PERSISTENT);
     279        REGISTER_LONG_CONSTANT("CACA_KEY_F14", CACA_KEY_F14, CONST_CS | CONST_PERSISTENT);
     280        REGISTER_LONG_CONSTANT("CACA_KEY_F15", CACA_KEY_F15, CONST_CS | CONST_PERSISTENT);
     281
    186282        return SUCCESS;
    187283}
    188284
     285//----------SOME USEFULL MACROS---------------//
     286
     287#define FETCH_CANVAS(canvas) \
     288        zval *_zval; \
     289        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { \
     290                RETURN_FALSE; \
     291        } \
     292        ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas);
     293
     294
    189295//-------CACA'S FUNCTIONS----------------//
    190296
     297PHP_FUNCTION(caca_create_canvas) {
     298}
     299
    191300PHP_FUNCTION(caca_manage_canvas) {
    192301}
     
    204313}
    205314
    206 PHP_FUNCTION(caca_free_canvas) {
     315PHP_FUNCTION(caca_get_canvas_chars) {
     316}
     317
     318PHP_FUNCTION(caca_get_canvas_attrs) {
    207319}
    208320
     
    218330
    219331PHP_FUNCTION(caca_get_cursor_x) {
     332        caca_canvas_t *canvas;
     333        FETCH_CANVAS(canvas);
     334        RETURN_LONG(caca_get_cursor_x(canvas));
    220335}
    221336
    222337PHP_FUNCTION(caca_get_cursor_y) {
     338        caca_canvas_t *canvas;
     339        FETCH_CANVAS(canvas);
     340        RETURN_LONG(caca_get_cursor_y(canvas));
    223341}
    224342
     
    226344}
    227345
     346PHP_FUNCTION(caca_get_char) {
     347}
     348
    228349PHP_FUNCTION(caca_put_str) {
    229350}
     
    233354
    234355PHP_FUNCTION(caca_clear_canvas) {
     356        caca_canvas_t *canvas;
     357        FETCH_CANVAS(canvas);
     358        RETURN_BOOL(caca_clear_canvas(canvas) == 0);
    235359}
    236360
     
    239363
    240364PHP_FUNCTION(caca_get_canvas_handle_x) {
     365        caca_canvas_t *canvas;
     366        FETCH_CANVAS(canvas);
     367        RETURN_LONG(caca_get_canvas_handle_x(canvas));
    241368}
    242369
    243370PHP_FUNCTION(caca_get_canvas_handle_y) {
     371        caca_canvas_t *canvas;
     372        FETCH_CANVAS(canvas);
     373        RETURN_LONG(caca_get_canvas_handle_y(canvas));
    244374}
    245375
     
    251381
    252382PHP_FUNCTION(caca_invert) {
     383        caca_canvas_t *canvas;
     384        FETCH_CANVAS(canvas);
     385        RETURN_BOOL(caca_invert(canvas) == 0);
    253386}
    254387
    255388PHP_FUNCTION(caca_flip) {
     389        caca_canvas_t *canvas;
     390        FETCH_CANVAS(canvas);
     391        RETURN_BOOL(caca_flip(canvas) == 0);
    256392}
    257393
    258394PHP_FUNCTION(caca_flop) {
     395        caca_canvas_t *canvas;
     396        FETCH_CANVAS(canvas);
     397        RETURN_BOOL(caca_flop(canvas) == 0);
    259398}
    260399
    261400PHP_FUNCTION(caca_rotate_180) {
     401        caca_canvas_t *canvas;
     402        FETCH_CANVAS(canvas);
     403        RETURN_BOOL(caca_rotate_180(canvas) == 0);
    262404}
    263405
    264406PHP_FUNCTION(caca_rotate_left) {
     407        caca_canvas_t *canvas;
     408        FETCH_CANVAS(canvas);
     409        RETURN_BOOL(caca_rotate_left(canvas) == 0);
    265410}
    266411
    267412PHP_FUNCTION(caca_rotate_right) {
     413        caca_canvas_t *canvas;
     414        FETCH_CANVAS(canvas);
     415        RETURN_BOOL(caca_rotate_right(canvas) == 0);
    268416}
    269417
    270418PHP_FUNCTION(caca_stretch_left) {
     419        caca_canvas_t *canvas;
     420        FETCH_CANVAS(canvas);
     421        RETURN_BOOL(caca_stretch_left(canvas) == 0);
    271422}
    272423
    273424PHP_FUNCTION(caca_stretch_right) {
     425        caca_canvas_t *canvas;
     426        FETCH_CANVAS(canvas);
     427        RETURN_BOOL(caca_stretch_right(canvas) == 0);
     428}
     429
     430PHP_FUNCTION(caca_get_attr) {
    274431}
    275432
     
    418575}
    419576
    420 PHP_FUNCTION(caca_free_dither) {
    421 }
    422 
    423577PHP_FUNCTION(caca_get_font_list) {
    424578}
     
    433587}
    434588
    435 PHP_FUNCTION(caca_free_font) {
    436 }
    437 
    438589PHP_FUNCTION(caca_canvas_set_figfont) {
    439590}
     
    472623}
    473624
    474 PHP_FUNCTION(caca_free_display) {
    475 }
    476 
    477625PHP_FUNCTION(caca_refresh_display) {
    478626}
  • libcaca/trunk/caca-php/php_caca.h

    r3089 r3091  
    1616#include <caca.h>
    1717
    18 
    1918#define PHP_CACA_VERSION "0.0"
    2019#define PHP_CACA_EXTNAME "caca"
     20
     21#define PHP_CACA_CANVAS_RES_NAME "caca_canvas"
     22#define PHP_CACA_DITHER_RES_NAME "caca_dither"
     23#define PHP_CACA_FONT_RES_NAME "caca_font"
     24#define PHP_CACA_FILE_RES_NAME "caca_file"
     25#define PHP_CACA_DISPLAY_RES_NAME "caca_display"
     26#define PHP_CACA_EVENT_RES_NAME "caca_event"
     27
     28int le_caca_canvas;
     29int le_caca_dither;
     30int le_caca_font;
     31int le_caca_file;
     32int le_caca_display;
     33int le_caca_event;
    2134
    2235PHP_MINIT_FUNCTION(caca);
    2336PHP_MINFO_FUNCTION(caca);
    2437
     38PHP_FUNCTION(caca_create_canvas);
    2539PHP_FUNCTION(caca_manage_canvas);
    2640PHP_FUNCTION(caca_unmanage_canvas);
     
    2842PHP_FUNCTION(caca_get_canvas_width);
    2943PHP_FUNCTION(caca_get_canvas_height);
    30 PHP_FUNCTION(caca_free_canvas);
     44PHP_FUNCTION(caca_get_canvas_chars);
     45PHP_FUNCTION(caca_get_canvas_attrs);
    3146PHP_FUNCTION(caca_rand);
    3247PHP_FUNCTION(caca_get_version);
     
    3550PHP_FUNCTION(caca_get_cursor_y);
    3651PHP_FUNCTION(caca_put_char);
     52PHP_FUNCTION(caca_get_char);
    3753PHP_FUNCTION(caca_put_str);
    3854PHP_FUNCTION(caca_printf);
     
    5167PHP_FUNCTION(caca_stretch_left);
    5268PHP_FUNCTION(caca_stretch_right);
     69PHP_FUNCTION(caca_get_attr);
    5370PHP_FUNCTION(caca_set_attr);
    5471PHP_FUNCTION(caca_put_attr);
     
    99116PHP_FUNCTION(caca_get_dither_algorithm);
    100117PHP_FUNCTION(caca_dither_bitmap);
    101 PHP_FUNCTION(caca_free_dither);
    102118PHP_FUNCTION(caca_get_font_list);
    103119PHP_FUNCTION(caca_get_font_width);
    104120PHP_FUNCTION(caca_get_font_height);
    105121PHP_FUNCTION(caca_render_canvas);
    106 PHP_FUNCTION(caca_free_font);
    107122PHP_FUNCTION(caca_canvas_set_figfont);
    108123PHP_FUNCTION(caca_put_figchar);
     
    117132PHP_FUNCTION(caca_get_display_driver);
    118133PHP_FUNCTION(caca_set_display_driver);
    119 PHP_FUNCTION(caca_free_display);
    120134PHP_FUNCTION(caca_refresh_display);
    121135PHP_FUNCTION(caca_set_display_time);
Note: See TracChangeset for help on using the changeset viewer.