@@ -55,22 +55,13 @@ int main(int argc, char **argv) | |||||
if(!image) | if(!image) | ||||
{ | { | ||||
cucul_buffer_t *b = cucul_load_file(argv[file]); | image = cucul_create_canvas(0, 0); | ||||
if(!b) | if(cucul_import_file(image, argv[file], "ansi") < 0) | ||||
{ | |||||
fprintf(stderr, "%s: could not open `%s'.\n", argv[0], argv[1]); | |||||
return 1; | |||||
} | |||||
image = cucul_import_canvas(b, "ansi"); | |||||
if(!image) | |||||
{ | { | ||||
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]); | cv = cucul_create_canvas(0, 0); | ||||
if(!b) | 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(cucul_import_memory(server->canvas, buf, size, "caca") < 0) | ||||
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) | |||||
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->buffer = cucul_export_memory(server->canvas, "utf8cr", | ||||
server->bufdata = cucul_get_buffer_data(server->buffer); | &server->buflen); | ||||
server->buflen = cucul_get_buffer_size(server->buffer); | |||||
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"); | export = cucul_export_memory(cv, "irc", &len); | ||||
fwrite(cucul_get_buffer_data(export), | fwrite(export, len, 1, stdout); | ||||
cucul_get_buffer_size(export), 1, stdout); | free(export); | ||||
cucul_free_buffer(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; | cv = cucul_create_canvas(0, 0); | ||||
tmp = cucul_load_file(file); | if(cucul_import_file(cv, file, "") < 0) | ||||
if(!tmp) | |||||
{ | |||||
fprintf(stderr, "%s: could not load `%s'\n", argv[0], file); | |||||
exit(-1); | |||||
} | |||||
cv = cucul_import_canvas(tmp, ""); | |||||
if(!cv) | |||||
{ | { | ||||
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); | buffer = cucul_export_memory(cv, format, &len); | ||||
fwrite(cucul_get_buffer_data(buffer), | fwrite(buffer, len, 1, stdout); | ||||
cucul_get_buffer_size(buffer), 1, stdout); | free(buffer); | ||||
cucul_free_buffer(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"); | buffer = cucul_export_memory(cv, "tga", &len); | ||||
fwrite(cucul_get_buffer_data(buffer), | fwrite(buffer, len, 1, stdout); | ||||
cucul_get_buffer_size(buffer), 1, stdout); | free(buffer); | ||||
cucul_free_buffer(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]); | cv = cucul_create_canvas(0, 0); | ||||
if(!b) | 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_create_canvas(0, 0); | ||||
cv = cucul_import_canvas(buffer, "text"); | |||||
cucul_free_buffer(buffer); | |||||
buffer = cucul_export_canvas(cv, "utf8"); | cucul_import_memory(cv, STRING, strlen(STRING), "text"); | ||||
fwrite(cucul_get_buffer_data(buffer), | buffer = cucul_export_memory(cv, "utf8", &len); | ||||
cucul_get_buffer_size(buffer), 1, stdout); | fwrite(buffer, len, 1, stdout); | ||||
cucul_free_buffer(buffer); | free(buffer); | ||||
cucul_rotate(cv); | cucul_rotate(cv); | ||||
buffer = cucul_export_canvas(cv, "utf8"); | buffer = cucul_export_memory(cv, "utf8", &len); | ||||
fwrite(cucul_get_buffer_data(buffer), | fwrite(buffer, len, 1, stdout); | ||||
cucul_get_buffer_size(buffer), 1, stdout); | free(buffer); | ||||
cucul_free_buffer(buffer); | |||||
cucul_free_canvas(cv); | cucul_free_canvas(cv); | ||||