function __construct($canvas, $driver = NULL) { if ($driver) { $this->dp = caca_create_display_with_driver($canvas->get_resource(), $driver); } else { $this->dp = caca_create_display($canvas->get_resource()); } }
* and/or modify it under the terms of the Do What the F**k You Want * to Public License, Version 2, as published by Sam Hocevar. See * http://www.wtfpl.net/ for more details. */ 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; } if (php_sapi_name() != "cli") { die("You have to run this program with php-cli!\n"); } $canvas = caca_create_canvas(0, 0); $display = caca_create_display($canvas); if (!$display) { die("Error while attaching canvas to display\n"); } $tbl = array(array(5, 2), array(15, 2), array(20, 4), array(25, 2), array(34, 2), array(37, 4), array(36, 9), array(20, 16), array(3, 9), array(2, 4), array(5, 2)); 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(-5, 55), caca_rand(-2, 25)); $pts = transform($tbl, $translate[0], $translate[1], $scale, $scale); caca_draw_thin_polyline($canvas, $pts); } caca_put_str($canvas, 1, 1, "Caca forever..."); caca_refresh_display($display); caca_get_event($display, CACA_EVENT_KEY_PRESS, 5000000);
* * This program is free software. It comes without any warranty, to * the extent permitted by applicable law. You can redistribute it * and/or modify it under the terms of the Do What the F**k You Want * to Public License, Version 2, as published by Sam Hocevar. See * http://www.wtfpl.net/ for more details. */ if (php_sapi_name() != "cli") { die("You have to run this program with php-cli!\n"); } $imports = caca_get_import_list(); if ($argc < 2 || $argc > 3) { $msg = $argv[0] . ": wrong argument count\n" . "usage: " . $argv[0] . " file [<format>]\n" . "where <format> is one of:\n"; foreach ($imports as $format => $name) { $msg .= " \"" . $name . "\" (" . $format . ")\n"; } die($msg); } $cv = caca_create_canvas(0, 0); if (!$cv) { die("Can't create canvas\n"); } if (caca_import_file($cv, $argv[1], $argc >= 3 ? $argv[2] : "") < 0) { die($argv[0] . ": could not open `" . $argv[1] . "'.\n"); } $dp = caca_create_display($cv); if (!$dp) { die("Can't create display\n"); } caca_refresh_display($dp); caca_get_event($dp, CACA_EVENT_KEY_PRESS, -1);
function main() { $cv = caca_create_canvas(0, 0); if (!$cv) { die("Error while creating canvas\n"); } $dp = caca_create_display($cv); if (!$dp) { die("Error while attaching canvas to display\n"); } caca_set_display_time($dp, 40000); /* Disable X cursor */ caca_set_mouse($dp, 0); /* Main menu */ $bounds = $outline = $dithering = 0; display_menu($cv, $dp, $bounds, $outline); /* Go ! */ $need_refresh = false; $quit = 0; while (!$quit) { while ($ev = caca_get_event($dp, CACA_EVENT_ANY, 1000)) { if (caca_get_event_type($ev) & CACA_EVENT_KEY_PRESS) { switch (caca_get_event_key_ch($ev)) { case ord('q'): case ord('Q'): case CACA_KEY_ESCAPE: $demo = false; $quit = 1; break; case ord('o'): case ord('O'): $outline = ($outline + 1) % 3; display_menu($cv, $dp, $bounds, $outline); break; case ord('b'): case ord('B'): $bounds = ($bounds + 1) % 2; display_menu($cv, $dp, $bounds, $outline); break; case ord('d'): case ord('D'): $dithering = ($dithering + 1) % 5; caca_set_feature($cv, $dithering); display_menu($cv, $dp, $bounds, $outline); break; case ord('f'): case ord('F'): demo_go($dp, "demo_all", $cv, $bounds, $outline); break; case ord('1'): demo_go($dp, "demo_dots", $cv, $bounds, $outline); break; case ord('2'): demo_go($dp, "demo_lines", $cv, $bounds, $outline); break; case ord('3'): demo_go($dp, "demo_boxes", $cv, $bounds, $outline); break; case ord('4'): demo_go($dp, "demo_triangles", $cv, $bounds, $outline); break; case ord('5'): demo_go($dp, "demo_ellipses", $cv, $bounds, $outline); break; case ord('s'): case ord('S'): demo_go($dp, "demo_sprites", $cv, $bounds, $outline); break; case ord('r'): case ord('R'): demo_go($dp, "demo_render", $cv, $bounds, $outline); break; } } else { if (caca_get_event_type($ev) & CACA_EVENT_MOUSE_MOTION) { $x = caca_get_event_mouse_x($ev); $y = caca_get_event_mouse_y($ev); display_menu($cv, $dp, $bounds, $outline, false); caca_set_color_ansi($cv, CACA_RED, CACA_BLACK); caca_put_str($cv, $x, $y, "."); caca_put_str($cv, $x, $y + 1, "|\\"); $need_refresh = true; } else { if (caca_get_event_type($ev) & CACA_EVENT_RESIZE) { display_menu($cv, $dp, $bounds, $outline); } } } } if ($need_refresh) { caca_refresh_display($dp); $need_refresh = false; } } }