Changeset 2146 for libcaca/trunk/examples
- Timestamp:
- Dec 20, 2007, 4:00:39 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcaca/trunk/examples/spritedit.c
r2101 r2146 15 15 #include "config.h" 16 16 #include "common.h" 17 17 18 #if !defined(__KERNEL__) 18 19 # include <stdio.h> 20 # include <string.h> 21 # include <stdlib.h> 19 22 #endif 23 20 24 #include "cucul.h" 21 25 #include "caca.h" 22 26 23 #define MYDELAY 100 27 /* Courtesy of Zashi */ 28 char *guy[] = { 29 " O_,= \n" 30 " | \n" 31 " /\\ \n" 32 " / / \n", 33 34 " O_,= \n" 35 " | \n" 36 " /| \n" 37 " / | \n", 38 39 " O_,= \n" 40 " | \n" 41 " |\\ \n" 42 " |/ \n", 43 44 " O_,= \n" 45 " | \n" 46 " |\\ \n" 47 " | \\ \n", 48 }; 24 49 25 50 int main(int argc, char **argv) 26 51 { 27 #if 0 28 cucul_canvas_t *cv; 29 caca_display_t *dp; 52 cucul_canvas_t *sprite; 53 unsigned long int len; 54 void *buffer; 55 int i; 30 56 31 int quit = 0; 32 cucul_sprite_t *sprite; 33 int frame = 0; 34 unsigned char play = 0; 35 unsigned int delay = 0; 57 /* Create a canvas with 4 frames */ 58 sprite = cucul_create_canvas(0, 0); 59 for(i = 0; i < 3; i++) 60 cucul_create_frame(sprite, 0); 36 61 37 if(argc < 2) 62 /* Load stuff in all 4 frames */ 63 for(i = 0; i < 4; i++) 38 64 { 39 fprintf(stderr, "%s: missing argument (filename).\n", argv[0]);40 return 1;65 cucul_set_frame(sprite, i); 66 cucul_import_memory(sprite, guy[i], strlen(guy[i]), "text"); 41 67 } 42 68 43 cv = cucul_create_canvas(0, 0); 44 if(!cv) 45 return 1; 46 dp = caca_create_display(cv); 47 if(!dp) 48 return 1; 69 /* Export our sprite in a memory buffer. We could save this to 70 * disk afterwards. */ 71 buffer = cucul_export_memory(sprite, "caca", &len); 49 72 50 sprite = cucul_load_sprite(argv[1]); 73 /* Free our sprite and reload it from the memory buffer. We could 74 * load this from disk, too. */ 75 cucul_free_canvas(sprite); 76 sprite = cucul_create_canvas(0, 0); 77 cucul_import_memory(sprite, buffer, len, "caca"); 78 free(buffer); 51 79 52 if(!sprite) 80 /* Print each sprite frame to stdout */ 81 for(i = 0; i < 4; i++) 53 82 { 54 caca_free_display(dp); 55 cucul_free_canvas(cv); 56 fprintf(stderr, "%s: could not open `%s'.\n", argv[0], argv[1]); 57 return 1; 83 cucul_set_frame(sprite, i); 84 printf("Frame #%i\n", i); 85 buffer = cucul_export_memory(sprite, "utf8", &len); 86 fwrite(buffer, len, 1, stdout); 87 free(buffer); 58 88 } 59 89 60 /* Go ! */ 61 while(!quit) 62 { 63 caca_event_t ev; 64 int xa, ya, xb, yb; 65 char buf[BUFSIZ]; 66 67 while(caca_get_event(dp, CACA_EVENT_KEY_PRESS, &ev, 0)) 68 { 69 switch(caca_get_event_key_ch(&ev)) 70 { 71 case 0: 72 break; 73 case 'q': 74 quit = 1; 75 break; 76 case '-': 77 if(frame > 0) 78 frame--; 79 break; 80 case '+': 81 if(frame < cucul_get_sprite_frames(sprite) - 1) 82 frame++; 83 break; 84 case 'p': 85 play=!play; 86 87 } 88 } 89 90 if(play) { 91 if(!delay) { 92 if(frame < cucul_get_sprite_frames(sprite) - 1) { 93 frame++; 94 } 95 else { 96 frame = 0; 97 } 98 } 99 delay++; 100 if(delay>=MYDELAY) { 101 delay = 0; 102 } 103 } 104 105 106 cucul_set_color_ansi(cv, CUCUL_LIGHTGRAY, CUCUL_BLACK); 107 cucul_clear_canvas(cv); 108 109 cucul_draw_thin_box(cv, 0, 0, cucul_get_canvas_width(cv) - 1, 110 cucul_get_canvas_height(cv) - 1); 111 112 cucul_put_str(cv, 3, 0, "[ Sprite editor for libcaca ]"); 113 114 sprintf(buf, "sprite `%s'", argv[1]); 115 cucul_put_str(cv, 3, 2, buf); 116 sprintf(buf, "frame %i/%i", frame, cucul_get_sprite_frames(sprite) - 1); 117 cucul_put_str(cv, 3, 3, buf); 118 119 /* Crosshair */ 120 cucul_draw_thin_line(cv, 57, 2, 57, 18); 121 cucul_draw_thin_line(cv, 37, 10, 77, 10); 122 cucul_put_char(cv, 57, 10, '+'); 123 124 /* Boxed sprite */ 125 xa = -1 - cucul_get_sprite_dx(sprite, frame); 126 ya = -1 - cucul_get_sprite_dy(sprite, frame); 127 xb = xa + 1 + cucul_get_sprite_width(sprite, frame); 128 yb = ya + 1 + cucul_get_sprite_height(sprite, frame); 129 cucul_set_color_ansi(cv, CUCUL_BLACK, CUCUL_BLACK); 130 cucul_fill_box(cv, 57 + xa, 10 + ya, 57 + xb, 10 + yb, " "); 131 cucul_set_color_ansi(cv, CUCUL_LIGHTGRAY, CUCUL_BLACK); 132 cucul_draw_thin_box(cv, 57 + xa, 10 + ya, 57 + xb, 10 + yb); 133 cucul_draw_sprite(cv, 57, 10, sprite, frame); 134 135 /* Free sprite */ 136 cucul_draw_sprite(cv, 20, 10, sprite, frame); 137 138 caca_refresh_display(dp); 139 } 140 141 /* Clean up */ 142 caca_free_display(dp); 143 cucul_free_canvas(cv); 144 #endif 90 /* Free our sprite */ 91 cucul_free_canvas(sprite); 145 92 146 93 return 0;
Note: See TracChangeset
for help on using the changeset viewer.