diff options
author | james <> | 2008-02-03 23:31:25 +0000 |
---|---|---|
committer | james <> | 2008-02-03 23:31:25 +0000 |
commit | 148184f54c08d931007fc31cfd26ac88cc86e493 (patch) | |
tree | 4fcbc6fc7b58aca6bad6365c8526337e327e5a20 /src/html.c | |
parent | 4163308ecae26c76d22e4cc80d8bae729b06b94f (diff) | |
download | sympathy-148184f54c08d931007fc31cfd26ac88cc86e493.tar.gz sympathy-148184f54c08d931007fc31cfd26ac88cc86e493.tar.bz2 sympathy-148184f54c08d931007fc31cfd26ac88cc86e493.zip |
*** empty log message ***
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"); +} |