From 7f6e6d3fd82c06a9517d1b42915c6c480e08e28f Mon Sep 17 00:00:00 2001 From: Nicolas Vion Date: Tue, 28 Oct 2008 13:45:39 +0000 Subject: [PATCH] * Add php binding for caca_load_font, caca_get_font_blocks, caca_put_figchar * Add a working sample file examples/figfont.php * Rename sample programs: examples1.php > cacapig.php drivers.php > cacainfo.php --- .../examples/{drivers.php => cacainfo.php} | 0 .../examples/{example1.php => cacapig.php} | 0 caca-php/examples/figfont.php | 24 +++++++++++++ caca-php/php_caca.c | 34 +++++++++++++++++-- caca-php/php_caca.h | 2 +- 5 files changed, 57 insertions(+), 3 deletions(-) rename caca-php/examples/{drivers.php => cacainfo.php} (100%) rename caca-php/examples/{example1.php => cacapig.php} (100%) create mode 100755 caca-php/examples/figfont.php diff --git a/caca-php/examples/drivers.php b/caca-php/examples/cacainfo.php similarity index 100% rename from caca-php/examples/drivers.php rename to caca-php/examples/cacainfo.php diff --git a/caca-php/examples/example1.php b/caca-php/examples/cacapig.php similarity index 100% rename from caca-php/examples/example1.php rename to caca-php/examples/cacapig.php diff --git a/caca-php/examples/figfont.php b/caca-php/examples/figfont.php new file mode 100755 index 0000000..0394064 --- /dev/null +++ b/caca-php/examples/figfont.php @@ -0,0 +1,24 @@ +#!/usr/bin/php5 + \n"); +} + +$cv = caca_create_canvas(0, 0); + +if (!caca_canvas_set_figfont($cv, $argv[1])) { + die("Could not open font\n"); +} + +$str = $argv[2]; +$color = 0; +for ($i = 0; $i < strlen($str); $i++) { + caca_set_color_ansi($cv, 1 + (($color += 4) % 15), CACA_TRANSPARENT); + caca_put_figchar($cv, ord($str[$i])); +} + +echo caca_export_string($cv, "utf8"); + + + diff --git a/caca-php/php_caca.c b/caca-php/php_caca.c index a93026c..c256977 100644 --- a/caca-php/php_caca.c +++ b/caca-php/php_caca.c @@ -111,7 +111,7 @@ static function_entry caca_functions[] = { PHP_FE(caca_get_font_list, NULL) PHP_FE(caca_get_font_width, NULL) PHP_FE(caca_get_font_height, NULL) - PHP_FE(caca_get_font_bloc, NULL) + PHP_FE(caca_get_font_blocks, NULL) PHP_FE(caca_render_canvas, NULL) PHP_FE(caca_canvas_set_figfont, NULL) PHP_FE(caca_put_figchar, NULL) @@ -1204,6 +1204,13 @@ PHP_FUNCTION(caca_dither_bitmap_gd) { } PHP_FUNCTION(caca_load_font) { + char *str; + long str_len; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) == FAILURE) { + RETURN_FALSE; + } + caca_font_t *font = caca_load_font(str, str_len); + ZEND_REGISTER_RESOURCE(return_value, font, le_caca_font); } PHP_FUNCTION(caca_get_font_list) { @@ -1234,7 +1241,20 @@ PHP_FUNCTION(caca_get_font_height) { RETURN_LONG(caca_get_font_height(font)); } -PHP_FUNCTION(caca_get_font_bloc) { +PHP_FUNCTION(caca_get_font_blocks) { + zval *_zval; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &_zval) == FAILURE) { + RETURN_FALSE; + } + caca_font_t *font; + ZEND_FETCH_RESOURCE(font, caca_font_t*, &_zval, -1, PHP_CACA_FONT_RES_NAME, le_caca_font); + + uint32_t const *list = caca_get_font_blocks(font); + + int i; + array_init(return_value); + for(i = 0; list[i]; i += 1) + add_next_index_long(return_value, list[i]); } PHP_FUNCTION(caca_render_canvas) { @@ -1253,6 +1273,16 @@ PHP_FUNCTION(caca_canvas_set_figfont) { } PHP_FUNCTION(caca_put_figchar) { + zval *_zval; + long c; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &_zval, &c) == FAILURE) { + RETURN_FALSE; + } + caca_canvas_t *canvas; + ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); + + //TODO: get a string instead of a long + caca_put_figchar(canvas, c); } PHP_FUNCTION(caca_flush_figlet) { diff --git a/caca-php/php_caca.h b/caca-php/php_caca.h index b18d25b..938847a 100644 --- a/caca-php/php_caca.h +++ b/caca-php/php_caca.h @@ -128,7 +128,7 @@ PHP_FUNCTION(caca_load_font); PHP_FUNCTION(caca_get_font_list); PHP_FUNCTION(caca_get_font_width); PHP_FUNCTION(caca_get_font_height); -PHP_FUNCTION(caca_get_font_bloc); +PHP_FUNCTION(caca_get_font_blocks); PHP_FUNCTION(caca_render_canvas); PHP_FUNCTION(caca_canvas_set_figfont); PHP_FUNCTION(caca_put_figchar);