Ver código fonte

* Changed the 2nd argument of cucul_create_export to a string. This way we

can add new exporters without changing the API.
tags/v0.99.beta14
Sam Hocevar sam 19 anos atrás
pai
commit
bca049e6d7
4 arquivos alterados com 25 adições e 54 exclusões
  1. +16
    -23
      cucul/cucul.c
  2. +1
    -15
      cucul/cucul.h
  3. +1
    -1
      src/cacaserver.c
  4. +7
    -15
      test/export.c

+ 16
- 23
cucul/cucul.c Ver arquivo

@@ -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;


+ 1
- 15
cucul/cucul.h Ver arquivo

@@ -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 *);

/* @} */


+ 1
- 1
src/cacaserver.c Ver arquivo

@@ -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++)


+ 7
- 15
test/export.c Ver arquivo

@@ -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);



Carregando…
Cancelar
Salvar