facf0c92e0
Red Bear OS is a full fork. All sources must be available from git clone with zero network access. Removed gitignore rules that excluded fetched source trees under recipes/*/source/, local/recipes/kde/*/source/, local/recipes/qt/*/source/, and vendor source trees. Build artifacts (target/, build/, source.tar, *.o, *.so) remain excluded. 127291 files added — kernel, relibc, base, bootloader, pkgar, all KDE/Qt frameworks, mesa, wayland, DRM drivers, and every other recipe source.
214 lines
7.2 KiB
C
214 lines
7.2 KiB
C
/* Test for the term-ostream API. */
|
|
|
|
#include <config.h>
|
|
|
|
#include "term-ostream.h"
|
|
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
int
|
|
main ()
|
|
{
|
|
static struct { const char *name; term_color_t c; int r; int g; int b; }
|
|
colors[] =
|
|
{
|
|
{ "black", -2, 0, 0, 0 },
|
|
{ "blue", -2, 0, 0, 255 },
|
|
{ "green", -2, 0, 255, 0 },
|
|
{ "cyan", -2, 0, 255, 255 },
|
|
{ "red", -2, 255, 0, 0 },
|
|
{ "magenta", -2, 255, 0, 255 },
|
|
{ "yellow", -2, 255, 255, 0 },
|
|
{ "white", -2, 255, 255, 255 },
|
|
{ "default", COLOR_DEFAULT }
|
|
};
|
|
term_ostream_t stream;
|
|
int i, row, col;
|
|
|
|
stream = term_ostream_create (1, "stdout", TTYCTL_AUTO);
|
|
|
|
for (i = 0; i < 8; i++)
|
|
colors[i].c =
|
|
term_ostream_rgb_to_color (stream, colors[i].r, colors[i].g, colors[i].b);
|
|
|
|
ostream_write_str (stream, "Colors (foreground/background):\n");
|
|
ostream_write_str (stream, " ");
|
|
for (col = 0; col <= 8; col++)
|
|
{
|
|
const char *name = colors[col].name;
|
|
ostream_write_str (stream, "|");
|
|
ostream_write_str (stream, name);
|
|
ostream_write_mem (stream, " ", 7 - strlen (name));
|
|
}
|
|
ostream_write_str (stream, "\n");
|
|
for (row = 0; row <= 8; row++)
|
|
{
|
|
const char *name = colors[row].name;
|
|
ostream_write_str (stream, name);
|
|
ostream_write_mem (stream, " ", 7 - strlen (name));
|
|
for (col = 0; col <= 8; col++)
|
|
{
|
|
term_color_t row_color = colors[row].c;
|
|
term_color_t col_color = colors[col].c;
|
|
|
|
ostream_write_str (stream, "|");
|
|
term_ostream_set_color (stream, row_color);
|
|
term_ostream_set_bgcolor (stream, col_color);
|
|
if (!(term_ostream_get_color (stream) == row_color
|
|
&& term_ostream_get_bgcolor (stream) == col_color))
|
|
abort ();
|
|
ostream_write_str (stream, " Words ");
|
|
term_ostream_set_color (stream, COLOR_DEFAULT);
|
|
term_ostream_set_bgcolor (stream, COLOR_DEFAULT);
|
|
if (!(term_ostream_get_color (stream) == COLOR_DEFAULT
|
|
&& term_ostream_get_bgcolor (stream) == COLOR_DEFAULT))
|
|
abort ();
|
|
}
|
|
ostream_write_str (stream, "\n");
|
|
}
|
|
ostream_write_str (stream, "\n");
|
|
|
|
ostream_write_str (stream, "Colors (hue/saturation):\n");
|
|
/* Hue from 0 to 1. */
|
|
for (row = 0; row <= 17; row++)
|
|
{
|
|
for (col = 0; col <= 64; col++)
|
|
{
|
|
int r = 255;
|
|
int b = (int) (255.0f / 64.0f * col + 0.5f);
|
|
int g = b + (int) (row / 17.0f * (r - b) + 0.5f);
|
|
term_color_t c = term_ostream_rgb_to_color (stream, r, g, b);
|
|
term_ostream_set_bgcolor (stream, c);
|
|
ostream_write_str (stream, " ");
|
|
term_ostream_set_bgcolor (stream, COLOR_DEFAULT);
|
|
}
|
|
ostream_write_str (stream, "\n");
|
|
}
|
|
/* Hue from 1 to 2. */
|
|
for (row = 17; row >= 0; row--)
|
|
{
|
|
for (col = 0; col <= 64; col++)
|
|
{
|
|
int g = 255;
|
|
int b = (int) (255.0f / 64.0f * col + 0.5f);
|
|
int r = b + (int) (row / 17.0f * (g - b) + 0.5f);
|
|
term_color_t c = term_ostream_rgb_to_color (stream, r, g, b);
|
|
term_ostream_set_bgcolor (stream, c);
|
|
ostream_write_str (stream, " ");
|
|
term_ostream_set_bgcolor (stream, COLOR_DEFAULT);
|
|
}
|
|
ostream_write_str (stream, "\n");
|
|
}
|
|
/* Hue from 2 to 3. */
|
|
for (row = 0; row <= 17; row++)
|
|
{
|
|
for (col = 0; col <= 64; col++)
|
|
{
|
|
int g = 255;
|
|
int r = (int) (255.0f / 64.0f * col + 0.5f);
|
|
int b = r + (int) (row / 17.0f * (g - r) + 0.5f);
|
|
term_color_t c = term_ostream_rgb_to_color (stream, r, g, b);
|
|
term_ostream_set_bgcolor (stream, c);
|
|
ostream_write_str (stream, " ");
|
|
term_ostream_set_bgcolor (stream, COLOR_DEFAULT);
|
|
}
|
|
ostream_write_str (stream, "\n");
|
|
}
|
|
/* Hue from 3 to 4. */
|
|
for (row = 17; row >= 0; row--)
|
|
{
|
|
for (col = 0; col <= 64; col++)
|
|
{
|
|
int b = 255;
|
|
int r = (int) (255.0f / 64.0f * col + 0.5f);
|
|
int g = r + (int) (row / 17.0f * (b - r) + 0.5f);
|
|
term_color_t c = term_ostream_rgb_to_color (stream, r, g, b);
|
|
term_ostream_set_bgcolor (stream, c);
|
|
ostream_write_str (stream, " ");
|
|
term_ostream_set_bgcolor (stream, COLOR_DEFAULT);
|
|
}
|
|
ostream_write_str (stream, "\n");
|
|
}
|
|
/* Hue from 4 to 5. */
|
|
for (row = 0; row <= 17; row++)
|
|
{
|
|
for (col = 0; col <= 64; col++)
|
|
{
|
|
int b = 255;
|
|
int g = (int) (255.0f / 64.0f * col + 0.5f);
|
|
int r = g + (int) (row / 17.0f * (b - g) + 0.5f);
|
|
term_color_t c = term_ostream_rgb_to_color (stream, r, g, b);
|
|
term_ostream_set_bgcolor (stream, c);
|
|
ostream_write_str (stream, " ");
|
|
term_ostream_set_bgcolor (stream, COLOR_DEFAULT);
|
|
}
|
|
ostream_write_str (stream, "\n");
|
|
}
|
|
/* Hue from 5 to 6. */
|
|
for (row = 17; row >= 0; row--)
|
|
{
|
|
for (col = 0; col <= 64; col++)
|
|
{
|
|
int r = 255;
|
|
int g = (int) (255.0f / 64.0f * col + 0.5f);
|
|
int b = g + (int) (row / 17.0f * (r - g) + 0.5f);
|
|
term_color_t c = term_ostream_rgb_to_color (stream, r, g, b);
|
|
term_ostream_set_bgcolor (stream, c);
|
|
ostream_write_str (stream, " ");
|
|
term_ostream_set_bgcolor (stream, COLOR_DEFAULT);
|
|
}
|
|
ostream_write_str (stream, "\n");
|
|
}
|
|
ostream_write_str (stream, "\n");
|
|
|
|
ostream_write_str (stream, "Weights:\n");
|
|
term_ostream_set_weight (stream, WEIGHT_NORMAL);
|
|
if (term_ostream_get_weight (stream) != WEIGHT_NORMAL)
|
|
abort ();
|
|
ostream_write_str (stream, "normal, ");
|
|
term_ostream_set_weight (stream, WEIGHT_BOLD);
|
|
if (term_ostream_get_weight (stream) != WEIGHT_BOLD)
|
|
abort ();
|
|
ostream_write_str (stream, "bold, ");
|
|
term_ostream_set_weight (stream, WEIGHT_DEFAULT);
|
|
if (term_ostream_get_weight (stream) != WEIGHT_DEFAULT)
|
|
abort ();
|
|
ostream_write_str (stream, "default \n");
|
|
ostream_write_str (stream, "\n");
|
|
|
|
ostream_write_str (stream, "Postures:\n");
|
|
term_ostream_set_posture (stream, POSTURE_NORMAL);
|
|
if (term_ostream_get_posture (stream) != POSTURE_NORMAL)
|
|
abort ();
|
|
ostream_write_str (stream, "normal, ");
|
|
term_ostream_set_posture (stream, POSTURE_ITALIC);
|
|
if (term_ostream_get_posture (stream) != POSTURE_ITALIC)
|
|
abort ();
|
|
ostream_write_str (stream, "italic, ");
|
|
term_ostream_set_posture (stream, POSTURE_DEFAULT);
|
|
if (term_ostream_get_posture (stream) != POSTURE_DEFAULT)
|
|
abort ();
|
|
ostream_write_str (stream, "default \n");
|
|
ostream_write_str (stream, "\n");
|
|
|
|
ostream_write_str (stream, "Text decorations:\n");
|
|
term_ostream_set_underline (stream, UNDERLINE_OFF);
|
|
if (term_ostream_get_underline (stream) != UNDERLINE_OFF)
|
|
abort ();
|
|
ostream_write_str (stream, "normal, ");
|
|
term_ostream_set_underline (stream, UNDERLINE_ON);
|
|
if (term_ostream_get_underline (stream) != UNDERLINE_ON)
|
|
abort ();
|
|
ostream_write_str (stream, "underlined, ");
|
|
term_ostream_set_underline (stream, UNDERLINE_DEFAULT);
|
|
if (term_ostream_get_underline (stream) != UNDERLINE_DEFAULT)
|
|
abort ();
|
|
ostream_write_str (stream, "default \n");
|
|
ostream_write_str (stream, "\n");
|
|
|
|
ostream_free (stream);
|
|
|
|
return 0;
|
|
}
|