Changeset 3140 for libcaca/trunk/caca-php
- Timestamp:
- Oct 29, 2008, 11:58:24 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcaca/trunk/caca-php/examples/demo.php
r3135 r3140 16 16 */ 17 17 18 19 18 20 function main() { 19 21 $cv = caca_create_canvas(0, 0); … … 34 36 /* Main menu */ 35 37 display_menu($cv, $dp, $bounds, $outline); 36 caca_refresh_display($dp);37 38 38 39 /* Go ! */ 39 40 $bounds = $outline = $dithering = 0; 40 41 $need_refresh = false; 41 42 $ev = caca_create_event(); 42 43 while(!$quit) { 43 $menu = $mouse = $xmouse = $ymouse = 0; 44 45 while (caca_get_event($dp, CACA_EVENT_ANY, $ev, 0)) { 46 if ($demo and (caca_get_event_type($ev) & CACA_EVENT_KEY_PRESS)) { 47 $menu = 1; 48 $demo = false; 49 } 50 else if (caca_get_event_type($ev) & CACA_EVENT_KEY_PRESS) { 44 while (caca_get_event($dp, CACA_EVENT_ANY, $ev, 1000)) { 45 if (caca_get_event_type($ev) & CACA_EVENT_KEY_PRESS) { 51 46 switch (caca_get_event_key_ch($ev)) { 52 47 case ord('q'): … … 74 69 case ord('f'): 75 70 case ord('F'): 76 $demo = "demo_all";71 demo_go($dp, "demo_all", $cv, $bounds, $outline); 77 72 break; 78 73 case ord('1'): 79 $demo = "demo_dots";74 demo_go($dp, "demo_dots", $cv, $bounds, $outline); 80 75 break; 81 76 case ord('2'): 82 $demo = "demo_lines";77 demo_go($dp, "demo_lines", $cv, $bounds, $outline); 83 78 break; 84 79 case ord('3'): 85 $demo = "demo_boxes";80 demo_go($dp, "demo_boxes", $cv, $bounds, $outline); 86 81 break; 87 82 case ord('4'): 88 $demo = "demo_triangles";83 demo_go($dp, "demo_triangles", $cv, $bounds, $outline); 89 84 break; 90 85 case ord('5'): 91 $demo = "demo_ellipses";86 demo_go($dp, "demo_ellipses", $cv, $bounds, $outline); 92 87 break; 93 88 case ord('s'): 94 89 case ord('S'): 95 $demo = "demo_sprites";90 demo_go($dp, "demo_sprites", $cv, $bounds, $outline); 96 91 break; 97 92 case ord('r'): 98 93 case ord('R'): 99 $demo = "demo_render"; 100 break; 101 } 102 103 if ($demo) { 104 caca_set_color_ansi($cv, CACA_LIGHTGRAY, CACA_BLACK); 105 caca_clear_canvas($cv); 94 demo_go($dp, "demo_render", $cv, $bounds, $outline); 95 break; 106 96 } 107 97 } 108 98 else if(caca_get_event_type($ev) & CACA_EVENT_MOUSE_MOTION) { 109 $mouse = 1; 110 $xmouse = caca_get_event_mouse_x($ev); 111 $ymouse = caca_get_event_mouse_y($ev); 99 $x = caca_get_event_mouse_x($ev); 100 $y = caca_get_event_mouse_y($ev); 101 display_menu($cv, $dp, $bounds, $outline, false); 102 caca_set_color_ansi($cv, CACA_RED, CACA_BLACK); 103 caca_put_str($cv, $x, $y, "."); 104 caca_put_str($cv, $x, $y + 1, "|\\"); 105 $need_refresh = true; 112 106 } 113 107 else if(caca_get_event_type($ev) & CACA_EVENT_RESIZE) { 114 $mouse = 1; /* old hack */108 display_menu($cv, $dp, $bounds, $outline); 115 109 } 116 110 } 117 111 118 if ($menu || ($mouse && !$demo)) { 119 display_menu($cv, $dp, $bounds, $outline); 120 if ($mouse && !$demo) { 121 caca_set_color_ansi($cv, CACA_RED, CACA_BLACK); 122 caca_put_str($cv, $xmouse, $ymouse,"."); 123 caca_put_str($cv, $xmouse, $ymouse + 1, "|\\"); 124 } 112 if ($need_refresh) { 125 113 caca_refresh_display($dp); 126 $ mouse = $menu = 0;114 $need_refresh = false; 127 115 } 128 129 if ($demo) { 130 if (function_exists($demo)) 131 $demo($cv, $bounds, $outline, $dithering); 132 133 caca_set_color_ansi($cv, CACA_LIGHTGRAY, CACA_BLACK); 134 caca_draw_thin_box($cv, 1, 1, caca_get_canvas_width($cv) - 2, caca_get_canvas_height($cv) - 2); 135 $rate = sprintf("%01.2f", 1000000 / caca_get_display_time($dp)); 136 caca_put_str($cv, 4, 1, "[$rate fps]----"); 137 caca_refresh_display($dp); 138 } 139 } 140 } 141 142 function demo_all($cv, $dp, $bounds, $outline) { 116 } 117 } 118 119 function demo_go($dp, $demo, $cv, $bounds, $outline) { 120 caca_set_color_ansi($cv, CACA_LIGHTGRAY, CACA_BLACK); 121 caca_clear_canvas($cv); 122 123 while (!caca_get_event($dp, CACA_EVENT_KEY_PRESS)) { 124 if (function_exists($demo)) 125 $demo($cv, $bounds, $outline); 126 127 caca_set_color_ansi($cv, CACA_LIGHTGRAY, CACA_BLACK); 128 caca_draw_thin_box($cv, 1, 1, caca_get_canvas_width($cv) - 2, caca_get_canvas_height($cv) - 2); 129 $rate = sprintf("%01.2f", 1000000 / caca_get_display_time($dp)); 130 caca_put_str($cv, 4, 1, "[$rate fps]----"); 131 caca_refresh_display($dp); 132 } 133 134 display_menu($cv, $dp, $bounds, $outline); 135 caca_refresh_display($dp); 136 } 137 138 139 function demo_all($cv, $bounds, $outline) { 143 140 global $i; 144 141 … … 224 221 } 225 222 226 function display_menu($cv, $dp, $bounds, $outline ) {223 function display_menu($cv, $dp, $bounds, $outline, $refresh = true) { 227 224 $xo = caca_get_canvas_width($cv) - 2; 228 225 $yo = caca_get_canvas_height($cv) - 2; … … 253 250 caca_put_str($cv, 4, $yo - 2, "'q': quit"); 254 251 255 caca_refresh_display($dp); 256 } 257 258 function demo_dots($cv, $bounds, $outline, $dithering) { 252 if ($refresh) 253 caca_refresh_display($dp); 254 } 255 256 function demo_dots($cv, $bounds, $outline) { 259 257 $xmax = caca_get_canvas_width($cv); 260 258 $ymax = caca_get_canvas_height($cv); … … 269 267 } 270 268 271 function demo_lines($cv, $bounds, $outline , $dithering) {269 function demo_lines($cv, $bounds, $outline) { 272 270 $w = caca_get_canvas_width($cv); 273 271 $h = caca_get_canvas_height($cv); … … 289 287 } 290 288 291 function demo_boxes($cv, $bounds, $outline , $dithering) {289 function demo_boxes($cv, $bounds, $outline) { 292 290 $w = caca_get_canvas_width($cv); 293 291 $h = caca_get_canvas_height($cv); … … 312 310 } 313 311 314 function demo_ellipses($cv, $bounds, $outline , $dithering) {312 function demo_ellipses($cv, $bounds, $outline) { 315 313 $w = caca_get_canvas_width($cv); 316 314 $h = caca_get_canvas_height($cv); … … 337 335 } 338 336 339 function demo_triangles($cv, $bounds, $outline , $dithering) {337 function demo_triangles($cv, $bounds, $outline) { 340 338 $w = caca_get_canvas_width($cv); 341 339 $h = caca_get_canvas_height($cv); … … 362 360 } 363 361 364 function demo_render($cv, $bounds, $outline , $dithering) {362 function demo_render($cv, $bounds, $outline) { 365 363 } 366 364 367 365 368 366 main(); 369 370 ?>
Note: See TracChangeset
for help on using the changeset viewer.