| @@ -14,134 +14,81 @@ | |||||
| #include "config.h" | #include "config.h" | ||||
| #include "common.h" | #include "common.h" | ||||
| #if !defined(__KERNEL__) | #if !defined(__KERNEL__) | ||||
| # include <stdio.h> | # include <stdio.h> | ||||
| # include <string.h> | |||||
| # include <stdlib.h> | |||||
| #endif | #endif | ||||
| #include "cucul.h" | #include "cucul.h" | ||||
| #include "caca.h" | #include "caca.h" | ||||
| #define MYDELAY 100 | |||||
| /* Courtesy of Zashi */ | |||||
| char *guy[] = { | |||||
| " O_,= \n" | |||||
| " | \n" | |||||
| " /\\ \n" | |||||
| " / / \n", | |||||
| " O_,= \n" | |||||
| " | \n" | |||||
| " /| \n" | |||||
| " / | \n", | |||||
| " O_,= \n" | |||||
| " | \n" | |||||
| " |\\ \n" | |||||
| " |/ \n", | |||||
| " O_,= \n" | |||||
| " | \n" | |||||
| " |\\ \n" | |||||
| " | \\ \n", | |||||
| }; | |||||
| int main(int argc, char **argv) | int main(int argc, char **argv) | ||||
| { | { | ||||
| #if 0 | |||||
| cucul_canvas_t *cv; | |||||
| caca_display_t *dp; | |||||
| int quit = 0; | |||||
| cucul_sprite_t *sprite; | |||||
| int frame = 0; | |||||
| unsigned char play = 0; | |||||
| unsigned int delay = 0; | |||||
| if(argc < 2) | |||||
| cucul_canvas_t *sprite; | |||||
| unsigned long int len; | |||||
| void *buffer; | |||||
| int i; | |||||
| /* Create a canvas with 4 frames */ | |||||
| sprite = cucul_create_canvas(0, 0); | |||||
| for(i = 0; i < 3; i++) | |||||
| cucul_create_frame(sprite, 0); | |||||
| /* Load stuff in all 4 frames */ | |||||
| for(i = 0; i < 4; i++) | |||||
| { | { | ||||
| fprintf(stderr, "%s: missing argument (filename).\n", argv[0]); | |||||
| return 1; | |||||
| cucul_set_frame(sprite, i); | |||||
| cucul_import_memory(sprite, guy[i], strlen(guy[i]), "text"); | |||||
| } | } | ||||
| cv = cucul_create_canvas(0, 0); | |||||
| if(!cv) | |||||
| return 1; | |||||
| dp = caca_create_display(cv); | |||||
| if(!dp) | |||||
| return 1; | |||||
| /* Export our sprite in a memory buffer. We could save this to | |||||
| * disk afterwards. */ | |||||
| buffer = cucul_export_memory(sprite, "caca", &len); | |||||
| sprite = cucul_load_sprite(argv[1]); | |||||
| /* Free our sprite and reload it from the memory buffer. We could | |||||
| * load this from disk, too. */ | |||||
| cucul_free_canvas(sprite); | |||||
| sprite = cucul_create_canvas(0, 0); | |||||
| cucul_import_memory(sprite, buffer, len, "caca"); | |||||
| free(buffer); | |||||
| if(!sprite) | |||||
| /* Print each sprite frame to stdout */ | |||||
| for(i = 0; i < 4; i++) | |||||
| { | { | ||||
| caca_free_display(dp); | |||||
| cucul_free_canvas(cv); | |||||
| fprintf(stderr, "%s: could not open `%s'.\n", argv[0], argv[1]); | |||||
| return 1; | |||||
| cucul_set_frame(sprite, i); | |||||
| printf("Frame #%i\n", i); | |||||
| buffer = cucul_export_memory(sprite, "utf8", &len); | |||||
| fwrite(buffer, len, 1, stdout); | |||||
| free(buffer); | |||||
| } | } | ||||
| /* Go ! */ | |||||
| while(!quit) | |||||
| { | |||||
| caca_event_t ev; | |||||
| int xa, ya, xb, yb; | |||||
| char buf[BUFSIZ]; | |||||
| while(caca_get_event(dp, CACA_EVENT_KEY_PRESS, &ev, 0)) | |||||
| { | |||||
| switch(caca_get_event_key_ch(&ev)) | |||||
| { | |||||
| case 0: | |||||
| break; | |||||
| case 'q': | |||||
| quit = 1; | |||||
| break; | |||||
| case '-': | |||||
| if(frame > 0) | |||||
| frame--; | |||||
| break; | |||||
| case '+': | |||||
| if(frame < cucul_get_sprite_frames(sprite) - 1) | |||||
| frame++; | |||||
| break; | |||||
| case 'p': | |||||
| play=!play; | |||||
| } | |||||
| } | |||||
| if(play) { | |||||
| if(!delay) { | |||||
| if(frame < cucul_get_sprite_frames(sprite) - 1) { | |||||
| frame++; | |||||
| } | |||||
| else { | |||||
| frame = 0; | |||||
| } | |||||
| } | |||||
| delay++; | |||||
| if(delay>=MYDELAY) { | |||||
| delay = 0; | |||||
| } | |||||
| } | |||||
| cucul_set_color_ansi(cv, CUCUL_LIGHTGRAY, CUCUL_BLACK); | |||||
| cucul_clear_canvas(cv); | |||||
| cucul_draw_thin_box(cv, 0, 0, cucul_get_canvas_width(cv) - 1, | |||||
| cucul_get_canvas_height(cv) - 1); | |||||
| cucul_put_str(cv, 3, 0, "[ Sprite editor for libcaca ]"); | |||||
| sprintf(buf, "sprite `%s'", argv[1]); | |||||
| cucul_put_str(cv, 3, 2, buf); | |||||
| sprintf(buf, "frame %i/%i", frame, cucul_get_sprite_frames(sprite) - 1); | |||||
| cucul_put_str(cv, 3, 3, buf); | |||||
| /* Crosshair */ | |||||
| cucul_draw_thin_line(cv, 57, 2, 57, 18); | |||||
| cucul_draw_thin_line(cv, 37, 10, 77, 10); | |||||
| cucul_put_char(cv, 57, 10, '+'); | |||||
| /* Boxed sprite */ | |||||
| xa = -1 - cucul_get_sprite_dx(sprite, frame); | |||||
| ya = -1 - cucul_get_sprite_dy(sprite, frame); | |||||
| xb = xa + 1 + cucul_get_sprite_width(sprite, frame); | |||||
| yb = ya + 1 + cucul_get_sprite_height(sprite, frame); | |||||
| cucul_set_color_ansi(cv, CUCUL_BLACK, CUCUL_BLACK); | |||||
| cucul_fill_box(cv, 57 + xa, 10 + ya, 57 + xb, 10 + yb, " "); | |||||
| cucul_set_color_ansi(cv, CUCUL_LIGHTGRAY, CUCUL_BLACK); | |||||
| cucul_draw_thin_box(cv, 57 + xa, 10 + ya, 57 + xb, 10 + yb); | |||||
| cucul_draw_sprite(cv, 57, 10, sprite, frame); | |||||
| /* Free sprite */ | |||||
| cucul_draw_sprite(cv, 20, 10, sprite, frame); | |||||
| caca_refresh_display(dp); | |||||
| } | |||||
| /* Clean up */ | |||||
| caca_free_display(dp); | |||||
| cucul_free_canvas(cv); | |||||
| #endif | |||||
| /* Free our sprite */ | |||||
| cucul_free_canvas(sprite); | |||||
| return 0; | return 0; | ||||
| } | } | ||||