Example #1
0
File: caca.php Project: dns/libcaca
 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());
     }
 }
Example #2
0
 *  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);
Example #3
0
 *
 *  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);
Example #4
0
File: demo.php Project: dns/libcaca
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;
        }
    }
}