• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* Test for the term-ostream API.  */
2 
3 #include <config.h>
4 
5 #include "term-ostream.h"
6 
7 #include <stdlib.h>
8 #include <string.h>
9 
10 int
main()11 main ()
12 {
13   static struct { const char *name; term_color_t c; int r; int g; int b; }
14          colors[] =
15     {
16       { "black",   -2,   0,   0,   0 },
17       { "blue",    -2,   0,   0, 255 },
18       { "green",   -2,   0, 255,   0 },
19       { "cyan",    -2,   0, 255, 255 },
20       { "red",     -2, 255,   0,   0 },
21       { "magenta", -2, 255,   0, 255 },
22       { "yellow",  -2, 255, 255,   0 },
23       { "white",   -2, 255, 255, 255 },
24       { "default", COLOR_DEFAULT }
25     };
26   term_ostream_t stream;
27   int i, row, col;
28 
29   stream = term_ostream_create (1, "stdout", TTYCTL_AUTO);
30 
31   for (i = 0; i < 8; i++)
32     colors[i].c =
33       term_ostream_rgb_to_color (stream, colors[i].r, colors[i].g, colors[i].b);
34 
35   ostream_write_str (stream, "Colors (foreground/background):\n");
36   ostream_write_str (stream, "       ");
37   for (col = 0; col <= 8; col++)
38     {
39       const char *name = colors[col].name;
40       ostream_write_str (stream, "|");
41       ostream_write_str (stream, name);
42       ostream_write_mem (stream, "        ", 7 - strlen (name));
43     }
44   ostream_write_str (stream, "\n");
45   for (row = 0; row <= 8; row++)
46     {
47       const char *name = colors[row].name;
48       ostream_write_str (stream, name);
49       ostream_write_mem (stream, "        ", 7 - strlen (name));
50       for (col = 0; col <= 8; col++)
51         {
52           term_color_t row_color = colors[row].c;
53           term_color_t col_color = colors[col].c;
54 
55           ostream_write_str (stream, "|");
56           term_ostream_set_color (stream, row_color);
57           term_ostream_set_bgcolor (stream, col_color);
58           if (!(term_ostream_get_color (stream) == row_color
59                 && term_ostream_get_bgcolor (stream) == col_color))
60             abort ();
61           ostream_write_str (stream, " Words ");
62           term_ostream_set_color (stream, COLOR_DEFAULT);
63           term_ostream_set_bgcolor (stream, COLOR_DEFAULT);
64           if (!(term_ostream_get_color (stream) == COLOR_DEFAULT
65                 && term_ostream_get_bgcolor (stream) == COLOR_DEFAULT))
66             abort ();
67         }
68       ostream_write_str (stream, "\n");
69     }
70   ostream_write_str (stream, "\n");
71 
72   ostream_write_str (stream, "Colors (hue/saturation):\n");
73   /* Hue from 0 to 1.  */
74   for (row = 0; row <= 17; row++)
75     {
76       for (col = 0; col <= 64; col++)
77         {
78           int r = 255;
79           int b = (int) (255.0f / 64.0f * col + 0.5f);
80           int g = b + (int) (row / 17.0f * (r - b) + 0.5f);
81           term_color_t c = term_ostream_rgb_to_color (stream, r, g, b);
82           term_ostream_set_bgcolor (stream, c);
83           ostream_write_str (stream, " ");
84           term_ostream_set_bgcolor (stream, COLOR_DEFAULT);
85         }
86       ostream_write_str (stream, "\n");
87     }
88   /* Hue from 1 to 2.  */
89   for (row = 17; row >= 0; row--)
90     {
91       for (col = 0; col <= 64; col++)
92         {
93           int g = 255;
94           int b = (int) (255.0f / 64.0f * col + 0.5f);
95           int r = b + (int) (row / 17.0f * (g - b) + 0.5f);
96           term_color_t c = term_ostream_rgb_to_color (stream, r, g, b);
97           term_ostream_set_bgcolor (stream, c);
98           ostream_write_str (stream, " ");
99           term_ostream_set_bgcolor (stream, COLOR_DEFAULT);
100         }
101       ostream_write_str (stream, "\n");
102     }
103   /* Hue from 2 to 3.  */
104   for (row = 0; row <= 17; row++)
105     {
106       for (col = 0; col <= 64; col++)
107         {
108           int g = 255;
109           int r = (int) (255.0f / 64.0f * col + 0.5f);
110           int b = r + (int) (row / 17.0f * (g - r) + 0.5f);
111           term_color_t c = term_ostream_rgb_to_color (stream, r, g, b);
112           term_ostream_set_bgcolor (stream, c);
113           ostream_write_str (stream, " ");
114           term_ostream_set_bgcolor (stream, COLOR_DEFAULT);
115         }
116       ostream_write_str (stream, "\n");
117     }
118   /* Hue from 3 to 4.  */
119   for (row = 17; row >= 0; row--)
120     {
121       for (col = 0; col <= 64; col++)
122         {
123           int b = 255;
124           int r = (int) (255.0f / 64.0f * col + 0.5f);
125           int g = r + (int) (row / 17.0f * (b - r) + 0.5f);
126           term_color_t c = term_ostream_rgb_to_color (stream, r, g, b);
127           term_ostream_set_bgcolor (stream, c);
128           ostream_write_str (stream, " ");
129           term_ostream_set_bgcolor (stream, COLOR_DEFAULT);
130         }
131       ostream_write_str (stream, "\n");
132     }
133   /* Hue from 4 to 5.  */
134   for (row = 0; row <= 17; row++)
135     {
136       for (col = 0; col <= 64; col++)
137         {
138           int b = 255;
139           int g = (int) (255.0f / 64.0f * col + 0.5f);
140           int r = g + (int) (row / 17.0f * (b - g) + 0.5f);
141           term_color_t c = term_ostream_rgb_to_color (stream, r, g, b);
142           term_ostream_set_bgcolor (stream, c);
143           ostream_write_str (stream, " ");
144           term_ostream_set_bgcolor (stream, COLOR_DEFAULT);
145         }
146       ostream_write_str (stream, "\n");
147     }
148   /* Hue from 5 to 6.  */
149   for (row = 17; row >= 0; row--)
150     {
151       for (col = 0; col <= 64; col++)
152         {
153           int r = 255;
154           int g = (int) (255.0f / 64.0f * col + 0.5f);
155           int b = g + (int) (row / 17.0f * (r - g) + 0.5f);
156           term_color_t c = term_ostream_rgb_to_color (stream, r, g, b);
157           term_ostream_set_bgcolor (stream, c);
158           ostream_write_str (stream, " ");
159           term_ostream_set_bgcolor (stream, COLOR_DEFAULT);
160         }
161       ostream_write_str (stream, "\n");
162     }
163   ostream_write_str (stream, "\n");
164 
165   ostream_write_str (stream, "Weights:\n");
166   term_ostream_set_weight (stream, WEIGHT_NORMAL);
167   if (term_ostream_get_weight (stream) != WEIGHT_NORMAL)
168     abort ();
169   ostream_write_str (stream, "normal, ");
170   term_ostream_set_weight (stream, WEIGHT_BOLD);
171   if (term_ostream_get_weight (stream) != WEIGHT_BOLD)
172     abort ();
173   ostream_write_str (stream, "bold, ");
174   term_ostream_set_weight (stream, WEIGHT_DEFAULT);
175   if (term_ostream_get_weight (stream) != WEIGHT_DEFAULT)
176     abort ();
177   ostream_write_str (stream, "default \n");
178   ostream_write_str (stream, "\n");
179 
180   ostream_write_str (stream, "Postures:\n");
181   term_ostream_set_posture (stream, POSTURE_NORMAL);
182   if (term_ostream_get_posture (stream) != POSTURE_NORMAL)
183     abort ();
184   ostream_write_str (stream, "normal, ");
185   term_ostream_set_posture (stream, POSTURE_ITALIC);
186   if (term_ostream_get_posture (stream) != POSTURE_ITALIC)
187     abort ();
188   ostream_write_str (stream, "italic, ");
189   term_ostream_set_posture (stream, POSTURE_DEFAULT);
190   if (term_ostream_get_posture (stream) != POSTURE_DEFAULT)
191     abort ();
192   ostream_write_str (stream, "default \n");
193   ostream_write_str (stream, "\n");
194 
195   ostream_write_str (stream, "Text decorations:\n");
196   term_ostream_set_underline (stream, UNDERLINE_OFF);
197   if (term_ostream_get_underline (stream) != UNDERLINE_OFF)
198     abort ();
199   ostream_write_str (stream, "normal, ");
200   term_ostream_set_underline (stream, UNDERLINE_ON);
201   if (term_ostream_get_underline (stream) != UNDERLINE_ON)
202     abort ();
203   ostream_write_str (stream, "underlined, ");
204   term_ostream_set_underline (stream, UNDERLINE_DEFAULT);
205   if (term_ostream_get_underline (stream) != UNDERLINE_DEFAULT)
206     abort ();
207   ostream_write_str (stream, "default \n");
208   ostream_write_str (stream, "\n");
209 
210   ostream_free (stream);
211 
212   return 0;
213 }
214