can add new exporters without changing the API.tags/v0.99.beta14
@@ -317,35 +317,28 @@ void cucul_free(cucul_t *qq) | |||||
free(qq); | free(qq); | ||||
} | } | ||||
struct cucul_export * cucul_create_export(cucul_t *qq, enum cucul_format format) | |||||
struct cucul_export * cucul_create_export(cucul_t *qq, char const *format) | |||||
{ | { | ||||
struct cucul_export *ex; | struct cucul_export *ex; | ||||
ex = malloc(sizeof(struct cucul_export)); | ex = malloc(sizeof(struct cucul_export)); | ||||
switch(format) | |||||
if(!strcasecmp("ansi", format)) | |||||
_cucul_get_ansi(qq, ex); | |||||
else if(!strcasecmp("html", format)) | |||||
_cucul_get_html(qq, ex); | |||||
else if(!strcasecmp("html3", format)) | |||||
_cucul_get_html3(qq, ex); | |||||
else if(!strcasecmp("irc", format)) | |||||
_cucul_get_irc(qq, ex); | |||||
else if(!strcasecmp("ps", format)) | |||||
_cucul_get_ps(qq, ex); | |||||
else if(!strcasecmp("svg", format)) | |||||
_cucul_get_svg(qq, ex); | |||||
else | |||||
{ | { | ||||
case CUCUL_FORMAT_ANSI: | |||||
_cucul_get_ansi(qq, ex); | |||||
break; | |||||
case CUCUL_FORMAT_HTML: | |||||
_cucul_get_html(qq, ex); | |||||
break; | |||||
case CUCUL_FORMAT_HTML3: | |||||
_cucul_get_html3(qq, ex); | |||||
break; | |||||
case CUCUL_FORMAT_IRC: | |||||
_cucul_get_irc(qq, ex); | |||||
break; | |||||
case CUCUL_FORMAT_PS: | |||||
_cucul_get_ps(qq, ex); | |||||
break; | |||||
case CUCUL_FORMAT_SVG: | |||||
_cucul_get_svg(qq, ex); | |||||
break; | |||||
default: | |||||
free(ex); | |||||
return NULL; | |||||
free(ex); | |||||
return NULL; | |||||
} | } | ||||
return ex; | return ex; | ||||
@@ -52,20 +52,6 @@ enum cucul_color | |||||
CUCUL_COLOR_WHITE = 15 /**< The colour index for white. */ | CUCUL_COLOR_WHITE = 15 /**< The colour index for white. */ | ||||
}; | }; | ||||
/** \brief Export formats | |||||
* | |||||
* Export formats understood by libcucul. | |||||
*/ | |||||
enum cucul_format | |||||
{ | |||||
CUCUL_FORMAT_ANSI = 0, /**< Export to ANSI format. */ | |||||
CUCUL_FORMAT_HTML = 1, /**< Export to HTML format. */ | |||||
CUCUL_FORMAT_HTML3 = 2, /**< Export to old HTMLv3 format. */ | |||||
CUCUL_FORMAT_IRC = 3, /**< Export to text with mIRC colours. */ | |||||
CUCUL_FORMAT_PS = 4, /**< Export to PostScript. */ | |||||
CUCUL_FORMAT_SVG = 5, /**< Export to Scalable Vector Graphics format. */ | |||||
}; | |||||
/** \brief Internal features. | /** \brief Internal features. | ||||
* | * | ||||
* Internal libcaca features such as the rendering method or the dithering | * Internal libcaca features such as the rendering method or the dithering | ||||
@@ -241,7 +227,7 @@ struct cucul_export | |||||
char *buffer; | char *buffer; | ||||
}; | }; | ||||
struct cucul_export * cucul_create_export(cucul_t *, enum cucul_format); | |||||
struct cucul_export * cucul_create_export(cucul_t *, char const *); | |||||
void cucul_free_export(struct cucul_export *); | void cucul_free_export(struct cucul_export *); | ||||
/* @} */ | /* @} */ | ||||
@@ -195,7 +195,7 @@ int main(void) | |||||
/* 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\0", 3 bytes) */ | * linefeed ("\r\n\0", 3 bytes) */ | ||||
server->ex = cucul_create_export(qq, CUCUL_FORMAT_ANSI); | |||||
server->ex = cucul_create_export(qq, "ansi"); | |||||
server->ex->size -= 3; | server->ex->size -= 3; | ||||
for(i = 0; i < server->client_count; i++) | for(i = 0; i < server->client_count; i++) | ||||
@@ -35,7 +35,6 @@ uint32_t pixels[256*256]; | |||||
int main(int argc, char *argv[]) | int main(int argc, char *argv[]) | ||||
{ | { | ||||
cucul_t *qq; | cucul_t *qq; | ||||
enum cucul_format format; | |||||
struct cucul_bitmap *bitmap; | struct cucul_bitmap *bitmap; | ||||
struct cucul_export *buffer; | struct cucul_export *buffer; | ||||
int x, y; | int x, y; | ||||
@@ -48,19 +47,12 @@ int main(int argc, char *argv[]) | |||||
exit(-1); | exit(-1); | ||||
} | } | ||||
if(!strcasecmp(argv[1], "ansi")) | |||||
format = CUCUL_FORMAT_ANSI; | |||||
else if(!strcasecmp(argv[1], "html")) | |||||
format = CUCUL_FORMAT_HTML; | |||||
else if(!strcasecmp(argv[1], "html3")) | |||||
format = CUCUL_FORMAT_HTML3; | |||||
else if(!strcasecmp(argv[1], "irc")) | |||||
format = CUCUL_FORMAT_IRC; | |||||
else if(!strcasecmp(argv[1], "ps")) | |||||
format = CUCUL_FORMAT_PS; | |||||
else if(!strcasecmp(argv[1], "svg")) | |||||
format = CUCUL_FORMAT_SVG; | |||||
else | |||||
if(strcasecmp(argv[1], "ansi") | |||||
&& strcasecmp(argv[1], "html") | |||||
&& strcasecmp(argv[1], "html3") | |||||
&& strcasecmp(argv[1], "irc") | |||||
&& strcasecmp(argv[1], "ps") | |||||
&& strcasecmp(argv[1], "svg")) | |||||
{ | { | ||||
fprintf(stderr, "%s: unknown format `%s'\n", argv[0], argv[1]); | fprintf(stderr, "%s: unknown format `%s'\n", argv[0], argv[1]); | ||||
exit(-1); | exit(-1); | ||||
@@ -98,7 +90,7 @@ int main(int argc, char *argv[]) | |||||
cucul_set_color(qq, CUCUL_COLOR_WHITE, CUCUL_COLOR_LIGHTBLUE); | cucul_set_color(qq, CUCUL_COLOR_WHITE, CUCUL_COLOR_LIGHTBLUE); | ||||
cucul_putstr(qq, WIDTH / 2 - 7, HEIGHT / 2, " LIBCACA "); | cucul_putstr(qq, WIDTH / 2 - 7, HEIGHT / 2, " LIBCACA "); | ||||
buffer = cucul_create_export(qq, format); | |||||
buffer = cucul_create_export(qq, argv[1]); | |||||
fwrite(buffer->buffer, buffer->size - 1, 1, stdout); | fwrite(buffer->buffer, buffer->size - 1, 1, stdout); | ||||
cucul_free_export(buffer); | cucul_free_export(buffer); | ||||