chiark / gitweb /
@@
[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.2  2008/02/04 02:05:06  james
14  * *** empty log message ***
15  *
16  * Revision 1.1  2008/02/03 23:31:25  james
17  * *** empty log message ***
18  *
19  */
20
21 #include "project.h"
22
23 void
24 html_entity (FILE * f, int c)
25 {
26   switch (c)
27     {
28     case 32:
29       fprintf (f, "&nbsp;");
30       break;
31     case 38:
32       fprintf (f, "&amp;");
33       break;
34     case 60:
35       fprintf (f, "&lt;");
36       break;
37     case 62:
38       fprintf (f, "&gt;");
39       break;
40     default:
41       fputc (c, f);
42     }
43 }
44
45 void
46 html_render (FILE * f, CRT_CA c)
47 {
48   if (c.attr & CRT_ATTR_REVERSE)
49     {
50       fprintf (f, "<td bgcolor='#000000'><font color='#ffffff'>");
51     }
52   else
53     {
54       fprintf (f, "<td>");
55     }
56
57   if (c.attr & CRT_ATTR_UNDERLINE)
58     fprintf (f, "<ul>");
59   if (c.attr & CRT_ATTR_BOLD)
60     fprintf (f, "<b>");
61
62   if (c.chr < 32)
63     c.chr = 32;
64   if (c.chr > 126)
65     c.chr = 32;
66
67   html_entity (f, c.chr);
68
69   if (c.attr & CRT_ATTR_BOLD)
70     fprintf (f, "</b>");
71   if (c.attr & CRT_ATTR_UNDERLINE)
72     fprintf (f, "</ul>");
73   if (c.attr & CRT_ATTR_REVERSE)
74     {
75       fprintf (f, "</font>");
76     }
77   fprintf (f, "</td>");
78 }
79
80 void
81 html_draw (FILE * f, CRT * c)
82 {
83   CRT_Pos p;
84   int o;
85
86   fprintf (f, "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n");
87   for (p.y = 0; p.y < CRT_ROWS; ++p.y)
88     {
89       o = CRT_ADDR (p.y, 0);
90       fprintf (f, "<tr>");
91       for (p.x = 0; p.x < CRT_ROWS; ++p.x, ++o)
92         {
93           html_render (f, c->screen[o]);
94         }
95       fprintf (f, "</tr>\n");
96     }
97   fprintf (f, "</table>\n");
98 }