-/*
+/*
* html.c:
*
* Copyright (c) 2008 James McKenzie <james@fishsoup.dhs.org>,
*
*/
-static char rcsid[] = "$Id$";
+static char rcsid[] = "$Id: html.c,v 1.15 2008/03/07 13:16:02 james Exp $";
-/*
- * $Log$
+/*
+ * $Log: html.c,v $
+ * Revision 1.15 2008/03/07 13:16:02 james
+ * *** empty log message ***
+ *
+ * Revision 1.14 2008/03/07 12:37:04 james
+ * *** empty log message ***
+ *
+ * Revision 1.13 2008/03/06 16:49:39 james
+ * *** empty log message ***
+ *
+ * Revision 1.12 2008/03/06 16:49:05 james
+ * *** empty log message ***
+ *
+ * Revision 1.11 2008/03/03 06:04:42 james
+ * *** empty log message ***
+ *
+ * Revision 1.10 2008/03/02 10:37:56 james
+ * *** empty log message ***
+ *
+ * Revision 1.9 2008/02/27 09:42:22 james
+ * *** empty log message ***
+ *
+ * Revision 1.8 2008/02/27 01:52:38 james
+ * *** empty log message ***
+ *
+ * Revision 1.7 2008/02/27 01:52:08 james
+ * *** empty log message ***
+ *
+ * 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 ***
*
static 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:
+ switch (c) {
+ case 32:
+ fprintf (f, " ");
+ break;
+ case 38:
+ fprintf (f, "&");
+ break;
+ case 60:
+ fprintf (f, "<");
+ break;
+ case 62:
+ fprintf (f, ">");
+ break;
+ default:
+
+ if ((c >= 32) && (c < 127)) {
fputc (c, f);
+ } else if (c > 127) {
+ fprintf (f, "&#x%04x;", c);
+ } else {
+ fputc (' ', f);
}
+ }
}
static void
{
int fg, bg;
- if (c.attr & CRT_ATTR_REVERSE)
- {
- fg = CRT_COLOR_BG (c.color);
- bg = CRT_COLOR_FG (c.color);
- }
- else
- {
- fg = CRT_COLOR_FG (c.color);
- bg = CRT_COLOR_BG (c.color);
- if (c.attr & CRT_ATTR_BOLD)
- fg |= CRT_COLOR_INTENSITY;
- }
+ if (c.attr & CRT_ATTR_REVERSE) {
+ fg = CRT_COLOR_BG (c.color);
+ bg = CRT_COLOR_FG (c.color);
+ } else {
+ 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, "<span style='color: #%06x; background-color: #%06x'>",
+ colormap[fg], colormap[bg]);
+#else
fprintf (f, "<td bgcolor='#%06x'><font color='#%06x'>", colormap[bg],
colormap[fg]);
+ fprintf (f, "<tt>");
+#endif
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>");
- }
+ if (c.attr & CRT_ATTR_REVERSE) {
+ fprintf (f, "</font>");
+ }
+#ifdef CSS
+ fprintf (f, "</span>");
+#else
+ fprintf (f, "</tt>");
fprintf (f, "</td>");
+#endif
}
static void
CRT_Pos p;
int o;
+#ifdef CSS
+ fprintf (f, "<pre>");
+#else
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_COLS; ++p.x, ++o)
- {
- html_render (f, c->screen[o]);
- }
- fprintf (f, "</tr>\n");
+#endif
+ for (p.y = 0; p.y < c->size.y; ++p.y) {
+ o = CRT_ADDR (p.y, 0);
+#ifndef CSS
+ fprintf (f, "<tr>");
+#endif
+ for (p.x = 0; p.x < c->size.x; ++p.x, ++o) {
+ html_render (f, c->screen[o]);
}
- fprintf (f, "</table>\n");
+#ifdef CSS
+ fprintf (f, "\n");
+#else
+ fprintf (f, "</tr>\n");
+#endif
+ }
+#ifdef CSS
+ fprintf (f, "</pre>\n");
+#else
+ fprintf (f, "</table>");
+#endif
}
-static void
+static int
html_one_shot (ANSI * a, CRT * c)
{
html_draw (a->file, c);
+ return 0;
}
{
ANSI *ret;
- ret = malloc (sizeof (ANSI));
+ ret = xmalloc (sizeof (ANSI));
memset (ret, 0, sizeof (ANSI));
ret->file = f;