can add new exporters without changing the API.tags/v0.99.beta14
@@ -317,35 +317,28 @@ void cucul_free(cucul_t *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; | |||
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; | |||
@@ -52,20 +52,6 @@ enum cucul_color | |||
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. | |||
* | |||
* Internal libcaca features such as the rendering method or the dithering | |||
@@ -241,7 +227,7 @@ struct cucul_export | |||
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 *); | |||
/* @} */ | |||
@@ -195,7 +195,7 @@ int main(void) | |||
/* Get ANSI representation of the image and skip the end-of buffer | |||
* 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; | |||
for(i = 0; i < server->client_count; i++) | |||
@@ -35,7 +35,6 @@ uint32_t pixels[256*256]; | |||
int main(int argc, char *argv[]) | |||
{ | |||
cucul_t *qq; | |||
enum cucul_format format; | |||
struct cucul_bitmap *bitmap; | |||
struct cucul_export *buffer; | |||
int x, y; | |||
@@ -48,19 +47,12 @@ int main(int argc, char *argv[]) | |||
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]); | |||
exit(-1); | |||
@@ -98,7 +90,7 @@ int main(int argc, char *argv[]) | |||
cucul_set_color(qq, CUCUL_COLOR_WHITE, CUCUL_COLOR_LIGHTBLUE); | |||
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); | |||
cucul_free_export(buffer); | |||