Changeset 3582
- Timestamp:
- 07/26/09 21:17:28 (4 years ago)
- Location:
- libcaca/trunk
- Files:
-
- 14 edited
-
caca-php/php_caca.c (modified) (8 diffs)
-
caca/codec/export.c (modified) (1 diff)
-
caca/driver/cocoa.m (modified) (17 diffs)
-
caca/driver/gl.c (modified) (3 diffs)
-
caca/figfont.c (modified) (1 diff)
-
examples/import.c (modified) (1 diff)
-
python/pypycaca.c (modified) (32 diffs)
-
ruby/caca-canvas.c (modified) (5 diffs)
-
ruby/caca-display.c (modified) (1 diff)
-
ruby/caca-dither.c (modified) (8 diffs)
-
ruby/caca-event.c (modified) (2 diffs)
-
ruby/caca-font.c (modified) (3 diffs)
-
src/aafire.c (modified) (7 diffs)
-
tests/bench.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
libcaca/trunk/caca-php/php_caca.c
r3511 r3582 23 23 24 24 static 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} 159 159 }; 160 160 161 161 zend_module_entry caca_module_entry = { 162 162 #if ZEND_MODULE_API_NO >= 20010901 163 STANDARD_MODULE_HEADER,163 STANDARD_MODULE_HEADER, 164 164 #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), 172 172 #if ZEND_MODULE_API_NO >= 20010901 173 PHP_CACA_VERSION,173 PHP_CACA_VERSION, 174 174 #endif 175 STANDARD_MODULE_PROPERTIES175 STANDARD_MODULE_PROPERTIES 176 176 }; 177 177 … … 181 181 182 182 PHP_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()); 185 185 #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); 188 188 #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"); 190 190 #endif 191 php_info_print_table_end();191 php_info_print_table_end(); 192 192 } 193 193 … … 195 195 196 196 static void php_caca_canvas_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC) { 197 caca_free_canvas(rsrc->ptr);197 caca_free_canvas(rsrc->ptr); 198 198 } 199 199 200 200 static void php_caca_dither_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC) { 201 caca_free_dither(rsrc->ptr);201 caca_free_dither(rsrc->ptr); 202 202 } 203 203 204 204 static void php_caca_font_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC) { 205 caca_free_font(rsrc->ptr);205 caca_free_font(rsrc->ptr); 206 206 } 207 207 208 208 static void php_caca_file_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC) { 209 caca_file_close(rsrc->ptr);209 caca_file_close(rsrc->ptr); 210 210 } 211 211 212 212 static void php_caca_display_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC) { 213 caca_free_display(rsrc->ptr);213 caca_free_display(rsrc->ptr); 214 214 } 215 215 216 216 static 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); 218 218 } 219 219 … … 222 222 PHP_MINIT_FUNCTION(caca) { 223 223 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; 319 319 } 320 320 … … 322 322 323 323 #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); 329 329 330 330 #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); 336 336 337 337 #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); 343 343 344 344 #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 } 348 348 349 349 #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); 354 354 355 355 #define RETURN_SUCCESS(i) \ 356 RETURN_BOOL((i) == 0);356 RETURN_BOOL((i) == 0); 357 357 358 358 //---------- Some usefull functions --------------------// … … 361 361 362 362 void *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; 370 370 } 371 371 … … 374 374 #ifdef HAVE_GD 375 375 void *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; 401 401 } 402 402 403 403 int 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]); 418 418 } 419 419 #endif … … 421 421 422 422 PHP_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); 432 432 } 433 433 434 434 PHP_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)); 443 443 } 444 444 445 445 PHP_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)); 449 449 } 450 450 451 451 PHP_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)); 455 455 } 456 456 457 457 PHP_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); 461 461 } 462 462 463 463 PHP_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); 467 467 } 468 468 469 469 PHP_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)); 475 475 } 476 476 477 477 PHP_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); 482 482 } 483 483 484 484 PHP_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)); 493 493 } 494 494 495 495 PHP_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)); 499 499 } 500 500 501 501 PHP_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)); 505 505 } 506 506 507 507 PHP_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)); 516 516 } 517 517 518 518 PHP_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)); 527 527 } 528 528 529 529 PHP_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)); 539 539 } 540 540 541 541 PHP_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)); 545 545 } 546 546 547 547 PHP_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)); 556 556 } 557 557 558 558 PHP_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)); 562 562 } 563 563 564 564 PHP_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)); 568 568 } 569 569 570 570 PHP_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)); 583 583 } 584 584 585 585 PHP_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)); 594 594 } 595 595 596 596 PHP_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)); 600 600 } 601 601 602 602 PHP_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)); 606 606 } 607 607 608 608 PHP_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)); 612 612 } 613 613 614 614 PHP_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)); 618 618 } 619 619 620 620 PHP_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)); 624 624 } 625 625 626 626 PHP_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)); 630 630 } 631 631 632 632 PHP_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)); 636 636 } 637 637 638 638 PHP_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)); 642 642 } 643 643 644 644 PHP_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)); 653 653 } 654 654 655 655 PHP_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)); 664 664 } 665 665 666 666 PHP_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)); 675 675 } 676 676 677 677 PHP_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)); 686 686 } 687 687 688 688 PHP_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)); 697 697 } 698 698 699 699 PHP_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)); 703 703 } 704 704 705 705 PHP_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)); 709 709 } 710 710 711 711 PHP_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)); 715 715 } 716 716 717 717 PHP_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)); 721 721 } 722 722 723 723 PHP_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)); 727 727 } 728 728 729 729 PHP_FUNCTION(caca_attr_to_argb64) { 730 //TODO: write or delete730 //TODO: write or delete 731 731 } 732 732 733 733 PHP_FUNCTION(caca_utf8_to_utf32) { 734 //TODO: write or delete734 //TODO: write or delete 735 735 } 736 736 737 737 PHP_FUNCTION(caca_utf32_to_utf8) { 738 //TODO: write or delete738 //TODO: write or delete 739 739 } 740 740 741 741 PHP_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)); 745 745 } 746 746 747 747 PHP_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)); 751 751 } 752 752 753 753 PHP_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)); 757 757 } 758 758 759 759 PHP_FUNCTION(caca_utf32_is_fullwidth) { 760 //TODO: write or delete760 //TODO: write or delete 761 761 } 762 762 763 763 PHP_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)); 772 772 } 773 773 774 774 PHP_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_ARRAY801 && (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); 815 815 } 816 816 817 817 PHP_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)); 826 826 } 827 827 828 828 PHP_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_ARRAY857 && (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); 871 871 } 872 872 873 873 PHP_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)); 882 882 } 883 883 884 884 PHP_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)); 893 893 } 894 894 895 895 PHP_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)); 904 904 } 905 905 906 906 PHP_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)); 915 915 } 916 916 917 917 PHP_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)); 926 926 } 927 927 928 928 PHP_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)); 937 937 } 938 938 939 939 PHP_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)); 948 948 } 949 949 950 950 PHP_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)); 959 959 } 960 960 961 961 PHP_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)); 970 970 } 971 971 972 972 PHP_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)); 981 981 } 982 982 983 983 PHP_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)); 992 992 } 993 993 994 994 PHP_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)); 1002 1002 } 1003 1003 1004 1004 PHP_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)); 1013 1013 } 1014 1014 1015 1015 PHP_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)); 1025 1025 } 1026 1026 1027 1027 PHP_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)); 1036 1036 } 1037 1037 1038 1038 PHP_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)); 1047 1047 } 1048 1048 1049 1049 PHP_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 } 1054 1054 #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 else1064 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); 1071 1071 #else 1072 RETURN_FALSE1072 RETURN_FALSE 1073 1073 #endif 1074 1074 } 1075 1075 1076 1076 PHP_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])); 1101 1101 } 1102 1102 1103 1103 PHP_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)); 1112 1112 } 1113 1113 1114 1114 PHP_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)); 1122 1122 } 1123 1123 1124 1124 PHP_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)); 1133 1133 } 1134 1134 1135 1135 PHP_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)); 1143 1143 } 1144 1144 1145 1145 PHP_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)); 1154 1154 } 1155 1155 1156 1156 PHP_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)); 1164 1164 } 1165 1165 1166 1166 PHP_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)); 1176 1176 } 1177 1177 1178 1178 PHP_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); 1191 1191 } 1192 1192 1193 1193 PHP_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); 1201 1201 } 1202 1202 1203 1203 PHP_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)); 1213 1213 } 1214 1214 1215 1215 PHP_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); 1228 1228 } 1229 1229 1230 1230 PHP_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); 1238 1238 } 1239 1239 1240 1240 PHP_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)); 1250 1250 } 1251 1251 1252 1252 PHP_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); 1265 1265 } 1266 1266 1267 1267 PHP_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); 1275 1275 } 1276 1276 1277 1277 PHP_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)); 1287 1287 } 1288 1288 1289 1289 PHP_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); 1302 1302 } 1303 1303 1304 1304 PHP_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); 1312 1312 } 1313 1313 1314 1314 PHP_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); 1326 1326 1327 1327 #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 color1339 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; 1347 1347 #else 1348 RETURN_FALSE;1348 RETURN_FALSE; 1349 1349 #endif 1350 1350 } 1351 1351 1352 1352 PHP_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); 1363 1363 } 1364 1364 1365 1365 PHP_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); 1376 1376 } 1377 1377 1378 1378 PHP_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); 1387 1387 } 1388 1388 1389 1389 PHP_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)); 1397 1397 } 1398 1398 1399 1399 PHP_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)); 1407 1407 } 1408 1408 1409 1409 PHP_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]); 1423 1423 } 1424 1424 1425 1425 PHP_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); 1434 1434 1435 1435 #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; 1458 1458 #else 1459 RETURN_FALSE;1459 RETURN_FALSE; 1460 1460 #endif 1461 1461 } 1462 1462 1463 1463 PHP_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)); 1473 1473 } 1474 1474 1475 1475 PHP_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)); 1485 1485 } 1486 1486 1487 1487 PHP_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)); 1495 1495 } 1496 1496 1497 1497 PHP_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); 1508 1508 } 1509 1509 1510 1510 PHP_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 resource1521 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); 1523 1523 } 1524 1524 1525 1525 PHP_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)); 1533 1533 } 1534 1534 1535 1535 PHP_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); 1554 1554 } 1555 1555 1556 1556 PHP_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)); 1566 1566 } 1567 1567 1568 1568 PHP_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); 1589 1589 } 1590 1590 1591 1591 PHP_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); 1599 1599 } 1600 1600 1601 1601 PHP_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)); 1612 1612 } 1613 1613 1614 1614 PHP_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)); 1625 1625 } 1626 1626 1627 1627 PHP_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); 1636 1636 } 1637 1637 1638 1638 PHP_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); 1657 1657 } 1658 1658 1659 1659 PHP_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); 1668 1668 } 1669 1669 1670 1670 PHP_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); 1679 1679 } 1680 1680 1681 1681 PHP_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); 1696 1696 } 1697 1697 1698 1698 PHP_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); 1707 1707 } 1708 1708 1709 1709 PHP_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); 1717 1717 } 1718 1718 1719 1719 PHP_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)); 1729 1729 } 1730 1730 1731 1731 PHP_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); 1743 1743 } 1744 1744 1745 1745 PHP_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)); 1749 1749 } 1750 1750 1751 1751 PHP_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)); 1760 1760 } 1761 1761 1762 1762 PHP_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)); 1766 1766 } 1767 1767 1768 1768 PHP_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)); 1772 1772 } 1773 1773 1774 1774 PHP_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)); 1778 1778 } 1779 1779 1780 1780 PHP_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)); 1790 1790 } 1791 1791 1792 1792 PHP_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)); 1801 1801 } 1802 1802 1803 1803 PHP_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)); 1812 1812 } 1813 1813 1814 1814 PHP_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); 1835 1835 } 1836 1836 1837 1837 PHP_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)); 1841 1841 } 1842 1842 1843 1843 PHP_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)); 1847 1847 } 1848 1848 1849 1849 PHP_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)); 1853 1853 } 1854 1854 1855 1855 PHP_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)); 1859 1859 } 1860 1860 1861 1861 PHP_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)); 1865 1865 } 1866 1866 1867 1867 PHP_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)); 1871 1871 } 1872 1872 1873 1873 PHP_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)); 1877 1877 } 1878 1878 1879 1879 PHP_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)); 1883 1883 } 1884 1884 1885 1885 PHP_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 414 414 } 415 415 } 416 416 417 417 /* The HTML table markup: less than 1000 bytes 418 418 * A line: 10 chars for "<tr></tr>\n" -
libcaca/trunk/caca/driver/cocoa.m
r3046 r3582 165 165 _w = ceilf([self bounds].size.width / fw); 166 166 _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, 168 168 _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, 170 170 _h, [self bounds].size.height-(_h*fh)); 171 171 } … … 200 200 { 201 201 debug_log(@"%s resize to %ux%u", _cmd, _w, _h); 202 202 203 203 _w = caca_get_canvas_width(dp->cv); 204 204 _h = caca_get_canvas_height(dp->cv); … … 207 207 free(_attrs); 208 208 _attrs = malloc(_w * _h * sizeof(uint32_t) * 2); 209 209 210 210 if(_bkg_rects) 211 211 free(_bkg_rects); 212 212 _bkg_rects = malloc(_w * _h * sizeof(NSRect)); 213 213 214 214 if(_bkg_colors) 215 215 free(_bkg_colors); … … 347 347 uint8_t argb[8]; 348 348 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]", 350 350 x, y, argb[1], argb[2], argb[3], argb[5], argb[6], argb[7]); 351 351 color = [NSColor colorWithCalibratedRed:((float)argb[5]) / 15.0 … … 357 357 if(color) 358 358 { 359 NSMutableDictionary* attrDict = (*attrs & CACA_UNDERLINE) ? 359 NSMutableDictionary* attrDict = (*attrs & CACA_UNDERLINE) ? 360 360 _attrDictUnderline : _attrDict; 361 361 [attrDict setObject:color forKey:NSForegroundColorAttributeName]; … … 461 461 static NSString* get_application_name() 462 462 { 463 NSString* appName = [[NSBundle mainBundle] objectForInfoDictionaryKey: 463 NSString* appName = [[NSBundle mainBundle] objectForInfoDictionaryKey: 464 464 @"CFBundleName"]; 465 465 if(![appName length]) … … 477 477 NSString* appName = get_application_name(); 478 478 NSMenu* appleMenu = [[NSMenu alloc] initWithTitle:@""]; 479 479 480 480 /* Add menu items */ 481 481 NSString* title = [@"About " stringByAppendingString:appName]; 482 [appleMenu addItemWithTitle:title 483 action:@selector(orderFrontStandardAboutPanel:) 482 [appleMenu addItemWithTitle:title 483 action:@selector(orderFrontStandardAboutPanel:) 484 484 keyEquivalent:@""]; 485 485 [appleMenu addItem:[NSMenuItem separatorItem]]; 486 486 487 487 title = [@"Hide " stringByAppendingString:appName]; 488 [appleMenu addItemWithTitle:title action:@selector(hide:) 488 [appleMenu addItemWithTitle:title action:@selector(hide:) 489 489 keyEquivalent:@"h"]; 490 490 491 id<NSMenuItem> menuItem = [appleMenu addItemWithTitle:@"Hide Others" 491 id<NSMenuItem> menuItem = [appleMenu addItemWithTitle:@"Hide Others" 492 492 action:@selector(hideOtherApplications:) 493 493 keyEquivalent:@"h"]; 494 494 [menuItem setKeyEquivalentModifierMask:(NSAlternateKeyMask|NSCommandKeyMask)]; 495 495 496 [appleMenu addItemWithTitle:@"Show All" 496 [appleMenu addItemWithTitle:@"Show All" 497 497 action:@selector(unhideAllApplications:) 498 498 keyEquivalent:@""]; … … 500 500 501 501 title = [@"Quit " stringByAppendingString:appName]; 502 [appleMenu addItemWithTitle:title action:@selector(terminate:) 502 [appleMenu addItemWithTitle:title action:@selector(terminate:) 503 503 keyEquivalent:@"q"]; 504 504 505 505 /* Put menu into the menubar */ 506 506 menuItem = [[NSMenuItem alloc] initWithTitle:@"" action:nil keyEquivalent:@""]; … … 515 515 /* Create the window menu */ 516 516 NSMenu* windowMenu = [[NSMenu alloc] initWithTitle:@"Window"]; 517 517 518 518 /* "Minimize" item */ 519 menuItem = [[NSMenuItem alloc] initWithTitle:@"Minimize" 520 action:@selector(performMiniaturize:) 519 menuItem = [[NSMenuItem alloc] initWithTitle:@"Minimize" 520 action:@selector(performMiniaturize:) 521 521 keyEquivalent:@"m"]; 522 522 [windowMenu addItem:menuItem]; 523 523 [menuItem release]; 524 524 525 525 /* Put menu into the menubar */ 526 526 menuItem = [[NSMenuItem alloc] initWithTitle:@"Window" action:nil keyEquivalent:@""]; … … 528 528 [[NSApp mainMenu] addItem:menuItem]; 529 529 [menuItem release]; 530 530 531 531 /* Tell the application object that this is now the window menu */ 532 532 [NSApp setWindowsMenu:windowMenu]; … … 562 562 { 563 563 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), 567 567 (int)r->origin.y, (int)r->size.height);*/ 568 r->origin.y = CGDisplayPixelsHigh(kCGDirectMainDisplay) - mb_height 568 r->origin.y = CGDisplayPixelsHigh(kCGDirectMainDisplay) - mb_height 569 569 - r->origin.y - r->size.height; 570 570 } … … 618 618 caca_keycode = CACA_KEY_CTRL_A + ch - 'a'; 619 619 } 620 620 621 621 if(!caca_keycode) 622 622 { … … 729 729 if(!ev || !event) 730 730 return NO; 731 731 732 732 BOOL eventHandled = NO; 733 733 734 734 if([event modifierFlags] & NSCommandKeyMask) 735 735 { … … 768 768 ev->data.key.utf8[0] = mac_keycode & 0x00ff; // FIXME: endianness 769 769 ev->data.key.utf8[1] = mac_keycode & 0xff00; 770 770 771 771 eventHandled = YES; 772 772 } … … 860 860 static int cocoa_end_graphics(caca_display_t *dp) 861 861 { 862 debug_log(@"%s dp->cv: %ux%u", __PRETTY_FUNCTION__, 862 debug_log(@"%s dp->cv: %ux%u", __PRETTY_FUNCTION__, 863 863 caca_get_canvas_width(dp->cv), caca_get_canvas_height(dp->cv)); 864 864 … … 909 909 if([NSApp isRunning]) 910 910 { 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 914 914 dequeue:YES]; 915 915 if(event) … … 924 924 case NSFlagsChanged: 925 925 break; 926 926 927 927 case NSLeftMouseDown: 928 928 case NSLeftMouseUp: -
libcaca/trunk/caca/driver/gl.c
r2962 r3582 1 1 /* 2 2 * 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> 4 4 * 2006 Jean-Yves Lamoureux <jylam@lnxscene.org> 5 5 * 2007 Ben Wiley Sittler <bsittler@gmail.com> … … 563 563 564 564 memset(tmp, 0, 16 * 8 * 16); 565 565 566 566 for(y = 0; y < h; y++) 567 567 { … … 577 577 } 578 578 } 579 579 580 580 glGenTextures(1, (GLuint*)&dp->drv.p->txid[b + j]); 581 581 glBindTexture(GL_TEXTURE_2D, dp->drv.p->txid[b + j]); -
libcaca/trunk/caca/figfont.c
r3495 r3582 133 133 int c, w, h, x, y, overlap, extra, xleft, xright; 134 134 135 if (!ff) 135 if (!ff) 136 136 return -1; 137 137 -
libcaca/trunk/examples/import.c
r3495 r3582 43 43 if(caca_import_canvas_from_file(cv, argv[1], argc >= 3 ? argv[2] : "") < 0) 44 44 { 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]); 46 46 caca_free_canvas(cv); 47 47 return 1; -
libcaca/trunk/python/pypycaca.c
r1462 r3582 60 60 {"printf", pycaca_printf, METH_VARARGS, ""}, 61 61 {"clear", pycaca_clear, METH_VARARGS, ""}, 62 62 63 63 {"load_sprite", pycaca_load_sprite, METH_VARARGS, ""}, 64 64 {"draw_sprite", pycaca_draw_sprite, METH_VARARGS, ""}, … … 80 80 {"draw_bitmap", pycaca_draw_bitmap, METH_VARARGS, ""}, 81 81 {"free_bitmap", pycaca_free_bitmap, METH_VARARGS, ""}, 82 82 83 83 84 84 … … 99 99 obj = Py_InitModule("caca", CacaMethods); 100 100 dict = PyModule_GetDict(obj); 101 101 102 102 SET_INTCONSTANT(dict,CACA_EVENT_NONE ); 103 103 SET_INTCONSTANT(dict,CACA_EVENT_KEY_PRESS ); … … 108 108 SET_INTCONSTANT(dict,CACA_EVENT_RESIZE ); 109 109 SET_INTCONSTANT(dict,CACA_EVENT_ANY ); 110 110 111 111 SET_INTCONSTANT(dict, CACA_COLOR_BLACK ); 112 112 SET_INTCONSTANT(dict, CACA_COLOR_BLUE ); … … 192 192 { 193 193 int ret; 194 194 195 195 ret = caca_init(); 196 196 return Py_BuildValue("i", ret); … … 301 301 if (!PyArg_ParseTuple(args, "i", &value)); 302 302 ret = caca_get_feature(value); 303 303 304 304 return Py_BuildValue("i", ret); 305 305 … … 312 312 if (!PyArg_ParseTuple(args, "i", &value)); 313 313 caca_set_feature(value); 314 314 315 315 return Py_BuildValue("i", 1); /* FIXME */ 316 316 … … 324 324 325 325 ret = (char* const)caca_get_feature_name(value); 326 326 327 327 return Py_BuildValue("s", ret); 328 328 } … … 338 338 339 339 ret = caca_get_event(value); 340 340 341 341 return Py_BuildValue("i", ret); 342 342 } … … 348 348 349 349 ret = caca_get_event(value); 350 350 351 351 return Py_BuildValue("i", ret); 352 352 } … … 374 374 int x1, y1, x2, y2; 375 375 char c; 376 376 377 377 if (!PyArg_ParseTuple(args, "iiiic", &x1,&y1,&x2,&y2,&c)); 378 378 caca_draw_line(x1,y1,x2,y2,c); … … 385 385 int *x, *y, n, lenx, leny, i; 386 386 char c; 387 387 388 388 if (!PyArg_ParseTuple(args, "OOic", &list_x, &list_y, &n, &c)); 389 389 390 390 lenx = PySequence_Length(list_x); 391 391 leny = PySequence_Length(list_y); 392 392 393 393 x = (int*) malloc(lenx*sizeof(int)); 394 394 y = (int*) malloc(leny*sizeof(int)); … … 419 419 { 420 420 int x1, y1, x2, y2; 421 421 422 422 if (!PyArg_ParseTuple(args, "iiii", &x1,&y1,&x2,&y2)); 423 423 caca_draw_thin_line(x1,y1,x2,y2); … … 430 430 PyObject *list_x, *list_y, *item; 431 431 int *x, *y, n, lenx, leny, i; 432 432 433 433 if (!PyArg_ParseTuple(args, "OOi", &list_x, &list_y, &n)); 434 434 435 435 lenx = PySequence_Length(list_x); 436 436 leny = PySequence_Length(list_y); 437 437 438 438 x = (int*) malloc(lenx*sizeof(int)); 439 439 y = (int*) malloc(leny*sizeof(int)); … … 565 565 { 566 566 int ret = caca_get_fg_color(); 567 return Py_BuildValue("i", ret); 567 return Py_BuildValue("i", ret); 568 568 } 569 569 … … 572 572 { 573 573 int ret = caca_get_bg_color(); 574 return Py_BuildValue("i", ret); 574 return Py_BuildValue("i", ret); 575 575 } 576 576 … … 582 582 if (!PyArg_ParseTuple(args, "i", &c)); 583 583 ret = (char *)caca_get_color_name(c); 584 584 585 585 return Py_BuildValue("s", ret); /* FIXME */ 586 586 } … … 649 649 if (!PyArg_ParseTuple(args, "iiii", &x, &y, &sprite,&frame)); 650 650 caca_draw_sprite(x,y, (struct caca_sprite const *)PyCObject_AsVoidPtr((void*)sprite), frame); 651 651 652 652 return Py_BuildValue("i", 1); /* FIXME */ 653 653 } … … 660 660 ret = caca_get_sprite_frames((struct caca_sprite const *)PyCObject_AsVoidPtr((void*)sprite)); 661 661 662 return Py_BuildValue("i", ret); 663 662 return Py_BuildValue("i", ret); 663 664 664 } 665 665 … … 671 671 ret = caca_get_sprite_width((struct caca_sprite const *)PyCObject_AsVoidPtr((void*)sprite),i); 672 672 673 return Py_BuildValue("i", ret); 673 return Py_BuildValue("i", ret); 674 674 675 675 } … … 681 681 if (!PyArg_ParseTuple(args, "ii", &sprite, i)); 682 682 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); 685 685 } 686 686 … … 691 691 if (!PyArg_ParseTuple(args, "ii", &sprite), &i); 692 692 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); 695 695 } 696 696 … … 701 701 if (!PyArg_ParseTuple(args, "ii", &sprite), &i); 702 702 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); 705 705 } 706 706 … … 711 711 if (!PyArg_ParseTuple(args, "i", &sprite)); 712 712 caca_free_sprite((struct caca_sprite *)PyCObject_AsVoidPtr((void*)sprite)); 713 713 714 714 return Py_BuildValue("i", 1); /* FIXME */ 715 715 } … … 723 723 if (!PyArg_ParseTuple(args, "")); 724 724 725 return Py_BuildValue("s",caca_get_html()); 725 return Py_BuildValue("s",caca_get_html()); 726 726 } 727 727 … … 731 731 if (!PyArg_ParseTuple(args, "")); 732 732 733 return Py_BuildValue("s",caca_get_html3()); 733 return Py_BuildValue("s",caca_get_html3()); 734 734 } 735 735 … … 739 739 if (!PyArg_ParseTuple(args, "")); 740 740 741 return Py_BuildValue("s",caca_get_irc()); 741 return Py_BuildValue("s",caca_get_irc()); 742 742 } 743 743 … … 747 747 int trailing; 748 748 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)); 751 751 } 752 752 … … 774 774 775 775 if (!PyArg_ParseTuple(args, "iOOOO", &bitmap, &list_r, &list_g, &list_b, &list_a)); 776 776 777 777 if((PySequence_Length(list_r)!=256) || 778 778 (PySequence_Length(list_g)!=256) || … … 782 782 PyErr_SetString(PyExc_TypeError, "Lengths of colors lists must be 256"); 783 783 } 784 784 785 785 r = malloc(256*sizeof(unsigned int)); 786 786 g = malloc(256*sizeof(unsigned int)); … … 827 827 828 828 if (!PyArg_ParseTuple(args, "iiiiiO", &x1,&y1,&x2,&y2,&bitmap,&pixels)); 829 829 830 830 831 831 buffer = malloc(PySequence_Length(pixels)*sizeof(unsigned char)); 832 832 833 833 834 834 for(i=0;i<PySequence_Length(pixels);i++) 835 835 { … … 837 837 buffer[i] = (unsigned char)PyInt_AsLong(item); 838 838 } 839 839 840 840 841 841 -
libcaca/trunk/ruby/caca-canvas.c
r3495 r3582 226 226 else 227 227 cmask = NULL; 228 228 229 229 if(caca_blit(_SELF, NUM2INT(x), NUM2INT(y), csrc, cmask)<0) 230 230 rb_raise(rb_eRuntimeError, strerror(errno)); … … 296 296 error = 1; 297 297 } 298 else298 else 299 299 error = 1; 300 300 } … … 358 358 error = 1; 359 359 } 360 else360 else 361 361 error = 1; 362 362 } … … 584 584 rb_define_method(cCanvas, "set_height", set_canvas_height2, 1); 585 585 rb_define_method(cCanvas, "set_size", set_canvas_size, 2); 586 586 587 587 rb_define_method(cCanvas, "gotoxy", gotoxy, 2); 588 588 rb_define_method(cCanvas, "cursor_x", get_cursor_x, 0); … … 595 595 596 596 rb_define_method(cCanvas, "clear", clear_canvas, 0); 597 597 598 598 rb_define_method(cCanvas, "put_char", put_char, 3); 599 599 rb_define_method(cCanvas, "get_char", get_char, 2); -
libcaca/trunk/ruby/caca-display.c
r3157 r3582 73 73 { 74 74 display = caca_create_display(canvas); 75 if(display && NIL_P(cv))76 {75 if(display && NIL_P(cv)) 76 { 77 77 cv = canvas_create(caca_get_canvas(display)); 78 }78 } 79 79 } 80 80 else -
libcaca/trunk/ruby/caca-dither.c
r2822 r3582 25 25 { 26 26 VALUE obj; 27 obj = Data_Wrap_Struct(klass, 0, dither_free, NULL); 27 obj = Data_Wrap_Struct(klass, 0, dither_free, NULL); 28 28 return obj; 29 29 } … … 103 103 error = 1; 104 104 } 105 else105 else 106 106 error = 1; 107 107 } … … 112 112 free(green); 113 113 free(blue); 114 free(alpha); 114 free(alpha); 115 115 rb_raise(rb_eArgError, "Invalid palette"); 116 116 } … … 121 121 free(green); 122 122 free(blue); 123 free(alpha); 123 free(alpha); 124 124 rb_raise(rb_eRuntimeError, strerror(errno)); 125 125 } … … 129 129 free(blue); 130 130 free(alpha); 131 131 132 132 return palette; 133 133 } … … 140 140 141 141 #define set_float(x) \ 142 static VALUE set_##x(VALUE self, VALUE x) \142 static VALUE set_##x(VALUE self, VALUE x) \ 143 143 { \ 144 if(caca_set_dither_##x(_SELF, (float)NUM2DBL(x))<0) \144 if(caca_set_dither_##x(_SELF, (float)NUM2DBL(x))<0) \ 145 145 rb_raise(rb_eRuntimeError, strerror(errno)); \ 146 146 \ … … 148 148 } \ 149 149 \ 150 static VALUE set_##x##2(VALUE self, VALUE x) \150 static VALUE set_##x##2(VALUE self, VALUE x) \ 151 151 { \ 152 152 set_##x(self, x); \ … … 162 162 static VALUE set_dither_##x(VALUE self, VALUE x) \ 163 163 { \ 164 if(caca_set_dither_##x(_SELF, StringValuePtr(x))<0) \164 if(caca_set_dither_##x(_SELF, StringValuePtr(x))<0) \ 165 165 { \ 166 166 rb_raise(rb_eRuntimeError, strerror(errno)); \ -
libcaca/trunk/ruby/caca-event.c
r2019 r3582 32 32 33 33 cEventKey = rb_define_class_under(cEvent, "Key", cEvent); 34 rb_define_const(cEventKey, "TYPE", 34 rb_define_const(cEventKey, "TYPE", 35 35 INT2FIX(CACA_EVENT_KEY_PRESS| 36 36 CACA_EVENT_KEY_RELEASE)); … … 43 43 rb_define_const(cEventKeyRelease, "TYPE", 44 44 INT2FIX(CACA_EVENT_KEY_RELEASE)); 45 45 46 46 cEventMouse = rb_define_class_under(cEvent, "Mouse", cEvent); 47 47 rb_define_const(cEventMouse, "TYPE", -
libcaca/trunk/ruby/caca-font.c
r2822 r3582 25 25 { 26 26 VALUE obj; 27 obj = Data_Wrap_Struct(klass, 0, font_free, NULL); 27 obj = Data_Wrap_Struct(klass, 0, font_free, NULL); 28 28 return obj; 29 29 } … … 46 46 VALUE ary; 47 47 char const* const* list; 48 48 49 49 list = caca_get_font_list(); 50 51 ary = rb_ary_new(); 50 51 ary = rb_ary_new(); 52 52 while (*list != NULL) 53 53 { … … 73 73 VALUE ary; 74 74 uint32_t const *list; 75 75 76 76 list = caca_get_font_blocks(_SELF); 77 78 ary = rb_ary_new(); 77 78 ary = rb_ary_new(); 79 79 while (*list != 0L) 80 80 { -
libcaca/trunk/src/aafire.c
r2961 r3582 1 1 /* 2 2 * cacafire fire demo for libcaca 3 * Copyright (c) 2003 Sam Hocevar <sam@ zoy.org>3 * Copyright (c) 2003 Sam Hocevar <sam@hocevar.net> 4 4 * 1998, 1999, 2001 Jan Hubicka <hubicka@freesoft.cz> 5 5 * All Rights Reserved … … 137 137 #else 138 138 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); 140 140 #endif 141 141 … … 172 172 { 173 173 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 } 178 178 else 179 table[i] = 0;179 table[i] = 0; 180 180 } 181 181 } … … 192 192 i = 0; 193 193 #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)); 196 196 p += 1) 197 197 { 198 198 *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))]; 200 200 } 201 201 } … … 229 229 i = rand () % 6; 230 230 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; 234 234 *(p + 2 * XSIZ) = last1, last1 += rand () % 6 - 2; 235 235 } … … 245 245 caca_get_canvas_height(cv) - 2, 246 246 " -=[ Powered by libcaca ]=- "); 247 247 248 248 caca_refresh_display(dp); 249 249 /*XSIZ = caca_get_width() * 2; … … 251 251 #else 252 252 aa_renderpalette (context, palette, params, 0, 0, aa_scrwidth (context), 253 aa_scrheight (context));253 aa_scrheight (context)); 254 254 aa_flush (context); 255 255 #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 1 13 #include "config.h" 2 14 … … 4 16 5 17 #include "caca.h" 18 19 #define BLIT_LOOPS 1000000 20 #define PUTCHAR_LOOPS 50000000 6 21 7 22 #define TIME(desc, code) \ … … 23 38 cv2 = caca_create_canvas(16, 16); 24 39 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); 29 45 } 30 46 caca_free_canvas(cv); … … 37 53 int i; 38 54 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'); 42 59 } 43 60 caca_free_canvas(cv); … … 46 63 int main(int argc, char *argv[]) 47 64 { 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()); 53 70 return 0; 54 71 }
Note: See TracChangeset
for help on using the changeset viewer.
