| @@ -55,22 +55,13 @@ int main(int argc, char **argv) | |||||
| if(!image) | if(!image) | ||||
| { | { | ||||
| cucul_buffer_t *b = cucul_load_file(argv[file]); | |||||
| if(!b) | |||||
| { | |||||
| fprintf(stderr, "%s: could not open `%s'.\n", argv[0], argv[1]); | |||||
| return 1; | |||||
| } | |||||
| image = cucul_import_canvas(b, "ansi"); | |||||
| if(!image) | |||||
| image = cucul_create_canvas(0, 0); | |||||
| if(cucul_import_file(image, argv[file], "ansi") < 0) | |||||
| { | { | ||||
| fprintf(stderr, "%s: invalid file `%s'.\n", argv[0], argv[1]); | fprintf(stderr, "%s: invalid file `%s'.\n", argv[0], argv[1]); | ||||
| return 1; | return 1; | ||||
| } | } | ||||
| cucul_free_buffer(b); | |||||
| ih = cucul_get_canvas_height(image); | ih = cucul_get_canvas_height(image); | ||||
| iw = cucul_get_canvas_width(image); | iw = cucul_get_canvas_width(image); | ||||
| x = y = 0; | x = y = 0; | ||||
| @@ -25,7 +25,6 @@ | |||||
| int main(int argc, char **argv) | int main(int argc, char **argv) | ||||
| { | { | ||||
| caca_event_t ev; | caca_event_t ev; | ||||
| cucul_buffer_t *b; | |||||
| cucul_canvas_t *cv; | cucul_canvas_t *cv; | ||||
| caca_display_t *dp; | caca_display_t *dp; | ||||
| @@ -35,23 +34,13 @@ int main(int argc, char **argv) | |||||
| return 1; | return 1; | ||||
| } | } | ||||
| b = cucul_load_file(argv[1]); | |||||
| if(!b) | |||||
| cv = cucul_create_canvas(0, 0); | |||||
| if(cucul_import_file(cv, argv[1], "caca") < 0) | |||||
| { | { | ||||
| fprintf(stderr, "%s: could not open %s.\n", argv[0], argv[1]); | |||||
| fprintf(stderr, "%s: could not import file %s.\n", argv[0], argv[1]); | |||||
| return 1; | return 1; | ||||
| } | } | ||||
| cv = cucul_import_canvas(b, "caca"); | |||||
| if(!cv) | |||||
| { | |||||
| fprintf(stderr, "%s: invalid caca file %s.\n", argv[0], argv[1]); | |||||
| cucul_free_buffer(b); | |||||
| return 1; | |||||
| } | |||||
| cucul_free_buffer(b); | |||||
| dp = caca_create_display(cv); | dp = caca_create_display(cv); | ||||
| caca_refresh_display(dp); | caca_refresh_display(dp); | ||||
| @@ -105,9 +105,8 @@ struct server | |||||
| char prefix[sizeof(INIT_PREFIX)]; | char prefix[sizeof(INIT_PREFIX)]; | ||||
| cucul_canvas_t *canvas; | cucul_canvas_t *canvas; | ||||
| cucul_buffer_t *buffer; | |||||
| void *buffer; | |||||
| unsigned long int buflen; | unsigned long int buflen; | ||||
| void *bufdata; | |||||
| int client_count; | int client_count; | ||||
| struct client *clients; | struct client *clients; | ||||
| @@ -184,7 +183,7 @@ int main(void) | |||||
| return -1; | return -1; | ||||
| } | } | ||||
| server->canvas = NULL; | |||||
| server->canvas = cucul_create_canvas(0, 0); | |||||
| server->buffer = NULL; | server->buffer = NULL; | ||||
| /* Ignore SIGPIPE */ | /* Ignore SIGPIPE */ | ||||
| @@ -196,7 +195,6 @@ int main(void) | |||||
| /* Main loop */ | /* Main loop */ | ||||
| for(;;) | for(;;) | ||||
| { | { | ||||
| cucul_buffer_t *b; | |||||
| uint8_t *buf = server->input; | uint8_t *buf = server->input; | ||||
| uint32_t control_size, data_size; | uint32_t control_size, data_size; | ||||
| unsigned int size; | unsigned int size; | ||||
| @@ -224,29 +222,20 @@ int main(void) | |||||
| buf = server->input = realloc(server->input, size); | buf = server->input = realloc(server->input, size); | ||||
| read(0, buf + 12, size - 12); | read(0, buf + 12, size - 12); | ||||
| /* Free the previous canvas, if any */ | |||||
| if(server->canvas) | |||||
| cucul_free_canvas(server->canvas); | |||||
| b = cucul_load_memory(buf, size); | |||||
| server->canvas = cucul_import_canvas(b, "caca"); | |||||
| cucul_free_buffer(b); | |||||
| if(!server->canvas) | |||||
| if(cucul_import_memory(server->canvas, buf, size, "caca") < 0) | |||||
| continue; /* Load error */ | continue; /* Load error */ | ||||
| /* Free the previous export buffer, if any */ | /* Free the previous export buffer, if any */ | ||||
| if(server->buffer) | if(server->buffer) | ||||
| { | { | ||||
| cucul_free_buffer(server->buffer); | |||||
| free(server->buffer); | |||||
| server->buffer = NULL; | server->buffer = NULL; | ||||
| } | } | ||||
| /* Get ANSI representation of the image and skip the end-of buffer | /* Get ANSI representation of the image and skip the end-of buffer | ||||
| * linefeed ("\r\n", 2 byte) */ | * linefeed ("\r\n", 2 byte) */ | ||||
| server->buffer = cucul_export_canvas(server->canvas, "utf8cr"); | |||||
| server->bufdata = cucul_get_buffer_data(server->buffer); | |||||
| server->buflen = cucul_get_buffer_size(server->buffer); | |||||
| server->buffer = cucul_export_memory(server->canvas, "utf8cr", | |||||
| &server->buflen); | |||||
| server->buflen -= 2; | server->buflen -= 2; | ||||
| for(i = 0; i < server->client_count; i++) | for(i = 0; i < server->client_count; i++) | ||||
| @@ -275,7 +264,9 @@ int main(void) | |||||
| } | } | ||||
| if(server->buffer) | if(server->buffer) | ||||
| cucul_free_buffer(server->buffer); | |||||
| free(server->buffer); | |||||
| cucul_free_canvas(server->canvas); | |||||
| /* Restore SIGPIPE handler */ | /* Restore SIGPIPE handler */ | ||||
| signal(SIGPIPE, server->sigpipe_handler); | signal(SIGPIPE, server->sigpipe_handler); | ||||
| @@ -452,7 +443,7 @@ static int send_data(struct server *server, struct client *c) | |||||
| memcpy(c->outbuf + c->stop, ANSI_PREFIX, strlen(ANSI_PREFIX)); | memcpy(c->outbuf + c->stop, ANSI_PREFIX, strlen(ANSI_PREFIX)); | ||||
| c->stop += strlen(ANSI_PREFIX); | c->stop += strlen(ANSI_PREFIX); | ||||
| memcpy(c->outbuf + c->stop, server->bufdata, server->buflen); | |||||
| memcpy(c->outbuf + c->stop, server->buffer, server->buflen); | |||||
| c->stop += server->buflen; | c->stop += server->buflen; | ||||
| return 0; | return 0; | ||||
| @@ -487,14 +478,14 @@ static int send_data(struct server *server, struct client *c) | |||||
| memcpy(c->outbuf, ANSI_PREFIX, strlen(ANSI_PREFIX) - ret); | memcpy(c->outbuf, ANSI_PREFIX, strlen(ANSI_PREFIX) - ret); | ||||
| c->stop = strlen(ANSI_PREFIX) - ret; | c->stop = strlen(ANSI_PREFIX) - ret; | ||||
| memcpy(c->outbuf + c->stop, server->bufdata, server->buflen); | |||||
| memcpy(c->outbuf + c->stop, server->buffer, server->buflen); | |||||
| c->stop += server->buflen; | c->stop += server->buflen; | ||||
| return 0; | return 0; | ||||
| } | } | ||||
| /* Send actual data */ | /* Send actual data */ | ||||
| ret = nonblock_write(c->fd, server->bufdata, server->buflen); | |||||
| ret = nonblock_write(c->fd, server->buffer, server->buflen); | |||||
| if(ret == -1) | if(ret == -1) | ||||
| { | { | ||||
| if(errno == EAGAIN) | if(errno == EAGAIN) | ||||
| @@ -517,7 +508,7 @@ static int send_data(struct server *server, struct client *c) | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| memcpy(c->outbuf, server->bufdata, server->buflen - ret); | |||||
| memcpy(c->outbuf, server->buffer, server->buflen - ret); | |||||
| c->stop = server->buflen - ret; | c->stop = server->buflen - ret; | ||||
| return 0; | return 0; | ||||
| @@ -27,7 +27,8 @@ int main(int argc, char **argv) | |||||
| { | { | ||||
| /* libcucul context */ | /* libcucul context */ | ||||
| cucul_canvas_t *cv; | cucul_canvas_t *cv; | ||||
| cucul_buffer_t *export; | |||||
| void *export; | |||||
| unsigned long int len; | |||||
| struct image *i; | struct image *i; | ||||
| int cols = 56, lines; | int cols = 56, lines; | ||||
| @@ -62,10 +63,9 @@ int main(int argc, char **argv) | |||||
| unload_image(i); | unload_image(i); | ||||
| export = cucul_export_canvas(cv, "irc"); | |||||
| fwrite(cucul_get_buffer_data(export), | |||||
| cucul_get_buffer_size(export), 1, stdout); | |||||
| cucul_free_buffer(export); | |||||
| export = cucul_export_memory(cv, "irc", &len); | |||||
| fwrite(export, len, 1, stdout); | |||||
| free(export); | |||||
| cucul_free_canvas(cv); | cucul_free_canvas(cv); | ||||
| @@ -34,9 +34,10 @@ int main(int argc, char *argv[]) | |||||
| { | { | ||||
| cucul_canvas_t *cv; | cucul_canvas_t *cv; | ||||
| cucul_dither_t *dither; | cucul_dither_t *dither; | ||||
| cucul_buffer_t *buffer; | |||||
| void *buffer; | |||||
| char *file, *format; | char *file, *format; | ||||
| char const * const * exports, * const * p; | char const * const * exports, * const * p; | ||||
| unsigned long int len; | |||||
| int x, y; | int x, y; | ||||
| exports = cucul_get_export_list(); | exports = cucul_get_export_list(); | ||||
| @@ -77,20 +78,12 @@ int main(int argc, char *argv[]) | |||||
| if(file) | if(file) | ||||
| { | { | ||||
| cucul_buffer_t *tmp; | |||||
| tmp = cucul_load_file(file); | |||||
| if(!tmp) | |||||
| { | |||||
| fprintf(stderr, "%s: could not load `%s'\n", argv[0], file); | |||||
| exit(-1); | |||||
| } | |||||
| cv = cucul_import_canvas(tmp, ""); | |||||
| if(!cv) | |||||
| cv = cucul_create_canvas(0, 0); | |||||
| if(cucul_import_file(cv, file, "") < 0) | |||||
| { | { | ||||
| fprintf(stderr, "%s: `%s' has unknown format\n", argv[0], file); | fprintf(stderr, "%s: `%s' has unknown format\n", argv[0], file); | ||||
| exit(-1); | exit(-1); | ||||
| } | } | ||||
| cucul_free_buffer(tmp); | |||||
| } | } | ||||
| else | else | ||||
| { | { | ||||
| @@ -146,10 +139,9 @@ int main(int argc, char *argv[]) | |||||
| } | } | ||||
| } | } | ||||
| buffer = cucul_export_canvas(cv, format); | |||||
| fwrite(cucul_get_buffer_data(buffer), | |||||
| cucul_get_buffer_size(buffer), 1, stdout); | |||||
| cucul_free_buffer(buffer); | |||||
| buffer = cucul_export_memory(cv, format, &len); | |||||
| fwrite(buffer, len, 1, stdout); | |||||
| free(buffer); | |||||
| cucul_free_canvas(cv); | cucul_free_canvas(cv); | ||||
| @@ -32,7 +32,8 @@ int main(int argc, char *argv[]) | |||||
| cucul_font_t *f; | cucul_font_t *f; | ||||
| char const * const * fonts; | char const * const * fonts; | ||||
| cucul_canvas_t *cv; | cucul_canvas_t *cv; | ||||
| cucul_buffer_t *buffer; | |||||
| void *buffer; | |||||
| unsigned long int len; | |||||
| unsigned int i, j, x, y, glyphs; | unsigned int i, j, x, y, glyphs; | ||||
| fonts = cucul_get_font_list(); | fonts = cucul_get_font_list(); | ||||
| @@ -65,10 +66,9 @@ int main(int argc, char *argv[]) | |||||
| cucul_free_font(f); | cucul_free_font(f); | ||||
| buffer = cucul_export_canvas(cv, "tga"); | |||||
| fwrite(cucul_get_buffer_data(buffer), | |||||
| cucul_get_buffer_size(buffer), 1, stdout); | |||||
| cucul_free_buffer(buffer); | |||||
| buffer = cucul_export_memory(cv, "tga", &len); | |||||
| fwrite(buffer, len, 1, stdout); | |||||
| free(buffer); | |||||
| /* Free everything */ | /* Free everything */ | ||||
| cucul_free_canvas(cv); | cucul_free_canvas(cv); | ||||
| @@ -30,7 +30,6 @@ | |||||
| int main(int argc, char *argv[]) | int main(int argc, char *argv[]) | ||||
| { | { | ||||
| cucul_canvas_t *cv; | cucul_canvas_t *cv; | ||||
| cucul_buffer_t *b; | |||||
| caca_display_t *dp; | caca_display_t *dp; | ||||
| if(argc < 2) | if(argc < 2) | ||||
| @@ -40,22 +39,14 @@ int main(int argc, char *argv[]) | |||||
| return 1; | return 1; | ||||
| } | } | ||||
| b = cucul_load_file(argv[1]); | |||||
| if(!b) | |||||
| cv = cucul_create_canvas(0, 0); | |||||
| if(cucul_import_file(cv, argv[1], argc >= 3 ? argv[2] : "") < 0) | |||||
| { | { | ||||
| fprintf(stderr, "%s: could not open `%s'.\n", argv[0], argv[1]); | fprintf(stderr, "%s: could not open `%s'.\n", argv[0], argv[1]); | ||||
| cucul_free_canvas(cv); | |||||
| return 1; | return 1; | ||||
| } | } | ||||
| cv = cucul_import_canvas(b, argc >= 3 ? argv[2] : ""); | |||||
| if(!cv) | |||||
| { | |||||
| fprintf(stderr, "%s: could not import `%s'.\n", argv[0], argv[1]); | |||||
| return 1; | |||||
| } | |||||
| cucul_free_buffer(b); | |||||
| dp = caca_create_display(cv); | dp = caca_create_display(cv); | ||||
| caca_refresh_display(dp); | caca_refresh_display(dp); | ||||
| @@ -19,6 +19,7 @@ | |||||
| # endif | # endif | ||||
| # include <stdio.h> | # include <stdio.h> | ||||
| # include <string.h> | # include <string.h> | ||||
| # include <stdlib.h> | |||||
| #endif | #endif | ||||
| #include "cucul.h" | #include "cucul.h" | ||||
| @@ -33,23 +34,22 @@ | |||||
| int main(int argc, char *argv[]) | int main(int argc, char *argv[]) | ||||
| { | { | ||||
| cucul_canvas_t *cv; | cucul_canvas_t *cv; | ||||
| cucul_buffer_t *buffer; | |||||
| void *buffer; | |||||
| unsigned long int len; | |||||
| buffer = cucul_load_memory(STRING, strlen(STRING)); | |||||
| cv = cucul_import_canvas(buffer, "text"); | |||||
| cucul_free_buffer(buffer); | |||||
| cv = cucul_create_canvas(0, 0); | |||||
| buffer = cucul_export_canvas(cv, "utf8"); | |||||
| fwrite(cucul_get_buffer_data(buffer), | |||||
| cucul_get_buffer_size(buffer), 1, stdout); | |||||
| cucul_free_buffer(buffer); | |||||
| cucul_import_memory(cv, STRING, strlen(STRING), "text"); | |||||
| buffer = cucul_export_memory(cv, "utf8", &len); | |||||
| fwrite(buffer, len, 1, stdout); | |||||
| free(buffer); | |||||
| cucul_rotate(cv); | cucul_rotate(cv); | ||||
| buffer = cucul_export_canvas(cv, "utf8"); | |||||
| fwrite(cucul_get_buffer_data(buffer), | |||||
| cucul_get_buffer_size(buffer), 1, stdout); | |||||
| cucul_free_buffer(buffer); | |||||
| buffer = cucul_export_memory(cv, "utf8", &len); | |||||
| fwrite(buffer, len, 1, stdout); | |||||
| free(buffer); | |||||
| cucul_free_canvas(cv); | cucul_free_canvas(cv); | ||||