aboutsummaryrefslogtreecommitdiffstats
path: root/src/html.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/html.c')
-rw-r--r--src/html.c93
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, "&nbsp;");
+ break;
+ case 38:
+ fprintf (f, "&amp;");
+ break;
+ case 60:
+ fprintf (f, "&lt;");
+ break;
+ case 62:
+ fprintf (f, "&gt;");
+ 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");
+}