source: libcaca/trunk/caca-php/examples/demo.php @ 3107

Last change on this file since 3107 was 3107, checked in by nico, 12 years ago
  • Add php bindings for functions: caca_draw_line & caca_draw_thin_line
  • Create a new sample file demo.php (php port of demo.c)
File size: 2.2 KB
Line 
1#!/usr/bin/php5
2<?
3
4function display_menu($cv, $dp) {
5        $xo = caca_get_canvas_width($cv) - 2;
6        $yo = caca_get_canvas_height($cv) - 2;
7
8        caca_set_color_ansi($cv, CACA_LIGHTGRAY, CACA_BLACK);
9        caca_clear_canvas($cv);
10        caca_draw_thin_box($cv, 1, 1, $xo, $yo);
11
12        caca_put_str($cv, ($xo - strlen("libcaca demo")) / 2, 3, "libcaca demo");
13        caca_put_str($cv, ($xo - strlen("==============")) / 2, 4, "==============");
14
15        caca_put_str($cv, 4, 6, "demos:");
16        caca_put_str($cv, 4, 7, "'f': full");
17        caca_put_str($cv, 4, 8, "'1': dots");
18        caca_put_str($cv, 4, 9, "'2': lines");
19        caca_put_str($cv, 4, 10, "'3': boxes");
20        caca_put_str($cv, 4, 11, "'4': triangles");
21        caca_put_str($cv, 4, 12, "'5': ellipses");
22        caca_put_str($cv, 4, 13, "'c': colour");
23        caca_put_str($cv, 4, 14, "'r': render");
24
25        if ($sprite)
26                caca_put_str($cv, 4, 15, "'s': sprites");
27
28        caca_put_str($cv, 4, 16, "settings:");
29        caca_put_str($cv, 4, 17, "'o': outline: ".((outline == 0) ? "none" : ((outline == 1) ? "solid" : "thin")));
30        caca_put_str($cv, 4, 18, "'b': drawing boundaries: ".((bounds == 0) ? "screen" : "infinite"));
31        caca_put_str($cv, 4, $yo - 2, "'q': quit");
32
33        caca_refresh_display($dp);
34}
35
36function main() {
37        $cv = caca_create_canvas(0, 0);
38        if (!$cv) {
39                die("Error while creating canvas\n");
40        }
41
42        $dp = caca_create_display($cv);
43        if (!$dp) {
44                die("Error while attaching canvas to display\n");
45        }
46
47        display_menu($cv, $dp);
48
49        caca_set_display_time($dp, 40000);
50
51        /* Disable cursor */
52        caca_set_mouse($dp, 0);
53
54        /* Main menu */
55        display_menu($cv, $dp);
56        caca_refresh_display($dp);
57
58        sleep(1);
59
60        for ($i = 0; $i < 100; $i++) {
61                demo_lines($cv, true, 2);
62                caca_refresh_display($dp);
63        }
64
65}
66
67function demo_lines($cv, $bounds = true, $outline = 1) {
68        $w = caca_get_canvas_width($cv);
69        $h = caca_get_canvas_height($cv);
70
71        if ($bounds) {
72                $xa = caca_rand(- $w, 2 * $w); $ya = caca_rand(- $h, 2 * $h);
73                $xb = caca_rand(- $w, 2 * $w); $yb = caca_rand(- $h, 2 * $h);
74        }
75        else {
76                $xa = caca_rand(0, $w); $ya = caca_rand(0, $h);
77                $xb = caca_rand(0, $w); $yb = caca_rand(0, $h);
78        }
79
80        caca_set_color_ansi($cv, caca_rand(0, 16), CACA_BLACK);
81        if ($outline > 1)
82                caca_draw_thin_line($cv, $xa, $ya, $xb, $yb);
83        else
84                caca_draw_line($cv, $xa, $ya, $xb, $yb, '#');
85}
86
87
88main();
Note: See TracBrowser for help on using the repository browser.