@@ -55,22 +55,13 @@ int main(int argc, char **argv) | |||
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]); | |||
return 1; | |||
} | |||
cucul_free_buffer(b); | |||
ih = cucul_get_canvas_height(image); | |||
iw = cucul_get_canvas_width(image); | |||
x = y = 0; | |||
@@ -25,7 +25,6 @@ | |||
int main(int argc, char **argv) | |||
{ | |||
caca_event_t ev; | |||
cucul_buffer_t *b; | |||
cucul_canvas_t *cv; | |||
caca_display_t *dp; | |||
@@ -35,23 +34,13 @@ int main(int argc, char **argv) | |||
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; | |||
} | |||
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); | |||
caca_refresh_display(dp); | |||
@@ -105,9 +105,8 @@ struct server | |||
char prefix[sizeof(INIT_PREFIX)]; | |||
cucul_canvas_t *canvas; | |||
cucul_buffer_t *buffer; | |||
void *buffer; | |||
unsigned long int buflen; | |||
void *bufdata; | |||
int client_count; | |||
struct client *clients; | |||
@@ -184,7 +183,7 @@ int main(void) | |||
return -1; | |||
} | |||
server->canvas = NULL; | |||
server->canvas = cucul_create_canvas(0, 0); | |||
server->buffer = NULL; | |||
/* Ignore SIGPIPE */ | |||
@@ -196,7 +195,6 @@ int main(void) | |||
/* Main loop */ | |||
for(;;) | |||
{ | |||
cucul_buffer_t *b; | |||
uint8_t *buf = server->input; | |||
uint32_t control_size, data_size; | |||
unsigned int size; | |||
@@ -224,29 +222,20 @@ int main(void) | |||
buf = server->input = realloc(server->input, size); | |||
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 */ | |||
/* Free the previous export buffer, if any */ | |||
if(server->buffer) | |||
{ | |||
cucul_free_buffer(server->buffer); | |||
free(server->buffer); | |||
server->buffer = NULL; | |||
} | |||
/* Get ANSI representation of the image and skip the end-of buffer | |||
* 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; | |||
for(i = 0; i < server->client_count; i++) | |||
@@ -275,7 +264,9 @@ int main(void) | |||
} | |||
if(server->buffer) | |||
cucul_free_buffer(server->buffer); | |||
free(server->buffer); | |||
cucul_free_canvas(server->canvas); | |||
/* Restore 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)); | |||
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; | |||
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); | |||
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; | |||
return 0; | |||
} | |||
/* 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(errno == EAGAIN) | |||
@@ -517,7 +508,7 @@ static int send_data(struct server *server, struct client *c) | |||
return 0; | |||
} | |||
memcpy(c->outbuf, server->bufdata, server->buflen - ret); | |||
memcpy(c->outbuf, server->buffer, server->buflen - ret); | |||
c->stop = server->buflen - ret; | |||
return 0; | |||
@@ -27,7 +27,8 @@ int main(int argc, char **argv) | |||
{ | |||
/* libcucul context */ | |||
cucul_canvas_t *cv; | |||
cucul_buffer_t *export; | |||
void *export; | |||
unsigned long int len; | |||
struct image *i; | |||
int cols = 56, lines; | |||
@@ -62,10 +63,9 @@ int main(int argc, char **argv) | |||
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); | |||
@@ -34,9 +34,10 @@ int main(int argc, char *argv[]) | |||
{ | |||
cucul_canvas_t *cv; | |||
cucul_dither_t *dither; | |||
cucul_buffer_t *buffer; | |||
void *buffer; | |||
char *file, *format; | |||
char const * const * exports, * const * p; | |||
unsigned long int len; | |||
int x, y; | |||
exports = cucul_get_export_list(); | |||
@@ -77,20 +78,12 @@ int main(int argc, char *argv[]) | |||
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); | |||
exit(-1); | |||
} | |||
cucul_free_buffer(tmp); | |||
} | |||
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); | |||
@@ -32,7 +32,8 @@ int main(int argc, char *argv[]) | |||
cucul_font_t *f; | |||
char const * const * fonts; | |||
cucul_canvas_t *cv; | |||
cucul_buffer_t *buffer; | |||
void *buffer; | |||
unsigned long int len; | |||
unsigned int i, j, x, y, glyphs; | |||
fonts = cucul_get_font_list(); | |||
@@ -65,10 +66,9 @@ int main(int argc, char *argv[]) | |||
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 */ | |||
cucul_free_canvas(cv); | |||
@@ -30,7 +30,6 @@ | |||
int main(int argc, char *argv[]) | |||
{ | |||
cucul_canvas_t *cv; | |||
cucul_buffer_t *b; | |||
caca_display_t *dp; | |||
if(argc < 2) | |||
@@ -40,22 +39,14 @@ int main(int argc, char *argv[]) | |||
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]); | |||
cucul_free_canvas(cv); | |||
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); | |||
caca_refresh_display(dp); | |||
@@ -19,6 +19,7 @@ | |||
# endif | |||
# include <stdio.h> | |||
# include <string.h> | |||
# include <stdlib.h> | |||
#endif | |||
#include "cucul.h" | |||
@@ -33,23 +34,22 @@ | |||
int main(int argc, char *argv[]) | |||
{ | |||
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); | |||
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); | |||