1 | #!/usr/bin/php5 |
---|
2 | <? |
---|
3 | |
---|
4 | function 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 | |
---|
36 | function 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 | |
---|
67 | function 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 | |
---|
88 | main(); |
---|