X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fhtml.c;h=cc10a58ffa061ed16fcb5a8f4f649d7d6fa27e6d;hb=cd3c335082e66f9a790a5bbb0f24a7ec49c9d3d5;hp=db142a901cf4bd36ab82bbe1dcd450e86563e612;hpb=51d34367859892cb87c8727d93a02ed9f82fe958;p=sympathy.git diff --git a/src/html.c b/src/html.c index db142a9..cc10a58 100644 --- a/src/html.c +++ b/src/html.c @@ -10,6 +10,18 @@ static char rcsid[] = "$Id$"; /* * $Log$ + * Revision 1.6 2008/02/20 23:42:05 staffcvs + * *** empty log message *** + * + * Revision 1.5 2008/02/20 23:31:48 staffcvs + * *** empty log message *** + * + * Revision 1.4 2008/02/20 22:54:22 staffcvs + * *** empty log message *** + * + * Revision 1.3 2008/02/20 20:16:07 james + * *** empty log message *** + * * Revision 1.2 2008/02/04 02:05:06 james * *** empty log message *** * @@ -20,7 +32,31 @@ static char rcsid[] = "$Id$"; #include "project.h" -void + +#define V(i) (((i)==0)?0x80:(((i)==1)?0xc0:0xff)) +#define COLOR(r,g,b,i) ((((r)?(V(i)):0) << 0)| (((g)?(V(i)):0) << 8)| (((b)?(V(i)):0) << 16)) + +static int colormap[] = { + [CRT_COLOR_BLACK] = COLOR (0, 0, 0, 0), + [CRT_COLOR_RED] = COLOR (0, 0, 1, 0), + [CRT_COLOR_GREEN] = COLOR (0, 1, 0, 0), + [CRT_COLOR_YELLOW] = COLOR (0, 1, 1, 0), + [CRT_COLOR_BLUE] = COLOR (1, 0, 0, 0), + [CRT_COLOR_MAGENTA] = COLOR (1, 0, 1, 0), + [CRT_COLOR_CYAN] = COLOR (1, 1, 0, 0), + [CRT_COLOR_WHITE] = COLOR (1, 1, 1, 1), + [CRT_COLOR_BLACK | CRT_COLOR_INTENSITY] = COLOR (1, 1, 1, 0), + [CRT_COLOR_RED | CRT_COLOR_INTENSITY] = COLOR (0, 0, 1, 2), + [CRT_COLOR_GREEN | CRT_COLOR_INTENSITY] = COLOR (0, 1, 0, 2), + [CRT_COLOR_YELLOW | CRT_COLOR_INTENSITY] = COLOR (0, 1, 1, 2), + [CRT_COLOR_BLUE | CRT_COLOR_INTENSITY] = COLOR (1, 0, 0, 2), + [CRT_COLOR_MAGENTA | CRT_COLOR_INTENSITY] = COLOR (1, 0, 1, 2), + [CRT_COLOR_CYAN | CRT_COLOR_INTENSITY] = COLOR (1, 1, 0, 2), + [CRT_COLOR_WHITE | CRT_COLOR_INTENSITY] = COLOR (1, 1, 1, 2), +}; + + +static void html_entity (FILE * f, int c) { switch (c) @@ -42,17 +78,31 @@ html_entity (FILE * f, int c) } } -void +static void html_render (FILE * f, CRT_CA c) { + int fg, bg; + if (c.attr & CRT_ATTR_REVERSE) { - fprintf (f, ""); + fg = CRT_COLOR_BG (c.color); + bg = CRT_COLOR_FG (c.color); } else { - fprintf (f, ""); + fg = CRT_COLOR_FG (c.color); + bg = CRT_COLOR_BG (c.color); + if (c.attr & CRT_ATTR_BOLD) + fg |= CRT_COLOR_INTENSITY; } +#ifdef CSS + fprintf (f, "", + colormap[fg], colormap[bg]); +#else + fprintf (f, "", colormap[bg], + colormap[fg]); + fprintf (f, ""); +#endif if (c.attr & CRT_ATTR_UNDERLINE) fprintf (f, "