- Timestamp:
- Nov 15, 2003, 1:42:38 PM (20 years ago)
- Location:
- ttyvaders/trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
ttyvaders/trunk/libee/ee.c
r180 r182 46 46 #include "ee_internals.h" 47 47 48 /* Global array with color names */49 const char *ee_color_names[16] =50 {51 "black",52 "blue",53 "green",54 "cyan",55 "red",56 "magenta",57 "brown",58 "lightgray",59 "darkgray",60 "lightblue",61 "lightgreen",62 "lightcyan",63 "lightred",64 "lightmagenta",65 "yellow",66 "white",67 };68 69 48 static unsigned int _ee_delay; 70 49 static unsigned int _ee_rendertime; … … 228 207 } 229 208 209 const char *ee_get_color_name(unsigned int color) 210 { 211 static const char *color_names[16] = 212 { 213 "black", 214 "blue", 215 "green", 216 "cyan", 217 "red", 218 "magenta", 219 "brown", 220 "light gray", 221 "dark gray", 222 "light blue", 223 "light green", 224 "light cyan", 225 "light red", 226 "light magenta", 227 "yellow", 228 "white", 229 }; 230 231 if(color < 0 || color > 15) 232 return "unknown color"; 233 234 return color_names[color]; 235 } 236 230 237 static unsigned int _ee_getticks(void) 231 238 { … … 250 257 void ee_refresh(void) 251 258 { 259 #define IDLE_USEC 10000 252 260 static unsigned int lastticks = 0; 253 261 unsigned int ticks = lastticks + _ee_getticks(); … … 266 274 267 275 /* Wait until _ee_delay + time of last call */ 268 for(ticks += _ee_getticks(); ticks < _ee_delay; ticks += _ee_getticks()) 269 usleep(10000); 276 ticks += _ee_getticks(); 277 for(; ticks < _ee_delay - IDLE_USEC; ticks += _ee_getticks()) 278 usleep(IDLE_USEC); 270 279 271 280 /* Update the sliding mean of the render time */ -
ttyvaders/trunk/libee/ee.h
r180 r182 52 52 }; 53 53 54 extern const char *ee_color_names[16];55 56 54 /* 57 55 * Types … … 67 65 unsigned int ee_get_width(void); 68 66 unsigned int ee_get_height(void); 67 const char *ee_get_color_name(unsigned int); 69 68 void ee_refresh(void); 70 69 void ee_end(void); … … 76 75 void ee_putchar(int, int, char); 77 76 void ee_putstr(int, int, const char *); 77 void ee_printf(int, int, const char *, ...); 78 78 void ee_clear(void); 79 79 -
ttyvaders/trunk/libee/graphics.c
r180 r182 35 35 #include <string.h> 36 36 #include <stdlib.h> 37 #include <stdarg.h> 37 38 38 39 #include "ee.h" 39 40 #include "ee_internals.h" 40 41 41 static int ee_color = 0;42 static int _ee_color = 0; 42 43 43 44 void ee_set_color(int color) … … 46 47 return; 47 48 48 ee_color = color;49 _ee_color = color; 49 50 #if defined(USE_SLANG) 50 51 SLsmg_set_color(color + 1); … … 58 59 int ee_get_color(void) 59 60 { 60 return ee_color;61 return _ee_color; 61 62 } 62 63 … … 74 75 #elif defined(USE_CONIO) 75 76 _ee_screen[2 * (x + y * ee_get_width())] = c; 76 _ee_screen[2 * (x + y * ee_get_width()) + 1] = ee_color;77 _ee_screen[2 * (x + y * ee_get_width()) + 1] = _ee_color; 77 78 // gotoxy(x + 1, y + 1); 78 79 // putch(c); … … 116 117 { 117 118 *buf++ = *s++; 118 *buf++ = ee_color;119 *buf++ = _ee_color; 119 120 } 120 121 // gotoxy(x + 1, y + 1); 121 122 // cputs(s); 122 123 #endif 124 } 125 126 void ee_printf(int x, int y, const char *format, ...) 127 { 128 char tmp[BUFSIZ]; 129 char *buf = tmp; 130 va_list args; 131 132 if(y < 0 || y >= ee_get_height() || x >= ee_get_width()) 133 return; 134 135 if(ee_get_width() - x + 1 > BUFSIZ) 136 buf = malloc(ee_get_width() - x + 1); 137 138 va_start(args, format); 139 vsnprintf(buf, ee_get_width() - x + 1, format, args); 140 buf[ee_get_width() - x] = '\0'; 141 va_end(args); 142 143 ee_putstr(x, y, buf); 144 145 if(buf != tmp) 146 free(buf); 123 147 } 124 148 -
ttyvaders/trunk/test/demo.c
r178 r182 41 41 static void demo_sprites(void); 42 42 43 int force_clipping= 0;43 int bounds = 0; 44 44 int outline = 0; 45 int thin = 0;46 45 struct ee_sprite *sprite = NULL; 47 46 … … 63 62 /* Main menu */ 64 63 display_menu(); 64 ee_refresh(); 65 65 66 66 /* Go ! */ … … 68 68 { 69 69 char key = ee_get_key(); 70 70 71 if(key && demo) 71 72 { 72 73 display_menu(); 74 ee_refresh(); 73 75 demo = NULL; 74 76 } 75 77 else if(key) 76 78 { 79 handle_key: 77 80 switch(key) 78 81 { 79 82 case 'q': 83 case 'Q': 80 84 demo = NULL; 81 85 quit = 1; 82 86 break; 87 case 'o': 88 case 'O': 89 outline = (outline + 1) % 3; 90 display_menu(); 91 break; 92 case 'b': 93 case 'B': 94 bounds = (bounds + 1) % 2; 95 display_menu(); 96 break; 83 97 case 'c': 98 demo = demo_color; 99 break; 100 case 'f': 101 case 'F': 102 demo = demo_all; 103 break; 104 case '1': 105 demo = demo_dots; 106 break; 107 case '2': 108 demo = demo_lines; 109 break; 110 case '3': 111 demo = demo_boxes; 112 break; 113 case '4': 114 demo = demo_triangles; 115 break; 116 case '5': 117 demo = demo_ellipses; 118 break; 119 case 's': 120 case 'S': 121 demo = demo_sprites; 122 break; 123 } 124 125 if(demo) 84 126 ee_clear(); 85 demo = demo_color; 86 break; 87 case '0': 88 ee_clear(); 89 demo = demo_all; 90 break; 91 case '1': 92 ee_clear(); 93 demo = demo_dots; 94 break; 95 case '2': 96 ee_clear(); 97 demo = demo_lines; 98 thin = 0; 99 break; 100 case '3': 101 ee_clear(); 102 demo = demo_lines; 103 thin = 1; 104 break; 105 case '4': 106 ee_clear(); 107 demo = demo_boxes; 108 outline = 0; 109 break; 110 case '5': 111 ee_clear(); 112 demo = demo_boxes; 113 outline = 1; 114 break; 115 case '6': 116 ee_clear(); 117 demo = demo_ellipses; 118 break; 119 case '7': 120 ee_clear(); 121 demo = demo_triangles; 122 outline = 0; 123 break; 124 case '8': 125 ee_clear(); 126 demo = demo_triangles; 127 outline = 1; 128 break; 129 case '9': 130 ee_clear(); 131 demo = demo_sprites; 132 break; 133 } 127 128 key = ee_get_key(); 129 if(key) 130 goto handle_key; 131 132 ee_refresh(); 134 133 } 135 134 136 135 if(demo) 136 { 137 137 demo(); 138 139 ee_set_color(EE_WHITE); 140 ee_draw_thin_box(1, 1, ee_get_width() - 2, ee_get_height() - 2); 141 ee_printf(4, 1, "[%i.%i fps]----", 142 1000000 / ee_get_rendertime(), 143 (10000000 / ee_get_rendertime()) % 10); 144 ee_refresh(); 145 } 138 146 } 139 147 … … 157 165 ee_putstr((xo - strlen("============")) / 2, 4, "============"); 158 166 159 ee_putstr(4, 6, "0: complete demo"); 160 ee_putstr(4, 7, "1: dots demo"); 161 ee_putstr(4, 8, "2: lines demo"); 162 ee_putstr(4, 9, "3: thin lines demo"); 163 ee_putstr(4, 10, "4: boxes demo"); 164 ee_putstr(4, 11, "5: outlined boxes demo"); 165 ee_putstr(4, 12, "6: ellipses demo"); 166 ee_putstr(4, 13, "7: triangles demo"); 167 ee_putstr(4, 14, "8: outlined triangles demo"); 168 ee_putstr(4, 15, "9: sprites demo"); 169 170 ee_putstr(4, yo - 2, "q: quit"); 171 172 ee_refresh(); 167 ee_putstr(4, 6, "demos:"); 168 ee_putstr(4, 7, "'f': full"); 169 ee_putstr(4, 8, "'1': dots"); 170 ee_putstr(4, 9, "'2': lines"); 171 ee_putstr(4, 10, "'3': boxes"); 172 ee_putstr(4, 11, "'4': triangles"); 173 ee_putstr(4, 12, "'5': ellipses"); 174 ee_putstr(4, 13, "'s': sprites"); 175 ee_putstr(4, 14, "'c': color"); 176 177 ee_putstr(4, 16, "settings:"); 178 ee_printf(4, 17, "'o': outline: %s", 179 outline == 0 ? "none" : outline == 1 ? "solid" : "thin"); 180 ee_printf(4, 18, "'b': drawing boundaries: %s", 181 bounds == 0 ? "screen" : "infinite"); 182 183 ee_putstr(4, yo - 2, "'q': quit"); 173 184 } 174 185 … … 268 279 ee_get_height() / 2 + sin(0.02*i) * ee_get_height() / 3, 269 280 sprite, 0); 270 271 ee_refresh();272 281 } 273 282 … … 284 293 ee_putchar(ee_rand(0, xmax), ee_rand(0, ymax), '#'); 285 294 } 286 ee_refresh();287 295 } 288 296 … … 295 303 for(i = 0; i < 16; i++) 296 304 { 297 sprintf(buf, "'%c': %i (%s)", 'a' + i, i, ee_ color_names[i]);305 sprintf(buf, "'%c': %i (%s)", 'a' + i, i, ee_get_color_name(i)); 298 306 ee_set_color(EE_WHITE); 299 307 ee_putstr(4, i + 3, buf); … … 301 309 ee_putstr(40, i + 3, "XXXXXXXXXX-XX--X----------"); 302 310 } 303 ee_refresh();304 311 } 305 312 … … 310 317 int xa, ya, xb, yb; 311 318 312 if( force_clipping)319 if(bounds) 313 320 { 314 321 xa = ee_rand(- w, 2 * w); ya = ee_rand(- h, 2 * h); … … 322 329 323 330 ee_set_color(ee_rand(0, 15)); 324 if( thin)331 if(outline > 1) 325 332 ee_draw_thin_line(xa, ya, xb, yb); 326 333 else 327 334 ee_draw_line(xa, ya, xb, yb, '#'); 328 329 ee_refresh();330 335 } 331 336 … … 336 341 int xa, ya, xb, yb; 337 342 338 if( force_clipping)343 if(bounds) 339 344 { 340 345 xa = ee_rand(- w, 2 * w); ya = ee_rand(- h, 2 * h); … … 350 355 ee_fill_box(xa, ya, xb, yb, '#'); 351 356 352 if(outline) 353 { 354 ee_set_color(ee_rand(0, 15)); 357 ee_set_color(ee_rand(0, 15)); 358 if(outline == 2) 355 359 ee_draw_thin_box(xa, ya, xb, yb); 356 } 357 358 ee_refresh(); 360 else if(outline == 1) 361 ee_draw_box(xa, ya, xb, yb, '#'); 359 362 } 360 363 … … 365 368 int x, y, a, b; 366 369 367 if( force_clipping)370 if(bounds) 368 371 { 369 372 x = ee_rand(- w, 2 * w); y = ee_rand(- h, 2 * h); … … 383 386 ee_fill_ellipse(x, y, a, b, '#'); 384 387 385 if(outline) 386 { 387 ee_set_color(ee_rand(0, 15)); 388 ee_set_color(ee_rand(0, 15)); 389 if(outline == 2) 388 390 ee_draw_thin_ellipse(x, y, a, b); 389 } 390 391 ee_refresh(); 391 else if(outline == 1) 392 ee_draw_ellipse(x, y, a, b, '#'); 392 393 } 393 394 … … 398 399 int xa, ya, xb, yb, xc, yc; 399 400 400 if( force_clipping)401 if(bounds) 401 402 { 402 403 xa = ee_rand(- w, 2 * w); ya = ee_rand(- h, 2 * h); … … 415 416 ee_fill_triangle(xa, ya, xb, yb, xc, yc, '#'); 416 417 417 if(outline) 418 { 419 ee_set_color(ee_rand(0, 15)); 418 ee_set_color(ee_rand(0, 15)); 419 if(outline == 2) 420 420 ee_draw_thin_triangle(xa, ya, xb, yb, xc, yc); 421 } 422 423 ee_refresh(); 421 else if(outline == 1) 422 ee_draw_triangle(xa, ya, xb, yb, xc, yc, '#'); 424 423 } 425 424 … … 428 427 ee_draw_sprite(ee_rand(0, ee_get_width() - 1), 429 428 ee_rand(0, ee_get_height() - 1), sprite, 0); 430 ee_refresh(); 431 } 432 429 } 430
Note: See TracChangeset
for help on using the changeset viewer.