chiark / gitweb /
*** empty log message ***
[sympathy.git] / src / html.c
1 /*
2  * html.c:
3  *
4  * Copyright (c) 2008 James McKenzie <james@fishsoup.dhs.org>,
5  * All rights reserved.
6  *
7  */
8
9 static char rcsid[] = "$Id$";
10
11 /*
12  * $Log$
13  * Revision 1.1  2008/02/03 23:31:25  james
14  * *** empty log message ***
15  *
16  */
17
18 void
19 html_entity (FILE * f, int c)
20 {
21   switch (c)
22     {
23     case 32:
24       fprintf (f, "&nbsp;");
25       break;
26     case 38:
27       fprintf (f, "&amp;");
28       break;
29     case 60:
30       fprintf (f, "&lt;");
31       break;
32     case 62:
33       fprintf (f, "&gt;");
34       break;
35     default:
36       fputc (c, f);
37     }
38 }
39
40 void
41 html_render (FILE * f, CRT_CA c)
42 {
43   if (c.attr & CRT_ATTR_REVERSE)
44     {
45       fprintf (f, "<td bgcolor='#000000'><font color='#ffffff'>");
46     }
47   else
48     {
49       fprintf (f, "<td>");
50     }
51
52   if (c.attr & CRT_ATTR_UNDERLINE)
53     fprintf (f, "<ul>");
54   if (c.attr & CRT_ATTR_BOLD)
55     fprintf (f, "<b>");
56
57   if (c.chr < 32)
58     c.chr = 32;
59   if (c.chr > 126)
60     c.chr = 32;
61
62   html_entity (f, c.chr);
63
64   if (c.attr & CRT_ATTR_BOLD)
65     fprintf (f, "</b>");
66   if (c.attr & CRT_ATTR_UNDERLINE)
67     fprintf (f, "</ul>");
68   if (c.attr & CRT_ATTR_REVERSE)
69     {
70       fprintf (f, "</font>");
71     }
72   fprintf (f, "</td>");
73 }
74
75 void
76 html_draw (FILE * f, CRT * c)
77 {
78   CRT_Pos p;
79   int o;
80
81   fprintf (f, "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n");
82   for (p.y = 0; p.y < CRT_ROWS; ++p.y)
83     {
84       o = CRT_ADDR (p.y, 0);
85       fprintf (f, "<tr>");
86       for (p.x = 0; p.x < CRT_ROWS; ++p.x, ++o)
87         {
88           html_render (f, c->screen[o]);
89         }
90       fprintf (f, "</tr>\n");
91     }
92   fprintf (f, "</table>\n");
93 }