Browse Source

* Change type of the last argument of drawing function (from string to long)

* Adapt sample programs
tags/v0.99.beta17
Nicolas Vion nico 16 years ago
parent
commit
cb9f4d661c
4 changed files with 57 additions and 94 deletions
  1. +3
    -0
      caca-php/examples/cacainfo.php
  2. +14
    -14
      caca-php/examples/demo.php
  3. +9
    -8
      caca-php/examples/polyline.php
  4. +31
    -72
      caca-php/php_caca.c

+ 3
- 0
caca-php/examples/cacainfo.php View File

@@ -28,6 +28,9 @@ EOT;
}
caca_set_color_ansi($cv, CACA_LIGHTGREEN, CACA_DEFAULT);
caca_put_str($cv, 8, 0, "Moo!");
caca_set_color_ansi($cv, CACA_LIGHTRED, CACA_DEFAULT);
caca_put_char($cv, 8, 1, hexdec("2765")); //U+2765
caca_put_char($cv, 10, 1, hexdec("2764")); //U+2764
echo caca_export_string($cv, "utf8");
}


+ 14
- 14
caca-php/examples/demo.php View File

@@ -160,9 +160,9 @@ function demo_all($cv, $dp, $bounds, $outline) {

$j = 15 + sin(0.03 * $i) * 8;
caca_set_color_ansi($cv, CACA_WHITE, CACA_BLACK);
caca_fill_ellipse($cv, $xo, $yo, $j, $j / 2, '#');
caca_fill_ellipse($cv, $xo, $yo, $j, $j / 2, ord('#'));
caca_set_color_ansi($cv, CACA_YELLOW, CACA_BLACK);
caca_draw_ellipse($cv, $xo, $yo, $j, $j / 2, '#');
caca_draw_ellipse($cv, $xo, $yo, $j, $j / 2, ord('#'));

/* Draw the pyramid */
$xo = caca_get_canvas_width($cv) * 5 / 8;
@@ -178,17 +178,17 @@ function demo_all($cv, $dp, $bounds, $outline) {
$yc = caca_get_canvas_height($cv) * 3 / 4 + cos(0.02 * $i) * 5;

caca_set_color_ansi($cv, CACA_GREEN, CACA_BLACK);
caca_fill_triangle($cv, $xo, $yo, $xb, $yb, $xa, $ya, '%');
caca_fill_triangle($cv, $xo, $yo, $xb, $yb, $xa, $ya, ord('%'));
caca_set_color_ansi($cv, CACA_YELLOW, CACA_BLACK);
caca_draw_thin_triangle($cv, $xo, $yo, $xb, $yb, $xa, $ya);

caca_set_color_ansi($cv, CACA_RED, CACA_BLACK);
caca_fill_triangle($cv, $xa, $ya, $xb, $yb, $xc, $yc, '#');
caca_fill_triangle($cv, $xa, $ya, $xb, $yb, $xc, $yc, ord('#'));
caca_set_color_ansi($cv, CACA_YELLOW, CACA_BLACK);
caca_draw_thin_triangle($cv, $xa, $ya, $xb, $yb, $xc, $yc);

caca_set_color_ansi($cv, CACA_BLUE, CACA_BLACK);
caca_fill_triangle($cv, $xo, $yo, $xb, $yb, $xc, $yc, '%');
caca_fill_triangle($cv, $xo, $yo, $xb, $yb, $xc, $yc, ord('%'));
caca_set_color_ansi($cv, CACA_YELLOW, CACA_BLACK);
caca_draw_thin_triangle($cv, $xo, $yo, $xb, $yb, $xc, $yc);

@@ -219,7 +219,7 @@ function demo_all($cv, $dp, $bounds, $outline) {
caca_put_char($cv,
caca_get_canvas_width($cv) / 2 + cos(0.02 * $j) * ($delta + caca_get_canvas_width($cv) / 4),
caca_get_canvas_height($cv) / 2 + sin(0.02 * $j) * ($delta + caca_get_canvas_height($cv) / 3),
'#');
ord('#'));
}
}

@@ -264,7 +264,7 @@ function demo_dots($cv, $bounds, $outline, $dithering) {
for ($i = 1000; $i--;) {
/* Putpixel */
caca_set_color_ansi($cv, caca_rand(0, 16), caca_rand(0, 16));
caca_put_char($cv, caca_rand(0, $xmax), caca_rand(0, $ymax), $chars[caca_rand(0, 9)]);
caca_put_char($cv, caca_rand(0, $xmax), caca_rand(0, $ymax), ord($chars[caca_rand(0, 9)]));
}
}

@@ -285,7 +285,7 @@ function demo_lines($cv, $bounds, $outline, $dithering) {
if ($outline > 1)
caca_draw_thin_line($cv, $xa, $ya, $xb, $yb);
else
caca_draw_line($cv, $xa, $ya, $xb, $yb, '#');
caca_draw_line($cv, $xa, $ya, $xb, $yb, ord('#'));
}

function demo_boxes($cv, $bounds, $outline, $dithering) {
@@ -302,13 +302,13 @@ function demo_boxes($cv, $bounds, $outline, $dithering) {
}

caca_set_color_ansi($cv, caca_rand(0, 16), caca_rand(0, 16));
caca_fill_box($cv, $xa, $ya, $xb, $yb, '#');
caca_fill_box($cv, $xa, $ya, $xb, $yb, ord('#'));

caca_set_color_ansi($cv, caca_rand(0, 16), CACA_BLACK);
if($outline == 2)
caca_draw_thin_box($cv, $xa, $ya, $xb, $yb);
else if($outline == 1)
caca_draw_box($cv, $xa, $ya, $xb, $yb, '#');
caca_draw_box($cv, $xa, $ya, $xb, $yb, ord('#'));
}

function demo_ellipses($cv, $bounds, $outline, $dithering) {
@@ -327,13 +327,13 @@ function demo_ellipses($cv, $bounds, $outline, $dithering) {
}

caca_set_color_ansi($cv, caca_rand(0, 16), caca_rand(0, 16));
caca_fill_ellipse($cv, $x, $y, $a, $b, '#');
caca_fill_ellipse($cv, $x, $y, $a, $b, ord('#'));

caca_set_color_ansi($cv, caca_rand(0, 16), CACA_BLACK);
if ($outline == 2)
caca_draw_thin_ellipse($cv, $x, $y, $a, $b);
else if ($outline == 1)
caca_draw_ellipse($cv, $x, $y, $a, $b, '#');
caca_draw_ellipse($cv, $x, $y, $a, $b, ord('#'));
}

function demo_triangles($cv, $bounds, $outline, $dithering) {
@@ -352,13 +352,13 @@ function demo_triangles($cv, $bounds, $outline, $dithering) {
}

caca_set_color_ansi($cv, caca_rand(0, 16), caca_rand(0, 16));
caca_fill_triangle($cv, $xa, $ya, $xb, $yb, $xc, $yc, '#');
caca_fill_triangle($cv, $xa, $ya, $xb, $yb, $xc, $yc, ord('#'));

caca_set_color_ansi($cv, caca_rand(0, 16), CACA_BLACK);
if ($outline == 2)
caca_draw_thin_triangle($cv, $xa, $ya, $xb, $yb, $xc, $yc);
else if ($outline == 1)
caca_draw_triangle($cv, $xa, $ya, $xb, $yb, $xc, $yc, '#');
caca_draw_triangle($cv, $xa, $ya, $xb, $yb, $xc, $yc, ord('#'));
}

function demo_render($cv, $bounds, $outline, $dithering) {


+ 9
- 8
caca-php/examples/polyline.php View File

@@ -1,6 +1,13 @@
#!/usr/bin/php5
<?php

function transform($tbl, $tx, $ty, $sx, $sy) {
$result = array();
foreach($tbl as $pt)
$result[] = array($pt[0] * $sx + $tx, $pt[1] * $sy + $ty);
return $result;
}

$canvas = caca_create_canvas(0, 0);
$display = caca_create_display($canvas);
if (!$display) {
@@ -21,17 +28,10 @@ $tbl = array(
array(5, 2)
);

function transform($tbl, $tx, $ty, $sx, $sy) {
$result = array();
foreach($tbl as $pt)
$result[] = array($pt[0] * $sx + $tx, $pt[1] * $sy + $ty);
return $result;
}

for ($i = 0; $i < 10; $i++) {
caca_set_color_ansi($canvas, 1 + (($color += 4) % 15), CACA_TRANSPARENT);
$scale = caca_rand(4, 10) / 10;
$translate = array(caca_rand(-10, 60), caca_rand(-5, 20));
$translate = array(caca_rand(-5, 55), caca_rand(-2, 25));
$pts = transform($tbl, $translate[0], $translate[1], $scale, $scale);
caca_draw_thin_polyline($canvas, $pts);
}
@@ -39,3 +39,4 @@ for ($i = 0; $i < 10; $i++) {
caca_put_str($canvas, 1, 1, "Caca forever...");
caca_refresh_display($display);
sleep(5);


+ 31
- 72
caca-php/php_caca.c View File

@@ -473,17 +473,13 @@ PHP_FUNCTION(caca_get_cursor_y) {

PHP_FUNCTION(caca_put_char) {
zval *_zval;
char *str;
long str_len, x, y = 0;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlls", &_zval, &x, &y, &str, &str_len) == FAILURE) {
long x, y, c;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlll", &_zval, &x, &y, &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);
if (str_len != 1) {
RETURN_FALSE;
}
RETURN_SUCCESS(caca_put_char(canvas, x, y, str[0]));
RETURN_SUCCESS(caca_put_char(canvas, x, y, c));
}

PHP_FUNCTION(caca_get_char) {
@@ -720,29 +716,20 @@ PHP_FUNCTION(caca_utf32_is_fullwidth) {

PHP_FUNCTION(caca_draw_line) {
zval *_zval;
char *str;
long str_len, xa, ya, xb, yb = 0;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlllls", &_zval, &xa, &ya, &xb, &yb, &str, &str_len) == FAILURE) {
long xa, ya, xb, yb, c;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlllll", &_zval, &xa, &ya, &xb, &yb, &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);
if (str_len != 1) {
RETURN_FALSE;
}
RETURN_SUCCESS(caca_draw_line(canvas, xa, ya, xb, yb, str[0]));
RETURN_SUCCESS(caca_draw_line(canvas, xa, ya, xb, yb, c));
}

PHP_FUNCTION(caca_draw_polyline) {
zval *zval_res, *zval_arr;
char *c;
long c_len;

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ras", &zval_res, &zval_arr, &c, &c_len) == FAILURE) {
RETURN_FALSE;
}
long c;

if (c_len != 1) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ral", &zval_res, &zval_arr, &c) == FAILURE) {
RETURN_FALSE;
}

@@ -775,7 +762,7 @@ PHP_FUNCTION(caca_draw_polyline) {
tbl_count++;
}
}
int res = caca_draw_polyline(canvas, tbl_x, tbl_y, tbl_count - 1, c[0]);
int res = caca_draw_polyline(canvas, tbl_x, tbl_y, tbl_count - 1, c);
free(tbl_x);
free(tbl_y);
RETURN_SUCCESS(res);
@@ -835,32 +822,24 @@ PHP_FUNCTION(caca_draw_thin_polyline) {

PHP_FUNCTION(caca_draw_circle) {
zval *_zval;
char *str;
long str_len, x, y, r = 0;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllls", &_zval, &x, &y, &r, &str, &str_len) == FAILURE) {
long x, y, r, c;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllll", &_zval, &x, &y, &r, &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);
if (str_len != 1) {
RETURN_FALSE;
}
RETURN_SUCCESS(caca_draw_circle(canvas, x, y, r, str[0]));
RETURN_SUCCESS(caca_draw_circle(canvas, x, y, r, c));
}

PHP_FUNCTION(caca_draw_ellipse) {
zval *_zval;
char *str;
long str_len, xa, ya, xb, yb = 0;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlllls", &_zval, &xa, &ya, &xb, &yb, &str, &str_len) == FAILURE) {
long xa, ya, xb, yb, c = 0;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlllll", &_zval, &xa, &ya, &xb, &yb, &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);
if (str_len != 1) {
RETURN_FALSE;
}
RETURN_SUCCESS(caca_draw_ellipse(canvas, xa, ya, xb, yb, str[0]));
RETURN_SUCCESS(caca_draw_ellipse(canvas, xa, ya, xb, yb, c));
}

PHP_FUNCTION(caca_draw_thin_ellipse) {
@@ -876,32 +855,24 @@ PHP_FUNCTION(caca_draw_thin_ellipse) {

PHP_FUNCTION(caca_fill_ellipse) {
zval *_zval;
char *str;
long str_len, xa, ya, xb, yb = 0;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlllls", &_zval, &xa, &ya, &xb, &yb, &str, &str_len) == FAILURE) {
long xa, ya, xb, yb, c;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlllll", &_zval, &xa, &ya, &xb, &yb, &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);
if (str_len != 1) {
RETURN_FALSE;
}
RETURN_SUCCESS(caca_fill_ellipse(canvas, xa, ya, xb, yb, str[0]));
RETURN_SUCCESS(caca_fill_ellipse(canvas, xa, ya, xb, yb, c));
}

PHP_FUNCTION(caca_draw_box) {
zval *_zval;
char *str;
long str_len, xa, ya, xb, yb = 0;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlllls", &_zval, &xa, &ya, &xb, &yb, &str, &str_len) == FAILURE) {
long xa, ya, xb, yb, c;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlllll", &_zval, &xa, &ya, &xb, &yb, &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);
if (str_len != 1) {
RETURN_FALSE;
}
RETURN_SUCCESS(caca_draw_box(canvas, xa, ya, xb, yb, str[0]));
RETURN_SUCCESS(caca_draw_box(canvas, xa, ya, xb, yb, c));
}

PHP_FUNCTION(caca_draw_thin_box) {
@@ -917,7 +888,7 @@ PHP_FUNCTION(caca_draw_thin_box) {

PHP_FUNCTION(caca_draw_cp437_box) {
zval *_zval;
long xa, ya, xb, yb = 0;
long xa, ya, xb, yb;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllll", &_zval, &xa, &ya, &xb, &yb) == FAILURE) {
RETURN_FALSE;
}
@@ -928,32 +899,24 @@ PHP_FUNCTION(caca_draw_cp437_box) {

PHP_FUNCTION(caca_fill_box) {
zval *_zval;
char *str;
long str_len, xa, ya, xb, yb = 0;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlllls", &_zval, &xa, &ya, &xb, &yb, &str, &str_len) == FAILURE) {
long xa, ya, xb, yb, c;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlllll", &_zval, &xa, &ya, &xb, &yb, &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);
if (str_len != 1) {
RETURN_FALSE;
}
RETURN_SUCCESS(caca_fill_box(canvas, xa, ya, xb, yb, str[0]));
RETURN_SUCCESS(caca_fill_box(canvas, xa, ya, xb, yb, c));
}

PHP_FUNCTION(caca_draw_triangle) {
zval *_zval;
char *str;
long str_len, xa, ya, xb, yb, xc, yc = 0;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlllllls", &_zval, &xa, &ya, &xb, &yb, &xc, &yc, &str, &str_len) == FAILURE) {
long xa, ya, xb, yb, xc, yc, c;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlllllll", &_zval, &xa, &ya, &xb, &yb, &xc, &yc, &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);
if (str_len != 1) {
RETURN_FALSE;
}
RETURN_SUCCESS(caca_draw_triangle(canvas, xa, ya, xb, yb, xc, yc, str[0]));
RETURN_SUCCESS(caca_draw_triangle(canvas, xa, ya, xb, yb, xc, yc, c));
}

PHP_FUNCTION(caca_draw_thin_triangle) {
@@ -969,17 +932,13 @@ PHP_FUNCTION(caca_draw_thin_triangle) {

PHP_FUNCTION(caca_fill_triangle) {
zval *_zval;
char *str;
long str_len, xa, ya, xb, yb, xc, yc = 0;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlllllls", &_zval, &xa, &ya, &xb, &yb, &xc, &yc, &str, &str_len) == FAILURE) {
long xa, ya, xb, yb, xc, yc, c = 0;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlllllll", &_zval, &xa, &ya, &xb, &yb, &xc, &yc, &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);
if (str_len != 1) {
RETURN_FALSE;
}
RETURN_SUCCESS(caca_fill_triangle(canvas, xa, ya, xb, yb, xc, yc, str[0]));
RETURN_SUCCESS(caca_fill_triangle(canvas, xa, ya, xb, yb, xc, yc, c));
}

PHP_FUNCTION(caca_get_frame_count) {


Loading…
Cancel
Save