diff options
Diffstat (limited to 'src/html.c')
-rw-r--r-- | src/html.c | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/src/html.c b/src/html.c new file mode 100644 index 0000000..5f48fe3 --- /dev/null +++ b/src/html.c @@ -0,0 +1,93 @@ +/* + * html.c: + * + * Copyright (c) 2008 James McKenzie <james@fishsoup.dhs.org>, + * All rights reserved. + * + */ + +static char rcsid[] = "$Id$"; + +/* + * $Log$ + * Revision 1.1 2008/02/03 23:31:25 james + * *** empty log message *** + * + */ + +void +html_entity (FILE * f, int c) +{ + switch (c) + { + case 32: + fprintf (f, " "); + break; + case 38: + fprintf (f, "&"); + break; + case 60: + fprintf (f, "<"); + break; + case 62: + fprintf (f, ">"); + break; + default: + fputc (c, f); + } +} + +void +html_render (FILE * f, CRT_CA c) +{ + if (c.attr & CRT_ATTR_REVERSE) + { + fprintf (f, "<td bgcolor='#000000'><font color='#ffffff'>"); + } + else + { + fprintf (f, "<td>"); + } + + if (c.attr & CRT_ATTR_UNDERLINE) + fprintf (f, "<ul>"); + if (c.attr & CRT_ATTR_BOLD) + fprintf (f, "<b>"); + + if (c.chr < 32) + c.chr = 32; + if (c.chr > 126) + c.chr = 32; + + html_entity (f, c.chr); + + if (c.attr & CRT_ATTR_BOLD) + fprintf (f, "</b>"); + if (c.attr & CRT_ATTR_UNDERLINE) + fprintf (f, "</ul>"); + if (c.attr & CRT_ATTR_REVERSE) + { + fprintf (f, "</font>"); + } + fprintf (f, "</td>"); +} + +void +html_draw (FILE * f, CRT * c) +{ + CRT_Pos p; + int o; + + fprintf (f, "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n"); + for (p.y = 0; p.y < CRT_ROWS; ++p.y) + { + o = CRT_ADDR (p.y, 0); + fprintf (f, "<tr>"); + for (p.x = 0; p.x < CRT_ROWS; ++p.x, ++o) + { + html_render (f, c->screen[o]); + } + fprintf (f, "</tr>\n"); + } + fprintf (f, "</table>\n"); +} |