Changeset 3582


Ignore:
Timestamp:
07/26/09 21:17:28 (4 years ago)
Author:
sam
Message:

Coding style: remove tabs and trailing spaces.

Location:
libcaca/trunk
Files:
14 edited

Legend:

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

    r3511 r3582  
    2323 
    2424static function_entry caca_functions[] = { 
    25         PHP_FE(caca_create_canvas, NULL) 
    26         PHP_FE(caca_set_canvas_size, NULL) 
    27         PHP_FE(caca_get_canvas_width, NULL) 
    28         PHP_FE(caca_get_canvas_height, NULL) 
    29         PHP_FE(caca_get_canvas_chars, NULL) 
    30         PHP_FE(caca_get_canvas_attrs, NULL) 
    31         PHP_FE(caca_rand, NULL) 
    32         PHP_FE(caca_get_version, NULL) 
    33         PHP_FE(caca_gotoxy, NULL) 
    34         PHP_FE(caca_get_cursor_x, NULL) 
    35         PHP_FE(caca_get_cursor_y, NULL) 
    36         PHP_FE(caca_put_char, NULL) 
    37         PHP_FE(caca_get_char, NULL) 
    38         PHP_FE(caca_put_str, NULL) 
    39         PHP_FE(caca_clear_canvas, NULL) 
    40         PHP_FE(caca_set_canvas_handle, NULL) 
    41         PHP_FE(caca_get_canvas_handle_x, NULL) 
    42         PHP_FE(caca_get_canvas_handle_y, NULL) 
    43         PHP_FE(caca_blit, NULL) 
    44         PHP_FE(caca_set_canvas_boundaries, NULL) 
    45         PHP_FE(caca_invert, NULL) 
    46         PHP_FE(caca_flip, NULL) 
    47         PHP_FE(caca_flop, NULL) 
    48         PHP_FE(caca_rotate_180, NULL) 
    49         PHP_FE(caca_rotate_left, NULL) 
    50         PHP_FE(caca_rotate_right, NULL) 
    51         PHP_FE(caca_stretch_left, NULL) 
    52         PHP_FE(caca_stretch_right, NULL) 
    53         PHP_FE(caca_get_attr, NULL) 
    54         PHP_FE(caca_set_attr, NULL) 
    55         PHP_FE(caca_put_attr, NULL) 
    56         PHP_FE(caca_set_color_ansi, NULL) 
    57         PHP_FE(caca_set_color_argb, NULL) 
    58         PHP_FE(caca_attr_to_ansi, NULL) 
    59         PHP_FE(caca_attr_to_ansi_fg, NULL) 
    60         PHP_FE(caca_attr_to_ansi_bg, NULL) 
    61         PHP_FE(caca_attr_to_rgb12_fg, NULL) 
    62         PHP_FE(caca_attr_to_rgb12_bg, NULL) 
    63         PHP_FE(caca_attr_to_argb64, NULL) 
    64         PHP_FE(caca_utf8_to_utf32, NULL) 
    65         PHP_FE(caca_utf32_to_utf8, NULL) 
    66         PHP_FE(caca_utf32_to_cp437, NULL) 
    67         PHP_FE(caca_cp437_to_utf32, NULL) 
    68         PHP_FE(caca_utf32_to_ascii, NULL) 
    69         PHP_FE(caca_utf32_is_fullwidth, NULL) 
    70         PHP_FE(caca_draw_line, NULL) 
    71         PHP_FE(caca_draw_polyline, NULL) 
    72         PHP_FE(caca_draw_thin_line, NULL) 
    73         PHP_FE(caca_draw_thin_polyline, NULL) 
    74         PHP_FE(caca_draw_circle, NULL) 
    75         PHP_FE(caca_draw_ellipse, NULL) 
    76         PHP_FE(caca_draw_thin_ellipse, NULL) 
    77         PHP_FE(caca_fill_ellipse, NULL) 
    78         PHP_FE(caca_draw_box, NULL) 
    79         PHP_FE(caca_draw_thin_box, NULL) 
    80         PHP_FE(caca_draw_cp437_box, NULL) 
    81         PHP_FE(caca_fill_box, NULL) 
    82         PHP_FE(caca_draw_triangle, NULL) 
    83         PHP_FE(caca_draw_thin_triangle, NULL) 
    84         PHP_FE(caca_fill_triangle, NULL) 
    85         PHP_FE(caca_get_frame_count, NULL) 
    86         PHP_FE(caca_set_frame, NULL) 
    87         PHP_FE(caca_set_frame_name, NULL) 
    88         PHP_FE(caca_create_frame, NULL) 
    89         PHP_FE(caca_free_frame, NULL) 
    90         PHP_FE(caca_create_dither, NULL) 
    91         PHP_FE(caca_set_dither_palette, NULL) 
    92         PHP_FE(caca_set_dither_brightness, NULL) 
    93         PHP_FE(caca_get_dither_brightness, NULL) 
    94         PHP_FE(caca_set_dither_gamma, NULL) 
    95         PHP_FE(caca_get_dither_gamma, NULL) 
    96         PHP_FE(caca_set_dither_contrast, NULL) 
    97         PHP_FE(caca_get_dither_contrast, NULL) 
    98         PHP_FE(caca_set_dither_antialias, NULL) 
    99         PHP_FE(caca_get_dither_antialias_list, NULL) 
    100         PHP_FE(caca_get_dither_antialias, NULL) 
    101         PHP_FE(caca_set_dither_color, NULL) 
    102         PHP_FE(caca_get_dither_color_list, NULL) 
    103         PHP_FE(caca_get_dither_color, NULL) 
    104         PHP_FE(caca_set_dither_charset, NULL) 
    105         PHP_FE(caca_get_dither_charset_list, NULL) 
    106         PHP_FE(caca_get_dither_charset, NULL) 
    107         PHP_FE(caca_set_dither_algorithm, NULL) 
    108         PHP_FE(caca_get_dither_algorithm_list, NULL) 
    109         PHP_FE(caca_get_dither_algorithm, NULL) 
    110         PHP_FE(caca_dither_bitmap, NULL) 
    111         PHP_FE(caca_load_font, NULL) 
    112         PHP_FE(caca_load_builtin_font, NULL) 
    113         PHP_FE(caca_get_font_list, NULL) 
    114         PHP_FE(caca_get_font_width, NULL) 
    115         PHP_FE(caca_get_font_height, NULL) 
    116         PHP_FE(caca_get_font_blocks, NULL) 
    117         PHP_FE(caca_render_canvas, NULL) 
    118         PHP_FE(caca_canvas_set_figfont, NULL) 
    119         PHP_FE(caca_put_figchar, NULL) 
    120         PHP_FE(caca_flush_figlet, NULL) 
    121         PHP_FE(caca_file_open, NULL) 
    122         PHP_FE(caca_file_close, NULL) 
    123         PHP_FE(caca_file_tell, NULL) 
    124         PHP_FE(caca_file_read, NULL) 
    125         PHP_FE(caca_file_write, NULL) 
    126         PHP_FE(caca_file_gets, NULL) 
    127         PHP_FE(caca_file_eof, NULL) 
    128         PHP_FE(caca_import_string, NULL) 
    129         PHP_FE(caca_import_file, NULL) 
    130         PHP_FE(caca_get_import_list, NULL) 
    131         PHP_FE(caca_export_string, NULL) 
    132         PHP_FE(caca_get_export_list, NULL) 
    133         PHP_FE(caca_create_display, NULL) 
    134         PHP_FE(caca_create_display_with_driver, NULL) 
    135         PHP_FE(caca_get_display_driver_list, NULL) 
    136         PHP_FE(caca_get_display_driver, NULL) 
    137         PHP_FE(caca_set_display_driver, NULL) 
    138         PHP_FE(caca_get_canvas, NULL) 
    139         PHP_FE(caca_refresh_display, NULL) 
    140         PHP_FE(caca_set_display_time, NULL) 
    141         PHP_FE(caca_get_display_time, NULL) 
    142         PHP_FE(caca_get_display_width, NULL) 
    143         PHP_FE(caca_get_display_height, NULL) 
    144         PHP_FE(caca_set_display_title, NULL) 
    145         PHP_FE(caca_set_mouse, NULL) 
    146         PHP_FE(caca_set_cursor, NULL) 
    147         PHP_FE(caca_get_event, NULL) 
    148         PHP_FE(caca_get_mouse_x, NULL) 
    149         PHP_FE(caca_get_mouse_y, NULL) 
    150         PHP_FE(caca_get_event_type, NULL) 
    151         PHP_FE(caca_get_event_key_ch, NULL) 
    152         PHP_FE(caca_get_event_mouse_button, NULL) 
    153         PHP_FE(caca_get_event_mouse_x, NULL) 
    154         PHP_FE(caca_get_event_mouse_y, NULL) 
    155         PHP_FE(caca_get_event_resize_width, NULL) 
    156         PHP_FE(caca_get_event_resize_height, NULL) 
    157  
    158         {NULL, NULL, NULL} 
     25    PHP_FE(caca_create_canvas, NULL) 
     26    PHP_FE(caca_set_canvas_size, NULL) 
     27    PHP_FE(caca_get_canvas_width, NULL) 
     28    PHP_FE(caca_get_canvas_height, NULL) 
     29    PHP_FE(caca_get_canvas_chars, NULL) 
     30    PHP_FE(caca_get_canvas_attrs, NULL) 
     31    PHP_FE(caca_rand, NULL) 
     32    PHP_FE(caca_get_version, NULL) 
     33    PHP_FE(caca_gotoxy, NULL) 
     34    PHP_FE(caca_get_cursor_x, NULL) 
     35    PHP_FE(caca_get_cursor_y, NULL) 
     36    PHP_FE(caca_put_char, NULL) 
     37    PHP_FE(caca_get_char, NULL) 
     38    PHP_FE(caca_put_str, NULL) 
     39    PHP_FE(caca_clear_canvas, NULL) 
     40    PHP_FE(caca_set_canvas_handle, NULL) 
     41    PHP_FE(caca_get_canvas_handle_x, NULL) 
     42    PHP_FE(caca_get_canvas_handle_y, NULL) 
     43    PHP_FE(caca_blit, NULL) 
     44    PHP_FE(caca_set_canvas_boundaries, NULL) 
     45    PHP_FE(caca_invert, NULL) 
     46    PHP_FE(caca_flip, NULL) 
     47    PHP_FE(caca_flop, NULL) 
     48    PHP_FE(caca_rotate_180, NULL) 
     49    PHP_FE(caca_rotate_left, NULL) 
     50    PHP_FE(caca_rotate_right, NULL) 
     51    PHP_FE(caca_stretch_left, NULL) 
     52    PHP_FE(caca_stretch_right, NULL) 
     53    PHP_FE(caca_get_attr, NULL) 
     54    PHP_FE(caca_set_attr, NULL) 
     55    PHP_FE(caca_put_attr, NULL) 
     56    PHP_FE(caca_set_color_ansi, NULL) 
     57    PHP_FE(caca_set_color_argb, NULL) 
     58    PHP_FE(caca_attr_to_ansi, NULL) 
     59    PHP_FE(caca_attr_to_ansi_fg, NULL) 
     60    PHP_FE(caca_attr_to_ansi_bg, NULL) 
     61    PHP_FE(caca_attr_to_rgb12_fg, NULL) 
     62    PHP_FE(caca_attr_to_rgb12_bg, NULL) 
     63    PHP_FE(caca_attr_to_argb64, NULL) 
     64    PHP_FE(caca_utf8_to_utf32, NULL) 
     65    PHP_FE(caca_utf32_to_utf8, NULL) 
     66    PHP_FE(caca_utf32_to_cp437, NULL) 
     67    PHP_FE(caca_cp437_to_utf32, NULL) 
     68    PHP_FE(caca_utf32_to_ascii, NULL) 
     69    PHP_FE(caca_utf32_is_fullwidth, NULL) 
     70    PHP_FE(caca_draw_line, NULL) 
     71    PHP_FE(caca_draw_polyline, NULL) 
     72    PHP_FE(caca_draw_thin_line, NULL) 
     73    PHP_FE(caca_draw_thin_polyline, NULL) 
     74    PHP_FE(caca_draw_circle, NULL) 
     75    PHP_FE(caca_draw_ellipse, NULL) 
     76    PHP_FE(caca_draw_thin_ellipse, NULL) 
     77    PHP_FE(caca_fill_ellipse, NULL) 
     78    PHP_FE(caca_draw_box, NULL) 
     79    PHP_FE(caca_draw_thin_box, NULL) 
     80    PHP_FE(caca_draw_cp437_box, NULL) 
     81    PHP_FE(caca_fill_box, NULL) 
     82    PHP_FE(caca_draw_triangle, NULL) 
     83    PHP_FE(caca_draw_thin_triangle, NULL) 
     84    PHP_FE(caca_fill_triangle, NULL) 
     85    PHP_FE(caca_get_frame_count, NULL) 
     86    PHP_FE(caca_set_frame, NULL) 
     87    PHP_FE(caca_set_frame_name, NULL) 
     88    PHP_FE(caca_create_frame, NULL) 
     89    PHP_FE(caca_free_frame, NULL) 
     90    PHP_FE(caca_create_dither, NULL) 
     91    PHP_FE(caca_set_dither_palette, NULL) 
     92    PHP_FE(caca_set_dither_brightness, NULL) 
     93    PHP_FE(caca_get_dither_brightness, NULL) 
     94    PHP_FE(caca_set_dither_gamma, NULL) 
     95    PHP_FE(caca_get_dither_gamma, NULL) 
     96    PHP_FE(caca_set_dither_contrast, NULL) 
     97    PHP_FE(caca_get_dither_contrast, NULL) 
     98    PHP_FE(caca_set_dither_antialias, NULL) 
     99    PHP_FE(caca_get_dither_antialias_list, NULL) 
     100    PHP_FE(caca_get_dither_antialias, NULL) 
     101    PHP_FE(caca_set_dither_color, NULL) 
     102    PHP_FE(caca_get_dither_color_list, NULL) 
     103    PHP_FE(caca_get_dither_color, NULL) 
     104    PHP_FE(caca_set_dither_charset, NULL) 
     105    PHP_FE(caca_get_dither_charset_list, NULL) 
     106    PHP_FE(caca_get_dither_charset, NULL) 
     107    PHP_FE(caca_set_dither_algorithm, NULL) 
     108    PHP_FE(caca_get_dither_algorithm_list, NULL) 
     109    PHP_FE(caca_get_dither_algorithm, NULL) 
     110    PHP_FE(caca_dither_bitmap, NULL) 
     111    PHP_FE(caca_load_font, NULL) 
     112    PHP_FE(caca_load_builtin_font, NULL) 
     113    PHP_FE(caca_get_font_list, NULL) 
     114    PHP_FE(caca_get_font_width, NULL) 
     115    PHP_FE(caca_get_font_height, NULL) 
     116    PHP_FE(caca_get_font_blocks, NULL) 
     117    PHP_FE(caca_render_canvas, NULL) 
     118    PHP_FE(caca_canvas_set_figfont, NULL) 
     119    PHP_FE(caca_put_figchar, NULL) 
     120    PHP_FE(caca_flush_figlet, NULL) 
     121    PHP_FE(caca_file_open, NULL) 
     122    PHP_FE(caca_file_close, NULL) 
     123    PHP_FE(caca_file_tell, NULL) 
     124    PHP_FE(caca_file_read, NULL) 
     125    PHP_FE(caca_file_write, NULL) 
     126    PHP_FE(caca_file_gets, NULL) 
     127    PHP_FE(caca_file_eof, NULL) 
     128    PHP_FE(caca_import_string, NULL) 
     129    PHP_FE(caca_import_file, NULL) 
     130    PHP_FE(caca_get_import_list, NULL) 
     131    PHP_FE(caca_export_string, NULL) 
     132    PHP_FE(caca_get_export_list, NULL) 
     133    PHP_FE(caca_create_display, NULL) 
     134    PHP_FE(caca_create_display_with_driver, NULL) 
     135    PHP_FE(caca_get_display_driver_list, NULL) 
     136    PHP_FE(caca_get_display_driver, NULL) 
     137    PHP_FE(caca_set_display_driver, NULL) 
     138    PHP_FE(caca_get_canvas, NULL) 
     139    PHP_FE(caca_refresh_display, NULL) 
     140    PHP_FE(caca_set_display_time, NULL) 
     141    PHP_FE(caca_get_display_time, NULL) 
     142    PHP_FE(caca_get_display_width, NULL) 
     143    PHP_FE(caca_get_display_height, NULL) 
     144    PHP_FE(caca_set_display_title, NULL) 
     145    PHP_FE(caca_set_mouse, NULL) 
     146    PHP_FE(caca_set_cursor, NULL) 
     147    PHP_FE(caca_get_event, NULL) 
     148    PHP_FE(caca_get_mouse_x, NULL) 
     149    PHP_FE(caca_get_mouse_y, NULL) 
     150    PHP_FE(caca_get_event_type, NULL) 
     151    PHP_FE(caca_get_event_key_ch, NULL) 
     152    PHP_FE(caca_get_event_mouse_button, NULL) 
     153    PHP_FE(caca_get_event_mouse_x, NULL) 
     154    PHP_FE(caca_get_event_mouse_y, NULL) 
     155    PHP_FE(caca_get_event_resize_width, NULL) 
     156    PHP_FE(caca_get_event_resize_height, NULL) 
     157 
     158    {NULL, NULL, NULL} 
    159159}; 
    160160 
    161161zend_module_entry caca_module_entry = { 
    162162#if ZEND_MODULE_API_NO >= 20010901 
    163         STANDARD_MODULE_HEADER, 
     163    STANDARD_MODULE_HEADER, 
    164164#endif 
    165         PHP_CACA_EXTNAME, 
    166         caca_functions, 
    167         PHP_MINIT(caca), 
    168         NULL, 
    169         NULL, 
    170         NULL, 
    171         PHP_MINFO(caca), 
     165    PHP_CACA_EXTNAME, 
     166    caca_functions, 
     167    PHP_MINIT(caca), 
     168    NULL, 
     169    NULL, 
     170    NULL, 
     171    PHP_MINFO(caca), 
    172172#if ZEND_MODULE_API_NO >= 20010901 
    173         PHP_CACA_VERSION, 
     173    PHP_CACA_VERSION, 
    174174#endif 
    175         STANDARD_MODULE_PROPERTIES 
     175    STANDARD_MODULE_PROPERTIES 
    176176}; 
    177177 
     
    181181 
    182182PHP_MINFO_FUNCTION(caca) { 
    183         php_info_print_table_start(); 
    184         php_info_print_table_row(2, "Caca library version", caca_get_version()); 
     183    php_info_print_table_start(); 
     184    php_info_print_table_row(2, "Caca library version", caca_get_version()); 
    185185#ifdef HAVE_GD 
    186         php_info_print_table_row(2, "Gd support", "enabled"); 
    187         php_info_print_table_row(2, "Gd API version", GD_VERSION_STRING); 
     186    php_info_print_table_row(2, "Gd support", "enabled"); 
     187    php_info_print_table_row(2, "Gd API version", GD_VERSION_STRING); 
    188188#else 
    189         php_info_print_table_row(2, "Compiled with gd support", "disabled"); 
     189    php_info_print_table_row(2, "Compiled with gd support", "disabled"); 
    190190#endif 
    191         php_info_print_table_end(); 
     191    php_info_print_table_end(); 
    192192} 
    193193 
     
    195195 
    196196static void php_caca_canvas_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC) { 
    197         caca_free_canvas(rsrc->ptr); 
     197    caca_free_canvas(rsrc->ptr); 
    198198} 
    199199 
    200200static void php_caca_dither_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC) { 
    201         caca_free_dither(rsrc->ptr); 
     201    caca_free_dither(rsrc->ptr); 
    202202} 
    203203 
    204204static void php_caca_font_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC) { 
    205         caca_free_font(rsrc->ptr); 
     205    caca_free_font(rsrc->ptr); 
    206206} 
    207207 
    208208static void php_caca_file_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC) { 
    209         caca_file_close(rsrc->ptr); 
     209    caca_file_close(rsrc->ptr); 
    210210} 
    211211 
    212212static void php_caca_display_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC) { 
    213         caca_free_display(rsrc->ptr); 
     213    caca_free_display(rsrc->ptr); 
    214214} 
    215215 
    216216static void php_caca_event_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC) { 
    217         efree((caca_event_t *) rsrc->ptr); 
     217    efree((caca_event_t *) rsrc->ptr); 
    218218} 
    219219 
     
    222222PHP_MINIT_FUNCTION(caca) { 
    223223 
    224         le_caca_canvas = zend_register_list_destructors_ex(php_caca_canvas_dtor, NULL, PHP_CACA_CANVAS_RES_NAME, module_number); 
    225         le_caca_dither = zend_register_list_destructors_ex(php_caca_dither_dtor, NULL, PHP_CACA_DITHER_RES_NAME, module_number); 
    226         le_caca_font = zend_register_list_destructors_ex(php_caca_font_dtor, NULL, PHP_CACA_FONT_RES_NAME, module_number); 
    227         le_caca_file = zend_register_list_destructors_ex(php_caca_file_dtor, NULL, PHP_CACA_FILE_RES_NAME, module_number); 
    228         le_caca_display = zend_register_list_destructors_ex(php_caca_display_dtor, NULL, PHP_CACA_DISPLAY_RES_NAME, module_number); 
    229         le_caca_event = zend_register_list_destructors_ex(php_caca_event_dtor, NULL, PHP_CACA_EVENT_RES_NAME, module_number); 
    230  
    231         REGISTER_LONG_CONSTANT("CACA_BLACK", CACA_BLACK, CONST_CS | CONST_PERSISTENT); 
    232         REGISTER_LONG_CONSTANT("CACA_BLUE", CACA_BLUE, CONST_CS | CONST_PERSISTENT); 
    233         REGISTER_LONG_CONSTANT("CACA_GREEN", CACA_GREEN, CONST_CS | CONST_PERSISTENT); 
    234         REGISTER_LONG_CONSTANT("CACA_CYAN", CACA_CYAN, CONST_CS | CONST_PERSISTENT); 
    235         REGISTER_LONG_CONSTANT("CACA_RED", CACA_RED, CONST_CS | CONST_PERSISTENT); 
    236         REGISTER_LONG_CONSTANT("CACA_MAGENTA", CACA_MAGENTA, CONST_CS | CONST_PERSISTENT); 
    237         REGISTER_LONG_CONSTANT("CACA_BROWN", CACA_BROWN, CONST_CS | CONST_PERSISTENT); 
    238         REGISTER_LONG_CONSTANT("CACA_LIGHTGRAY", CACA_LIGHTGRAY, CONST_CS | CONST_PERSISTENT); 
    239         REGISTER_LONG_CONSTANT("CACA_DARKGRAY", CACA_DARKGRAY, CONST_CS | CONST_PERSISTENT); 
    240         REGISTER_LONG_CONSTANT("CACA_LIGHTBLUE", CACA_LIGHTBLUE, CONST_CS | CONST_PERSISTENT); 
    241         REGISTER_LONG_CONSTANT("CACA_LIGHTGREEN", CACA_LIGHTGREEN, CONST_CS | CONST_PERSISTENT); 
    242         REGISTER_LONG_CONSTANT("CACA_LIGHTCYAN", CACA_LIGHTCYAN, CONST_CS | CONST_PERSISTENT); 
    243         REGISTER_LONG_CONSTANT("CACA_LIGHTRED", CACA_LIGHTRED, CONST_CS | CONST_PERSISTENT); 
    244         REGISTER_LONG_CONSTANT("CACA_LIGHTMAGENTA", CACA_LIGHTMAGENTA, CONST_CS | CONST_PERSISTENT); 
    245         REGISTER_LONG_CONSTANT("CACA_YELLOW", CACA_YELLOW, CONST_CS | CONST_PERSISTENT); 
    246         REGISTER_LONG_CONSTANT("CACA_WHITE", CACA_WHITE, CONST_CS | CONST_PERSISTENT); 
    247         REGISTER_LONG_CONSTANT("CACA_DEFAULT", CACA_DEFAULT, CONST_CS | CONST_PERSISTENT); 
    248         REGISTER_LONG_CONSTANT("CACA_TRANSPARENT", CACA_TRANSPARENT, CONST_CS | CONST_PERSISTENT); 
    249         REGISTER_LONG_CONSTANT("CACA_BOLD", CACA_BOLD, CONST_CS | CONST_PERSISTENT); 
    250         REGISTER_LONG_CONSTANT("CACA_ITALICS", CACA_ITALICS, CONST_CS | CONST_PERSISTENT); 
    251         REGISTER_LONG_CONSTANT("CACA_UNDERLINE", CACA_UNDERLINE, CONST_CS | CONST_PERSISTENT); 
    252         REGISTER_LONG_CONSTANT("CACA_BLINK", CACA_BLINK, CONST_CS | CONST_PERSISTENT); 
    253  
    254         REGISTER_LONG_CONSTANT("CACA_EVENT_NONE", CACA_EVENT_NONE, CONST_CS | CONST_PERSISTENT); 
    255         REGISTER_LONG_CONSTANT("CACA_EVENT_KEY_PRESS", CACA_EVENT_KEY_PRESS, CONST_CS | CONST_PERSISTENT); 
    256         REGISTER_LONG_CONSTANT("CACA_EVENT_KEY_RELEASE", CACA_EVENT_KEY_RELEASE, CONST_CS | CONST_PERSISTENT); 
    257         REGISTER_LONG_CONSTANT("CACA_EVENT_MOUSE_PRESS", CACA_EVENT_MOUSE_PRESS, CONST_CS | CONST_PERSISTENT); 
    258         REGISTER_LONG_CONSTANT("CACA_EVENT_MOUSE_RELEASE", CACA_EVENT_MOUSE_RELEASE, CONST_CS | CONST_PERSISTENT); 
    259         REGISTER_LONG_CONSTANT("CACA_EVENT_MOUSE_MOTION", CACA_EVENT_MOUSE_MOTION, CONST_CS | CONST_PERSISTENT); 
    260         REGISTER_LONG_CONSTANT("CACA_EVENT_RESIZE", CACA_EVENT_RESIZE, CONST_CS | CONST_PERSISTENT); 
    261         REGISTER_LONG_CONSTANT("CACA_EVENT_QUIT", CACA_EVENT_QUIT, CONST_CS | CONST_PERSISTENT); 
    262         REGISTER_LONG_CONSTANT("CACA_EVENT_ANY", CACA_EVENT_ANY, CONST_CS | CONST_PERSISTENT); 
    263  
    264         REGISTER_LONG_CONSTANT("CACA_KEY_UNKNOWN", CACA_KEY_UNKNOWN, CONST_CS | CONST_PERSISTENT); 
    265         REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_A", CACA_KEY_CTRL_A, CONST_CS | CONST_PERSISTENT); 
    266         REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_B", CACA_KEY_CTRL_B, CONST_CS | CONST_PERSISTENT); 
    267         REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_C", CACA_KEY_CTRL_C, CONST_CS | CONST_PERSISTENT); 
    268         REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_D", CACA_KEY_CTRL_D, CONST_CS | CONST_PERSISTENT); 
    269         REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_E", CACA_KEY_CTRL_E, CONST_CS | CONST_PERSISTENT); 
    270         REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_F", CACA_KEY_CTRL_F, CONST_CS | CONST_PERSISTENT); 
    271         REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_G", CACA_KEY_CTRL_G, CONST_CS | CONST_PERSISTENT); 
    272         REGISTER_LONG_CONSTANT("CACA_KEY_BACKSPACE", CACA_KEY_BACKSPACE, CONST_CS | CONST_PERSISTENT); 
    273         REGISTER_LONG_CONSTANT("CACA_KEY_TAB", CACA_KEY_TAB, CONST_CS | CONST_PERSISTENT); 
    274         REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_J", CACA_KEY_CTRL_J, CONST_CS | CONST_PERSISTENT); 
    275         REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_K", CACA_KEY_CTRL_K, CONST_CS | CONST_PERSISTENT); 
    276         REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_L", CACA_KEY_CTRL_L, CONST_CS | CONST_PERSISTENT); 
    277         REGISTER_LONG_CONSTANT("CACA_KEY_RETURN", CACA_KEY_RETURN, CONST_CS | CONST_PERSISTENT); 
    278         REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_N", CACA_KEY_CTRL_N, CONST_CS | CONST_PERSISTENT); 
    279         REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_O", CACA_KEY_CTRL_O, CONST_CS | CONST_PERSISTENT); 
    280         REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_P", CACA_KEY_CTRL_P, CONST_CS | CONST_PERSISTENT); 
    281         REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_Q", CACA_KEY_CTRL_Q, CONST_CS | CONST_PERSISTENT); 
    282         REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_R", CACA_KEY_CTRL_R, CONST_CS | CONST_PERSISTENT); 
    283         REGISTER_LONG_CONSTANT("CACA_KEY_PAUSE", CACA_KEY_PAUSE, CONST_CS | CONST_PERSISTENT); 
    284         REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_T", CACA_KEY_CTRL_T, CONST_CS | CONST_PERSISTENT); 
    285         REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_U", CACA_KEY_CTRL_U, CONST_CS | CONST_PERSISTENT); 
    286         REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_V", CACA_KEY_CTRL_V, CONST_CS | CONST_PERSISTENT); 
    287         REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_W", CACA_KEY_CTRL_W, CONST_CS | CONST_PERSISTENT); 
    288         REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_X", CACA_KEY_CTRL_X, CONST_CS | CONST_PERSISTENT); 
    289         REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_Y", CACA_KEY_CTRL_Y, CONST_CS | CONST_PERSISTENT); 
    290         REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_Z", CACA_KEY_CTRL_Z, CONST_CS | CONST_PERSISTENT); 
    291         REGISTER_LONG_CONSTANT("CACA_KEY_ESCAPE", CACA_KEY_ESCAPE, CONST_CS | CONST_PERSISTENT); 
    292         REGISTER_LONG_CONSTANT("CACA_KEY_DELETE", CACA_KEY_DELETE, CONST_CS | CONST_PERSISTENT); 
    293         REGISTER_LONG_CONSTANT("CACA_KEY_UP", CACA_KEY_UP, CONST_CS | CONST_PERSISTENT); 
    294         REGISTER_LONG_CONSTANT("CACA_KEY_DOWN", CACA_KEY_DOWN, CONST_CS | CONST_PERSISTENT); 
    295         REGISTER_LONG_CONSTANT("CACA_KEY_LEFT", CACA_KEY_LEFT, CONST_CS | CONST_PERSISTENT); 
    296         REGISTER_LONG_CONSTANT("CACA_KEY_RIGHT", CACA_KEY_RIGHT, CONST_CS | CONST_PERSISTENT); 
    297         REGISTER_LONG_CONSTANT("CACA_KEY_INSERT", CACA_KEY_INSERT, CONST_CS | CONST_PERSISTENT); 
    298         REGISTER_LONG_CONSTANT("CACA_KEY_HOME", CACA_KEY_HOME, CONST_CS | CONST_PERSISTENT); 
    299         REGISTER_LONG_CONSTANT("CACA_KEY_END", CACA_KEY_END, CONST_CS | CONST_PERSISTENT); 
    300         REGISTER_LONG_CONSTANT("CACA_KEY_PAGEUP", CACA_KEY_PAGEUP, CONST_CS | CONST_PERSISTENT); 
    301         REGISTER_LONG_CONSTANT("CACA_KEY_PAGEDOWN", CACA_KEY_PAGEDOWN, CONST_CS | CONST_PERSISTENT); 
    302         REGISTER_LONG_CONSTANT("CACA_KEY_F1", CACA_KEY_F1, CONST_CS | CONST_PERSISTENT); 
    303         REGISTER_LONG_CONSTANT("CACA_KEY_F2", CACA_KEY_F2, CONST_CS | CONST_PERSISTENT); 
    304         REGISTER_LONG_CONSTANT("CACA_KEY_F3", CACA_KEY_F3, CONST_CS | CONST_PERSISTENT); 
    305         REGISTER_LONG_CONSTANT("CACA_KEY_F4", CACA_KEY_F4, CONST_CS | CONST_PERSISTENT); 
    306         REGISTER_LONG_CONSTANT("CACA_KEY_F5", CACA_KEY_F5, CONST_CS | CONST_PERSISTENT); 
    307         REGISTER_LONG_CONSTANT("CACA_KEY_F6", CACA_KEY_F6, CONST_CS | CONST_PERSISTENT); 
    308         REGISTER_LONG_CONSTANT("CACA_KEY_F7", CACA_KEY_F7, CONST_CS | CONST_PERSISTENT); 
    309         REGISTER_LONG_CONSTANT("CACA_KEY_F8", CACA_KEY_F8, CONST_CS | CONST_PERSISTENT); 
    310         REGISTER_LONG_CONSTANT("CACA_KEY_F9", CACA_KEY_F9, CONST_CS | CONST_PERSISTENT); 
    311         REGISTER_LONG_CONSTANT("CACA_KEY_F10", CACA_KEY_F10, CONST_CS | CONST_PERSISTENT); 
    312         REGISTER_LONG_CONSTANT("CACA_KEY_F11", CACA_KEY_F11, CONST_CS | CONST_PERSISTENT); 
    313         REGISTER_LONG_CONSTANT("CACA_KEY_F12", CACA_KEY_F12, CONST_CS | CONST_PERSISTENT); 
    314         REGISTER_LONG_CONSTANT("CACA_KEY_F13", CACA_KEY_F13, CONST_CS | CONST_PERSISTENT); 
    315         REGISTER_LONG_CONSTANT("CACA_KEY_F14", CACA_KEY_F14, CONST_CS | CONST_PERSISTENT); 
    316         REGISTER_LONG_CONSTANT("CACA_KEY_F15", CACA_KEY_F15, CONST_CS | CONST_PERSISTENT); 
    317  
    318         return SUCCESS; 
     224    le_caca_canvas = zend_register_list_destructors_ex(php_caca_canvas_dtor, NULL, PHP_CACA_CANVAS_RES_NAME, module_number); 
     225    le_caca_dither = zend_register_list_destructors_ex(php_caca_dither_dtor, NULL, PHP_CACA_DITHER_RES_NAME, module_number); 
     226    le_caca_font = zend_register_list_destructors_ex(php_caca_font_dtor, NULL, PHP_CACA_FONT_RES_NAME, module_number); 
     227    le_caca_file = zend_register_list_destructors_ex(php_caca_file_dtor, NULL, PHP_CACA_FILE_RES_NAME, module_number); 
     228    le_caca_display = zend_register_list_destructors_ex(php_caca_display_dtor, NULL, PHP_CACA_DISPLAY_RES_NAME, module_number); 
     229    le_caca_event = zend_register_list_destructors_ex(php_caca_event_dtor, NULL, PHP_CACA_EVENT_RES_NAME, module_number); 
     230 
     231    REGISTER_LONG_CONSTANT("CACA_BLACK", CACA_BLACK, CONST_CS | CONST_PERSISTENT); 
     232    REGISTER_LONG_CONSTANT("CACA_BLUE", CACA_BLUE, CONST_CS | CONST_PERSISTENT); 
     233    REGISTER_LONG_CONSTANT("CACA_GREEN", CACA_GREEN, CONST_CS | CONST_PERSISTENT); 
     234    REGISTER_LONG_CONSTANT("CACA_CYAN", CACA_CYAN, CONST_CS | CONST_PERSISTENT); 
     235    REGISTER_LONG_CONSTANT("CACA_RED", CACA_RED, CONST_CS | CONST_PERSISTENT); 
     236    REGISTER_LONG_CONSTANT("CACA_MAGENTA", CACA_MAGENTA, CONST_CS | CONST_PERSISTENT); 
     237    REGISTER_LONG_CONSTANT("CACA_BROWN", CACA_BROWN, CONST_CS | CONST_PERSISTENT); 
     238    REGISTER_LONG_CONSTANT("CACA_LIGHTGRAY", CACA_LIGHTGRAY, CONST_CS | CONST_PERSISTENT); 
     239    REGISTER_LONG_CONSTANT("CACA_DARKGRAY", CACA_DARKGRAY, CONST_CS | CONST_PERSISTENT); 
     240    REGISTER_LONG_CONSTANT("CACA_LIGHTBLUE", CACA_LIGHTBLUE, CONST_CS | CONST_PERSISTENT); 
     241    REGISTER_LONG_CONSTANT("CACA_LIGHTGREEN", CACA_LIGHTGREEN, CONST_CS | CONST_PERSISTENT); 
     242    REGISTER_LONG_CONSTANT("CACA_LIGHTCYAN", CACA_LIGHTCYAN, CONST_CS | CONST_PERSISTENT); 
     243    REGISTER_LONG_CONSTANT("CACA_LIGHTRED", CACA_LIGHTRED, CONST_CS | CONST_PERSISTENT); 
     244    REGISTER_LONG_CONSTANT("CACA_LIGHTMAGENTA", CACA_LIGHTMAGENTA, CONST_CS | CONST_PERSISTENT); 
     245    REGISTER_LONG_CONSTANT("CACA_YELLOW", CACA_YELLOW, CONST_CS | CONST_PERSISTENT); 
     246    REGISTER_LONG_CONSTANT("CACA_WHITE", CACA_WHITE, CONST_CS | CONST_PERSISTENT); 
     247    REGISTER_LONG_CONSTANT("CACA_DEFAULT", CACA_DEFAULT, CONST_CS | CONST_PERSISTENT); 
     248    REGISTER_LONG_CONSTANT("CACA_TRANSPARENT", CACA_TRANSPARENT, CONST_CS | CONST_PERSISTENT); 
     249    REGISTER_LONG_CONSTANT("CACA_BOLD", CACA_BOLD, CONST_CS | CONST_PERSISTENT); 
     250    REGISTER_LONG_CONSTANT("CACA_ITALICS", CACA_ITALICS, CONST_CS | CONST_PERSISTENT); 
     251    REGISTER_LONG_CONSTANT("CACA_UNDERLINE", CACA_UNDERLINE, CONST_CS | CONST_PERSISTENT); 
     252    REGISTER_LONG_CONSTANT("CACA_BLINK", CACA_BLINK, CONST_CS | CONST_PERSISTENT); 
     253 
     254    REGISTER_LONG_CONSTANT("CACA_EVENT_NONE", CACA_EVENT_NONE, CONST_CS | CONST_PERSISTENT); 
     255    REGISTER_LONG_CONSTANT("CACA_EVENT_KEY_PRESS", CACA_EVENT_KEY_PRESS, CONST_CS | CONST_PERSISTENT); 
     256    REGISTER_LONG_CONSTANT("CACA_EVENT_KEY_RELEASE", CACA_EVENT_KEY_RELEASE, CONST_CS | CONST_PERSISTENT); 
     257    REGISTER_LONG_CONSTANT("CACA_EVENT_MOUSE_PRESS", CACA_EVENT_MOUSE_PRESS, CONST_CS | CONST_PERSISTENT); 
     258    REGISTER_LONG_CONSTANT("CACA_EVENT_MOUSE_RELEASE", CACA_EVENT_MOUSE_RELEASE, CONST_CS | CONST_PERSISTENT); 
     259    REGISTER_LONG_CONSTANT("CACA_EVENT_MOUSE_MOTION", CACA_EVENT_MOUSE_MOTION, CONST_CS | CONST_PERSISTENT); 
     260    REGISTER_LONG_CONSTANT("CACA_EVENT_RESIZE", CACA_EVENT_RESIZE, CONST_CS | CONST_PERSISTENT); 
     261    REGISTER_LONG_CONSTANT("CACA_EVENT_QUIT", CACA_EVENT_QUIT, CONST_CS | CONST_PERSISTENT); 
     262    REGISTER_LONG_CONSTANT("CACA_EVENT_ANY", CACA_EVENT_ANY, CONST_CS | CONST_PERSISTENT); 
     263 
     264    REGISTER_LONG_CONSTANT("CACA_KEY_UNKNOWN", CACA_KEY_UNKNOWN, CONST_CS | CONST_PERSISTENT); 
     265    REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_A", CACA_KEY_CTRL_A, CONST_CS | CONST_PERSISTENT); 
     266    REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_B", CACA_KEY_CTRL_B, CONST_CS | CONST_PERSISTENT); 
     267    REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_C", CACA_KEY_CTRL_C, CONST_CS | CONST_PERSISTENT); 
     268    REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_D", CACA_KEY_CTRL_D, CONST_CS | CONST_PERSISTENT); 
     269    REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_E", CACA_KEY_CTRL_E, CONST_CS | CONST_PERSISTENT); 
     270    REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_F", CACA_KEY_CTRL_F, CONST_CS | CONST_PERSISTENT); 
     271    REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_G", CACA_KEY_CTRL_G, CONST_CS | CONST_PERSISTENT); 
     272    REGISTER_LONG_CONSTANT("CACA_KEY_BACKSPACE", CACA_KEY_BACKSPACE, CONST_CS | CONST_PERSISTENT); 
     273    REGISTER_LONG_CONSTANT("CACA_KEY_TAB", CACA_KEY_TAB, CONST_CS | CONST_PERSISTENT); 
     274    REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_J", CACA_KEY_CTRL_J, CONST_CS | CONST_PERSISTENT); 
     275    REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_K", CACA_KEY_CTRL_K, CONST_CS | CONST_PERSISTENT); 
     276    REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_L", CACA_KEY_CTRL_L, CONST_CS | CONST_PERSISTENT); 
     277    REGISTER_LONG_CONSTANT("CACA_KEY_RETURN", CACA_KEY_RETURN, CONST_CS | CONST_PERSISTENT); 
     278    REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_N", CACA_KEY_CTRL_N, CONST_CS | CONST_PERSISTENT); 
     279    REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_O", CACA_KEY_CTRL_O, CONST_CS | CONST_PERSISTENT); 
     280    REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_P", CACA_KEY_CTRL_P, CONST_CS | CONST_PERSISTENT); 
     281    REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_Q", CACA_KEY_CTRL_Q, CONST_CS | CONST_PERSISTENT); 
     282    REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_R", CACA_KEY_CTRL_R, CONST_CS | CONST_PERSISTENT); 
     283    REGISTER_LONG_CONSTANT("CACA_KEY_PAUSE", CACA_KEY_PAUSE, CONST_CS | CONST_PERSISTENT); 
     284    REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_T", CACA_KEY_CTRL_T, CONST_CS | CONST_PERSISTENT); 
     285    REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_U", CACA_KEY_CTRL_U, CONST_CS | CONST_PERSISTENT); 
     286    REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_V", CACA_KEY_CTRL_V, CONST_CS | CONST_PERSISTENT); 
     287    REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_W", CACA_KEY_CTRL_W, CONST_CS | CONST_PERSISTENT); 
     288    REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_X", CACA_KEY_CTRL_X, CONST_CS | CONST_PERSISTENT); 
     289    REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_Y", CACA_KEY_CTRL_Y, CONST_CS | CONST_PERSISTENT); 
     290    REGISTER_LONG_CONSTANT("CACA_KEY_CTRL_Z", CACA_KEY_CTRL_Z, CONST_CS | CONST_PERSISTENT); 
     291    REGISTER_LONG_CONSTANT("CACA_KEY_ESCAPE", CACA_KEY_ESCAPE, CONST_CS | CONST_PERSISTENT); 
     292    REGISTER_LONG_CONSTANT("CACA_KEY_DELETE", CACA_KEY_DELETE, CONST_CS | CONST_PERSISTENT); 
     293    REGISTER_LONG_CONSTANT("CACA_KEY_UP", CACA_KEY_UP, CONST_CS | CONST_PERSISTENT); 
     294    REGISTER_LONG_CONSTANT("CACA_KEY_DOWN", CACA_KEY_DOWN, CONST_CS | CONST_PERSISTENT); 
     295    REGISTER_LONG_CONSTANT("CACA_KEY_LEFT", CACA_KEY_LEFT, CONST_CS | CONST_PERSISTENT); 
     296    REGISTER_LONG_CONSTANT("CACA_KEY_RIGHT", CACA_KEY_RIGHT, CONST_CS | CONST_PERSISTENT); 
     297    REGISTER_LONG_CONSTANT("CACA_KEY_INSERT", CACA_KEY_INSERT, CONST_CS | CONST_PERSISTENT); 
     298    REGISTER_LONG_CONSTANT("CACA_KEY_HOME", CACA_KEY_HOME, CONST_CS | CONST_PERSISTENT); 
     299    REGISTER_LONG_CONSTANT("CACA_KEY_END", CACA_KEY_END, CONST_CS | CONST_PERSISTENT); 
     300    REGISTER_LONG_CONSTANT("CACA_KEY_PAGEUP", CACA_KEY_PAGEUP, CONST_CS | CONST_PERSISTENT); 
     301    REGISTER_LONG_CONSTANT("CACA_KEY_PAGEDOWN", CACA_KEY_PAGEDOWN, CONST_CS | CONST_PERSISTENT); 
     302    REGISTER_LONG_CONSTANT("CACA_KEY_F1", CACA_KEY_F1, CONST_CS | CONST_PERSISTENT); 
     303    REGISTER_LONG_CONSTANT("CACA_KEY_F2", CACA_KEY_F2, CONST_CS | CONST_PERSISTENT); 
     304    REGISTER_LONG_CONSTANT("CACA_KEY_F3", CACA_KEY_F3, CONST_CS | CONST_PERSISTENT); 
     305    REGISTER_LONG_CONSTANT("CACA_KEY_F4", CACA_KEY_F4, CONST_CS | CONST_PERSISTENT); 
     306    REGISTER_LONG_CONSTANT("CACA_KEY_F5", CACA_KEY_F5, CONST_CS | CONST_PERSISTENT); 
     307    REGISTER_LONG_CONSTANT("CACA_KEY_F6", CACA_KEY_F6, CONST_CS | CONST_PERSISTENT); 
     308    REGISTER_LONG_CONSTANT("CACA_KEY_F7", CACA_KEY_F7, CONST_CS | CONST_PERSISTENT); 
     309    REGISTER_LONG_CONSTANT("CACA_KEY_F8", CACA_KEY_F8, CONST_CS | CONST_PERSISTENT); 
     310    REGISTER_LONG_CONSTANT("CACA_KEY_F9", CACA_KEY_F9, CONST_CS | CONST_PERSISTENT); 
     311    REGISTER_LONG_CONSTANT("CACA_KEY_F10", CACA_KEY_F10, CONST_CS | CONST_PERSISTENT); 
     312    REGISTER_LONG_CONSTANT("CACA_KEY_F11", CACA_KEY_F11, CONST_CS | CONST_PERSISTENT); 
     313    REGISTER_LONG_CONSTANT("CACA_KEY_F12", CACA_KEY_F12, CONST_CS | CONST_PERSISTENT); 
     314    REGISTER_LONG_CONSTANT("CACA_KEY_F13", CACA_KEY_F13, CONST_CS | CONST_PERSISTENT); 
     315    REGISTER_LONG_CONSTANT("CACA_KEY_F14", CACA_KEY_F14, CONST_CS | CONST_PERSISTENT); 
     316    REGISTER_LONG_CONSTANT("CACA_KEY_F15", CACA_KEY_F15, CONST_CS | CONST_PERSISTENT); 
     317 
     318    return SUCCESS; 
    319319} 
    320320 
     
    322322 
    323323#define FETCH_CANVAS(canvas) \ 
    324         zval *_zval; \ 
    325         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { \ 
    326                 RETURN_FALSE; \ 
    327         } \ 
    328         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     324    zval *_zval; \ 
     325    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { \ 
     326        RETURN_FALSE; \ 
     327    } \ 
     328    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    329329 
    330330#define FETCH_DISPLAY(display) \ 
    331         zval *_zval; \ 
    332         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { \ 
    333                 RETURN_FALSE; \ 
    334         } \ 
    335         ZEND_FETCH_RESOURCE(display, caca_display_t*, &_zval, -1, PHP_CACA_DISPLAY_RES_NAME, le_caca_display); 
     331    zval *_zval; \ 
     332    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { \ 
     333        RETURN_FALSE; \ 
     334    } \ 
     335    ZEND_FETCH_RESOURCE(display, caca_display_t*, &_zval, -1, PHP_CACA_DISPLAY_RES_NAME, le_caca_display); 
    336336 
    337337#define FETCH_EVENT(event) \ 
    338         zval *_zval; \ 
    339         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { \ 
    340                 RETURN_FALSE; \ 
    341         } \ 
    342         ZEND_FETCH_RESOURCE(event, caca_event_t*, &_zval, -1, PHP_CACA_EVENT_RES_NAME, le_caca_event); 
     338    zval *_zval; \ 
     339    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { \ 
     340        RETURN_FALSE; \ 
     341    } \ 
     342    ZEND_FETCH_RESOURCE(event, caca_event_t*, &_zval, -1, PHP_CACA_EVENT_RES_NAME, le_caca_event); 
    343343 
    344344#define FETCH_LONG(l) \ 
    345         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &l) == FAILURE) { \ 
    346                 RETURN_FALSE; \ 
    347         } 
     345    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &l) == FAILURE) { \ 
     346        RETURN_FALSE; \ 
     347    } 
    348348 
    349349#define RETURN_CHAR(c) \ 
    350         char *str = emalloc(2); \ 
    351         str[0] = c; \ 
    352         str[1] = '\0'; \ 
    353         RETURN_STRING(str, 0); 
     350    char *str = emalloc(2); \ 
     351    str[0] = c; \ 
     352    str[1] = '\0'; \ 
     353    RETURN_STRING(str, 0); 
    354354 
    355355#define RETURN_SUCCESS(i) \ 
    356         RETURN_BOOL((i) == 0); 
     356    RETURN_BOOL((i) == 0); 
    357357 
    358358//---------- Some usefull functions --------------------// 
     
    361361 
    362362void *fetch_external_resource(zval *_zval, char const *type_name) { 
    363         int resource_id = _zval->value.lval; 
    364         int resource_type; 
    365         void *result = zend_list_find(resource_id, &resource_type); 
    366         if (!result) 
    367                 return NULL; 
    368         char *resource_type_name = zend_rsrc_list_get_rsrc_type(resource_id); 
    369         return (strcmp(resource_type_name, type_name) == 0) ? result : NULL; 
     363    int resource_id = _zval->value.lval; 
     364    int resource_type; 
     365    void *result = zend_list_find(resource_id, &resource_type); 
     366    if (!result) 
     367        return NULL; 
     368    char *resource_type_name = zend_rsrc_list_get_rsrc_type(resource_id); 
     369    return (strcmp(resource_type_name, type_name) == 0) ? result : NULL; 
    370370} 
    371371 
     
    374374#ifdef HAVE_GD 
    375375void *gd_get_pixels(gdImage *img) { 
    376         void *result; 
    377         int i, j, pitch; 
    378         if (img->trueColor)  { 
    379                 pitch = img->sx * sizeof(int); 
    380                 result = malloc(img->sy * pitch); 
    381                 if (result) 
    382                 { 
    383                         for (i = 0; i < img->sy; i++) { 
    384                                 for (j = 0; j < img->sx; j++) { 
    385                                         int *dst = (int *) (((char *) result) + i * pitch + j * sizeof(int)); 
    386  
    387                                         *dst = (((255 - (uint8_t) ((((uint32_t) img->tpixels[i][j]) & 0x7f000000) >> 23)) << 24) 
    388                                                 | 
    389                                                 (img->tpixels[i][j] & 0x00ffffff)); 
    390                                 } 
    391                         } 
    392                 } 
    393         } 
    394         else { 
    395                 pitch = img->sx * sizeof(char); 
    396                 result = malloc(img->sy * pitch); 
    397                 for (j = 0; j < img->sy; j++) 
    398                         memcpy(result + (j * pitch), (const void *) img->pixels[j], pitch); 
    399         } 
    400         return result; 
     376    void *result; 
     377    int i, j, pitch; 
     378    if (img->trueColor)  { 
     379        pitch = img->sx * sizeof(int); 
     380        result = malloc(img->sy * pitch); 
     381        if (result) 
     382        { 
     383            for (i = 0; i < img->sy; i++) { 
     384                for (j = 0; j < img->sx; j++) { 
     385                    int *dst = (int *) (((char *) result) + i * pitch + j * sizeof(int)); 
     386 
     387                    *dst = (((255 - (uint8_t) ((((uint32_t) img->tpixels[i][j]) & 0x7f000000) >> 23)) << 24) 
     388                        | 
     389                        (img->tpixels[i][j] & 0x00ffffff)); 
     390                } 
     391            } 
     392        } 
     393    } 
     394    else { 
     395        pitch = img->sx * sizeof(char); 
     396        result = malloc(img->sy * pitch); 
     397        for (j = 0; j < img->sy; j++) 
     398            memcpy(result + (j * pitch), (const void *) img->pixels[j], pitch); 
     399    } 
     400    return result; 
    401401} 
    402402 
    403403int gd_load_palette(gdImage *img, caca_dither_t *dither) { 
    404         if (!img || img->trueColor || gdMaxColors != 256) { 
    405                 return -1; 
    406         } 
    407  
    408         uint32_t r[256], g[256], b[256], a[256]; 
    409         int i; 
    410         for (i = 0; i < 256; i++) { 
    411                 r[i] = img->red[i] << 4; 
    412                 g[i] = img->green[i] << 4; 
    413                 b[i] = img->blue[i] << 4; 
    414                 a[i] = img->alpha[i] << 4; 
    415         } 
    416  
    417         return caca_set_dither_palette(dither, &r[0], &g[0], &b[0], &a[0]); 
     404    if (!img || img->trueColor || gdMaxColors != 256) { 
     405        return -1; 
     406    } 
     407 
     408    uint32_t r[256], g[256], b[256], a[256]; 
     409    int i; 
     410    for (i = 0; i < 256; i++) { 
     411        r[i] = img->red[i] << 4; 
     412        g[i] = img->green[i] << 4; 
     413        b[i] = img->blue[i] << 4; 
     414        a[i] = img->alpha[i] << 4; 
     415    } 
     416 
     417    return caca_set_dither_palette(dither, &r[0], &g[0], &b[0], &a[0]); 
    418418} 
    419419#endif 
     
    421421 
    422422PHP_FUNCTION(caca_create_canvas) { 
    423         long width, height = 0; 
    424         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &width, &height) == FAILURE) { 
    425                 RETURN_FALSE; 
    426         } 
    427         caca_canvas_t *canvas = caca_create_canvas(width, height); 
    428         if (!canvas) { 
    429                 RETURN_FALSE; 
    430         } 
    431         ZEND_REGISTER_RESOURCE(return_value, canvas, le_caca_canvas); 
     423    long width, height = 0; 
     424    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &width, &height) == FAILURE) { 
     425        RETURN_FALSE; 
     426    } 
     427    caca_canvas_t *canvas = caca_create_canvas(width, height); 
     428    if (!canvas) { 
     429        RETURN_FALSE; 
     430    } 
     431    ZEND_REGISTER_RESOURCE(return_value, canvas, le_caca_canvas); 
    432432} 
    433433 
    434434PHP_FUNCTION(caca_set_canvas_size) { 
    435         zval *_zval; 
    436         long width, height = 0; 
    437         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &_zval, &width, &height) == FAILURE) { 
    438                 RETURN_FALSE; 
    439         } 
    440         caca_canvas_t *canvas; 
    441         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    442         RETURN_SUCCESS(caca_set_canvas_size(canvas, width, height)); 
     435    zval *_zval; 
     436    long width, height = 0; 
     437    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &_zval, &width, &height) == FAILURE) { 
     438        RETURN_FALSE; 
     439    } 
     440    caca_canvas_t *canvas; 
     441    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     442    RETURN_SUCCESS(caca_set_canvas_size(canvas, width, height)); 
    443443} 
    444444 
    445445PHP_FUNCTION(caca_get_canvas_width) { 
    446         caca_canvas_t *canvas; 
    447         FETCH_CANVAS(canvas); 
    448         RETURN_LONG(caca_get_canvas_width(canvas)); 
     446    caca_canvas_t *canvas; 
     447    FETCH_CANVAS(canvas); 
     448    RETURN_LONG(caca_get_canvas_width(canvas)); 
    449449} 
    450450 
    451451PHP_FUNCTION(caca_get_canvas_height) { 
    452         caca_canvas_t *canvas; 
    453         FETCH_CANVAS(canvas); 
    454         RETURN_LONG(caca_get_canvas_height(canvas)); 
     452    caca_canvas_t *canvas; 
     453    FETCH_CANVAS(canvas); 
     454    RETURN_LONG(caca_get_canvas_height(canvas)); 
    455455} 
    456456 
    457457PHP_FUNCTION(caca_get_canvas_chars) { 
    458         caca_canvas_t *canvas; 
    459         FETCH_CANVAS(canvas); 
    460         RETURN_STRING((char *) caca_get_canvas_chars(canvas), 1); 
     458    caca_canvas_t *canvas; 
     459    FETCH_CANVAS(canvas); 
     460    RETURN_STRING((char *) caca_get_canvas_chars(canvas), 1); 
    461461} 
    462462 
    463463PHP_FUNCTION(caca_get_canvas_attrs) { 
    464         caca_canvas_t *canvas; 
    465         FETCH_CANVAS(canvas); 
    466         RETURN_STRING((char *) caca_get_canvas_attrs(canvas), 1); 
     464    caca_canvas_t *canvas; 
     465    FETCH_CANVAS(canvas); 
     466    RETURN_STRING((char *) caca_get_canvas_attrs(canvas), 1); 
    467467} 
    468468 
    469469PHP_FUNCTION(caca_rand) { 
    470         long min, max = 0; 
    471         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &min, &max) == FAILURE) { 
    472                 RETURN_FALSE; 
    473         } 
    474         RETURN_LONG(caca_rand(min, max)); 
     470    long min, max = 0; 
     471    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &min, &max) == FAILURE) { 
     472        RETURN_FALSE; 
     473    } 
     474    RETURN_LONG(caca_rand(min, max)); 
    475475} 
    476476 
    477477PHP_FUNCTION(caca_get_version) { 
    478         if (ZEND_NUM_ARGS() != 0) { 
    479                 WRONG_PARAM_COUNT; 
    480         } 
    481         RETURN_STRING((char *) caca_get_version(), 1); 
     478    if (ZEND_NUM_ARGS() != 0) { 
     479        WRONG_PARAM_COUNT; 
     480    } 
     481    RETURN_STRING((char *) caca_get_version(), 1); 
    482482} 
    483483 
    484484PHP_FUNCTION(caca_gotoxy) { 
    485         zval *_zval; 
    486         long x, y = 0; 
    487         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &_zval, &x, &y) == FAILURE) { 
    488                 RETURN_FALSE; 
    489         } 
    490         caca_canvas_t *canvas; 
    491         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    492         RETURN_SUCCESS(caca_gotoxy(canvas, x, y)); 
     485    zval *_zval; 
     486    long x, y = 0; 
     487    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &_zval, &x, &y) == FAILURE) { 
     488        RETURN_FALSE; 
     489    } 
     490    caca_canvas_t *canvas; 
     491    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     492    RETURN_SUCCESS(caca_gotoxy(canvas, x, y)); 
    493493} 
    494494 
    495495PHP_FUNCTION(caca_get_cursor_x) { 
    496         caca_canvas_t *canvas; 
    497         FETCH_CANVAS(canvas); 
    498         RETURN_LONG(caca_get_cursor_x(canvas)); 
     496    caca_canvas_t *canvas; 
     497    FETCH_CANVAS(canvas); 
     498    RETURN_LONG(caca_get_cursor_x(canvas)); 
    499499} 
    500500 
    501501PHP_FUNCTION(caca_get_cursor_y) { 
    502         caca_canvas_t *canvas; 
    503         FETCH_CANVAS(canvas); 
    504         RETURN_LONG(caca_get_cursor_y(canvas)); 
     502    caca_canvas_t *canvas; 
     503    FETCH_CANVAS(canvas); 
     504    RETURN_LONG(caca_get_cursor_y(canvas)); 
    505505} 
    506506 
    507507PHP_FUNCTION(caca_put_char) { 
    508         zval *_zval; 
    509         long x, y, c; 
    510         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlll", &_zval, &x, &y, &c) == FAILURE) { 
    511                 RETURN_FALSE; 
    512         } 
    513         caca_canvas_t *canvas; 
    514         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    515         RETURN_SUCCESS(caca_put_char(canvas, x, y, c)); 
     508    zval *_zval; 
     509    long x, y, c; 
     510    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlll", &_zval, &x, &y, &c) == FAILURE) { 
     511        RETURN_FALSE; 
     512    } 
     513    caca_canvas_t *canvas; 
     514    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     515    RETURN_SUCCESS(caca_put_char(canvas, x, y, c)); 
    516516} 
    517517 
    518518PHP_FUNCTION(caca_get_char) { 
    519         zval *_zval; 
    520         long x, y = 0; 
    521         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &_zval, &x, &y) == FAILURE) { 
    522                 RETURN_FALSE; 
    523         } 
    524         caca_canvas_t *canvas; 
    525         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    526         RETURN_CHAR(caca_get_char(canvas, x, y)); 
     519    zval *_zval; 
     520    long x, y = 0; 
     521    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &_zval, &x, &y) == FAILURE) { 
     522        RETURN_FALSE; 
     523    } 
     524    caca_canvas_t *canvas; 
     525    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     526    RETURN_CHAR(caca_get_char(canvas, x, y)); 
    527527} 
    528528 
    529529PHP_FUNCTION(caca_put_str) { 
    530         zval *_zval; 
    531         char *str; 
    532         long x, y, str_len = 0; 
    533         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlls", &_zval, &x, &y, &str, &str_len) == FAILURE) { 
    534                 RETURN_FALSE; 
    535         } 
    536         caca_canvas_t *canvas; 
    537         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    538         RETURN_SUCCESS(caca_put_str(canvas, x, y, str)); 
     530    zval *_zval; 
     531    char *str; 
     532    long x, y, str_len = 0; 
     533    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlls", &_zval, &x, &y, &str, &str_len) == FAILURE) { 
     534        RETURN_FALSE; 
     535    } 
     536    caca_canvas_t *canvas; 
     537    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     538    RETURN_SUCCESS(caca_put_str(canvas, x, y, str)); 
    539539} 
    540540 
    541541PHP_FUNCTION(caca_clear_canvas) { 
    542         caca_canvas_t *canvas; 
    543         FETCH_CANVAS(canvas); 
    544         RETURN_LONG(caca_clear_canvas(canvas)); 
     542    caca_canvas_t *canvas; 
     543    FETCH_CANVAS(canvas); 
     544    RETURN_LONG(caca_clear_canvas(canvas)); 
    545545} 
    546546 
    547547PHP_FUNCTION(caca_set_canvas_handle) { 
    548         zval *_zval; 
    549         long x, y = 0; 
    550         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &_zval, &x, &y) == FAILURE) { 
    551                 RETURN_FALSE; 
    552         } 
    553         caca_canvas_t *canvas; 
    554         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    555         RETURN_SUCCESS(caca_set_canvas_handle(canvas, x, y)); 
     548    zval *_zval; 
     549    long x, y = 0; 
     550    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &_zval, &x, &y) == FAILURE) { 
     551        RETURN_FALSE; 
     552    } 
     553    caca_canvas_t *canvas; 
     554    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     555    RETURN_SUCCESS(caca_set_canvas_handle(canvas, x, y)); 
    556556} 
    557557 
    558558PHP_FUNCTION(caca_get_canvas_handle_x) { 
    559         caca_canvas_t *canvas; 
    560         FETCH_CANVAS(canvas); 
    561         RETURN_LONG(caca_get_canvas_handle_x(canvas)); 
     559    caca_canvas_t *canvas; 
     560    FETCH_CANVAS(canvas); 
     561    RETURN_LONG(caca_get_canvas_handle_x(canvas)); 
    562562} 
    563563 
    564564PHP_FUNCTION(caca_get_canvas_handle_y) { 
    565         caca_canvas_t *canvas; 
    566         FETCH_CANVAS(canvas); 
    567         RETURN_LONG(caca_get_canvas_handle_y(canvas)); 
     565    caca_canvas_t *canvas; 
     566    FETCH_CANVAS(canvas); 
     567    RETURN_LONG(caca_get_canvas_handle_y(canvas)); 
    568568} 
    569569 
    570570PHP_FUNCTION(caca_blit) { 
    571         zval *_zval1, *_zval2, *_zval3 = NULL; 
    572         long x, y = 0; 
    573         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllr|r", &_zval1, &x, &y, &_zval2, &_zval3) == FAILURE) { 
    574                 RETURN_FALSE; 
    575         } 
    576         caca_canvas_t *dst, *src, *mask = NULL; 
    577         ZEND_FETCH_RESOURCE(dst, caca_canvas_t*, &_zval1, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    578         ZEND_FETCH_RESOURCE(src, caca_canvas_t*, &_zval2, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    579         if (_zval3) { 
    580                 ZEND_FETCH_RESOURCE(mask, caca_canvas_t*, &_zval3, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    581         } 
    582         RETURN_SUCCESS(caca_blit(dst, x, y, src, NULL)); 
     571    zval *_zval1, *_zval2, *_zval3 = NULL; 
     572    long x, y = 0; 
     573    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllr|r", &_zval1, &x, &y, &_zval2, &_zval3) == FAILURE) { 
     574        RETURN_FALSE; 
     575    } 
     576    caca_canvas_t *dst, *src, *mask = NULL; 
     577    ZEND_FETCH_RESOURCE(dst, caca_canvas_t*, &_zval1, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     578    ZEND_FETCH_RESOURCE(src, caca_canvas_t*, &_zval2, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     579    if (_zval3) { 
     580        ZEND_FETCH_RESOURCE(mask, caca_canvas_t*, &_zval3, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     581    } 
     582    RETURN_SUCCESS(caca_blit(dst, x, y, src, NULL)); 
    583583} 
    584584 
    585585PHP_FUNCTION(caca_set_canvas_boundaries) { 
    586         zval *_zval; 
    587         long x, y, width, height = 0; 
    588         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllll", &_zval, &x, &y, &width, &height) == FAILURE) { 
    589                 RETURN_FALSE; 
    590         } 
    591         caca_canvas_t *canvas; 
    592         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    593         RETURN_SUCCESS(caca_set_canvas_boundaries(canvas, x, y, width, height)); 
     586    zval *_zval; 
     587    long x, y, width, height = 0; 
     588    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllll", &_zval, &x, &y, &width, &height) == FAILURE) { 
     589        RETURN_FALSE; 
     590    } 
     591    caca_canvas_t *canvas; 
     592    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     593    RETURN_SUCCESS(caca_set_canvas_boundaries(canvas, x, y, width, height)); 
    594594} 
    595595 
    596596PHP_FUNCTION(caca_invert) { 
    597         caca_canvas_t *canvas; 
    598         FETCH_CANVAS(canvas); 
    599         RETURN_SUCCESS(caca_invert(canvas)); 
     597    caca_canvas_t *canvas; 
     598    FETCH_CANVAS(canvas); 
     599    RETURN_SUCCESS(caca_invert(canvas)); 
    600600} 
    601601 
    602602PHP_FUNCTION(caca_flip) { 
    603         caca_canvas_t *canvas; 
    604         FETCH_CANVAS(canvas); 
    605         RETURN_SUCCESS(caca_flip(canvas)); 
     603    caca_canvas_t *canvas; 
     604    FETCH_CANVAS(canvas); 
     605    RETURN_SUCCESS(caca_flip(canvas)); 
    606606} 
    607607 
    608608PHP_FUNCTION(caca_flop) { 
    609         caca_canvas_t *canvas; 
    610         FETCH_CANVAS(canvas); 
    611         RETURN_SUCCESS(caca_flop(canvas)); 
     609    caca_canvas_t *canvas; 
     610    FETCH_CANVAS(canvas); 
     611    RETURN_SUCCESS(caca_flop(canvas)); 
    612612} 
    613613 
    614614PHP_FUNCTION(caca_rotate_180) { 
    615         caca_canvas_t *canvas; 
    616         FETCH_CANVAS(canvas); 
    617         RETURN_SUCCESS(caca_rotate_180(canvas)); 
     615    caca_canvas_t *canvas; 
     616    FETCH_CANVAS(canvas); 
     617    RETURN_SUCCESS(caca_rotate_180(canvas)); 
    618618} 
    619619 
    620620PHP_FUNCTION(caca_rotate_left) { 
    621         caca_canvas_t *canvas; 
    622         FETCH_CANVAS(canvas); 
    623         RETURN_SUCCESS(caca_rotate_left(canvas)); 
     621    caca_canvas_t *canvas; 
     622    FETCH_CANVAS(canvas); 
     623    RETURN_SUCCESS(caca_rotate_left(canvas)); 
    624624} 
    625625 
    626626PHP_FUNCTION(caca_rotate_right) { 
    627         caca_canvas_t *canvas; 
    628         FETCH_CANVAS(canvas); 
    629         RETURN_SUCCESS(caca_rotate_right(canvas)); 
     627    caca_canvas_t *canvas; 
     628    FETCH_CANVAS(canvas); 
     629    RETURN_SUCCESS(caca_rotate_right(canvas)); 
    630630} 
    631631 
    632632PHP_FUNCTION(caca_stretch_left) { 
    633         caca_canvas_t *canvas; 
    634         FETCH_CANVAS(canvas); 
    635         RETURN_SUCCESS(caca_stretch_left(canvas)); 
     633    caca_canvas_t *canvas; 
     634    FETCH_CANVAS(canvas); 
     635    RETURN_SUCCESS(caca_stretch_left(canvas)); 
    636636} 
    637637 
    638638PHP_FUNCTION(caca_stretch_right) { 
    639         caca_canvas_t *canvas; 
    640         FETCH_CANVAS(canvas); 
    641         RETURN_SUCCESS(caca_stretch_right(canvas)); 
     639    caca_canvas_t *canvas; 
     640    FETCH_CANVAS(canvas); 
     641    RETURN_SUCCESS(caca_stretch_right(canvas)); 
    642642} 
    643643 
    644644PHP_FUNCTION(caca_get_attr) { 
    645         zval *_zval; 
    646         long x, y = 0; 
    647         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &_zval, &x, &y) == FAILURE) { 
    648                 RETURN_FALSE; 
    649         } 
    650         caca_canvas_t *canvas; 
    651         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    652         RETURN_LONG(caca_get_attr(canvas, x, y)); 
     645    zval *_zval; 
     646    long x, y = 0; 
     647    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &_zval, &x, &y) == FAILURE) { 
     648        RETURN_FALSE; 
     649    } 
     650    caca_canvas_t *canvas; 
     651    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     652    RETURN_LONG(caca_get_attr(canvas, x, y)); 
    653653} 
    654654 
    655655PHP_FUNCTION(caca_set_attr) { 
    656         zval *_zval; 
    657         long attr = 0; 
    658         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &_zval, &attr) == FAILURE) { 
    659                 RETURN_FALSE; 
    660         } 
    661         caca_canvas_t *canvas; 
    662         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    663         RETURN_SUCCESS(caca_set_attr(canvas, attr)); 
     656    zval *_zval; 
     657    long attr = 0; 
     658    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &_zval, &attr) == FAILURE) { 
     659        RETURN_FALSE; 
     660    } 
     661    caca_canvas_t *canvas; 
     662    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     663    RETURN_SUCCESS(caca_set_attr(canvas, attr)); 
    664664} 
    665665 
    666666PHP_FUNCTION(caca_put_attr) { 
    667         zval *_zval; 
    668         long x, y, attr = 0; 
    669         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlll", &_zval, &x, &y, &attr) == FAILURE) { 
    670                 RETURN_FALSE; 
    671         } 
    672         caca_canvas_t *canvas; 
    673         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    674         RETURN_SUCCESS(caca_put_attr(canvas, x, y, attr)); 
     667    zval *_zval; 
     668    long x, y, attr = 0; 
     669    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlll", &_zval, &x, &y, &attr) == FAILURE) { 
     670        RETURN_FALSE; 
     671    } 
     672    caca_canvas_t *canvas; 
     673    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     674    RETURN_SUCCESS(caca_put_attr(canvas, x, y, attr)); 
    675675} 
    676676 
    677677PHP_FUNCTION(caca_set_color_ansi) { 
    678         zval *_zval; 
    679         long foreground, background = 0; 
    680         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &_zval, &foreground, &background) == FAILURE) { 
    681                 RETURN_FALSE; 
    682         } 
    683         caca_canvas_t *canvas; 
    684         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    685         RETURN_SUCCESS(caca_set_color_ansi(canvas, foreground, background)); 
     678    zval *_zval; 
     679    long foreground, background = 0; 
     680    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &_zval, &foreground, &background) == FAILURE) { 
     681        RETURN_FALSE; 
     682    } 
     683    caca_canvas_t *canvas; 
     684    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     685    RETURN_SUCCESS(caca_set_color_ansi(canvas, foreground, background)); 
    686686} 
    687687 
    688688PHP_FUNCTION(caca_set_color_argb) { 
    689         zval *_zval; 
    690         long foreground, background = 0; 
    691         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &_zval, &foreground, &background) == FAILURE) { 
    692                 RETURN_FALSE; 
    693         } 
    694         caca_canvas_t *canvas; 
    695         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    696         RETURN_SUCCESS(caca_set_color_argb(canvas, foreground, background)); 
     689    zval *_zval; 
     690    long foreground, background = 0; 
     691    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &_zval, &foreground, &background) == FAILURE) { 
     692        RETURN_FALSE; 
     693    } 
     694    caca_canvas_t *canvas; 
     695    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     696    RETURN_SUCCESS(caca_set_color_argb(canvas, foreground, background)); 
    697697} 
    698698 
    699699PHP_FUNCTION(caca_attr_to_ansi) { 
    700         long l; 
    701         FETCH_LONG(l); 
    702         RETURN_LONG(caca_attr_to_ansi(l)); 
     700    long l; 
     701    FETCH_LONG(l); 
     702    RETURN_LONG(caca_attr_to_ansi(l)); 
    703703} 
    704704 
    705705PHP_FUNCTION(caca_attr_to_ansi_fg) { 
    706         long l; 
    707         FETCH_LONG(l); 
    708         RETURN_LONG(caca_attr_to_ansi_fg(l)); 
     706    long l; 
     707    FETCH_LONG(l); 
     708    RETURN_LONG(caca_attr_to_ansi_fg(l)); 
    709709} 
    710710 
    711711PHP_FUNCTION(caca_attr_to_ansi_bg) { 
    712         long l; 
    713         FETCH_LONG(l); 
    714         RETURN_LONG(caca_attr_to_ansi_bg(l)); 
     712    long l; 
     713    FETCH_LONG(l); 
     714    RETURN_LONG(caca_attr_to_ansi_bg(l)); 
    715715} 
    716716 
    717717PHP_FUNCTION(caca_attr_to_rgb12_fg) { 
    718         long l; 
    719         FETCH_LONG(l); 
    720         RETURN_LONG(caca_attr_to_rgb12_fg(l)); 
     718    long l; 
     719    FETCH_LONG(l); 
     720    RETURN_LONG(caca_attr_to_rgb12_fg(l)); 
    721721} 
    722722 
    723723PHP_FUNCTION(caca_attr_to_rgb12_bg) { 
    724         long l; 
    725         FETCH_LONG(l); 
    726         RETURN_LONG(caca_attr_to_rgb12_bg(l)); 
     724    long l; 
     725    FETCH_LONG(l); 
     726    RETURN_LONG(caca_attr_to_rgb12_bg(l)); 
    727727} 
    728728 
    729729PHP_FUNCTION(caca_attr_to_argb64) { 
    730         //TODO: write or delete 
     730    //TODO: write or delete 
    731731} 
    732732 
    733733PHP_FUNCTION(caca_utf8_to_utf32) { 
    734         //TODO: write or delete 
     734    //TODO: write or delete 
    735735} 
    736736 
    737737PHP_FUNCTION(caca_utf32_to_utf8) { 
    738         //TODO: write or delete 
     738    //TODO: write or delete 
    739739} 
    740740 
    741741PHP_FUNCTION(caca_utf32_to_cp437) { 
    742         long l; 
    743         FETCH_LONG(l); 
    744         RETURN_LONG(caca_utf32_to_cp437(l)); 
     742    long l; 
     743    FETCH_LONG(l); 
     744    RETURN_LONG(caca_utf32_to_cp437(l)); 
    745745} 
    746746 
    747747PHP_FUNCTION(caca_cp437_to_utf32) { 
    748         long l; 
    749         FETCH_LONG(l); 
    750         RETURN_LONG(caca_cp437_to_utf32(l)); 
     748    long l; 
     749    FETCH_LONG(l); 
     750    RETURN_LONG(caca_cp437_to_utf32(l)); 
    751751} 
    752752 
    753753PHP_FUNCTION(caca_utf32_to_ascii) { 
    754         long l; 
    755         FETCH_LONG(l); 
    756         RETURN_CHAR(caca_utf32_to_ascii(l)); 
     754    long l; 
     755    FETCH_LONG(l); 
     756    RETURN_CHAR(caca_utf32_to_ascii(l)); 
    757757} 
    758758 
    759759PHP_FUNCTION(caca_utf32_is_fullwidth) { 
    760         //TODO: write or delete 
     760    //TODO: write or delete 
    761761} 
    762762 
    763763PHP_FUNCTION(caca_draw_line) { 
    764         zval *_zval; 
    765         long xa, ya, xb, yb, c; 
    766         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlllll", &_zval, &xa, &ya, &xb, &yb, &c) == FAILURE) { 
    767                 RETURN_FALSE; 
    768         } 
    769         caca_canvas_t *canvas; 
    770         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    771         RETURN_SUCCESS(caca_draw_line(canvas, xa, ya, xb, yb, c)); 
     764    zval *_zval; 
     765    long xa, ya, xb, yb, c; 
     766    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlllll", &_zval, &xa, &ya, &xb, &yb, &c) == FAILURE) { 
     767        RETURN_FALSE; 
     768    } 
     769    caca_canvas_t *canvas; 
     770    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     771    RETURN_SUCCESS(caca_draw_line(canvas, xa, ya, xb, yb, c)); 
    772772} 
    773773 
    774774PHP_FUNCTION(caca_draw_polyline) { 
    775         zval *zval_res, *zval_arr; 
    776         long c; 
    777  
    778         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ral", &zval_res, &zval_arr, &c) == FAILURE) { 
    779                 RETURN_FALSE; 
    780         } 
    781  
    782         caca_canvas_t *canvas; 
    783         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &zval_res, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    784  
    785         HashTable *arr_hash = Z_ARRVAL_P(zval_arr); 
    786         int lenmax = zend_hash_num_elements(arr_hash); 
    787         int *tbl_x, *tbl_y; 
    788         int tbl_count = 0; 
    789         tbl_x = malloc(sizeof(int) * lenmax); 
    790         tbl_y = malloc(sizeof(int) * lenmax); 
    791  
    792         HashPosition pos; 
    793         zval **pt, **x, **y; 
    794         for ( 
    795                 zend_hash_internal_pointer_reset_ex(arr_hash, &pos); 
    796                 zend_hash_get_current_data_ex(arr_hash, (void**) &pt, &pos) == SUCCESS; 
    797                 zend_hash_move_forward_ex(arr_hash, &pos) 
    798         ) { 
    799                 if ( 
    800                         Z_TYPE_P(*pt) == IS_ARRAY 
    801                         && (zend_hash_index_find(Z_ARRVAL_P(*pt), 0, (void**) &x) != FAILURE) 
    802                         && (zend_hash_index_find(Z_ARRVAL_P(*pt), 1, (void**) &y) != FAILURE) 
    803                 ) { 
    804                         convert_to_long_ex(x); 
    805                         convert_to_long_ex(y); 
    806                         tbl_x[tbl_count] = Z_LVAL_PP(x); 
    807                         tbl_y[tbl_count] = Z_LVAL_PP(y); 
    808                         tbl_count++; 
    809                 } 
    810         } 
    811         int res = caca_draw_polyline(canvas, tbl_x, tbl_y, tbl_count - 1, c); 
    812         free(tbl_x); 
    813         free(tbl_y); 
    814         RETURN_SUCCESS(res); 
     775    zval *zval_res, *zval_arr; 
     776    long c; 
     777 
     778    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ral", &zval_res, &zval_arr, &c) == FAILURE) { 
     779        RETURN_FALSE; 
     780    } 
     781 
     782    caca_canvas_t *canvas; 
     783    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &zval_res, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     784 
     785    HashTable *arr_hash = Z_ARRVAL_P(zval_arr); 
     786    int lenmax = zend_hash_num_elements(arr_hash); 
     787    int *tbl_x, *tbl_y; 
     788    int tbl_count = 0; 
     789    tbl_x = malloc(sizeof(int) * lenmax); 
     790    tbl_y = malloc(sizeof(int) * lenmax); 
     791 
     792    HashPosition pos; 
     793    zval **pt, **x, **y; 
     794    for ( 
     795        zend_hash_internal_pointer_reset_ex(arr_hash, &pos); 
     796        zend_hash_get_current_data_ex(arr_hash, (void**) &pt, &pos) == SUCCESS; 
     797        zend_hash_move_forward_ex(arr_hash, &pos) 
     798    ) { 
     799        if ( 
     800            Z_TYPE_P(*pt) == IS_ARRAY 
     801            && (zend_hash_index_find(Z_ARRVAL_P(*pt), 0, (void**) &x) != FAILURE) 
     802            && (zend_hash_index_find(Z_ARRVAL_P(*pt), 1, (void**) &y) != FAILURE) 
     803        ) { 
     804            convert_to_long_ex(x); 
     805            convert_to_long_ex(y); 
     806            tbl_x[tbl_count] = Z_LVAL_PP(x); 
     807            tbl_y[tbl_count] = Z_LVAL_PP(y); 
     808            tbl_count++; 
     809        } 
     810    } 
     811    int res = caca_draw_polyline(canvas, tbl_x, tbl_y, tbl_count - 1, c); 
     812    free(tbl_x); 
     813    free(tbl_y); 
     814    RETURN_SUCCESS(res); 
    815815} 
    816816 
    817817PHP_FUNCTION(caca_draw_thin_line) { 
    818         zval *_zval; 
    819         long xa, ya, xb, yb = 0; 
    820         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllll", &_zval, &xa, &ya, &xb, &yb) == FAILURE) { 
    821                 RETURN_FALSE; 
    822         } 
    823         caca_canvas_t *canvas; 
    824         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    825         RETURN_SUCCESS(caca_draw_thin_line(canvas, xa, ya, xb, yb)); 
     818    zval *_zval; 
     819    long xa, ya, xb, yb = 0; 
     820    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllll", &_zval, &xa, &ya, &xb, &yb) == FAILURE) { 
     821        RETURN_FALSE; 
     822    } 
     823    caca_canvas_t *canvas; 
     824    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     825    RETURN_SUCCESS(caca_draw_thin_line(canvas, xa, ya, xb, yb)); 
    826826} 
    827827 
    828828PHP_FUNCTION(caca_draw_thin_polyline) { 
    829         zval *zval_res, *zval_arr; 
    830         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra", &zval_res, &zval_arr) == FAILURE) { 
    831                 RETURN_FALSE; 
    832         } 
    833  
    834         caca_canvas_t *canvas; 
    835         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &zval_res, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    836  
    837         HashTable *arr_hash = Z_ARRVAL_P(zval_arr); 
    838         int lenmax = zend_hash_num_elements(arr_hash); 
    839         int *tbl_x, *tbl_y; 
    840         int tbl_count = 0; 
    841         tbl_x = malloc(sizeof(int) * lenmax); 
    842         tbl_y = malloc(sizeof(int) * lenmax); 
    843  
    844         if (!tbl_x || !tbl_y) { 
    845                 RETURN_FALSE; 
    846         } 
    847  
    848         HashPosition pos; 
    849         zval **pt, **x, **y; 
    850         for ( 
    851                 zend_hash_internal_pointer_reset_ex(arr_hash, &pos); 
    852                 zend_hash_get_current_data_ex(arr_hash, (void**) &pt, &pos) == SUCCESS; 
    853                 zend_hash_move_forward_ex(arr_hash, &pos) 
    854         ) { 
    855                 if ( 
    856                         Z_TYPE_P(*pt) == IS_ARRAY 
    857                         && (zend_hash_index_find(Z_ARRVAL_P(*pt), 0, (void**) &x) != FAILURE) 
    858                         && (zend_hash_index_find(Z_ARRVAL_P(*pt), 1, (void**) &y) != FAILURE) 
    859                 ) { 
    860                         convert_to_long_ex(x); 
    861                         convert_to_long_ex(y); 
    862                         tbl_x[tbl_count] = Z_LVAL_PP(x); 
    863                         tbl_y[tbl_count] = Z_LVAL_PP(y); 
    864                         tbl_count++; 
    865                 } 
    866         } 
    867         int res = caca_draw_thin_polyline(canvas, tbl_x, tbl_y, tbl_count - 1); 
    868         free(tbl_x); 
    869         free(tbl_y); 
    870         RETURN_SUCCESS(res); 
     829    zval *zval_res, *zval_arr; 
     830    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra", &zval_res, &zval_arr) == FAILURE) { 
     831        RETURN_FALSE; 
     832    } 
     833 
     834    caca_canvas_t *canvas; 
     835    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &zval_res, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     836 
     837    HashTable *arr_hash = Z_ARRVAL_P(zval_arr); 
     838    int lenmax = zend_hash_num_elements(arr_hash); 
     839    int *tbl_x, *tbl_y; 
     840    int tbl_count = 0; 
     841    tbl_x = malloc(sizeof(int) * lenmax); 
     842    tbl_y = malloc(sizeof(int) * lenmax); 
     843 
     844    if (!tbl_x || !tbl_y) { 
     845        RETURN_FALSE; 
     846    } 
     847 
     848    HashPosition pos; 
     849    zval **pt, **x, **y; 
     850    for ( 
     851        zend_hash_internal_pointer_reset_ex(arr_hash, &pos); 
     852        zend_hash_get_current_data_ex(arr_hash, (void**) &pt, &pos) == SUCCESS; 
     853        zend_hash_move_forward_ex(arr_hash, &pos) 
     854    ) { 
     855        if ( 
     856            Z_TYPE_P(*pt) == IS_ARRAY 
     857            && (zend_hash_index_find(Z_ARRVAL_P(*pt), 0, (void**) &x) != FAILURE) 
     858            && (zend_hash_index_find(Z_ARRVAL_P(*pt), 1, (void**) &y) != FAILURE) 
     859        ) { 
     860            convert_to_long_ex(x); 
     861            convert_to_long_ex(y); 
     862            tbl_x[tbl_count] = Z_LVAL_PP(x); 
     863            tbl_y[tbl_count] = Z_LVAL_PP(y); 
     864            tbl_count++; 
     865        } 
     866    } 
     867    int res = caca_draw_thin_polyline(canvas, tbl_x, tbl_y, tbl_count - 1); 
     868    free(tbl_x); 
     869    free(tbl_y); 
     870    RETURN_SUCCESS(res); 
    871871} 
    872872 
    873873PHP_FUNCTION(caca_draw_circle) { 
    874         zval *_zval; 
    875         long x, y, r, c; 
    876         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllll", &_zval, &x, &y, &r, &c) == FAILURE) { 
    877                 RETURN_FALSE; 
    878         } 
    879         caca_canvas_t *canvas; 
    880         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    881         RETURN_SUCCESS(caca_draw_circle(canvas, x, y, r, c)); 
     874    zval *_zval; 
     875    long x, y, r, c; 
     876    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllll", &_zval, &x, &y, &r, &c) == FAILURE) { 
     877        RETURN_FALSE; 
     878    } 
     879    caca_canvas_t *canvas; 
     880    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     881    RETURN_SUCCESS(caca_draw_circle(canvas, x, y, r, c)); 
    882882} 
    883883 
    884884PHP_FUNCTION(caca_draw_ellipse) { 
    885         zval *_zval; 
    886         long xa, ya, xb, yb, c = 0; 
    887         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlllll", &_zval, &xa, &ya, &xb, &yb, &c) == FAILURE) { 
    888                 RETURN_FALSE; 
    889         } 
    890         caca_canvas_t *canvas; 
    891         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    892         RETURN_SUCCESS(caca_draw_ellipse(canvas, xa, ya, xb, yb, c)); 
     885    zval *_zval; 
     886    long xa, ya, xb, yb, c = 0; 
     887    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlllll", &_zval, &xa, &ya, &xb, &yb, &c) == FAILURE) { 
     888        RETURN_FALSE; 
     889    } 
     890    caca_canvas_t *canvas; 
     891    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     892    RETURN_SUCCESS(caca_draw_ellipse(canvas, xa, ya, xb, yb, c)); 
    893893} 
    894894 
    895895PHP_FUNCTION(caca_draw_thin_ellipse) { 
    896         zval *_zval; 
    897         long xa, ya, xb, yb = 0; 
    898         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllll", &_zval, &xa, &ya, &xb, &yb) == FAILURE) { 
    899                 RETURN_FALSE; 
    900         } 
    901         caca_canvas_t *canvas; 
    902         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    903         RETURN_SUCCESS(caca_draw_thin_ellipse(canvas, xa, ya, xb, yb)); 
     896    zval *_zval; 
     897    long xa, ya, xb, yb = 0; 
     898    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllll", &_zval, &xa, &ya, &xb, &yb) == FAILURE) { 
     899        RETURN_FALSE; 
     900    } 
     901    caca_canvas_t *canvas; 
     902    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     903    RETURN_SUCCESS(caca_draw_thin_ellipse(canvas, xa, ya, xb, yb)); 
    904904} 
    905905 
    906906PHP_FUNCTION(caca_fill_ellipse) { 
    907         zval *_zval; 
    908         long xa, ya, xb, yb, c; 
    909         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlllll", &_zval, &xa, &ya, &xb, &yb, &c) == FAILURE) { 
    910                 RETURN_FALSE; 
    911         } 
    912         caca_canvas_t *canvas; 
    913         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    914         RETURN_SUCCESS(caca_fill_ellipse(canvas, xa, ya, xb, yb, c)); 
     907    zval *_zval; 
     908    long xa, ya, xb, yb, c; 
     909    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlllll", &_zval, &xa, &ya, &xb, &yb, &c) == FAILURE) { 
     910        RETURN_FALSE; 
     911    } 
     912    caca_canvas_t *canvas; 
     913    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     914    RETURN_SUCCESS(caca_fill_ellipse(canvas, xa, ya, xb, yb, c)); 
    915915} 
    916916 
    917917PHP_FUNCTION(caca_draw_box) { 
    918         zval *_zval; 
    919         long xa, ya, xb, yb, c; 
    920         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlllll", &_zval, &xa, &ya, &xb, &yb, &c) == FAILURE) { 
    921                 RETURN_FALSE; 
    922         } 
    923         caca_canvas_t *canvas; 
    924         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    925         RETURN_SUCCESS(caca_draw_box(canvas, xa, ya, xb, yb, c)); 
     918    zval *_zval; 
     919    long xa, ya, xb, yb, c; 
     920    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlllll", &_zval, &xa, &ya, &xb, &yb, &c) == FAILURE) { 
     921        RETURN_FALSE; 
     922    } 
     923    caca_canvas_t *canvas; 
     924    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     925    RETURN_SUCCESS(caca_draw_box(canvas, xa, ya, xb, yb, c)); 
    926926} 
    927927 
    928928PHP_FUNCTION(caca_draw_thin_box) { 
    929         zval *_zval; 
    930         long xa, ya, xb, yb = 0; 
    931         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllll", &_zval, &xa, &ya, &xb, &yb) == FAILURE) { 
    932                 RETURN_FALSE; 
    933         } 
    934         caca_canvas_t *canvas; 
    935         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    936         RETURN_SUCCESS(caca_draw_thin_box(canvas, xa, ya, xb, yb)); 
     929    zval *_zval; 
     930    long xa, ya, xb, yb = 0; 
     931    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllll", &_zval, &xa, &ya, &xb, &yb) == FAILURE) { 
     932        RETURN_FALSE; 
     933    } 
     934    caca_canvas_t *canvas; 
     935    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     936    RETURN_SUCCESS(caca_draw_thin_box(canvas, xa, ya, xb, yb)); 
    937937} 
    938938 
    939939PHP_FUNCTION(caca_draw_cp437_box) { 
    940         zval *_zval; 
    941         long xa, ya, xb, yb; 
    942         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllll", &_zval, &xa, &ya, &xb, &yb) == FAILURE) { 
    943                 RETURN_FALSE; 
    944         } 
    945         caca_canvas_t *canvas; 
    946         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    947         RETURN_SUCCESS(caca_draw_cp437_box(canvas, xa, ya, xb, yb)); 
     940    zval *_zval; 
     941    long xa, ya, xb, yb; 
     942    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllll", &_zval, &xa, &ya, &xb, &yb) == FAILURE) { 
     943        RETURN_FALSE; 
     944    } 
     945    caca_canvas_t *canvas; 
     946    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     947    RETURN_SUCCESS(caca_draw_cp437_box(canvas, xa, ya, xb, yb)); 
    948948} 
    949949 
    950950PHP_FUNCTION(caca_fill_box) { 
    951         zval *_zval; 
    952         long xa, ya, xb, yb, c; 
    953         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlllll", &_zval, &xa, &ya, &xb, &yb, &c) == FAILURE) { 
    954                 RETURN_FALSE; 
    955         } 
    956         caca_canvas_t *canvas; 
    957         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    958         RETURN_SUCCESS(caca_fill_box(canvas, xa, ya, xb, yb, c)); 
     951    zval *_zval; 
     952    long xa, ya, xb, yb, c; 
     953    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlllll", &_zval, &xa, &ya, &xb, &yb, &c) == FAILURE) { 
     954        RETURN_FALSE; 
     955    } 
     956    caca_canvas_t *canvas; 
     957    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     958    RETURN_SUCCESS(caca_fill_box(canvas, xa, ya, xb, yb, c)); 
    959959} 
    960960 
    961961PHP_FUNCTION(caca_draw_triangle) { 
    962         zval *_zval; 
    963         long xa, ya, xb, yb, xc, yc, c; 
    964         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlllllll", &_zval, &xa, &ya, &xb, &yb, &xc, &yc, &c) == FAILURE) { 
    965                 RETURN_FALSE; 
    966         } 
    967         caca_canvas_t *canvas; 
    968         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    969         RETURN_SUCCESS(caca_draw_triangle(canvas, xa, ya, xb, yb, xc, yc, c)); 
     962    zval *_zval; 
     963    long xa, ya, xb, yb, xc, yc, c; 
     964    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlllllll", &_zval, &xa, &ya, &xb, &yb, &xc, &yc, &c) == FAILURE) { 
     965        RETURN_FALSE; 
     966    } 
     967    caca_canvas_t *canvas; 
     968    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     969    RETURN_SUCCESS(caca_draw_triangle(canvas, xa, ya, xb, yb, xc, yc, c)); 
    970970} 
    971971 
    972972PHP_FUNCTION(caca_draw_thin_triangle) { 
    973         zval *_zval; 
    974         long xa, ya, xb, yb, xc, yc = 0; 
    975         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllllll", &_zval, &xa, &ya, &xb, &yb, &xc, &yc) == FAILURE) { 
    976                 RETURN_FALSE; 
    977         } 
    978         caca_canvas_t *canvas; 
    979         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    980         RETURN_SUCCESS(caca_draw_thin_triangle(canvas, xa, ya, xb, yb, xc, yc)); 
     973    zval *_zval; 
     974    long xa, ya, xb, yb, xc, yc = 0; 
     975    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllllll", &_zval, &xa, &ya, &xb, &yb, &xc, &yc) == FAILURE) { 
     976        RETURN_FALSE; 
     977    } 
     978    caca_canvas_t *canvas; 
     979    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     980    RETURN_SUCCESS(caca_draw_thin_triangle(canvas, xa, ya, xb, yb, xc, yc)); 
    981981} 
    982982 
    983983PHP_FUNCTION(caca_fill_triangle) { 
    984         zval *_zval; 
    985         long xa, ya, xb, yb, xc, yc, c = 0; 
    986         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlllllll", &_zval, &xa, &ya, &xb, &yb, &xc, &yc, &c) == FAILURE) { 
    987                 RETURN_FALSE; 
    988         } 
    989         caca_canvas_t *canvas; 
    990         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    991         RETURN_SUCCESS(caca_fill_triangle(canvas, xa, ya, xb, yb, xc, yc, c)); 
     984    zval *_zval; 
     985    long xa, ya, xb, yb, xc, yc, c = 0; 
     986    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlllllll", &_zval, &xa, &ya, &xb, &yb, &xc, &yc, &c) == FAILURE) { 
     987        RETURN_FALSE; 
     988    } 
     989    caca_canvas_t *canvas; 
     990    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     991    RETURN_SUCCESS(caca_fill_triangle(canvas, xa, ya, xb, yb, xc, yc, c)); 
    992992} 
    993993 
    994994PHP_FUNCTION(caca_get_frame_count) { 
    995         zval *_zval; 
    996         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
    997                 RETURN_FALSE; 
    998         } 
    999         caca_canvas_t *canvas; 
    1000         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    1001         RETURN_LONG(caca_get_canvas_count(canvas)); 
     995    zval *_zval; 
     996    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
     997        RETURN_FALSE; 
     998    } 
     999    caca_canvas_t *canvas; 
     1000    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     1001    RETURN_LONG(caca_get_canvas_count(canvas)); 
    10021002} 
    10031003 
    10041004PHP_FUNCTION(caca_set_frame) { 
    1005         zval *_zval; 
    1006         long id; 
    1007         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &_zval, &id) == FAILURE) { 
    1008                 RETURN_FALSE; 
    1009         } 
    1010         caca_canvas_t *canvas; 
    1011         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    1012         RETURN_SUCCESS(caca_set_frame(canvas, id)); 
     1005    zval *_zval; 
     1006    long id; 
     1007    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &_zval, &id) == FAILURE) { 
     1008        RETURN_FALSE; 
     1009    } 
     1010    caca_canvas_t *canvas; 
     1011    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     1012    RETURN_SUCCESS(caca_set_frame(canvas, id)); 
    10131013} 
    10141014 
    10151015PHP_FUNCTION(caca_set_frame_name) { 
    1016         zval *_zval; 
    1017         char *str; 
    1018         long str_len; 
    1019         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &_zval, &str, &str_len) == FAILURE) { 
    1020                 RETURN_FALSE; 
    1021         } 
    1022         caca_canvas_t *canvas; 
    1023         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    1024         RETURN_SUCCESS(caca_set_frame_name(canvas, str)); 
     1016    zval *_zval; 
     1017    char *str; 
     1018    long str_len; 
     1019    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &_zval, &str, &str_len) == FAILURE) { 
     1020        RETURN_FALSE; 
     1021    } 
     1022    caca_canvas_t *canvas; 
     1023    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     1024    RETURN_SUCCESS(caca_set_frame_name(canvas, str)); 
    10251025} 
    10261026 
    10271027PHP_FUNCTION(caca_create_frame) { 
    1028         zval *_zval; 
    1029         long id; 
    1030         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &_zval, &id) == FAILURE) { 
    1031                 RETURN_FALSE; 
    1032         } 
    1033         caca_canvas_t *canvas; 
    1034         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    1035         RETURN_SUCCESS(caca_create_frame(canvas, id)); 
     1028    zval *_zval; 
     1029    long id; 
     1030    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &_zval, &id) == FAILURE) { 
     1031        RETURN_FALSE; 
     1032    } 
     1033    caca_canvas_t *canvas; 
     1034    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     1035    RETURN_SUCCESS(caca_create_frame(canvas, id)); 
    10361036} 
    10371037 
    10381038PHP_FUNCTION(caca_free_frame) { 
    1039         zval *_zval; 
    1040         long id; 
    1041         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &_zval, &id) == FAILURE) { 
    1042                 RETURN_FALSE; 
    1043         } 
    1044         caca_canvas_t *canvas; 
    1045         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    1046         RETURN_SUCCESS(caca_free_frame(canvas, id)); 
     1039    zval *_zval; 
     1040    long id; 
     1041    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &_zval, &id) == FAILURE) { 
     1042        RETURN_FALSE; 
     1043    } 
     1044    caca_canvas_t *canvas; 
     1045    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     1046    RETURN_SUCCESS(caca_free_frame(canvas, id)); 
    10471047} 
    10481048 
    10491049PHP_FUNCTION(caca_create_dither) { 
    1050         zval *_zval; 
    1051         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
    1052                 RETURN_FALSE; 
    1053         } 
     1050    zval *_zval; 
     1051    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
     1052        RETURN_FALSE; 
     1053    } 
    10541054#ifdef HAVE_GD 
    1055         gdImage *img = fetch_external_resource(_zval, "gd"); 
    1056         if (!img) { 
    1057                 RETURN_FALSE; 
    1058         } 
    1059  
    1060         caca_dither_t *dither; 
    1061         if (img->trueColor) 
    1062                 dither = caca_create_dither(sizeof(int) * 8, img->sx, img->sy, img->sx * sizeof(int), 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000); 
    1063         else 
    1064                 dither = caca_create_dither(sizeof(char) * 8, img->sx, img->sy, img->sx * sizeof(char), 0, 0, 0, 0); 
    1065  
    1066         if (!dither) { 
    1067                 RETURN_FALSE; 
    1068         } 
    1069  
    1070         ZEND_REGISTER_RESOURCE(return_value, dither, le_caca_dither); 
     1055    gdImage *img = fetch_external_resource(_zval, "gd"); 
     1056    if (!img) { 
     1057        RETURN_FALSE; 
     1058    } 
     1059 
     1060    caca_dither_t *dither; 
     1061    if (img->trueColor) 
     1062        dither = caca_create_dither(sizeof(int) * 8, img->sx, img->sy, img->sx * sizeof(int), 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000); 
     1063    else 
     1064        dither = caca_create_dither(sizeof(char) * 8, img->sx, img->sy, img->sx * sizeof(char), 0, 0, 0, 0); 
     1065 
     1066    if (!dither) { 
     1067        RETURN_FALSE; 
     1068    } 
     1069 
     1070    ZEND_REGISTER_RESOURCE(return_value, dither, le_caca_dither); 
    10711071#else 
    1072         RETURN_FALSE 
     1072    RETURN_FALSE 
    10731073#endif 
    10741074} 
    10751075 
    10761076PHP_FUNCTION(caca_set_dither_palette) { 
    1077         zval *zval_res, *arr; 
    1078         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra", &zval_res, &arr) == FAILURE) { 
    1079                 RETURN_FALSE; 
    1080         } 
    1081  
    1082         caca_dither_t *dither; 
    1083         ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &zval_res, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_dither); 
    1084  
    1085         uint32_t tbl[4][256]; 
    1086         zval **color, **value; 
    1087         int i, j; 
    1088         for (i = 0; i < 256; i++) { 
    1089                 if (zend_hash_index_find(Z_ARRVAL_P(arr), i, (void**) &color) == FAILURE || Z_TYPE_P(*color) != IS_ARRAY) { 
    1090                         RETURN_FALSE; 
    1091                 } 
    1092                 for (j = 0; j < 4; j++) { 
    1093                         if (zend_hash_index_find(Z_ARRVAL_P(*color), j, (void**) &value) == FAILURE) { 
    1094                                 RETURN_FALSE; 
    1095                         } 
    1096                         convert_to_long_ex(value); 
    1097                         tbl[j][i] = Z_LVAL_PP(value); 
    1098                 } 
    1099         } 
    1100         RETURN_SUCCESS(caca_set_dither_palette(dither, tbl[0], tbl[1], tbl[2], tbl[3])); 
     1077    zval *zval_res, *arr; 
     1078    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra", &zval_res, &arr) == FAILURE) { 
     1079        RETURN_FALSE; 
     1080    } 
     1081 
     1082    caca_dither_t *dither; 
     1083    ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &zval_res, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_dither); 
     1084 
     1085    uint32_t tbl[4][256]; 
     1086    zval **color, **value; 
     1087    int i, j; 
     1088    for (i = 0; i < 256; i++) { 
     1089        if (zend_hash_index_find(Z_ARRVAL_P(arr), i, (void**) &color) == FAILURE || Z_TYPE_P(*color) != IS_ARRAY) { 
     1090            RETURN_FALSE; 
     1091        } 
     1092        for (j = 0; j < 4; j++) { 
     1093            if (zend_hash_index_find(Z_ARRVAL_P(*color), j, (void**) &value) == FAILURE) { 
     1094                RETURN_FALSE; 
     1095            } 
     1096            convert_to_long_ex(value); 
     1097            tbl[j][i] = Z_LVAL_PP(value); 
     1098        } 
     1099    } 
     1100    RETURN_SUCCESS(caca_set_dither_palette(dither, tbl[0], tbl[1], tbl[2], tbl[3])); 
    11011101} 
    11021102 
    11031103PHP_FUNCTION(caca_set_dither_brightness) { 
    1104         zval *_zval; 
    1105         double value; 
    1106         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rd", &_zval, &value) == FAILURE) { 
    1107                 RETURN_FALSE; 
    1108         } 
    1109         caca_dither_t *dither; 
    1110         ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
    1111         RETURN_SUCCESS(caca_set_dither_brightness(dither, value)); 
     1104    zval *_zval; 
     1105    double value; 
     1106    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rd", &_zval, &value) == FAILURE) { 
     1107        RETURN_FALSE; 
     1108    } 
     1109    caca_dither_t *dither; 
     1110    ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
     1111    RETURN_SUCCESS(caca_set_dither_brightness(dither, value)); 
    11121112} 
    11131113 
    11141114PHP_FUNCTION(caca_get_dither_brightness) { 
    1115         zval *_zval; 
    1116         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
    1117                 RETURN_FALSE; 
    1118         } 
    1119         caca_dither_t *dither; 
    1120         ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
    1121         RETURN_DOUBLE(caca_get_dither_brightness(dither)); 
     1115    zval *_zval; 
     1116    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
     1117        RETURN_FALSE; 
     1118    } 
     1119    caca_dither_t *dither; 
     1120    ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
     1121    RETURN_DOUBLE(caca_get_dither_brightness(dither)); 
    11221122} 
    11231123 
    11241124PHP_FUNCTION(caca_set_dither_gamma) { 
    1125         zval *_zval; 
    1126         double value; 
    1127         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rd", &_zval, &value) == FAILURE) { 
    1128                 RETURN_FALSE; 
    1129         } 
    1130         caca_dither_t *dither; 
    1131         ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
    1132         RETURN_SUCCESS(caca_set_dither_gamma(dither, value)); 
     1125    zval *_zval; 
     1126    double value; 
     1127    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rd", &_zval, &value) == FAILURE) { 
     1128        RETURN_FALSE; 
     1129    } 
     1130    caca_dither_t *dither; 
     1131    ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
     1132    RETURN_SUCCESS(caca_set_dither_gamma(dither, value)); 
    11331133} 
    11341134 
    11351135PHP_FUNCTION(caca_get_dither_gamma) { 
    1136         zval *_zval; 
    1137         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
    1138                 RETURN_FALSE; 
    1139         } 
    1140         caca_dither_t *dither; 
    1141         ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
    1142         RETURN_DOUBLE(caca_get_dither_gamma(dither)); 
     1136    zval *_zval; 
     1137    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
     1138        RETURN_FALSE; 
     1139    } 
     1140    caca_dither_t *dither; 
     1141    ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
     1142    RETURN_DOUBLE(caca_get_dither_gamma(dither)); 
    11431143} 
    11441144 
    11451145PHP_FUNCTION(caca_set_dither_contrast) { 
    1146         zval *_zval; 
    1147         double value; 
    1148         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rd", &_zval, &value) == FAILURE) { 
    1149                 RETURN_FALSE; 
    1150         } 
    1151         caca_dither_t *dither; 
    1152         ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
    1153         RETURN_SUCCESS(caca_set_dither_contrast(dither, value)); 
     1146    zval *_zval; 
     1147    double value; 
     1148    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rd", &_zval, &value) == FAILURE) { 
     1149        RETURN_FALSE; 
     1150    } 
     1151    caca_dither_t *dither; 
     1152    ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
     1153    RETURN_SUCCESS(caca_set_dither_contrast(dither, value)); 
    11541154} 
    11551155 
    11561156PHP_FUNCTION(caca_get_dither_contrast) { 
    1157         zval *_zval; 
    1158         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
    1159                 RETURN_FALSE; 
    1160         } 
    1161         caca_dither_t *dither; 
    1162         ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
    1163         RETURN_DOUBLE(caca_get_dither_contrast(dither)); 
     1157    zval *_zval; 
     1158    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
     1159        RETURN_FALSE; 
     1160    } 
     1161    caca_dither_t *dither; 
     1162    ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
     1163    RETURN_DOUBLE(caca_get_dither_contrast(dither)); 
    11641164} 
    11651165 
    11661166PHP_FUNCTION(caca_set_dither_antialias) { 
    1167         zval *_zval; 
    1168         int str_len; 
    1169         char *str; 
    1170         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &_zval, &str, &str_len) == FAILURE) { 
    1171                 RETURN_FALSE; 
    1172         } 
    1173         caca_dither_t *dither; 
    1174         ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
    1175         RETURN_SUCCESS(caca_set_dither_antialias(dither, str)); 
     1167    zval *_zval; 
     1168    int str_len; 
     1169    char *str; 
     1170    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &_zval, &str, &str_len) == FAILURE) { 
     1171        RETURN_FALSE; 
     1172    } 
     1173    caca_dither_t *dither; 
     1174    ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
     1175    RETURN_SUCCESS(caca_set_dither_antialias(dither, str)); 
    11761176} 
    11771177 
    11781178PHP_FUNCTION(caca_get_dither_antialias_list) { 
    1179         zval *_zval; 
    1180         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
    1181                 RETURN_FALSE; 
    1182         } 
    1183         caca_dither_t *dither; 
    1184         ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
    1185  
    1186         char const * const *list = caca_get_dither_antialias_list(dither); 
    1187         int i; 
    1188         array_init(return_value); 
    1189         for(i = 0; list[i]; i += 1) 
    1190                 add_next_index_string(return_value, (char*) list[i], 1); 
     1179    zval *_zval; 
     1180    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
     1181        RETURN_FALSE; 
     1182    } 
     1183    caca_dither_t *dither; 
     1184    ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
     1185 
     1186    char const * const *list = caca_get_dither_antialias_list(dither); 
     1187    int i; 
     1188    array_init(return_value); 
     1189    for(i = 0; list[i]; i += 1) 
     1190        add_next_index_string(return_value, (char*) list[i], 1); 
    11911191} 
    11921192 
    11931193PHP_FUNCTION(caca_get_dither_antialias) { 
    1194         zval *_zval; 
    1195         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
    1196                 RETURN_FALSE; 
    1197         } 
    1198         caca_dither_t *dither; 
    1199         ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
    1200         RETURN_STRING((char *) caca_get_dither_antialias(dither), 1); 
     1194    zval *_zval; 
     1195    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
     1196        RETURN_FALSE; 
     1197    } 
     1198    caca_dither_t *dither; 
     1199    ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
     1200    RETURN_STRING((char *) caca_get_dither_antialias(dither), 1); 
    12011201} 
    12021202 
    12031203PHP_FUNCTION(caca_set_dither_color) { 
    1204         zval *_zval; 
    1205         int str_len; 
    1206         char *str; 
    1207         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &_zval, &str, &str_len) == FAILURE) { 
    1208                 RETURN_FALSE; 
    1209         } 
    1210         caca_dither_t *dither; 
    1211         ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
    1212         RETURN_SUCCESS(caca_set_dither_color(dither, str)); 
     1204    zval *_zval; 
     1205    int str_len; 
     1206    char *str; 
     1207    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &_zval, &str, &str_len) == FAILURE) { 
     1208        RETURN_FALSE; 
     1209    } 
     1210    caca_dither_t *dither; 
     1211    ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
     1212    RETURN_SUCCESS(caca_set_dither_color(dither, str)); 
    12131213} 
    12141214 
    12151215PHP_FUNCTION(caca_get_dither_color_list) { 
    1216         zval *_zval; 
    1217         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
    1218                 RETURN_FALSE; 
    1219         } 
    1220         caca_dither_t *dither; 
    1221         ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
    1222  
    1223         char const * const *list = caca_get_dither_antialias_list(dither); 
    1224         int i; 
    1225         array_init(return_value); 
    1226         for(i = 0; list[i]; i += 2) 
    1227                 add_assoc_string(return_value, (char*) list[i], (char*) list[i + 1], 1); 
     1216    zval *_zval; 
     1217    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
     1218        RETURN_FALSE; 
     1219    } 
     1220    caca_dither_t *dither; 
     1221    ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
     1222 
     1223    char const * const *list = caca_get_dither_antialias_list(dither); 
     1224    int i; 
     1225    array_init(return_value); 
     1226    for(i = 0; list[i]; i += 2) 
     1227        add_assoc_string(return_value, (char*) list[i], (char*) list[i + 1], 1); 
    12281228} 
    12291229 
    12301230PHP_FUNCTION(caca_get_dither_color) { 
    1231         zval *_zval; 
    1232         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
    1233                 RETURN_FALSE; 
    1234         } 
    1235         caca_dither_t *dither; 
    1236         ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
    1237         RETURN_STRING((char *) caca_get_dither_color(dither), 1); 
     1231    zval *_zval; 
     1232    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
     1233        RETURN_FALSE; 
     1234    } 
     1235    caca_dither_t *dither; 
     1236    ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
     1237    RETURN_STRING((char *) caca_get_dither_color(dither), 1); 
    12381238} 
    12391239 
    12401240PHP_FUNCTION(caca_set_dither_charset) { 
    1241         zval *_zval; 
    1242         int str_len; 
    1243         char *str; 
    1244         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &_zval, &str, &str_len) == FAILURE) { 
    1245                 RETURN_FALSE; 
    1246         } 
    1247         caca_dither_t *dither; 
    1248         ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
    1249         RETURN_SUCCESS(caca_set_dither_charset(dither, str)); 
     1241    zval *_zval; 
     1242    int str_len; 
     1243    char *str; 
     1244    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &_zval, &str, &str_len) == FAILURE) { 
     1245        RETURN_FALSE; 
     1246    } 
     1247    caca_dither_t *dither; 
     1248    ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
     1249    RETURN_SUCCESS(caca_set_dither_charset(dither, str)); 
    12501250} 
    12511251 
    12521252PHP_FUNCTION(caca_get_dither_charset_list) { 
    1253         zval *_zval; 
    1254         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
    1255                 RETURN_FALSE; 
    1256         } 
    1257         caca_dither_t *dither; 
    1258         ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
    1259  
    1260         char const * const *list = caca_get_dither_charset_list(dither); 
    1261         int i; 
    1262         array_init(return_value); 
    1263         for(i = 0; list[i]; i += 2) 
    1264                 add_assoc_string(return_value, (char*) list[i], (char*) list[i + 1], 1); 
     1253    zval *_zval; 
     1254    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
     1255        RETURN_FALSE; 
     1256    } 
     1257    caca_dither_t *dither; 
     1258    ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
     1259 
     1260    char const * const *list = caca_get_dither_charset_list(dither); 
     1261    int i; 
     1262    array_init(return_value); 
     1263    for(i = 0; list[i]; i += 2) 
     1264        add_assoc_string(return_value, (char*) list[i], (char*) list[i + 1], 1); 
    12651265} 
    12661266 
    12671267PHP_FUNCTION(caca_get_dither_charset) { 
    1268         zval *_zval; 
    1269         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
    1270                 RETURN_FALSE; 
    1271         } 
    1272         caca_dither_t *dither; 
    1273         ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
    1274         RETURN_STRING((char *) caca_get_dither_charset(dither), 1); 
     1268    zval *_zval; 
     1269    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
     1270        RETURN_FALSE; 
     1271    } 
     1272    caca_dither_t *dither; 
     1273    ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
     1274    RETURN_STRING((char *) caca_get_dither_charset(dither), 1); 
    12751275} 
    12761276 
    12771277PHP_FUNCTION(caca_set_dither_algorithm) { 
    1278         zval *_zval; 
    1279         int str_len; 
    1280         char *str; 
    1281         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &_zval, &str, &str_len) == FAILURE) { 
    1282                 RETURN_FALSE; 
    1283         } 
    1284         caca_dither_t *dither; 
    1285         ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
    1286         RETURN_SUCCESS(caca_set_dither_algorithm(dither, str)); 
     1278    zval *_zval; 
     1279    int str_len; 
     1280    char *str; 
     1281    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &_zval, &str, &str_len) == FAILURE) { 
     1282        RETURN_FALSE; 
     1283    } 
     1284    caca_dither_t *dither; 
     1285    ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
     1286    RETURN_SUCCESS(caca_set_dither_algorithm(dither, str)); 
    12871287} 
    12881288 
    12891289PHP_FUNCTION(caca_get_dither_algorithm_list) { 
    1290         zval *_zval; 
    1291         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
    1292                 RETURN_FALSE; 
    1293         } 
    1294         caca_dither_t *dither; 
    1295         ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
    1296  
    1297         char const * const *list = caca_get_dither_algorithm_list(dither); 
    1298         int i; 
    1299         array_init(return_value); 
    1300         for(i = 0; list[i]; i += 2) 
    1301                 add_assoc_string(return_value, (char*) list[i], (char*) list[i + 1], 1); 
     1290    zval *_zval; 
     1291    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
     1292        RETURN_FALSE; 
     1293    } 
     1294    caca_dither_t *dither; 
     1295    ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
     1296 
     1297    char const * const *list = caca_get_dither_algorithm_list(dither); 
     1298    int i; 
     1299    array_init(return_value); 
     1300    for(i = 0; list[i]; i += 2) 
     1301        add_assoc_string(return_value, (char*) list[i], (char*) list[i + 1], 1); 
    13021302} 
    13031303 
    13041304PHP_FUNCTION(caca_get_dither_algorithm) { 
    1305         zval *_zval; 
    1306         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
    1307                 RETURN_FALSE; 
    1308         } 
    1309         caca_dither_t *dither; 
    1310         ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
    1311         RETURN_STRING((char *) caca_get_dither_algorithm(dither), 1); 
     1305    zval *_zval; 
     1306    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
     1307        RETURN_FALSE; 
     1308    } 
     1309    caca_dither_t *dither; 
     1310    ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
     1311    RETURN_STRING((char *) caca_get_dither_algorithm(dither), 1); 
    13121312} 
    13131313 
    13141314PHP_FUNCTION(caca_dither_bitmap) { 
    1315         zval *_zval1, *_zval2, *_zval3; 
    1316         long x, y, w, h = 0; 
    1317         zend_bool load_palette = 1; 
    1318         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllllrr|b", &_zval1, &x, &y, &w, &h, &_zval2, &_zval3, &load_palette) == FAILURE) { 
    1319                 RETURN_FALSE; 
    1320         } 
    1321  
    1322         caca_canvas_t *canvas; 
    1323         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval1, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    1324         caca_dither_t *dither; 
    1325         ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval2, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
     1315    zval *_zval1, *_zval2, *_zval3; 
     1316    long x, y, w, h = 0; 
     1317    zend_bool load_palette = 1; 
     1318    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllllrr|b", &_zval1, &x, &y, &w, &h, &_zval2, &_zval3, &load_palette) == FAILURE) { 
     1319        RETURN_FALSE; 
     1320    } 
     1321 
     1322    caca_canvas_t *canvas; 
     1323    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval1, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     1324    caca_dither_t *dither; 
     1325    ZEND_FETCH_RESOURCE(dither, caca_dither_t*, &_zval2, -1, PHP_CACA_DITHER_RES_NAME, le_caca_dither); 
    13261326 
    13271327#ifdef HAVE_GD 
    1328         gdImage *img = fetch_external_resource(_zval3, "gd"); 
    1329         if (!img) { 
    1330                 RETURN_FALSE; 
    1331         } 
    1332  
    1333         void *pixels = gd_get_pixels(img); 
    1334         if (!pixels) { 
    1335                 RETURN_FALSE; 
    1336         } 
    1337  
    1338         //load palette if image is not true color 
    1339         if (load_palette && !img->trueColor && gd_load_palette(img, dither) != 0) { 
    1340                 free(pixels); 
    1341                 RETURN_FALSE; 
    1342         } 
    1343  
    1344         caca_dither_bitmap(canvas, x, y, w, h, dither, pixels); 
    1345         free(pixels); 
    1346         RETURN_TRUE; 
     1328    gdImage *img = fetch_external_resource(_zval3, "gd"); 
     1329    if (!img) { 
     1330        RETURN_FALSE; 
     1331    } 
     1332 
     1333    void *pixels = gd_get_pixels(img); 
     1334    if (!pixels) { 
     1335        RETURN_FALSE; 
     1336    } 
     1337 
     1338    //load palette if image is not true color 
     1339    if (load_palette && !img->trueColor && gd_load_palette(img, dither) != 0) { 
     1340        free(pixels); 
     1341        RETURN_FALSE; 
     1342    } 
     1343 
     1344    caca_dither_bitmap(canvas, x, y, w, h, dither, pixels); 
     1345    free(pixels); 
     1346    RETURN_TRUE; 
    13471347#else 
    1348         RETURN_FALSE; 
     1348    RETURN_FALSE; 
    13491349#endif 
    13501350} 
    13511351 
    13521352PHP_FUNCTION(caca_load_font) { 
    1353         char *str; 
    1354         long str_len; 
    1355         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) == FAILURE) { 
    1356                 RETURN_FALSE; 
    1357         } 
    1358         caca_font_t *font = caca_load_font(str, str_len); 
    1359         if (!font) { 
    1360                 RETURN_FALSE; 
    1361         } 
    1362         ZEND_REGISTER_RESOURCE(return_value, font, le_caca_font); 
     1353    char *str; 
     1354    long str_len; 
     1355    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) == FAILURE) { 
     1356        RETURN_FALSE; 
     1357    } 
     1358    caca_font_t *font = caca_load_font(str, str_len); 
     1359    if (!font) { 
     1360        RETURN_FALSE; 
     1361    } 
     1362    ZEND_REGISTER_RESOURCE(return_value, font, le_caca_font); 
    13631363} 
    13641364 
    13651365PHP_FUNCTION(caca_load_builtin_font) { 
    1366         char *str; 
    1367         long str_len; 
    1368         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) == FAILURE) { 
    1369                 RETURN_FALSE; 
    1370         } 
    1371         caca_font_t *font = caca_load_font(str, 0); 
    1372         if (!font) { 
    1373                 RETURN_FALSE; 
    1374         } 
    1375         ZEND_REGISTER_RESOURCE(return_value, font, le_caca_font); 
     1366    char *str; 
     1367    long str_len; 
     1368    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) == FAILURE) { 
     1369        RETURN_FALSE; 
     1370    } 
     1371    caca_font_t *font = caca_load_font(str, 0); 
     1372    if (!font) { 
     1373        RETURN_FALSE; 
     1374    } 
     1375    ZEND_REGISTER_RESOURCE(return_value, font, le_caca_font); 
    13761376} 
    13771377 
    13781378PHP_FUNCTION(caca_get_font_list) { 
    1379         if (ZEND_NUM_ARGS() != 0) { 
    1380                 WRONG_PARAM_COUNT; 
    1381         } 
    1382         char const * const *list = caca_get_font_list(); 
    1383         int i; 
    1384         array_init(return_value); 
    1385         for(i = 0; list[i]; i += 1) 
    1386                 add_next_index_string(return_value, (char*) list[i], 1); 
     1379    if (ZEND_NUM_ARGS() != 0) { 
     1380        WRONG_PARAM_COUNT; 
     1381    } 
     1382    char const * const *list = caca_get_font_list(); 
     1383    int i; 
     1384    array_init(return_value); 
     1385    for(i = 0; list[i]; i += 1) 
     1386        add_next_index_string(return_value, (char*) list[i], 1); 
    13871387} 
    13881388 
    13891389PHP_FUNCTION(caca_get_font_width) { 
    1390         zval *_zval; 
    1391         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
    1392                 RETURN_FALSE; 
    1393         } 
    1394         caca_font_t *font; 
    1395         ZEND_FETCH_RESOURCE(font, caca_font_t*, &_zval, -1, PHP_CACA_FONT_RES_NAME, le_caca_font); 
    1396         RETURN_LONG(caca_get_font_width(font)); 
     1390    zval *_zval; 
     1391    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
     1392        RETURN_FALSE; 
     1393    } 
     1394    caca_font_t *font; 
     1395    ZEND_FETCH_RESOURCE(font, caca_font_t*, &_zval, -1, PHP_CACA_FONT_RES_NAME, le_caca_font); 
     1396    RETURN_LONG(caca_get_font_width(font)); 
    13971397} 
    13981398 
    13991399PHP_FUNCTION(caca_get_font_height) { 
    1400         zval *_zval; 
    1401         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
    1402                 RETURN_FALSE; 
    1403         } 
    1404         caca_font_t *font; 
    1405         ZEND_FETCH_RESOURCE(font, caca_font_t*, &_zval, -1, PHP_CACA_FONT_RES_NAME, le_caca_font); 
    1406         RETURN_LONG(caca_get_font_height(font)); 
     1400    zval *_zval; 
     1401    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
     1402        RETURN_FALSE; 
     1403    } 
     1404    caca_font_t *font; 
     1405    ZEND_FETCH_RESOURCE(font, caca_font_t*, &_zval, -1, PHP_CACA_FONT_RES_NAME, le_caca_font); 
     1406    RETURN_LONG(caca_get_font_height(font)); 
    14071407} 
    14081408 
    14091409PHP_FUNCTION(caca_get_font_blocks) { 
    1410         zval *_zval; 
    1411         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
    1412                 RETURN_FALSE; 
    1413         } 
    1414         caca_font_t *font; 
    1415         ZEND_FETCH_RESOURCE(font, caca_font_t*, &_zval, -1, PHP_CACA_FONT_RES_NAME, le_caca_font); 
    1416  
    1417         uint32_t const *list = caca_get_font_blocks(font); 
    1418  
    1419         int i; 
    1420         array_init(return_value); 
    1421         for(i = 0; list[i]; i += 1) 
    1422                 add_next_index_long(return_value, list[i]); 
     1410    zval *_zval; 
     1411    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
     1412        RETURN_FALSE; 
     1413    } 
     1414    caca_font_t *font; 
     1415    ZEND_FETCH_RESOURCE(font, caca_font_t*, &_zval, -1, PHP_CACA_FONT_RES_NAME, le_caca_font); 
     1416 
     1417    uint32_t const *list = caca_get_font_blocks(font); 
     1418 
     1419    int i; 
     1420    array_init(return_value); 
     1421    for(i = 0; list[i]; i += 1) 
     1422        add_next_index_long(return_value, list[i]); 
    14231423} 
    14241424 
    14251425PHP_FUNCTION(caca_render_canvas) { 
    1426         zval *_zval1, *_zval2, *_zval3; 
    1427         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrr", &_zval1, &_zval2, &_zval3) == FAILURE) { 
    1428                 RETURN_FALSE; 
    1429         } 
    1430         caca_canvas_t *canvas; 
    1431         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval1, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    1432         caca_font_t *font; 
    1433         ZEND_FETCH_RESOURCE(font, caca_font_t*, &_zval2, -1, PHP_CACA_FONT_RES_NAME, le_caca_font); 
     1426    zval *_zval1, *_zval2, *_zval3; 
     1427    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrr", &_zval1, &_zval2, &_zval3) == FAILURE) { 
     1428        RETURN_FALSE; 
     1429    } 
     1430    caca_canvas_t *canvas; 
     1431    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval1, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     1432    caca_font_t *font; 
     1433    ZEND_FETCH_RESOURCE(font, caca_font_t*, &_zval2, -1, PHP_CACA_FONT_RES_NAME, le_caca_font); 
    14341434 
    14351435#ifdef HAVE_GD 
    1436         gdImage *img = fetch_external_resource(_zval3, "gd"); 
    1437         if (!img || !img->trueColor) { 
    1438                 RETURN_FALSE; 
    1439         } 
    1440  
    1441         int pitch = img->sx * 4; 
    1442         uint8_t *buffer = malloc(pitch * img->sy); 
    1443         if (!buffer) { 
    1444                 RETURN_FALSE; 
    1445         } 
    1446  
    1447         caca_render_canvas(canvas, font, (void *) buffer, img->sx, img->sy, pitch); 
    1448         int i, j; 
    1449         for (i = 0; i < img->sy; i++) { 
    1450                 for (j = 0; j < img->sx; j++) { 
    1451                         uint8_t *src = buffer + i * pitch + j * 4; 
    1452                         img->tpixels[i][j] = ((int) src[3]) | (((int) src[2]) << 8) | (((int) src[1]) << 16) | (((255 - (int) src[0]) & 0xfe) << 23); 
    1453                 } 
    1454         } 
    1455  
    1456         free(buffer); 
    1457         RETURN_TRUE; 
     1436    gdImage *img = fetch_external_resource(_zval3, "gd"); 
     1437    if (!img || !img->trueColor) { 
     1438        RETURN_FALSE; 
     1439    } 
     1440 
     1441    int pitch = img->sx * 4; 
     1442    uint8_t *buffer = malloc(pitch * img->sy); 
     1443    if (!buffer) { 
     1444        RETURN_FALSE; 
     1445    } 
     1446 
     1447    caca_render_canvas(canvas, font, (void *) buffer, img->sx, img->sy, pitch); 
     1448    int i, j; 
     1449    for (i = 0; i < img->sy; i++) { 
     1450        for (j = 0; j < img->sx; j++) { 
     1451            uint8_t *src = buffer + i * pitch + j * 4; 
     1452            img->tpixels[i][j] = ((int) src[3]) | (((int) src[2]) << 8) | (((int) src[1]) << 16) | (((255 - (int) src[0]) & 0xfe) << 23); 
     1453        } 
     1454    } 
     1455 
     1456    free(buffer); 
     1457    RETURN_TRUE; 
    14581458#else 
    1459         RETURN_FALSE; 
     1459    RETURN_FALSE; 
    14601460#endif 
    14611461} 
    14621462 
    14631463PHP_FUNCTION(caca_canvas_set_figfont) { 
    1464         zval *_zval; 
    1465         char *font; 
    1466         long font_len; 
    1467         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &_zval, &font, &font_len) == FAILURE) { 
    1468                 RETURN_FALSE; 
    1469         } 
    1470         caca_canvas_t *canvas; 
    1471         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    1472         RETURN_SUCCESS(caca_canvas_set_figfont(canvas, font)); 
     1464    zval *_zval; 
     1465    char *font; 
     1466    long font_len; 
     1467    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &_zval, &font, &font_len) == FAILURE) { 
     1468        RETURN_FALSE; 
     1469    } 
     1470    caca_canvas_t *canvas; 
     1471    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     1472    RETURN_SUCCESS(caca_canvas_set_figfont(canvas, font)); 
    14731473} 
    14741474 
    14751475PHP_FUNCTION(caca_put_figchar) { 
    1476         zval *_zval; 
    1477         long c; 
    1478         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &_zval, &c) == FAILURE) { 
    1479                 RETURN_FALSE; 
    1480         } 
    1481         caca_canvas_t *canvas; 
    1482         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    1483  
    1484         RETURN_SUCCESS(caca_put_figchar(canvas, c)); 
     1476    zval *_zval; 
     1477    long c; 
     1478    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &_zval, &c) == FAILURE) { 
     1479        RETURN_FALSE; 
     1480    } 
     1481    caca_canvas_t *canvas; 
     1482    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     1483 
     1484    RETURN_SUCCESS(caca_put_figchar(canvas, c)); 
    14851485} 
    14861486 
    14871487PHP_FUNCTION(caca_flush_figlet) { 
    1488         zval *_zval; 
    1489         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
    1490                 RETURN_FALSE; 
    1491         } 
    1492         caca_canvas_t *canvas; 
    1493         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    1494         RETURN_SUCCESS(caca_flush_figlet(canvas)); 
     1488    zval *_zval; 
     1489    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
     1490        RETURN_FALSE; 
     1491    } 
     1492    caca_canvas_t *canvas; 
     1493    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     1494    RETURN_SUCCESS(caca_flush_figlet(canvas)); 
    14951495} 
    14961496 
    14971497PHP_FUNCTION(caca_file_open) { 
    1498         char *path, *mode; 
    1499         long path_len, mode_len; 
    1500         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &path, &path_len, &mode, &mode_len) == FAILURE) { 
    1501                 RETURN_FALSE; 
    1502         } 
    1503         caca_file_t *file = caca_file_open(path, mode); 
    1504         if (!file) { 
    1505                 RETURN_FALSE; 
    1506         } 
    1507         ZEND_REGISTER_RESOURCE(return_value, file, le_caca_file); 
     1498    char *path, *mode; 
     1499    long path_len, mode_len; 
     1500    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &path, &path_len, &mode, &mode_len) == FAILURE) { 
     1501        RETURN_FALSE; 
     1502    } 
     1503    caca_file_t *file = caca_file_open(path, mode); 
     1504    if (!file) { 
     1505        RETURN_FALSE; 
     1506    } 
     1507    ZEND_REGISTER_RESOURCE(return_value, file, le_caca_file); 
    15081508} 
    15091509 
    15101510PHP_FUNCTION(caca_file_close) { 
    1511         zval *_zval; 
    1512         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
    1513                 RETURN_FALSE; 
    1514         } 
    1515         caca_file_t *file; 
    1516         ZEND_FETCH_RESOURCE(file, caca_file_t*, &_zval, -1, PHP_CACA_FILE_RES_NAME, le_caca_file); 
    1517  
    1518         int res = caca_file_close(file); 
    1519  
    1520         //Delete php resource 
    1521         zend_list_delete(_zval->value.lval); 
    1522         RETURN_SUCCESS(res); 
     1511    zval *_zval; 
     1512    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
     1513        RETURN_FALSE; 
     1514    } 
     1515    caca_file_t *file; 
     1516    ZEND_FETCH_RESOURCE(file, caca_file_t*, &_zval, -1, PHP_CACA_FILE_RES_NAME, le_caca_file); 
     1517 
     1518    int res = caca_file_close(file); 
     1519 
     1520    //Delete php resource 
     1521    zend_list_delete(_zval->value.lval); 
     1522    RETURN_SUCCESS(res); 
    15231523} 
    15241524 
    15251525PHP_FUNCTION(caca_file_tell) { 
    1526         zval *_zval; 
    1527         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
    1528                 RETURN_FALSE; 
    1529         } 
    1530         caca_file_t *file; 
    1531         ZEND_FETCH_RESOURCE(file, caca_file_t*, &_zval, -1, PHP_CACA_FILE_RES_NAME, le_caca_file); 
    1532         RETURN_LONG(caca_file_tell(file)); 
     1526    zval *_zval; 
     1527    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
     1528        RETURN_FALSE; 
     1529    } 
     1530    caca_file_t *file; 
     1531    ZEND_FETCH_RESOURCE(file, caca_file_t*, &_zval, -1, PHP_CACA_FILE_RES_NAME, le_caca_file); 
     1532    RETURN_LONG(caca_file_tell(file)); 
    15331533} 
    15341534 
    15351535PHP_FUNCTION(caca_file_read) { 
    1536         zval *_zval; 
    1537         long len; 
    1538         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &_zval, &len) == FAILURE) { 
    1539                 RETURN_FALSE; 
    1540         } 
    1541         caca_file_t *file; 
    1542         ZEND_FETCH_RESOURCE(file, caca_file_t*, &_zval, -1, PHP_CACA_FILE_RES_NAME, le_caca_file); 
    1543  
    1544         if (len < 1) { 
    1545                 RETURN_FALSE; 
    1546         } 
    1547         char *buffer = emalloc(len); 
    1548         if (!buffer) { 
    1549                 RETURN_FALSE; 
    1550         } 
    1551         caca_file_read(file, buffer, len); 
    1552  
    1553         RETURN_STRINGL(buffer, len, 1); 
     1536    zval *_zval; 
     1537    long len; 
     1538    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &_zval, &len) == FAILURE) { 
     1539        RETURN_FALSE; 
     1540    } 
     1541    caca_file_t *file; 
     1542    ZEND_FETCH_RESOURCE(file, caca_file_t*, &_zval, -1, PHP_CACA_FILE_RES_NAME, le_caca_file); 
     1543 
     1544    if (len < 1) { 
     1545        RETURN_FALSE; 
     1546    } 
     1547    char *buffer = emalloc(len); 
     1548    if (!buffer) { 
     1549        RETURN_FALSE; 
     1550    } 
     1551    caca_file_read(file, buffer, len); 
     1552 
     1553    RETURN_STRINGL(buffer, len, 1); 
    15541554} 
    15551555 
    15561556PHP_FUNCTION(caca_file_write) { 
    1557         zval *_zval; 
    1558         char *buf; 
    1559         long buf_len = 0; 
    1560         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &_zval, &buf, &buf_len) == FAILURE) { 
    1561                 RETURN_FALSE; 
    1562         } 
    1563         caca_file_t *file; 
    1564         ZEND_FETCH_RESOURCE(file, caca_file_t*, &_zval, -1, PHP_CACA_FILE_RES_NAME, le_caca_file); 
    1565         RETURN_LONG(caca_file_write(file, buf, buf_len)); 
     1557    zval *_zval; 
     1558    char *buf; 
     1559    long buf_len = 0; 
     1560    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &_zval, &buf, &buf_len) == FAILURE) { 
     1561        RETURN_FALSE; 
     1562    } 
     1563    caca_file_t *file; 
     1564    ZEND_FETCH_RESOURCE(file, caca_file_t*, &_zval, -1, PHP_CACA_FILE_RES_NAME, le_caca_file); 
     1565    RETURN_LONG(caca_file_write(file, buf, buf_len)); 
    15661566} 
    15671567 
    15681568PHP_FUNCTION(caca_file_gets) { 
    1569         zval *_zval; 
    1570         long len = 0; 
    1571         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &_zval, &len) == FAILURE) { 
    1572                 RETURN_FALSE; 
    1573         } 
    1574         caca_file_t *file; 
    1575         ZEND_FETCH_RESOURCE(file, caca_file_t*, &_zval, -1, PHP_CACA_FILE_RES_NAME, le_caca_file); 
    1576  
    1577         if (len < 1) { 
    1578                 RETURN_FALSE; 
    1579         } 
    1580         char *buffer = emalloc(len); 
    1581         if (!buffer) { 
    1582                 RETURN_FALSE; 
    1583         } 
    1584         char *result = caca_file_gets(file, buffer, len); 
    1585         if (!result) { 
    1586                 RETURN_FALSE; 
    1587         } 
    1588         RETURN_STRINGL(result, len, 1); 
     1569    zval *_zval; 
     1570    long len = 0; 
     1571    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &_zval, &len) == FAILURE) { 
     1572        RETURN_FALSE; 
     1573    } 
     1574    caca_file_t *file; 
     1575    ZEND_FETCH_RESOURCE(file, caca_file_t*, &_zval, -1, PHP_CACA_FILE_RES_NAME, le_caca_file); 
     1576 
     1577    if (len < 1) { 
     1578        RETURN_FALSE; 
     1579    } 
     1580    char *buffer = emalloc(len); 
     1581    if (!buffer) { 
     1582        RETURN_FALSE; 
     1583    } 
     1584    char *result = caca_file_gets(file, buffer, len); 
     1585    if (!result) { 
     1586        RETURN_FALSE; 
     1587    } 
     1588    RETURN_STRINGL(result, len, 1); 
    15891589} 
    15901590 
    15911591PHP_FUNCTION(caca_file_eof) { 
    1592         zval *_zval; 
    1593         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
    1594                 RETURN_FALSE; 
    1595         } 
    1596         caca_file_t *file; 
    1597         ZEND_FETCH_RESOURCE(file, caca_file_t*, &_zval, -1, PHP_CACA_FILE_RES_NAME, le_caca_file); 
    1598         RETURN_BOOL(caca_file_eof(file) != 0); 
     1592    zval *_zval; 
     1593    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
     1594        RETURN_FALSE; 
     1595    } 
     1596    caca_file_t *file; 
     1597    ZEND_FETCH_RESOURCE(file, caca_file_t*, &_zval, -1, PHP_CACA_FILE_RES_NAME, le_caca_file); 
     1598    RETURN_BOOL(caca_file_eof(file) != 0); 
    15991599} 
    16001600 
    16011601PHP_FUNCTION(caca_import_string) { 
    1602         zval *_zval; 
    1603         char *src, *format; 
    1604         long src_len, format_len = 0; 
    1605         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss", &_zval, &src, &src_len, &format, &format_len) == FAILURE) { 
    1606                 RETURN_FALSE; 
    1607         } 
    1608         caca_canvas_t *canvas; 
    1609         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    1610  
    1611         RETURN_LONG(caca_import_canvas_from_memory(canvas, src, src_len, format)); 
     1602    zval *_zval; 
     1603    char *src, *format; 
     1604    long src_len, format_len = 0; 
     1605    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss", &_zval, &src, &src_len, &format, &format_len) == FAILURE) { 
     1606        RETURN_FALSE; 
     1607    } 
     1608    caca_canvas_t *canvas; 
     1609    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     1610 
     1611    RETURN_LONG(caca_import_canvas_from_memory(canvas, src, src_len, format)); 
    16121612} 
    16131613 
    16141614PHP_FUNCTION(caca_import_file) { 
    1615         zval *_zval; 
    1616         char *filename, *format; 
    1617         long filename_len, format_len = 0; 
    1618         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss", &_zval, &filename, &filename_len, &format, &format_len) == FAILURE) { 
    1619                 RETURN_FALSE; 
    1620         } 
    1621         caca_canvas_t *canvas; 
    1622         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    1623  
    1624         RETURN_LONG(caca_import_canvas_from_file(canvas, filename, format)); 
     1615    zval *_zval; 
     1616    char *filename, *format; 
     1617    long filename_len, format_len = 0; 
     1618    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss", &_zval, &filename, &filename_len, &format, &format_len) == FAILURE) { 
     1619        RETURN_FALSE; 
     1620    } 
     1621    caca_canvas_t *canvas; 
     1622    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     1623 
     1624    RETURN_LONG(caca_import_canvas_from_file(canvas, filename, format)); 
    16251625} 
    16261626 
    16271627PHP_FUNCTION(caca_get_import_list) { 
    1628         if (ZEND_NUM_ARGS() != 0) { 
    1629                 WRONG_PARAM_COUNT; 
    1630         } 
    1631         char const * const *list = caca_get_import_list(); 
    1632         int i; 
    1633         array_init(return_value); 
    1634         for(i = 0; list[i]; i += 2) 
    1635                 add_assoc_string(return_value, (char*) list[i], (char*) list[i + 1], 1); 
     1628    if (ZEND_NUM_ARGS() != 0) { 
     1629        WRONG_PARAM_COUNT; 
     1630    } 
     1631    char const * const *list = caca_get_import_list(); 
     1632    int i; 
     1633    array_init(return_value); 
     1634    for(i = 0; list[i]; i += 2) 
     1635        add_assoc_string(return_value, (char*) list[i], (char*) list[i + 1], 1); 
    16361636} 
    16371637 
    16381638PHP_FUNCTION(caca_export_string) { 
    1639         zval *_zval; 
    1640         char *type; 
    1641         long type_len; 
    1642         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &_zval, &type, &type_len) == FAILURE) { 
    1643                 RETURN_FALSE; 
    1644         } 
    1645         caca_canvas_t *canvas; 
    1646         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    1647  
    1648         void *buffer; 
    1649         size_t len = 0; 
    1650         buffer = caca_export_canvas_to_memory(canvas, type, &len); 
    1651         if (!buffer) { 
    1652                 RETURN_FALSE; 
    1653         } 
    1654  
    1655         RETVAL_STRINGL((char*) buffer, len, 1); 
    1656         free(buffer); 
     1639    zval *_zval; 
     1640    char *type; 
     1641    long type_len; 
     1642    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &_zval, &type, &type_len) == FAILURE) { 
     1643        RETURN_FALSE; 
     1644    } 
     1645    caca_canvas_t *canvas; 
     1646    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     1647 
     1648    void *buffer; 
     1649    size_t len = 0; 
     1650    buffer = caca_export_canvas_to_memory(canvas, type, &len); 
     1651    if (!buffer) { 
     1652        RETURN_FALSE; 
     1653    } 
     1654 
     1655    RETVAL_STRINGL((char*) buffer, len, 1); 
     1656    free(buffer); 
    16571657} 
    16581658 
    16591659PHP_FUNCTION(caca_get_export_list) { 
    1660         if (ZEND_NUM_ARGS() != 0) { 
    1661                 WRONG_PARAM_COUNT; 
    1662         } 
    1663         char const * const *list = caca_get_export_list(); 
    1664         int i; 
    1665         array_init(return_value); 
    1666         for(i = 0; list[i]; i += 2) 
    1667                 add_assoc_string(return_value, (char*) list[i], (char*) list[i + 1], 1); 
     1660    if (ZEND_NUM_ARGS() != 0) { 
     1661        WRONG_PARAM_COUNT; 
     1662    } 
     1663    char const * const *list = caca_get_export_list(); 
     1664    int i; 
     1665    array_init(return_value); 
     1666    for(i = 0; list[i]; i += 2) 
     1667        add_assoc_string(return_value, (char*) list[i], (char*) list[i + 1], 1); 
    16681668} 
    16691669 
    16701670PHP_FUNCTION(caca_create_display) { 
    1671         caca_canvas_t *canvas; 
    1672         FETCH_CANVAS(canvas); 
    1673  
    1674         caca_display_t *display = caca_create_display(canvas); 
    1675         if (!display) { 
    1676                 RETURN_FALSE; 
    1677         } 
    1678         ZEND_REGISTER_RESOURCE(return_value, display, le_caca_display); 
     1671    caca_canvas_t *canvas; 
     1672    FETCH_CANVAS(canvas); 
     1673 
     1674    caca_display_t *display = caca_create_display(canvas); 
     1675    if (!display) { 
     1676        RETURN_FALSE; 
     1677    } 
     1678    ZEND_REGISTER_RESOURCE(return_value, display, le_caca_display); 
    16791679} 
    16801680 
    16811681PHP_FUNCTION(caca_create_display_with_driver) { 
    1682         zval *_zval; 
    1683         char *str; 
    1684         long str_len = 0; 
    1685         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &_zval, &str, &str_len) == FAILURE) { 
    1686                 RETURN_FALSE; 
    1687         } 
    1688         caca_canvas_t *canvas; 
    1689         ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
    1690  
    1691         caca_display_t *display = caca_create_display_with_driver(canvas, str); 
    1692         if (!display) { 
    1693                 RETURN_FALSE; 
    1694         } 
    1695         ZEND_REGISTER_RESOURCE(return_value, display, le_caca_display); 
     1682    zval *_zval; 
     1683    char *str; 
     1684    long str_len = 0; 
     1685    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &_zval, &str, &str_len) == FAILURE) { 
     1686        RETURN_FALSE; 
     1687    } 
     1688    caca_canvas_t *canvas; 
     1689    ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 
     1690 
     1691    caca_display_t *display = caca_create_display_with_driver(canvas, str); 
     1692    if (!display) { 
     1693        RETURN_FALSE; 
     1694    } 
     1695    ZEND_REGISTER_RESOURCE(return_value, display, le_caca_display); 
    16961696} 
    16971697 
    16981698PHP_FUNCTION(caca_get_display_driver_list) { 
    1699         if (ZEND_NUM_ARGS() != 0) { 
    1700                 WRONG_PARAM_COUNT; 
    1701         } 
    1702         char const * const *list = caca_get_display_driver_list(); 
    1703         int i; 
    1704         array_init(return_value); 
    1705         for(i = 0; list[i]; i += 2) 
    1706                 add_assoc_string(return_value, (char*) list[i], (char*) list[i + 1], 1); 
     1699    if (ZEND_NUM_ARGS() != 0) { 
     1700        WRONG_PARAM_COUNT; 
     1701    } 
     1702    char const * const *list = caca_get_display_driver_list(); 
     1703    int i; 
     1704    array_init(return_value); 
     1705    for(i = 0; list[i]; i += 2) 
     1706        add_assoc_string(return_value, (char*) list[i], (char*) list[i + 1], 1); 
    17071707} 
    17081708 
    17091709PHP_FUNCTION(caca_get_display_driver) { 
    1710         zval *_zval; 
    1711         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
    1712                 RETURN_FALSE; 
    1713         } 
    1714         caca_display_t *display; 
    1715         ZEND_FETCH_RESOURCE(display, caca_display_t*, &_zval, -1, PHP_CACA_DISPLAY_RES_NAME, le_caca_display); 
    1716         RETURN_STRING((char *) caca_get_display_driver(display), 1); 
     1710    zval *_zval; 
     1711    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
     1712        RETURN_FALSE; 
     1713    } 
     1714    caca_display_t *display; 
     1715    ZEND_FETCH_RESOURCE(display, caca_display_t*, &_zval, -1, PHP_CACA_DISPLAY_RES_NAME, le_caca_display); 
     1716    RETURN_STRING((char *) caca_get_display_driver(display), 1); 
    17171717} 
    17181718 
    17191719PHP_FUNCTION(caca_set_display_driver) { 
    1720         zval *_zval; 
    1721         char *str; 
    1722         long str_len; 
    1723         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &_zval, &str, &str_len) == FAILURE) { 
    1724                 RETURN_FALSE; 
    1725         } 
    1726         caca_display_t *display; 
    1727         ZEND_FETCH_RESOURCE(display, caca_display_t*, &_zval, -1, PHP_CACA_DISPLAY_RES_NAME, le_caca_display); 
    1728         RETURN_SUCESS(caca_set_display_driver(display, str)); 
     1720    zval *_zval; 
     1721    char *str; 
     1722    long str_len; 
     1723    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &_zval, &str, &str_len) == FAILURE) { 
     1724        RETURN_FALSE; 
     1725    } 
     1726    caca_display_t *display; 
     1727    ZEND_FETCH_RESOURCE(display, caca_display_t*, &_zval, -1, PHP_CACA_DISPLAY_RES_NAME, le_caca_display); 
     1728    RETURN_SUCESS(caca_set_display_driver(display, str)); 
    17291729} 
    17301730 
    17311731PHP_FUNCTION(caca_get_canvas) { 
    1732         zval *_zval; 
    1733         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
    1734                 RETURN_FALSE; 
    1735         } 
    1736         caca_display_t *display; 
    1737         ZEND_FETCH_RESOURCE(display, caca_display_t*, &_zval, -1, PHP_CACA_DISPLAY_RES_NAME, le_caca_display); 
    1738         caca_canvas_t *canvas = caca_get_canvas(display); 
    1739         if (!canvas) { 
    1740                 RETURN_FALSE; 
    1741         } 
    1742         ZEND_REGISTER_RESOURCE(return_value, canvas, le_caca_canvas); 
     1732    zval *_zval; 
     1733    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { 
     1734        RETURN_FALSE; 
     1735    } 
     1736    caca_display_t *display; 
     1737    ZEND_FETCH_RESOURCE(display, caca_display_t*, &_zval, -1, PHP_CACA_DISPLAY_RES_NAME, le_caca_display); 
     1738    caca_canvas_t *canvas = caca_get_canvas(display); 
     1739    if (!canvas) { 
     1740        RETURN_FALSE; 
     1741    } 
     1742    ZEND_REGISTER_RESOURCE(return_value, canvas, le_caca_canvas); 
    17431743} 
    17441744 
    17451745PHP_FUNCTION(caca_refresh_display) { 
    1746         caca_display_t *display; 
    1747         FETCH_DISPLAY(display); 
    1748         RETURN_SUCCESS(caca_refresh_display(display)); 
     1746    caca_display_t *display; 
     1747    FETCH_DISPLAY(display); 
     1748    RETURN_SUCCESS(caca_refresh_display(display)); 
    17491749} 
    17501750 
    17511751PHP_FUNCTION(caca_set_display_time) { 
    1752         zval *_zval; 
    1753         long value = 0; 
    1754         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &_zval, &value) == FAILURE) { 
    1755                 RETURN_FALSE; 
    1756         } 
    1757         caca_display_t *display; 
    1758         ZEND_FETCH_RESOURCE(display, caca_display_t*, &_zval, -1, PHP_CACA_DISPLAY_RES_NAME, le_caca_display); 
    1759         RETURN_SUCCESS(caca_set_display_time(display, value)); 
     1752    zval *_zval; 
     1753    long value = 0; 
     1754    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &_zval, &value) == FAILURE) { 
     1755        RETURN_FALSE; 
     1756    } 
     1757    caca_display_t *display; 
     1758    ZEND_FETCH_RESOURCE(display, caca_display_t*, &_zval, -1, PHP_CACA_DISPLAY_RES_NAME, le_caca_display); 
     1759    RETURN_SUCCESS(caca_set_display_time(display, value)); 
    17601760} 
    17611761 
    17621762PHP_FUNCTION(caca_get_display_time) { 
    1763         caca_display_t *display; 
    1764         FETCH_DISPLAY(display); 
    1765         RETURN_LONG(caca_get_display_time(display)); 
     1763    caca_display_t *display; 
     1764    FETCH_DISPLAY(display); 
     1765    RETURN_LONG(caca_get_display_time(display)); 
    17661766} 
    17671767 
    17681768PHP_FUNCTION(caca_get_display_width) { 
    1769         caca_display_t *display; 
    1770         FETCH_DISPLAY(display); 
    1771         RETURN_LONG(caca_get_display_width(display)); 
     1769    caca_display_t *display; 
     1770    FETCH_DISPLAY(display); 
     1771    RETURN_LONG(caca_get_display_width(display)); 
    17721772} 
    17731773 
    17741774PHP_FUNCTION(caca_get_display_height) { 
    1775         caca_display_t *display; 
    1776         FETCH_DISPLAY(display); 
    1777         RETURN_LONG(caca_get_display_height(display)); 
     1775    caca_display_t *display; 
     1776    FETCH_DISPLAY(display); 
     1777    RETURN_LONG(caca_get_display_height(display)); 
    17781778} 
    17791779 
    17801780PHP_FUNCTION(caca_set_display_title) { 
    1781         zval *_zval; 
    1782         char *str; 
    1783         long str_len = 0; 
    1784         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &_zval, &str, &str_len) == FAILURE) { 
    1785                 RETURN_FALSE; 
    1786         } 
    1787         caca_display_t *display; 
    1788         ZEND_FETCH_RESOURCE(display, caca_display_t*, &_zval, -1, PHP_CACA_DISPLAY_RES_NAME, le_caca_display); 
    1789         RETURN_SUCCESS(caca_set_display_title(display, str)); 
     1781    zval *_zval; 
     1782    char *str; 
     1783    long str_len = 0; 
     1784    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &_zval, &str, &str_len) == FAILURE) { 
     1785        RETURN_FALSE; 
     1786    } 
     1787    caca_display_t *display; 
     1788    ZEND_FETCH_RESOURCE(display, caca_display_t*, &_zval, -1, PHP_CACA_DISPLAY_RES_NAME, le_caca_display); 
     1789    RETURN_SUCCESS(caca_set_display_title(display, str)); 
    17901790} 
    17911791 
    17921792PHP_FUNCTION(caca_set_mouse) { 
    1793         zval *_zval; 
    1794         long value = 0; 
    1795         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &_zval, &value) == FAILURE) { 
    1796                 RETURN_FALSE; 
    1797         } 
    1798         caca_display_t *display; 
    1799         ZEND_FETCH_RESOURCE(display, caca_display_t*, &_zval, -1, PHP_CACA_DISPLAY_RES_NAME, le_caca_display); 
    1800         RETURN_SUCCESS(caca_set_mouse(display, value)); 
     1793    zval *_zval; 
     1794    long value = 0; 
     1795    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &_zval, &value) == FAILURE) { 
     1796        RETURN_FALSE; 
     1797    } 
     1798    caca_display_t *display; 
     1799    ZEND_FETCH_RESOURCE(display, caca_display_t*, &_zval, -1, PHP_CACA_DISPLAY_RES_NAME, le_caca_display); 
     1800    RETURN_SUCCESS(caca_set_mouse(display, value)); 
    18011801} 
    18021802 
    18031803PHP_FUNCTION(caca_set_cursor) { 
    1804         zval *_zval; 
    1805         long value = 0; 
    1806         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &_zval, &value) == FAILURE) { 
    1807                 RETURN_FALSE; 
    1808         } 
    1809         caca_display_t *display; 
    1810         ZEND_FETCH_RESOURCE(display, caca_display_t*, &_zval, -1, PHP_CACA_DISPLAY_RES_NAME, le_caca_display); 
    1811         RETURN_SUCCESS(caca_set_cursor(display, value)); 
     1804    zval *_zval; 
     1805    long value = 0; 
     1806    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &_zval, &value) == FAILURE) { 
     1807        RETURN_FALSE; 
     1808    } 
     1809    caca_display_t *display; 
     1810    ZEND_FETCH_RESOURCE(display, caca_display_t*, &_zval, -1, PHP_CACA_DISPLAY_RES_NAME, le_caca_display); 
     1811    RETURN_SUCCESS(caca_set_cursor(display, value)); 
    18121812} 
    18131813 
    18141814PHP_FUNCTION(caca_get_event) { 
    1815         zval *_zval = NULL; 
    1816         long g, aa = 0; 
    1817         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl|l", &_zval, &g, &aa) == FAILURE) { 
    1818                 RETURN_FALSE; 
    1819         } 
    1820         caca_display_t *display; 
    1821         ZEND_FETCH_RESOURCE(display, caca_display_t*, &_zval, -1, PHP_CACA_DISPLAY_RES_NAME, le_caca_display); 
    1822  
    1823         caca_event_t *event = emalloc(sizeof(caca_event_t)); 
    1824         if (!event) { 
    1825                 RETURN_FALSE; 
    1826         } 
    1827  
    1828         caca_get_event(display, g, event, aa); 
    1829  
    1830         if (caca_get_event_type(event) == CACA_EVENT_NONE) { 
    1831                 efree(event); 
    1832                 RETURN_FALSE; 
    1833         } 
    1834         ZEND_REGISTER_RESOURCE(return_value, event, le_caca_event); 
     1815    zval *_zval = NULL; 
     1816    long g, aa = 0; 
     1817    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl|l", &_zval, &g, &aa) == FAILURE) { 
     1818        RETURN_FALSE; 
     1819    } 
     1820    caca_display_t *display; 
     1821    ZEND_FETCH_RESOURCE(display, caca_display_t*, &_zval, -1, PHP_CACA_DISPLAY_RES_NAME, le_caca_display); 
     1822 
     1823    caca_event_t *event = emalloc(sizeof(caca_event_t)); 
     1824    if (!event) { 
     1825        RETURN_FALSE; 
     1826    } 
     1827 
     1828    caca_get_event(display, g, event, aa); 
     1829 
     1830    if (caca_get_event_type(event) == CACA_EVENT_NONE) { 
     1831        efree(event); 
     1832        RETURN_FALSE; 
     1833    } 
     1834    ZEND_REGISTER_RESOURCE(return_value, event, le_caca_event); 
    18351835} 
    18361836 
    18371837PHP_FUNCTION(caca_get_mouse_x) { 
    1838         caca_display_t *display; 
    1839         FETCH_DISPLAY(display); 
    1840         RETURN_LONG(caca_get_mouse_x(display)); 
     1838    caca_display_t *display; 
     1839    FETCH_DISPLAY(display); 
     1840    RETURN_LONG(caca_get_mouse_x(display)); 
    18411841} 
    18421842 
    18431843PHP_FUNCTION(caca_get_mouse_y) { 
    1844         caca_display_t *display; 
    1845         FETCH_DISPLAY(display); 
    1846         RETURN_LONG(caca_get_mouse_y(display)); 
     1844    caca_display_t *display; 
     1845    FETCH_DISPLAY(display); 
     1846    RETURN_LONG(caca_get_mouse_y(display)); 
    18471847} 
    18481848 
    18491849PHP_FUNCTION(caca_get_event_type) { 
    1850         caca_event_t *event; 
    1851         FETCH_EVENT(event); 
    1852         RETURN_LONG(caca_get_event_type(event)); 
     1850    caca_event_t *event; 
     1851    FETCH_EVENT(event); 
     1852    RETURN_LONG(caca_get_event_type(event)); 
    18531853} 
    18541854 
    18551855PHP_FUNCTION(caca_get_event_key_ch) { 
    1856         caca_event_t *event; 
    1857         FETCH_EVENT(event); 
    1858         RETURN_LONG(caca_get_event_key_ch(event)); 
     1856    caca_event_t *event; 
     1857    FETCH_EVENT(event); 
     1858    RETURN_LONG(caca_get_event_key_ch(event)); 
    18591859} 
    18601860 
    18611861PHP_FUNCTION(caca_get_event_mouse_button) { 
    1862         caca_event_t *event; 
    1863         FETCH_EVENT(event); 
    1864         RETURN_LONG(caca_get_event_mouse_button(event)); 
     1862    caca_event_t *event; 
     1863    FETCH_EVENT(event); 
     1864    RETURN_LONG(caca_get_event_mouse_button(event)); 
    18651865} 
    18661866 
    18671867PHP_FUNCTION(caca_get_event_mouse_x) { 
    1868         caca_event_t *event; 
    1869         FETCH_EVENT(event); 
    1870         RETURN_LONG(caca_get_event_mouse_x(event)); 
     1868    caca_event_t *event; 
     1869    FETCH_EVENT(event); 
     1870    RETURN_LONG(caca_get_event_mouse_x(event)); 
    18711871} 
    18721872 
    18731873PHP_FUNCTION(caca_get_event_mouse_y) { 
    1874         caca_event_t *event; 
    1875         FETCH_EVENT(event); 
    1876         RETURN_LONG(caca_get_event_mouse_y(event)); 
     1874    caca_event_t *event; 
     1875    FETCH_EVENT(event); 
     1876    RETURN_LONG(caca_get_event_mouse_y(event)); 
    18771877} 
    18781878 
    18791879PHP_FUNCTION(caca_get_event_resize_width) { 
    1880         caca_event_t *event; 
    1881         FETCH_EVENT(event); 
    1882         RETURN_LONG(caca_get_event_resize_width(event)); 
     1880    caca_event_t *event; 
     1881    FETCH_EVENT(event); 
     1882    RETURN_LONG(caca_get_event_resize_width(event)); 
    18831883} 
    18841884 
    18851885PHP_FUNCTION(caca_get_event_resize_height) { 
    1886         caca_event_t *event; 
    1887         FETCH_EVENT(event); 
    1888         RETURN_LONG(caca_get_event_resize_height(event)); 
    1889 } 
    1890  
     1886    caca_event_t *event; 
     1887    FETCH_EVENT(event); 
     1888    RETURN_LONG(caca_get_event_resize_height(event)); 
     1889} 
     1890 
  • libcaca/trunk/caca/codec/export.c

    r3497 r3582  
    414414            } 
    415415    } 
    416      
     416 
    417417    /* The HTML table markup: less than 1000 bytes 
    418418     * A line: 10 chars for "<tr></tr>\n" 
  • libcaca/trunk/caca/driver/cocoa.m

    r3046 r3582  
    165165    _w = ceilf([self bounds].size.width / fw); 
    166166    _h = ceilf([self bounds].size.height / fh); 
    167     debug_log(@"fw=%f selfw=%f %u %f", fw, [self bounds].size.width,  
     167    debug_log(@"fw=%f selfw=%f %u %f", fw, [self bounds].size.width, 
    168168              _w, [self bounds].size.width-(_w*fw)); 
    169     debug_log(@"fh=%f selfh=%f %u %f", fh, [self bounds].size.height,  
     169    debug_log(@"fh=%f selfh=%f %u %f", fh, [self bounds].size.height, 
    170170              _h, [self bounds].size.height-(_h*fh)); 
    171171} 
     
    200200    { 
    201201        debug_log(@"%s resize to %ux%u", _cmd, _w, _h); 
    202          
     202 
    203203        _w = caca_get_canvas_width(dp->cv); 
    204204        _h = caca_get_canvas_height(dp->cv); 
     
    207207            free(_attrs); 
    208208        _attrs = malloc(_w * _h * sizeof(uint32_t) * 2); 
    209          
     209 
    210210        if(_bkg_rects) 
    211211            free(_bkg_rects); 
    212212        _bkg_rects = malloc(_w * _h * sizeof(NSRect)); 
    213          
     213 
    214214        if(_bkg_colors) 
    215215            free(_bkg_colors); 
     
    347347                    uint8_t argb[8]; 
    348348                    caca_attr_to_argb64(*attrs, argb); 
    349                     debug_log(@"x,y=[%d,%d] r,g,b back=[%u %u %u] front=[%u %u %u]",  
     349                    debug_log(@"x,y=[%d,%d] r,g,b back=[%u %u %u] front=[%u %u %u]", 
    350350                              x, y, argb[1], argb[2], argb[3], argb[5], argb[6], argb[7]); 
    351351                    color =  [NSColor colorWithCalibratedRed:((float)argb[5]) / 15.0 
     
    357357                    if(color) 
    358358                    { 
    359                         NSMutableDictionary* attrDict = (*attrs & CACA_UNDERLINE) ?  
     359                        NSMutableDictionary* attrDict = (*attrs & CACA_UNDERLINE) ? 
    360360                                                        _attrDictUnderline : _attrDict; 
    361361                        [attrDict setObject:color forKey:NSForegroundColorAttributeName]; 
     
    461461static NSString* get_application_name() 
    462462{ 
    463     NSString* appName = [[NSBundle mainBundle] objectForInfoDictionaryKey:  
     463    NSString* appName = [[NSBundle mainBundle] objectForInfoDictionaryKey: 
    464464                                                   @"CFBundleName"]; 
    465465    if(![appName length]) 
     
    477477    NSString* appName = get_application_name(); 
    478478    NSMenu* appleMenu = [[NSMenu alloc] initWithTitle:@""]; 
    479      
     479 
    480480    /* Add menu items */ 
    481481    NSString* title = [@"About " stringByAppendingString:appName]; 
    482     [appleMenu addItemWithTitle:title  
    483                action:@selector(orderFrontStandardAboutPanel:)  
     482    [appleMenu addItemWithTitle:title 
     483               action:@selector(orderFrontStandardAboutPanel:) 
    484484               keyEquivalent:@""]; 
    485485    [appleMenu addItem:[NSMenuItem separatorItem]]; 
    486486 
    487487    title = [@"Hide " stringByAppendingString:appName]; 
    488     [appleMenu addItemWithTitle:title action:@selector(hide:)  
     488    [appleMenu addItemWithTitle:title action:@selector(hide:) 
    489489               keyEquivalent:@"h"]; 
    490490 
    491     id<NSMenuItem> menuItem = [appleMenu addItemWithTitle:@"Hide Others"  
     491    id<NSMenuItem> menuItem = [appleMenu addItemWithTitle:@"Hide Others" 
    492492                                         action:@selector(hideOtherApplications:) 
    493493                                         keyEquivalent:@"h"]; 
    494494    [menuItem setKeyEquivalentModifierMask:(NSAlternateKeyMask|NSCommandKeyMask)]; 
    495495 
    496     [appleMenu addItemWithTitle:@"Show All"  
     496    [appleMenu addItemWithTitle:@"Show All" 
    497497               action:@selector(unhideAllApplications:) 
    498498               keyEquivalent:@""]; 
     
    500500 
    501501    title = [@"Quit " stringByAppendingString:appName]; 
    502     [appleMenu addItemWithTitle:title action:@selector(terminate:)  
     502    [appleMenu addItemWithTitle:title action:@selector(terminate:) 
    503503               keyEquivalent:@"q"]; 
    504      
     504 
    505505    /* Put menu into the menubar */ 
    506506    menuItem = [[NSMenuItem alloc] initWithTitle:@"" action:nil keyEquivalent:@""]; 
     
    515515    /* Create the window menu */ 
    516516    NSMenu* windowMenu = [[NSMenu alloc] initWithTitle:@"Window"]; 
    517      
     517 
    518518    /* "Minimize" item */ 
    519     menuItem = [[NSMenuItem alloc] initWithTitle:@"Minimize"  
    520                                    action:@selector(performMiniaturize:)  
     519    menuItem = [[NSMenuItem alloc] initWithTitle:@"Minimize" 
     520                                   action:@selector(performMiniaturize:) 
    521521                                   keyEquivalent:@"m"]; 
    522522    [windowMenu addItem:menuItem]; 
    523523    [menuItem release]; 
    524      
     524 
    525525    /* Put menu into the menubar */ 
    526526    menuItem = [[NSMenuItem alloc] initWithTitle:@"Window" action:nil keyEquivalent:@""]; 
     
    528528    [[NSApp mainMenu] addItem:menuItem]; 
    529529    [menuItem release]; 
    530      
     530 
    531531    /* Tell the application object that this is now the window menu */ 
    532532    [NSApp setWindowsMenu:windowMenu]; 
     
    562562{ 
    563563    float mb_height = 38.0; // [[NSApp mainMenu] menuBarHeight] is 0 - wtf ? 
    564     /*debug_log(@"%@ %f %f %d %d %d", [NSApp mainMenu],  
    565              [[NSApp mainMenu] menuBarHeight], mb_height,  
    566              (int)CGDisplayPixelsHigh(kCGDirectMainDisplay),  
     564    /*debug_log(@"%@ %f %f %d %d %d", [NSApp mainMenu], 
     565             [[NSApp mainMenu] menuBarHeight], mb_height, 
     566             (int)CGDisplayPixelsHigh(kCGDirectMainDisplay), 
    567567             (int)r->origin.y, (int)r->size.height);*/ 
    568     r->origin.y = CGDisplayPixelsHigh(kCGDirectMainDisplay) - mb_height  
     568    r->origin.y = CGDisplayPixelsHigh(kCGDirectMainDisplay) - mb_height 
    569569                  - r->origin.y - r->size.height; 
    570570} 
     
    618618            caca_keycode = CACA_KEY_CTRL_A + ch - 'a'; 
    619619    } 
    620      
     620 
    621621    if(!caca_keycode) 
    622622    { 
     
    729729    if(!ev || !event) 
    730730        return NO; 
    731      
     731 
    732732    BOOL eventHandled = NO; 
    733      
     733 
    734734    if([event modifierFlags] & NSCommandKeyMask) 
    735735    { 
     
    768768            ev->data.key.utf8[0] = mac_keycode & 0x00ff; // FIXME: endianness 
    769769            ev->data.key.utf8[1] = mac_keycode & 0xff00; 
    770          
     770 
    771771            eventHandled = YES; 
    772772        } 
     
    860860static int cocoa_end_graphics(caca_display_t *dp) 
    861861{ 
    862     debug_log(@"%s dp->cv: %ux%u", __PRETTY_FUNCTION__,  
     862    debug_log(@"%s dp->cv: %ux%u", __PRETTY_FUNCTION__, 
    863863              caca_get_canvas_width(dp->cv), caca_get_canvas_height(dp->cv)); 
    864864 
     
    909909    if([NSApp isRunning]) 
    910910    { 
    911         NSEvent *event = [NSApp nextEventMatchingMask:NSAnyEventMask  
    912                                 untilDate:[NSDate distantPast]  
    913                                 inMode:NSDefaultRunLoopMode  
     911        NSEvent *event = [NSApp nextEventMatchingMask:NSAnyEventMask 
     912                                untilDate:[NSDate distantPast] 
     913                                inMode:NSDefaultRunLoopMode 
    914914                                dequeue:YES]; 
    915915        if(event) 
     
    924924                case NSFlagsChanged: 
    925925                    break; 
    926              
     926 
    927927                case NSLeftMouseDown: 
    928928                case NSLeftMouseUp: 
  • libcaca/trunk/caca/driver/gl.c

    r2962 r3582  
    11/* 
    22 *  libcaca       Colour ASCII-Art library 
    3  *  Copyright (c) 2002-2006 Sam Hocevar <sam@zoy.org> 
     3 *  Copyright (c) 2002-2006 Sam Hocevar <sam@hocevar.net> 
    44 *                2006 Jean-Yves Lamoureux <jylam@lnxscene.org> 
    55 *                2007 Ben Wiley Sittler <bsittler@gmail.com> 
     
    563563 
    564564            memset(tmp, 0, 16 * 8 * 16); 
    565              
     565 
    566566            for(y = 0; y < h; y++) 
    567567            { 
     
    577577                } 
    578578            } 
    579              
     579 
    580580            glGenTextures(1, (GLuint*)&dp->drv.p->txid[b + j]); 
    581581            glBindTexture(GL_TEXTURE_2D, dp->drv.p->txid[b + j]); 
  • libcaca/trunk/caca/figfont.c

    r3495 r3582  
    133133    int c, w, h, x, y, overlap, extra, xleft, xright; 
    134134 
    135     if (!ff)  
     135    if (!ff) 
    136136        return -1; 
    137137 
  • libcaca/trunk/examples/import.c

    r3495 r3582  
    4343    if(caca_import_canvas_from_file(cv, argv[1], argc >= 3 ? argv[2] : "") < 0) 
    4444    { 
    45         fprintf(stderr, "%s: could not open `%s'.\n", argv[0], argv[1]); 
     45        fprintf(stderr, "%s: could not open `%s'.\n", argv[0], argv[1]); 
    4646        caca_free_canvas(cv); 
    4747        return 1; 
  • libcaca/trunk/python/pypycaca.c

    r1462 r3582  
    6060    {"printf", pycaca_printf, METH_VARARGS, ""}, 
    6161    {"clear", pycaca_clear, METH_VARARGS, ""}, 
    62      
     62 
    6363    {"load_sprite", pycaca_load_sprite, METH_VARARGS, ""}, 
    6464    {"draw_sprite", pycaca_draw_sprite,  METH_VARARGS, ""}, 
     
    8080    {"draw_bitmap", pycaca_draw_bitmap, METH_VARARGS, ""}, 
    8181    {"free_bitmap", pycaca_free_bitmap, METH_VARARGS, ""}, 
    82      
     82 
    8383 
    8484 
     
    9999  obj = Py_InitModule("caca", CacaMethods); 
    100100  dict = PyModule_GetDict(obj); 
    101     
     101 
    102102  SET_INTCONSTANT(dict,CACA_EVENT_NONE ); 
    103103  SET_INTCONSTANT(dict,CACA_EVENT_KEY_PRESS ); 
     
    108108  SET_INTCONSTANT(dict,CACA_EVENT_RESIZE ); 
    109109  SET_INTCONSTANT(dict,CACA_EVENT_ANY ); 
    110    
     110 
    111111  SET_INTCONSTANT(dict, CACA_COLOR_BLACK ); 
    112112  SET_INTCONSTANT(dict, CACA_COLOR_BLUE ); 
     
    192192{ 
    193193  int ret; 
    194    
     194 
    195195  ret = caca_init(); 
    196196  return Py_BuildValue("i", ret); 
     
    301301  if (!PyArg_ParseTuple(args, "i", &value)); 
    302302  ret = caca_get_feature(value); 
    303    
     303 
    304304  return Py_BuildValue("i", ret); 
    305305 
     
    312312  if (!PyArg_ParseTuple(args, "i", &value)); 
    313313  caca_set_feature(value); 
    314    
     314 
    315315  return Py_BuildValue("i", 1); /* FIXME */ 
    316316 
     
    324324 
    325325  ret = (char* const)caca_get_feature_name(value); 
    326    
     326 
    327327  return Py_BuildValue("s", ret); 
    328328} 
     
    338338 
    339339  ret = caca_get_event(value); 
    340    
     340 
    341341  return Py_BuildValue("i", ret); 
    342342} 
     
    348348 
    349349  ret = caca_get_event(value); 
    350    
     350 
    351351  return Py_BuildValue("i", ret); 
    352352} 
     
    374374  int x1, y1, x2, y2; 
    375375  char c; 
    376    
     376 
    377377  if (!PyArg_ParseTuple(args, "iiiic", &x1,&y1,&x2,&y2,&c)); 
    378378  caca_draw_line(x1,y1,x2,y2,c); 
     
    385385  int *x, *y, n, lenx, leny, i; 
    386386  char c; 
    387    
     387 
    388388  if (!PyArg_ParseTuple(args, "OOic", &list_x, &list_y, &n, &c)); 
    389389 
    390390  lenx = PySequence_Length(list_x); 
    391391  leny = PySequence_Length(list_y); 
    392    
     392 
    393393  x = (int*) malloc(lenx*sizeof(int)); 
    394394  y = (int*) malloc(leny*sizeof(int)); 
     
    419419{ 
    420420  int x1, y1, x2, y2; 
    421    
     421 
    422422  if (!PyArg_ParseTuple(args, "iiii", &x1,&y1,&x2,&y2)); 
    423423  caca_draw_thin_line(x1,y1,x2,y2); 
     
    430430  PyObject *list_x, *list_y, *item; 
    431431  int *x, *y, n, lenx, leny, i; 
    432    
     432 
    433433  if (!PyArg_ParseTuple(args, "OOi", &list_x, &list_y, &n)); 
    434434 
    435435  lenx = PySequence_Length(list_x); 
    436436  leny = PySequence_Length(list_y); 
    437    
     437 
    438438  x = (int*) malloc(lenx*sizeof(int)); 
    439439  y = (int*) malloc(leny*sizeof(int)); 
     
    565565{ 
    566566  int ret = caca_get_fg_color(); 
    567   return Py_BuildValue("i", ret);  
     567  return Py_BuildValue("i", ret); 
    568568} 
    569569 
     
    572572{ 
    573573  int ret = caca_get_bg_color(); 
    574   return Py_BuildValue("i", ret);  
     574  return Py_BuildValue("i", ret); 
    575575} 
    576576 
     
    582582  if (!PyArg_ParseTuple(args, "i", &c)); 
    583583  ret = (char *)caca_get_color_name(c); 
    584    
     584 
    585585  return Py_BuildValue("s", ret); /* FIXME */ 
    586586} 
     
    649649  if (!PyArg_ParseTuple(args, "iiii", &x, &y, &sprite,&frame)); 
    650650  caca_draw_sprite(x,y, (struct caca_sprite const *)PyCObject_AsVoidPtr((void*)sprite), frame); 
    651    
     651 
    652652  return Py_BuildValue("i", 1); /* FIXME */ 
    653653} 
     
    660660  ret = caca_get_sprite_frames((struct caca_sprite const *)PyCObject_AsVoidPtr((void*)sprite)); 
    661661 
    662   return Py_BuildValue("i", ret);  
    663   
     662  return Py_BuildValue("i", ret); 
     663 
    664664} 
    665665 
     
    671671  ret = caca_get_sprite_width((struct caca_sprite const *)PyCObject_AsVoidPtr((void*)sprite),i); 
    672672 
    673   return Py_BuildValue("i", ret);  
     673  return Py_BuildValue("i", ret); 
    674674 
    675675} 
     
    681681  if (!PyArg_ParseTuple(args, "ii", &sprite, i)); 
    682682  ret = caca_get_sprite_height((struct caca_sprite const *)PyCObject_AsVoidPtr((void*)sprite),i); 
    683    
    684   return Py_BuildValue("i", ret);  
     683 
     684  return Py_BuildValue("i", ret); 
    685685} 
    686686 
     
    691691  if (!PyArg_ParseTuple(args, "ii", &sprite), &i); 
    692692  ret = caca_get_sprite_dx((struct caca_sprite const *)PyCObject_AsVoidPtr((void*)sprite),i); 
    693    
    694   return Py_BuildValue("i", ret);  
     693 
     694  return Py_BuildValue("i", ret); 
    695695} 
    696696 
     
    701701  if (!PyArg_ParseTuple(args, "ii", &sprite), &i); 
    702702  ret = caca_get_sprite_dy((struct caca_sprite const *)PyCObject_AsVoidPtr((void*)sprite),i); 
    703    
    704   return Py_BuildValue("i", ret);  
     703 
     704  return Py_BuildValue("i", ret); 
    705705} 
    706706 
     
    711711  if (!PyArg_ParseTuple(args, "i", &sprite)); 
    712712  caca_free_sprite((struct caca_sprite *)PyCObject_AsVoidPtr((void*)sprite)); 
    713    
     713 
    714714  return Py_BuildValue("i", 1);  /* FIXME */ 
    715715} 
     
    723723  if (!PyArg_ParseTuple(args, "")); 
    724724 
    725   return Py_BuildValue("s",caca_get_html());  
     725  return Py_BuildValue("s",caca_get_html()); 
    726726} 
    727727 
     
    731731  if (!PyArg_ParseTuple(args, "")); 
    732732 
    733   return Py_BuildValue("s",caca_get_html3());  
     733  return Py_BuildValue("s",caca_get_html3()); 
    734734} 
    735735 
     
    739739  if (!PyArg_ParseTuple(args, "")); 
    740740 
    741   return Py_BuildValue("s",caca_get_irc());  
     741  return Py_BuildValue("s",caca_get_irc()); 
    742742} 
    743743 
     
    747747  int trailing; 
    748748  if (!PyArg_ParseTuple(args, "i", &trailing)); 
    749    
    750   return Py_BuildValue("s",caca_get_ansi(trailing));  
     749 
     750  return Py_BuildValue("s",caca_get_ansi(trailing)); 
    751751} 
    752752 
     
    774774 
    775775  if (!PyArg_ParseTuple(args, "iOOOO", &bitmap, &list_r, &list_g, &list_b, &list_a)); 
    776    
     776 
    777777  if((PySequence_Length(list_r)!=256) || 
    778778     (PySequence_Length(list_g)!=256) || 
     
    782782      PyErr_SetString(PyExc_TypeError, "Lengths of colors lists must be 256"); 
    783783    } 
    784       
     784 
    785785  r = malloc(256*sizeof(unsigned int)); 
    786786  g = malloc(256*sizeof(unsigned int)); 
     
    827827 
    828828  if (!PyArg_ParseTuple(args, "iiiiiO", &x1,&y1,&x2,&y2,&bitmap,&pixels)); 
    829    
     829 
    830830 
    831831  buffer = malloc(PySequence_Length(pixels)*sizeof(unsigned char)); 
    832832 
    833    
     833 
    834834  for(i=0;i<PySequence_Length(pixels);i++) 
    835835    { 
     
    837837      buffer[i] = (unsigned char)PyInt_AsLong(item); 
    838838    } 
    839    
     839 
    840840 
    841841 
  • libcaca/trunk/ruby/caca-canvas.c

    r3495 r3582  
    226226    else 
    227227        cmask = NULL; 
    228      
     228 
    229229    if(caca_blit(_SELF, NUM2INT(x), NUM2INT(y), csrc, cmask)<0) 
    230230        rb_raise(rb_eRuntimeError, strerror(errno)); 
     
    296296                error = 1; 
    297297        } 
    298         else 
     298        else 
    299299            error = 1; 
    300300    } 
     
    358358                error = 1; 
    359359        } 
    360         else 
     360        else 
    361361            error = 1; 
    362362    } 
     
    584584    rb_define_method(cCanvas, "set_height", set_canvas_height2, 1); 
    585585    rb_define_method(cCanvas, "set_size", set_canvas_size, 2); 
    586          
     586 
    587587    rb_define_method(cCanvas, "gotoxy", gotoxy, 2); 
    588588    rb_define_method(cCanvas, "cursor_x", get_cursor_x, 0); 
     
    595595 
    596596    rb_define_method(cCanvas, "clear", clear_canvas, 0); 
    597      
     597 
    598598    rb_define_method(cCanvas, "put_char", put_char, 3); 
    599599    rb_define_method(cCanvas, "get_char", get_char, 2); 
  • libcaca/trunk/ruby/caca-display.c

    r3157 r3582  
    7373    { 
    7474        display = caca_create_display(canvas); 
    75         if(display && NIL_P(cv)) 
    76         { 
     75        if(display && NIL_P(cv)) 
     76        { 
    7777            cv = canvas_create(caca_get_canvas(display)); 
    78         } 
     78        } 
    7979    } 
    8080    else 
  • libcaca/trunk/ruby/caca-dither.c

    r2822 r3582  
    2525{ 
    2626    VALUE obj; 
    27     obj = Data_Wrap_Struct(klass, 0, dither_free, NULL);     
     27    obj = Data_Wrap_Struct(klass, 0, dither_free, NULL); 
    2828    return obj; 
    2929} 
     
    103103                error = 1; 
    104104        } 
    105         else 
     105        else 
    106106            error = 1; 
    107107    } 
     
    112112        free(green); 
    113113        free(blue); 
    114         free(alpha);         
     114        free(alpha); 
    115115        rb_raise(rb_eArgError, "Invalid palette"); 
    116116    } 
     
    121121        free(green); 
    122122        free(blue); 
    123         free(alpha);         
     123        free(alpha); 
    124124        rb_raise(rb_eRuntimeError, strerror(errno)); 
    125125    } 
     
    129129    free(blue); 
    130130    free(alpha); 
    131      
     131 
    132132    return palette; 
    133133} 
     
    140140 
    141141#define set_float(x)                                    \ 
    142 static VALUE set_##x(VALUE self, VALUE x)              \ 
     142static VALUE set_##x(VALUE self, VALUE x)               \ 
    143143{                                                       \ 
    144     if(caca_set_dither_##x(_SELF, (float)NUM2DBL(x))<0)\ 
     144    if(caca_set_dither_##x(_SELF, (float)NUM2DBL(x))<0) \ 
    145145        rb_raise(rb_eRuntimeError, strerror(errno));    \ 
    146146                                                        \ 
     
    148148}                                                       \ 
    149149                                                        \ 
    150 static VALUE set_##x##2(VALUE self, VALUE x)           \ 
     150static VALUE set_##x##2(VALUE self, VALUE x)            \ 
    151151{                                                       \ 
    152152    set_##x(self, x);                                   \ 
     
    162162static VALUE set_dither_##x(VALUE self, VALUE x)         \ 
    163163{                                                        \ 
    164     if(caca_set_dither_##x(_SELF, StringValuePtr(x))<0) \ 
     164    if(caca_set_dither_##x(_SELF, StringValuePtr(x))<0)  \ 
    165165    {                                                    \ 
    166166        rb_raise(rb_eRuntimeError, strerror(errno));     \ 
  • libcaca/trunk/ruby/caca-event.c

    r2019 r3582  
    3232 
    3333    cEventKey = rb_define_class_under(cEvent, "Key", cEvent); 
    34     rb_define_const(cEventKey, "TYPE",  
     34    rb_define_const(cEventKey, "TYPE", 
    3535                    INT2FIX(CACA_EVENT_KEY_PRESS| 
    3636                            CACA_EVENT_KEY_RELEASE)); 
     
    4343    rb_define_const(cEventKeyRelease, "TYPE", 
    4444                    INT2FIX(CACA_EVENT_KEY_RELEASE)); 
    45      
     45 
    4646    cEventMouse = rb_define_class_under(cEvent, "Mouse", cEvent); 
    4747    rb_define_const(cEventMouse, "TYPE", 
  • libcaca/trunk/ruby/caca-font.c

    r2822 r3582  
    2525{ 
    2626    VALUE obj; 
    27     obj = Data_Wrap_Struct(klass, 0, font_free, NULL);     
     27    obj = Data_Wrap_Struct(klass, 0, font_free, NULL); 
    2828    return obj; 
    2929} 
     
    4646    VALUE ary; 
    4747    char const* const* list; 
    48      
     48 
    4949    list = caca_get_font_list(); 
    50      
    51     ary = rb_ary_new();     
     50 
     51    ary = rb_ary_new(); 
    5252    while (*list != NULL) 
    5353    { 
     
    7373    VALUE ary; 
    7474    uint32_t const *list; 
    75      
     75 
    7676    list = caca_get_font_blocks(_SELF); 
    77      
    78     ary = rb_ary_new();     
     77 
     78    ary = rb_ary_new(); 
    7979    while (*list != 0L) 
    8080    { 
  • libcaca/trunk/src/aafire.c

    r2961 r3582  
    11/* 
    22 *  cacafire      fire demo for libcaca 
    3  *  Copyright (c) 2003 Sam Hocevar <sam@zoy.org> 
     3 *  Copyright (c) 2003 Sam Hocevar <sam@hocevar.net> 
    44 *                1998, 1999, 2001 Jan Hubicka <hubicka@freesoft.cz> 
    55 *                All Rights Reserved 
     
    137137#else 
    138138    aa_setpalette (palette, i, pal[i * 3] * 4, 
    139                    pal[i * 3 + 1] * 4, pal[i * 3 + 2] * 4); 
     139                   pal[i * 3 + 1] * 4, pal[i * 3 + 2] * 4); 
    140140#endif 
    141141 
     
    172172    { 
    173173      if (i > minus) 
    174         { 
    175           p2 = (i - minus) / 5; 
    176           table[i] = p2; 
    177         } 
     174        { 
     175          p2 = (i - minus) / 5; 
     176          table[i] = p2; 
     177        } 
    178178      else 
    179         table[i] = 0; 
     179        table[i] = 0; 
    180180    } 
    181181} 
     
    192192  i = 0; 
    193193#define END (bitmap + XSIZ * YSIZ) 
    194   for (p = (unsigned char*)bitmap;  
    195        (char*)p <= (( char *) (END));  
     194  for (p = (unsigned char*)bitmap; 
     195       (char*)p <= (( char *) (END)); 
    196196       p += 1) 
    197197    { 
    198198      *p = table[(*(p + XSIZ - 1) + *(p + XSIZ + 1) + *(p + XSIZ)) + 
    199                 (*(p + 2 * XSIZ - 1) + *(p + 2 * XSIZ + 1))]; 
     199                (*(p + 2 * XSIZ - 1) + *(p + 2 * XSIZ + 1))]; 
    200200    } 
    201201} 
     
    229229      i = rand () % 6; 
    230230      for (; p < (unsigned char *) bitmap + XSIZ * (YSIZ + 1) && i != 0; 
    231            p++, i--, i1 += 4, i2 -= 4) 
    232         *p = last1, last1 += rand () % 6 - 2, *(p + XSIZ) = last1, last1 += 
    233           rand () % 6 - 2; 
     231           p++, i--, i1 += 4, i2 -= 4) 
     232        *p = last1, last1 += rand () % 6 - 2, *(p + XSIZ) = last1, last1 += 
     233          rand () % 6 - 2; 
    234234      *(p + 2 * XSIZ) = last1, last1 += rand () % 6 - 2; 
    235235    } 
     
    245245                  caca_get_canvas_height(cv) - 2, 
    246246                  " -=[ Powered by libcaca ]=- "); 
    247    
     247 
    248248  caca_refresh_display(dp); 
    249249  /*XSIZ = caca_get_width() * 2; 
     
    251251#else 
    252252  aa_renderpalette (context, palette, params, 0, 0, aa_scrwidth (context), 
    253                     aa_scrheight (context)); 
     253                    aa_scrheight (context)); 
    254254  aa_flush (context); 
    255255#endif 
  • libcaca/trunk/tests/bench.c

    r3573 r3582  
     1/* 
     2 *  libcaca benchmark program 
     3 *  Copyright (c) 2009 Pascal Terjan <pterjan@linuxfr.org> 
     4 *                2009 Sam Hocevar <sam@hocevar.net> 
     5 * 
     6 *  This library is free software. It comes without any warranty, to 
     7 *  the extent permitted by applicable law. You can redistribute it 
     8 *  and/or modify it under the terms of the Do What The Fuck You Want 
     9 *  To Public License, Version 2, as published by Sam Hocevar. See 
     10 *  http://sam.zoy.org/wtfpl/COPYING for more details. 
     11 */ 
     12 
    113#include "config.h" 
    214 
     
    416 
    517#include "caca.h" 
     18 
     19#define BLIT_LOOPS 1000000 
     20#define PUTCHAR_LOOPS 50000000 
    621 
    722#define TIME(desc, code) \ 
     
    2338    cv2 = caca_create_canvas(16, 16); 
    2439    caca_fill_box(cv2, 0, 0, 16, 16, 'x'); 
    25     for (i=0; i<1000000; i++) { 
    26       if(clear) 
    27               caca_clear_canvas(cv); 
    28       caca_blit(cv, 1, 1, cv2, mask?cv2:NULL); 
     40    for (i = 0; i < BLIT_LOOPS; i++) 
     41    { 
     42        if(clear) 
     43            caca_clear_canvas(cv); 
     44        caca_blit(cv, 1, 1, cv2, mask ? cv2 : NULL); 
    2945    } 
    3046    caca_free_canvas(cv); 
     
    3753    int i; 
    3854    cv = caca_create_canvas(40, 40); 
    39     for (i=0; i<50000000; i++) { 
    40       caca_put_char(cv, 1, 1, 'x'); 
    41       caca_put_char(cv, 1, 1, 'o'); 
     55    for (i = 0; i < PUTCHAR_LOOPS; i++) 
     56    { 
     57        caca_put_char(cv, 1, 1, 'x'); 
     58        caca_put_char(cv, 1, 1, 'o'); 
    4259    } 
    4360    caca_free_canvas(cv); 
     
    4663int main(int argc, char *argv[]) 
    4764{ 
    48     TIME("blit no mask, no clear",blit(0, 0)); 
    49     TIME("blit no mask, clear",blit(0, 1)); 
    50     TIME("blit mask, no clear",blit(1, 0)); 
    51     TIME("blit mask, clear",blit(1, 1)); 
    52     TIME("putchars",putchars()); 
     65    TIME("blit no mask, no clear", blit(0, 0)); 
     66    TIME("blit no mask, clear", blit(0, 1)); 
     67    TIME("blit mask, no clear", blit(1, 0)); 
     68    TIME("blit mask, clear", blit(1, 1)); 
     69    TIME("putchars", putchars()); 
    5370    return 0; 
    5471} 
Note: See TracChangeset for help on using the changeset viewer.