+2006-12-01 Bruno Haible <bruno@clisp.org>
+
+ * modules/term-ostream-tests: New file.
+ * tests/test-term-ostream.c: New file.
+ * tests/test-term-ostream-xterm: New file.
+ * tests/test-term-ostream-xterm.out: New file.
+ * tests/test-term-ostream-xterm-16color.out: New file.
+ * tests/test-term-ostream-xterm-88color.out: New file.
+ * tests/test-term-ostream-xterm-256color.out: New file.
+ * Makefile.am (EXTRA_DIST): Add the new files.
+
2006-12-02 Bruno Haible <bruno@clisp.org>
* lib/term-ostream.oo.c (term_ostream_create): Recognize also the
modules/relocwrapper \
modules/termcap \
modules/term-ostream \
+modules/term-ostream-tests \
modules/vasprintf.diff \
modules/wait-process.diff \
modules/xalloc \
modules/xalloc-die \
modules/xerror \
modules/xgetcwd \
-modules/xreadlink
+modules/xreadlink \
+tests/test-term-ostream.c \
+tests/test-term-ostream-xterm \
+tests/test-term-ostream-xterm.out \
+tests/test-term-ostream-xterm-16color.out \
+tests/test-term-ostream-xterm-88color.out \
+tests/test-term-ostream-xterm-256color.out
--- /dev/null
+Files:
+tests/test-term-ostream.c
+tests/test-term-ostream-xterm
+tests/test-term-ostream-xterm.out
+tests/test-term-ostream-xterm-16color.out
+tests/test-term-ostream-xterm-88color.out
+tests/test-term-ostream-xterm-256color.out
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-term-ostream-xterm
+TESTS_ENVIRONMENT += srcdir='$(srcdir)'
+check_PROGRAMS += test-term-ostream
+test_term_ostream_LDADD = $(LIBTERMCAP) $(LDADD)
--- /dev/null
+#!/bin/sh
+
+tmpfiles=""
+trap 'rm -fr $tmpfiles' 1 2 3 15
+
+tmpfiles="$tmpfiles out"
+TERM=xterm ./test-term-ostream > out
+
+: ${DIFF=diff}
+${DIFF} ${srcdir}/test-term-ostream-xterm.out out > /dev/null
+result=$?
+
+rm -fr $tmpfiles
+
+exit $result
--- /dev/null
+Colors (foreground/background):
+ |black |blue |green |cyan |red |magenta|yellow |white |default
+black |\e[30m\e[40m Words \e[39;49m|\e[30m\e[104m Words \e[39;49m|\e[30m\e[102m Words \e[39;49m|\e[30m\e[106m Words \e[39;49m|\e[30m\e[101m Words \e[39;49m|\e[30m\e[105m Words \e[39;49m|\e[30m\e[103m Words \e[39;49m|\e[30m\e[107m Words \e[39;49m|\e[30m Words \e[39;49m
+blue |\e[94m\e[40m Words \e[39;49m|\e[94m\e[104m Words \e[39;49m|\e[94m\e[102m Words \e[39;49m|\e[94m\e[106m Words \e[39;49m|\e[94m\e[101m Words \e[39;49m|\e[94m\e[105m Words \e[39;49m|\e[94m\e[103m Words \e[39;49m|\e[94m\e[107m Words \e[39;49m|\e[94m Words \e[39;49m
+green |\e[92m\e[40m Words \e[39;49m|\e[92m\e[104m Words \e[39;49m|\e[92m\e[102m Words \e[39;49m|\e[92m\e[106m Words \e[39;49m|\e[92m\e[101m Words \e[39;49m|\e[92m\e[105m Words \e[39;49m|\e[92m\e[103m Words \e[39;49m|\e[92m\e[107m Words \e[39;49m|\e[92m Words \e[39;49m
+cyan |\e[96m\e[40m Words \e[39;49m|\e[96m\e[104m Words \e[39;49m|\e[96m\e[102m Words \e[39;49m|\e[96m\e[106m Words \e[39;49m|\e[96m\e[101m Words \e[39;49m|\e[96m\e[105m Words \e[39;49m|\e[96m\e[103m Words \e[39;49m|\e[96m\e[107m Words \e[39;49m|\e[96m Words \e[39;49m
+red |\e[91m\e[40m Words \e[39;49m|\e[91m\e[104m Words \e[39;49m|\e[91m\e[102m Words \e[39;49m|\e[91m\e[106m Words \e[39;49m|\e[91m\e[101m Words \e[39;49m|\e[91m\e[105m Words \e[39;49m|\e[91m\e[103m Words \e[39;49m|\e[91m\e[107m Words \e[39;49m|\e[91m Words \e[39;49m
+magenta|\e[95m\e[40m Words \e[39;49m|\e[95m\e[104m Words \e[39;49m|\e[95m\e[102m Words \e[39;49m|\e[95m\e[106m Words \e[39;49m|\e[95m\e[101m Words \e[39;49m|\e[95m\e[105m Words \e[39;49m|\e[95m\e[103m Words \e[39;49m|\e[95m\e[107m Words \e[39;49m|\e[95m Words \e[39;49m
+yellow |\e[93m\e[40m Words \e[39;49m|\e[93m\e[104m Words \e[39;49m|\e[93m\e[102m Words \e[39;49m|\e[93m\e[106m Words \e[39;49m|\e[93m\e[101m Words \e[39;49m|\e[93m\e[105m Words \e[39;49m|\e[93m\e[103m Words \e[39;49m|\e[93m\e[107m Words \e[39;49m|\e[93m Words \e[39;49m
+white |\e[97m\e[40m Words \e[39;49m|\e[97m\e[104m Words \e[39;49m|\e[97m\e[102m Words \e[39;49m|\e[97m\e[106m Words \e[39;49m|\e[97m\e[101m Words \e[39;49m|\e[97m\e[105m Words \e[39;49m|\e[97m\e[103m Words \e[39;49m|\e[97m\e[107m Words \e[39;49m|\e[97m Words \e[39;49m
+default|\e[40m Words \e[39;49m|\e[104m Words \e[39;49m|\e[102m Words \e[39;49m|\e[106m Words \e[39;49m|\e[101m Words \e[39;49m|\e[105m Words \e[39;49m|\e[103m Words \e[39;49m|\e[107m Words \e[39;49m| Words
+
+Colors (hue/saturation):
+\e[101m \e[107m \e[39;49m
+\e[101m \e[107m \e[39;49m
+\e[101m \e[107m \e[39;49m
+\e[101m \e[107m \e[39;49m
+\e[101m \e[107m \e[39;49m
+\e[101m \e[107m \e[39;49m
+\e[101m \e[107m \e[39;49m
+\e[101m \e[107m \e[39;49m
+\e[101m \e[107m \e[39;49m
+\e[103m \e[107m \e[39;49m
+\e[103m \e[107m \e[39;49m
+\e[103m \e[107m \e[39;49m
+\e[103m \e[107m \e[39;49m
+\e[103m \e[107m \e[39;49m
+\e[103m \e[107m \e[39;49m
+\e[103m \e[107m \e[39;49m
+\e[103m \e[107m \e[39;49m
+\e[103m \e[107m \e[39;49m
+\e[103m \e[107m \e[39;49m
+\e[103m \e[107m \e[39;49m
+\e[103m \e[107m \e[39;49m
+\e[103m \e[107m \e[39;49m
+\e[103m \e[107m \e[39;49m
+\e[103m \e[107m \e[39;49m
+\e[103m \e[107m \e[39;49m
+\e[103m \e[107m \e[39;49m
+\e[103m \e[107m \e[39;49m
+\e[102m \e[107m \e[39;49m
+\e[102m \e[107m \e[39;49m
+\e[102m \e[107m \e[39;49m
+\e[102m \e[107m \e[39;49m
+\e[102m \e[107m \e[39;49m
+\e[102m \e[107m \e[39;49m
+\e[102m \e[107m \e[39;49m
+\e[102m \e[107m \e[39;49m
+\e[102m \e[107m \e[39;49m
+\e[102m \e[107m \e[39;49m
+\e[102m \e[107m \e[39;49m
+\e[102m \e[107m \e[39;49m
+\e[102m \e[107m \e[39;49m
+\e[102m \e[107m \e[39;49m
+\e[102m \e[107m \e[39;49m
+\e[102m \e[107m \e[39;49m
+\e[102m \e[107m \e[39;49m
+\e[102m \e[107m \e[39;49m
+\e[106m \e[107m \e[39;49m
+\e[106m \e[107m \e[39;49m
+\e[106m \e[107m \e[39;49m
+\e[106m \e[107m \e[39;49m
+\e[106m \e[107m \e[39;49m
+\e[106m \e[107m \e[39;49m
+\e[106m \e[107m \e[39;49m
+\e[106m \e[107m \e[39;49m
+\e[106m \e[107m \e[39;49m
+\e[106m \e[107m \e[39;49m
+\e[106m \e[107m \e[39;49m
+\e[106m \e[107m \e[39;49m
+\e[106m \e[107m \e[39;49m
+\e[106m \e[107m \e[39;49m
+\e[106m \e[107m \e[39;49m
+\e[106m \e[107m \e[39;49m
+\e[106m \e[107m \e[39;49m
+\e[106m \e[107m \e[39;49m
+\e[104m \e[107m \e[39;49m
+\e[104m \e[107m \e[39;49m
+\e[104m \e[107m \e[39;49m
+\e[104m \e[107m \e[39;49m
+\e[104m \e[107m \e[39;49m
+\e[104m \e[107m \e[39;49m
+\e[104m \e[107m \e[39;49m
+\e[104m \e[47m \e[107m \e[39;49m
+\e[104m \e[47m \e[107m \e[39;49m
+\e[104m \e[47m \e[107m \e[39;49m
+\e[104m \e[47m \e[107m \e[39;49m
+\e[104m \e[47m \e[107m \e[39;49m
+\e[104m \e[47m \e[107m \e[39;49m
+\e[104m \e[107m \e[39;49m
+\e[104m \e[107m \e[39;49m
+\e[104m \e[107m \e[39;49m
+\e[104m \e[107m \e[39;49m
+\e[104m \e[107m \e[39;49m
+\e[105m \e[107m \e[39;49m
+\e[105m \e[107m \e[39;49m
+\e[105m \e[107m \e[39;49m
+\e[105m \e[107m \e[39;49m
+\e[105m \e[107m \e[39;49m
+\e[105m \e[107m \e[39;49m
+\e[105m \e[107m \e[39;49m
+\e[105m \e[107m \e[39;49m
+\e[105m \e[107m \e[39;49m
+\e[105m \e[107m \e[39;49m
+\e[105m \e[107m \e[39;49m
+\e[105m \e[107m \e[39;49m
+\e[105m \e[107m \e[39;49m
+\e[105m \e[107m \e[39;49m
+\e[105m \e[107m \e[39;49m
+\e[105m \e[107m \e[39;49m
+\e[105m \e[107m \e[39;49m
+\e[105m \e[107m \e[39;49m
+\e[101m \e[107m \e[39;49m
+\e[101m \e[107m \e[39;49m
+\e[101m \e[107m \e[39;49m
+\e[101m \e[107m \e[39;49m
+\e[101m \e[107m \e[39;49m
+\e[101m \e[107m \e[39;49m
+\e[101m \e[107m \e[39;49m
+\e[101m \e[107m \e[39;49m
+\e[101m \e[107m \e[39;49m
+
+Weights:
+normal, \e[1mbold, \e[0mdefault
+
+Postures:
+normal, italic, default
+
+Text decorations:
+normal, \e[4munderlined, \e[24mdefault
+
--- /dev/null
+Colors (foreground/background):
+ |black |blue |green |cyan |red |magenta|yellow |white |default
+black |\e[38;5;0m\e[48;5;0m Words \e[39;49m|\e[38;5;0m\e[48;5;12m Words \e[39;49m|\e[38;5;0m\e[48;5;10m Words \e[39;49m|\e[38;5;0m\e[48;5;14m Words \e[39;49m|\e[38;5;0m\e[48;5;9m Words \e[39;49m|\e[38;5;0m\e[48;5;13m Words \e[39;49m|\e[38;5;0m\e[48;5;11m Words \e[39;49m|\e[38;5;0m\e[48;5;15m Words \e[39;49m|\e[38;5;0m Words \e[39;49m
+blue |\e[38;5;12m\e[48;5;0m Words \e[39;49m|\e[38;5;12m\e[48;5;12m Words \e[39;49m|\e[38;5;12m\e[48;5;10m Words \e[39;49m|\e[38;5;12m\e[48;5;14m Words \e[39;49m|\e[38;5;12m\e[48;5;9m Words \e[39;49m|\e[38;5;12m\e[48;5;13m Words \e[39;49m|\e[38;5;12m\e[48;5;11m Words \e[39;49m|\e[38;5;12m\e[48;5;15m Words \e[39;49m|\e[38;5;12m Words \e[39;49m
+green |\e[38;5;10m\e[48;5;0m Words \e[39;49m|\e[38;5;10m\e[48;5;12m Words \e[39;49m|\e[38;5;10m\e[48;5;10m Words \e[39;49m|\e[38;5;10m\e[48;5;14m Words \e[39;49m|\e[38;5;10m\e[48;5;9m Words \e[39;49m|\e[38;5;10m\e[48;5;13m Words \e[39;49m|\e[38;5;10m\e[48;5;11m Words \e[39;49m|\e[38;5;10m\e[48;5;15m Words \e[39;49m|\e[38;5;10m Words \e[39;49m
+cyan |\e[38;5;14m\e[48;5;0m Words \e[39;49m|\e[38;5;14m\e[48;5;12m Words \e[39;49m|\e[38;5;14m\e[48;5;10m Words \e[39;49m|\e[38;5;14m\e[48;5;14m Words \e[39;49m|\e[38;5;14m\e[48;5;9m Words \e[39;49m|\e[38;5;14m\e[48;5;13m Words \e[39;49m|\e[38;5;14m\e[48;5;11m Words \e[39;49m|\e[38;5;14m\e[48;5;15m Words \e[39;49m|\e[38;5;14m Words \e[39;49m
+red |\e[38;5;9m\e[48;5;0m Words \e[39;49m|\e[38;5;9m\e[48;5;12m Words \e[39;49m|\e[38;5;9m\e[48;5;10m Words \e[39;49m|\e[38;5;9m\e[48;5;14m Words \e[39;49m|\e[38;5;9m\e[48;5;9m Words \e[39;49m|\e[38;5;9m\e[48;5;13m Words \e[39;49m|\e[38;5;9m\e[48;5;11m Words \e[39;49m|\e[38;5;9m\e[48;5;15m Words \e[39;49m|\e[38;5;9m Words \e[39;49m
+magenta|\e[38;5;13m\e[48;5;0m Words \e[39;49m|\e[38;5;13m\e[48;5;12m Words \e[39;49m|\e[38;5;13m\e[48;5;10m Words \e[39;49m|\e[38;5;13m\e[48;5;14m Words \e[39;49m|\e[38;5;13m\e[48;5;9m Words \e[39;49m|\e[38;5;13m\e[48;5;13m Words \e[39;49m|\e[38;5;13m\e[48;5;11m Words \e[39;49m|\e[38;5;13m\e[48;5;15m Words \e[39;49m|\e[38;5;13m Words \e[39;49m
+yellow |\e[38;5;11m\e[48;5;0m Words \e[39;49m|\e[38;5;11m\e[48;5;12m Words \e[39;49m|\e[38;5;11m\e[48;5;10m Words \e[39;49m|\e[38;5;11m\e[48;5;14m Words \e[39;49m|\e[38;5;11m\e[48;5;9m Words \e[39;49m|\e[38;5;11m\e[48;5;13m Words \e[39;49m|\e[38;5;11m\e[48;5;11m Words \e[39;49m|\e[38;5;11m\e[48;5;15m Words \e[39;49m|\e[38;5;11m Words \e[39;49m
+white |\e[38;5;15m\e[48;5;0m Words \e[39;49m|\e[38;5;15m\e[48;5;12m Words \e[39;49m|\e[38;5;15m\e[48;5;10m Words \e[39;49m|\e[38;5;15m\e[48;5;14m Words \e[39;49m|\e[38;5;15m\e[48;5;9m Words \e[39;49m|\e[38;5;15m\e[48;5;13m Words \e[39;49m|\e[38;5;15m\e[48;5;11m Words \e[39;49m|\e[38;5;15m\e[48;5;15m Words \e[39;49m|\e[38;5;15m Words \e[39;49m
+default|\e[48;5;0m Words \e[39;49m|\e[48;5;12m Words \e[39;49m|\e[48;5;10m Words \e[39;49m|\e[48;5;14m Words \e[39;49m|\e[48;5;9m Words \e[39;49m|\e[48;5;13m Words \e[39;49m|\e[48;5;11m Words \e[39;49m|\e[48;5;15m Words \e[39;49m| Words
+
+Colors (hue/saturation):
+\e[48;5;9m \e[48;5;210m \e[48;5;217m \e[48;5;224m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;9m \e[48;5;210m \e[48;5;217m \e[48;5;224m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;9m \e[48;5;210m \e[48;5;217m \e[48;5;224m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;202m \e[48;5;209m \e[48;5;216m \e[48;5;217m \e[48;5;216m \e[48;5;217m \e[48;5;224m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;202m \e[48;5;209m \e[48;5;216m \e[48;5;224m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;209m \e[48;5;216m \e[48;5;223m \e[48;5;224m \e[48;5;15m \e[39;49m
+\e[48;5;208m \e[48;5;209m \e[48;5;216m \e[48;5;223m \e[48;5;224m \e[48;5;15m \e[39;49m
+\e[48;5;208m \e[48;5;215m \e[48;5;216m \e[48;5;223m \e[48;5;224m \e[48;5;15m \e[39;49m
+\e[48;5;208m \e[48;5;215m \e[48;5;223m \e[48;5;224m \e[48;5;15m \e[39;49m
+\e[48;5;214m \e[48;5;215m \e[48;5;223m \e[48;5;230m \e[48;5;15m \e[39;49m
+\e[48;5;214m \e[48;5;215m \e[48;5;222m \e[48;5;223m \e[48;5;230m \e[48;5;15m \e[39;49m
+\e[48;5;214m \e[48;5;221m \e[48;5;222m \e[48;5;223m \e[48;5;230m \e[48;5;15m \e[39;49m
+\e[48;5;220m \e[48;5;221m \e[48;5;222m \e[48;5;223m \e[48;5;230m \e[48;5;15m \e[39;49m
+\e[48;5;220m \e[48;5;221m \e[48;5;222m \e[48;5;230m \e[48;5;15m \e[39;49m
+\e[48;5;220m \e[48;5;221m \e[48;5;222m \e[48;5;229m \e[48;5;222m \e[48;5;229m \e[48;5;230m \e[48;5;15m \e[39;49m
+\e[48;5;11m \e[48;5;228m \e[48;5;229m \e[48;5;230m \e[48;5;15m \e[39;49m
+\e[48;5;11m \e[48;5;228m \e[48;5;229m \e[48;5;230m \e[48;5;15m \e[39;49m
+\e[48;5;11m \e[48;5;228m \e[48;5;229m \e[48;5;230m \e[48;5;15m \e[39;49m
+\e[48;5;11m \e[48;5;228m \e[48;5;229m \e[48;5;230m \e[48;5;15m \e[39;49m
+\e[48;5;11m \e[48;5;228m \e[48;5;229m \e[48;5;230m \e[48;5;15m \e[39;49m
+\e[48;5;11m \e[48;5;228m \e[48;5;229m \e[48;5;230m \e[48;5;15m \e[39;49m
+\e[48;5;190m \e[48;5;191m \e[48;5;192m \e[48;5;229m \e[48;5;192m \e[48;5;229m \e[48;5;230m \e[48;5;15m \e[39;49m
+\e[48;5;190m \e[48;5;191m \e[48;5;192m \e[48;5;230m \e[48;5;15m \e[39;49m
+\e[48;5;190m \e[48;5;191m \e[48;5;192m \e[48;5;193m \e[48;5;230m \e[48;5;15m \e[39;49m
+\e[48;5;154m \e[48;5;191m \e[48;5;192m \e[48;5;193m \e[48;5;230m \e[48;5;15m \e[39;49m
+\e[48;5;154m \e[48;5;155m \e[48;5;192m \e[48;5;193m \e[48;5;230m \e[48;5;15m \e[39;49m
+\e[48;5;154m \e[48;5;155m \e[48;5;193m \e[48;5;230m \e[48;5;15m \e[39;49m
+\e[48;5;118m \e[48;5;155m \e[48;5;193m \e[48;5;194m \e[48;5;15m \e[39;49m
+\e[48;5;118m \e[48;5;155m \e[48;5;156m \e[48;5;193m \e[48;5;194m \e[48;5;15m \e[39;49m
+\e[48;5;118m \e[48;5;119m \e[48;5;156m \e[48;5;193m \e[48;5;194m \e[48;5;15m \e[39;49m
+\e[48;5;119m \e[48;5;156m \e[48;5;193m \e[48;5;194m \e[48;5;15m \e[39;49m
+\e[48;5;82m \e[48;5;119m \e[48;5;156m \e[48;5;194m \e[48;5;15m \e[39;49m
+\e[48;5;82m \e[48;5;119m \e[48;5;156m \e[48;5;157m \e[48;5;156m \e[48;5;157m \e[48;5;194m \e[48;5;15m \e[39;49m
+\e[48;5;10m \e[48;5;120m \e[48;5;157m \e[48;5;194m \e[48;5;15m \e[39;49m
+\e[48;5;10m \e[48;5;120m \e[48;5;157m \e[48;5;194m \e[48;5;15m \e[39;49m
+\e[48;5;10m \e[48;5;120m \e[48;5;157m \e[48;5;194m \e[48;5;15m \e[39;49m
+\e[48;5;10m \e[48;5;120m \e[48;5;157m \e[48;5;194m \e[48;5;15m \e[39;49m
+\e[48;5;10m \e[48;5;120m \e[48;5;157m \e[48;5;194m \e[48;5;15m \e[39;49m
+\e[48;5;10m \e[48;5;120m \e[48;5;157m \e[48;5;194m \e[48;5;15m \e[39;49m
+\e[48;5;47m \e[48;5;84m \e[48;5;121m \e[48;5;157m \e[48;5;121m \e[48;5;157m \e[48;5;194m \e[48;5;15m \e[39;49m
+\e[48;5;47m \e[48;5;84m \e[48;5;121m \e[48;5;194m \e[48;5;15m \e[39;49m
+\e[48;5;84m \e[48;5;121m \e[48;5;158m \e[48;5;194m \e[48;5;15m \e[39;49m
+\e[48;5;48m \e[48;5;84m \e[48;5;121m \e[48;5;158m \e[48;5;194m \e[48;5;15m \e[39;49m
+\e[48;5;48m \e[48;5;85m \e[48;5;121m \e[48;5;158m \e[48;5;194m \e[48;5;15m \e[39;49m
+\e[48;5;48m \e[48;5;85m \e[48;5;158m \e[48;5;194m \e[48;5;15m \e[39;49m
+\e[48;5;49m \e[48;5;85m \e[48;5;158m \e[48;5;195m \e[48;5;15m \e[39;49m
+\e[48;5;49m \e[48;5;85m \e[48;5;122m \e[48;5;158m \e[48;5;195m \e[48;5;15m \e[39;49m
+\e[48;5;49m \e[48;5;86m \e[48;5;122m \e[48;5;158m \e[48;5;195m \e[48;5;15m \e[39;49m
+\e[48;5;50m \e[48;5;86m \e[48;5;122m \e[48;5;158m \e[48;5;195m \e[48;5;15m \e[39;49m
+\e[48;5;50m \e[48;5;86m \e[48;5;122m \e[48;5;195m \e[48;5;15m \e[39;49m
+\e[48;5;50m \e[48;5;86m \e[48;5;122m \e[48;5;159m \e[48;5;122m \e[48;5;159m \e[48;5;195m \e[48;5;15m \e[39;49m
+\e[48;5;14m \e[48;5;123m \e[48;5;159m \e[48;5;195m \e[48;5;15m \e[39;49m
+\e[48;5;14m \e[48;5;123m \e[48;5;159m \e[48;5;195m \e[48;5;15m \e[39;49m
+\e[48;5;14m \e[48;5;123m \e[48;5;159m \e[48;5;195m \e[48;5;15m \e[39;49m
+\e[48;5;14m \e[48;5;123m \e[48;5;159m \e[48;5;195m \e[48;5;15m \e[39;49m
+\e[48;5;14m \e[48;5;123m \e[48;5;159m \e[48;5;195m \e[48;5;15m \e[39;49m
+\e[48;5;14m \e[48;5;123m \e[48;5;159m \e[48;5;195m \e[48;5;15m \e[39;49m
+\e[48;5;45m \e[48;5;81m \e[48;5;117m \e[48;5;159m \e[48;5;117m \e[48;5;159m \e[48;5;195m \e[48;5;15m \e[39;49m
+\e[48;5;45m \e[48;5;81m \e[48;5;117m \e[48;5;195m \e[48;5;15m \e[39;49m
+\e[48;5;45m \e[48;5;81m \e[48;5;117m \e[48;5;153m \e[48;5;195m \e[48;5;15m \e[39;49m
+\e[48;5;39m \e[48;5;81m \e[48;5;117m \e[48;5;153m \e[48;5;195m \e[48;5;15m \e[39;49m
+\e[48;5;39m \e[48;5;75m \e[48;5;117m \e[48;5;153m \e[48;5;195m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;39m \e[48;5;75m \e[48;5;153m \e[48;5;195m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;33m \e[48;5;75m \e[48;5;153m \e[48;5;189m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;33m \e[48;5;75m \e[48;5;111m \e[48;5;153m \e[48;5;189m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;33m \e[48;5;69m \e[48;5;111m \e[48;5;153m \e[48;5;189m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;69m \e[48;5;111m \e[48;5;153m \e[48;5;189m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;27m \e[48;5;69m \e[48;5;111m \e[48;5;189m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;27m \e[48;5;69m \e[48;5;111m \e[48;5;147m \e[48;5;111m \e[48;5;147m \e[48;5;189m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;12m \e[48;5;105m \e[48;5;147m \e[48;5;189m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;12m \e[48;5;105m \e[48;5;147m \e[48;5;189m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;12m \e[48;5;105m \e[48;5;147m \e[48;5;189m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;12m \e[48;5;105m \e[48;5;147m \e[48;5;189m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;12m \e[48;5;105m \e[48;5;147m \e[48;5;189m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;12m \e[48;5;105m \e[48;5;147m \e[48;5;189m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;57m \e[48;5;99m \e[48;5;141m \e[48;5;147m \e[48;5;141m \e[48;5;147m \e[48;5;189m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;57m \e[48;5;99m \e[48;5;141m \e[48;5;189m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;99m \e[48;5;141m \e[48;5;183m \e[48;5;189m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;93m \e[48;5;99m \e[48;5;141m \e[48;5;183m \e[48;5;189m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;93m \e[48;5;135m \e[48;5;141m \e[48;5;183m \e[48;5;189m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;93m \e[48;5;135m \e[48;5;183m \e[48;5;189m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;129m \e[48;5;135m \e[48;5;183m \e[48;5;225m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;129m \e[48;5;135m \e[48;5;177m \e[48;5;183m \e[48;5;225m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;129m \e[48;5;171m \e[48;5;177m \e[48;5;183m \e[48;5;225m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;165m \e[48;5;171m \e[48;5;177m \e[48;5;183m \e[48;5;225m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;165m \e[48;5;171m \e[48;5;177m \e[48;5;225m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;165m \e[48;5;171m \e[48;5;177m \e[48;5;219m \e[48;5;177m \e[48;5;219m \e[48;5;225m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;13m \e[48;5;213m \e[48;5;219m \e[48;5;225m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;13m \e[48;5;213m \e[48;5;219m \e[48;5;225m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;13m \e[48;5;213m \e[48;5;219m \e[48;5;225m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;13m \e[48;5;213m \e[48;5;219m \e[48;5;225m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;13m \e[48;5;213m \e[48;5;219m \e[48;5;225m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;13m \e[48;5;213m \e[48;5;219m \e[48;5;225m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;200m \e[48;5;206m \e[48;5;212m \e[48;5;219m \e[48;5;212m \e[48;5;219m \e[48;5;225m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;200m \e[48;5;206m \e[48;5;212m \e[48;5;225m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;200m \e[48;5;206m \e[48;5;212m \e[48;5;218m \e[48;5;225m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;199m \e[48;5;206m \e[48;5;212m \e[48;5;218m \e[48;5;225m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;199m \e[48;5;205m \e[48;5;212m \e[48;5;218m \e[48;5;225m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;199m \e[48;5;205m \e[48;5;218m \e[48;5;225m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;198m \e[48;5;205m \e[48;5;218m \e[48;5;224m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;198m \e[48;5;205m \e[48;5;211m \e[48;5;218m \e[48;5;224m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;198m \e[48;5;204m \e[48;5;211m \e[48;5;218m \e[48;5;224m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;204m \e[48;5;211m \e[48;5;218m \e[48;5;224m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;197m \e[48;5;204m \e[48;5;211m \e[48;5;224m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;197m \e[48;5;204m \e[48;5;211m \e[48;5;217m \e[48;5;211m \e[48;5;217m \e[48;5;224m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;9m \e[48;5;210m \e[48;5;217m \e[48;5;224m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;9m \e[48;5;210m \e[48;5;217m \e[48;5;224m \e[48;5;255m \e[48;5;15m \e[39;49m
+\e[48;5;9m \e[48;5;210m \e[48;5;217m \e[48;5;224m \e[48;5;255m \e[48;5;15m \e[39;49m
+
+Weights:
+normal, \e[1mbold, \e[0mdefault
+
+Postures:
+normal, italic, default
+
+Text decorations:
+normal, \e[4munderlined, \e[24mdefault
+
--- /dev/null
+Colors (foreground/background):
+ |black |blue |green |cyan |red |magenta|yellow |white |default
+black |\e[38;5;0m\e[48;5;0m Words \e[39;49m|\e[38;5;0m\e[48;5;12m Words \e[39;49m|\e[38;5;0m\e[48;5;10m Words \e[39;49m|\e[38;5;0m\e[48;5;14m Words \e[39;49m|\e[38;5;0m\e[48;5;9m Words \e[39;49m|\e[38;5;0m\e[48;5;13m Words \e[39;49m|\e[38;5;0m\e[48;5;11m Words \e[39;49m|\e[38;5;0m\e[48;5;15m Words \e[39;49m|\e[38;5;0m Words \e[39;49m
+blue |\e[38;5;12m\e[48;5;0m Words \e[39;49m|\e[38;5;12m\e[48;5;12m Words \e[39;49m|\e[38;5;12m\e[48;5;10m Words \e[39;49m|\e[38;5;12m\e[48;5;14m Words \e[39;49m|\e[38;5;12m\e[48;5;9m Words \e[39;49m|\e[38;5;12m\e[48;5;13m Words \e[39;49m|\e[38;5;12m\e[48;5;11m Words \e[39;49m|\e[38;5;12m\e[48;5;15m Words \e[39;49m|\e[38;5;12m Words \e[39;49m
+green |\e[38;5;10m\e[48;5;0m Words \e[39;49m|\e[38;5;10m\e[48;5;12m Words \e[39;49m|\e[38;5;10m\e[48;5;10m Words \e[39;49m|\e[38;5;10m\e[48;5;14m Words \e[39;49m|\e[38;5;10m\e[48;5;9m Words \e[39;49m|\e[38;5;10m\e[48;5;13m Words \e[39;49m|\e[38;5;10m\e[48;5;11m Words \e[39;49m|\e[38;5;10m\e[48;5;15m Words \e[39;49m|\e[38;5;10m Words \e[39;49m
+cyan |\e[38;5;14m\e[48;5;0m Words \e[39;49m|\e[38;5;14m\e[48;5;12m Words \e[39;49m|\e[38;5;14m\e[48;5;10m Words \e[39;49m|\e[38;5;14m\e[48;5;14m Words \e[39;49m|\e[38;5;14m\e[48;5;9m Words \e[39;49m|\e[38;5;14m\e[48;5;13m Words \e[39;49m|\e[38;5;14m\e[48;5;11m Words \e[39;49m|\e[38;5;14m\e[48;5;15m Words \e[39;49m|\e[38;5;14m Words \e[39;49m
+red |\e[38;5;9m\e[48;5;0m Words \e[39;49m|\e[38;5;9m\e[48;5;12m Words \e[39;49m|\e[38;5;9m\e[48;5;10m Words \e[39;49m|\e[38;5;9m\e[48;5;14m Words \e[39;49m|\e[38;5;9m\e[48;5;9m Words \e[39;49m|\e[38;5;9m\e[48;5;13m Words \e[39;49m|\e[38;5;9m\e[48;5;11m Words \e[39;49m|\e[38;5;9m\e[48;5;15m Words \e[39;49m|\e[38;5;9m Words \e[39;49m
+magenta|\e[38;5;13m\e[48;5;0m Words \e[39;49m|\e[38;5;13m\e[48;5;12m Words \e[39;49m|\e[38;5;13m\e[48;5;10m Words \e[39;49m|\e[38;5;13m\e[48;5;14m Words \e[39;49m|\e[38;5;13m\e[48;5;9m Words \e[39;49m|\e[38;5;13m\e[48;5;13m Words \e[39;49m|\e[38;5;13m\e[48;5;11m Words \e[39;49m|\e[38;5;13m\e[48;5;15m Words \e[39;49m|\e[38;5;13m Words \e[39;49m
+yellow |\e[38;5;11m\e[48;5;0m Words \e[39;49m|\e[38;5;11m\e[48;5;12m Words \e[39;49m|\e[38;5;11m\e[48;5;10m Words \e[39;49m|\e[38;5;11m\e[48;5;14m Words \e[39;49m|\e[38;5;11m\e[48;5;9m Words \e[39;49m|\e[38;5;11m\e[48;5;13m Words \e[39;49m|\e[38;5;11m\e[48;5;11m Words \e[39;49m|\e[38;5;11m\e[48;5;15m Words \e[39;49m|\e[38;5;11m Words \e[39;49m
+white |\e[38;5;15m\e[48;5;0m Words \e[39;49m|\e[38;5;15m\e[48;5;12m Words \e[39;49m|\e[38;5;15m\e[48;5;10m Words \e[39;49m|\e[38;5;15m\e[48;5;14m Words \e[39;49m|\e[38;5;15m\e[48;5;9m Words \e[39;49m|\e[38;5;15m\e[48;5;13m Words \e[39;49m|\e[38;5;15m\e[48;5;11m Words \e[39;49m|\e[38;5;15m\e[48;5;15m Words \e[39;49m|\e[38;5;15m Words \e[39;49m
+default|\e[48;5;0m Words \e[39;49m|\e[48;5;12m Words \e[39;49m|\e[48;5;10m Words \e[39;49m|\e[48;5;14m Words \e[39;49m|\e[48;5;9m Words \e[39;49m|\e[48;5;13m Words \e[39;49m|\e[48;5;11m Words \e[39;49m|\e[48;5;15m Words \e[39;49m| Words
+
+Colors (hue/saturation):
+\e[48;5;9m \e[48;5;64m \e[48;5;9m \e[48;5;64m \e[48;5;9m \e[48;5;64m \e[48;5;9m \e[48;5;64m \e[48;5;9m \e[48;5;69m \e[48;5;74m \e[48;5;15m \e[39;49m
+\e[48;5;64m \e[48;5;9m \e[48;5;64m \e[48;5;9m \e[48;5;64m \e[48;5;9m \e[48;5;64m \e[48;5;9m \e[48;5;64m \e[48;5;69m \e[48;5;74m \e[48;5;15m \e[39;49m
+\e[48;5;64m \e[48;5;9m \e[48;5;64m \e[48;5;9m \e[48;5;64m \e[48;5;9m \e[48;5;64m \e[48;5;69m \e[48;5;74m \e[48;5;15m \e[39;49m
+\e[48;5;9m \e[48;5;64m \e[48;5;9m \e[48;5;64m \e[48;5;9m \e[48;5;64m \e[48;5;9m \e[48;5;69m \e[48;5;74m \e[48;5;15m \e[39;49m
+\e[48;5;64m \e[48;5;9m \e[48;5;64m \e[48;5;9m \e[48;5;64m \e[48;5;9m \e[48;5;64m \e[48;5;9m \e[48;5;69m \e[48;5;74m \e[48;5;15m \e[39;49m
+\e[48;5;68m \e[48;5;73m \e[48;5;74m \e[48;5;15m \e[39;49m
+\e[48;5;68m \e[48;5;73m \e[48;5;74m \e[48;5;15m \e[39;49m
+\e[48;5;68m \e[48;5;73m \e[48;5;74m \e[48;5;15m \e[39;49m
+\e[48;5;68m \e[48;5;73m \e[48;5;74m \e[48;5;15m \e[39;49m
+\e[48;5;68m \e[48;5;73m \e[48;5;78m \e[48;5;15m \e[39;49m
+\e[48;5;68m \e[48;5;73m \e[48;5;78m \e[48;5;15m \e[39;49m
+\e[48;5;68m \e[48;5;73m \e[48;5;78m \e[48;5;15m \e[39;49m
+\e[48;5;72m \e[48;5;73m \e[48;5;78m \e[48;5;15m \e[39;49m
+\e[48;5;72m \e[48;5;73m \e[48;5;78m \e[48;5;15m \e[39;49m
+\e[48;5;72m \e[48;5;77m \e[48;5;78m \e[48;5;15m \e[39;49m
+\e[48;5;72m \e[48;5;77m \e[48;5;78m \e[48;5;15m \e[39;49m
+\e[48;5;76m \e[48;5;11m \e[48;5;76m \e[48;5;11m \e[48;5;76m \e[48;5;11m \e[48;5;76m \e[48;5;77m \e[48;5;78m \e[48;5;15m \e[39;49m
+\e[48;5;11m \e[48;5;76m \e[48;5;11m \e[48;5;76m \e[48;5;11m \e[48;5;76m \e[48;5;11m \e[48;5;76m \e[48;5;11m \e[48;5;77m \e[48;5;78m \e[48;5;15m \e[39;49m
+\e[48;5;11m \e[48;5;76m \e[48;5;11m \e[48;5;76m \e[48;5;11m \e[48;5;76m \e[48;5;11m \e[48;5;76m \e[48;5;11m \e[48;5;77m \e[48;5;78m \e[48;5;15m \e[39;49m
+\e[48;5;76m \e[48;5;11m \e[48;5;76m \e[48;5;11m \e[48;5;76m \e[48;5;11m \e[48;5;77m \e[48;5;78m \e[48;5;15m \e[39;49m
+\e[48;5;60m \e[48;5;77m \e[48;5;78m \e[48;5;15m \e[39;49m
+\e[48;5;60m \e[48;5;77m \e[48;5;78m \e[48;5;15m \e[39;49m
+\e[48;5;60m \e[48;5;61m \e[48;5;78m \e[48;5;15m \e[39;49m
+\e[48;5;60m \e[48;5;61m \e[48;5;78m \e[48;5;15m \e[39;49m
+\e[48;5;44m \e[48;5;61m \e[48;5;78m \e[48;5;15m \e[39;49m
+\e[48;5;44m \e[48;5;61m \e[48;5;78m \e[48;5;15m \e[39;49m
+\e[48;5;44m \e[48;5;61m \e[48;5;78m \e[48;5;15m \e[39;49m
+\e[48;5;44m \e[48;5;61m \e[48;5;62m \e[48;5;15m \e[39;49m
+\e[48;5;44m \e[48;5;61m \e[48;5;62m \e[48;5;15m \e[39;49m
+\e[48;5;44m \e[48;5;61m \e[48;5;62m \e[48;5;15m \e[39;49m
+\e[48;5;44m \e[48;5;61m \e[48;5;62m \e[48;5;15m \e[39;49m
+\e[48;5;28m \e[48;5;10m \e[48;5;28m \e[48;5;10m \e[48;5;28m \e[48;5;10m \e[48;5;28m \e[48;5;10m \e[48;5;45m \e[48;5;62m \e[48;5;15m \e[39;49m
+\e[48;5;28m \e[48;5;10m \e[48;5;28m \e[48;5;10m \e[48;5;28m \e[48;5;45m \e[48;5;62m \e[48;5;15m \e[39;49m
+\e[48;5;28m \e[48;5;10m \e[48;5;28m \e[48;5;10m \e[48;5;28m \e[48;5;10m \e[48;5;28m \e[48;5;10m \e[48;5;28m \e[48;5;45m \e[48;5;62m \e[48;5;15m \e[39;49m
+\e[48;5;28m \e[48;5;10m \e[48;5;28m \e[48;5;10m \e[48;5;28m \e[48;5;10m \e[48;5;45m \e[48;5;62m \e[48;5;15m \e[39;49m
+\e[48;5;10m \e[48;5;28m \e[48;5;10m \e[48;5;28m \e[48;5;10m \e[48;5;28m \e[48;5;10m \e[48;5;28m \e[48;5;10m \e[48;5;45m \e[48;5;62m \e[48;5;15m \e[39;49m
+\e[48;5;10m \e[48;5;28m \e[48;5;10m \e[48;5;28m \e[48;5;10m \e[48;5;28m \e[48;5;10m \e[48;5;28m \e[48;5;10m \e[48;5;45m \e[48;5;62m \e[48;5;15m \e[39;49m
+\e[48;5;28m \e[48;5;10m \e[48;5;28m \e[48;5;10m \e[48;5;28m \e[48;5;10m \e[48;5;28m \e[48;5;10m \e[48;5;45m \e[48;5;62m \e[48;5;15m \e[39;49m
+\e[48;5;28m \e[48;5;10m \e[48;5;28m \e[48;5;10m \e[48;5;28m \e[48;5;10m \e[48;5;28m \e[48;5;45m \e[48;5;62m \e[48;5;15m \e[39;49m
+\e[48;5;10m \e[48;5;28m \e[48;5;10m \e[48;5;28m \e[48;5;10m \e[48;5;28m \e[48;5;10m \e[48;5;28m \e[48;5;10m \e[48;5;28m \e[48;5;10m \e[48;5;28m \e[48;5;45m \e[48;5;62m \e[48;5;15m \e[39;49m
+\e[48;5;28m \e[48;5;10m \e[48;5;28m \e[48;5;10m \e[48;5;28m \e[48;5;10m \e[48;5;28m \e[48;5;10m \e[48;5;45m \e[48;5;62m \e[48;5;15m \e[39;49m
+\e[48;5;29m \e[48;5;46m \e[48;5;62m \e[48;5;15m \e[39;49m
+\e[48;5;29m \e[48;5;46m \e[48;5;62m \e[48;5;15m \e[39;49m
+\e[48;5;29m \e[48;5;46m \e[48;5;62m \e[48;5;15m \e[39;49m
+\e[48;5;29m \e[48;5;46m \e[48;5;62m \e[48;5;15m \e[39;49m
+\e[48;5;29m \e[48;5;46m \e[48;5;63m \e[48;5;15m \e[39;49m
+\e[48;5;29m \e[48;5;46m \e[48;5;63m \e[48;5;15m \e[39;49m
+\e[48;5;29m \e[48;5;46m \e[48;5;63m \e[48;5;15m \e[39;49m
+\e[48;5;30m \e[48;5;46m \e[48;5;63m \e[48;5;15m \e[39;49m
+\e[48;5;30m \e[48;5;46m \e[48;5;63m \e[48;5;15m \e[39;49m
+\e[48;5;30m \e[48;5;47m \e[48;5;63m \e[48;5;15m \e[39;49m
+\e[48;5;30m \e[48;5;47m \e[48;5;63m \e[48;5;15m \e[39;49m
+\e[48;5;31m \e[48;5;14m \e[48;5;31m \e[48;5;14m \e[48;5;31m \e[48;5;14m \e[48;5;31m \e[48;5;14m \e[48;5;47m \e[48;5;63m \e[48;5;15m \e[39;49m
+\e[48;5;14m \e[48;5;31m \e[48;5;14m \e[48;5;31m \e[48;5;14m \e[48;5;31m \e[48;5;14m \e[48;5;31m \e[48;5;14m \e[48;5;47m \e[48;5;63m \e[48;5;15m \e[39;49m
+\e[48;5;14m \e[48;5;31m \e[48;5;14m \e[48;5;31m \e[48;5;14m \e[48;5;31m \e[48;5;14m \e[48;5;31m \e[48;5;14m \e[48;5;47m \e[48;5;63m \e[48;5;15m \e[39;49m
+\e[48;5;31m \e[48;5;14m \e[48;5;31m \e[48;5;14m \e[48;5;31m \e[48;5;14m \e[48;5;31m \e[48;5;14m \e[48;5;47m \e[48;5;63m \e[48;5;15m \e[39;49m
+\e[48;5;27m \e[48;5;47m \e[48;5;63m \e[48;5;15m \e[39;49m
+\e[48;5;27m \e[48;5;47m \e[48;5;63m \e[48;5;15m \e[39;49m
+\e[48;5;27m \e[48;5;43m \e[48;5;63m \e[48;5;15m \e[39;49m
+\e[48;5;27m \e[48;5;43m \e[48;5;63m \e[48;5;15m \e[39;49m
+\e[48;5;23m \e[48;5;43m \e[48;5;63m \e[48;5;15m \e[39;49m
+\e[48;5;23m \e[48;5;43m \e[48;5;63m \e[48;5;15m \e[39;49m
+\e[48;5;23m \e[48;5;43m \e[48;5;63m \e[48;5;15m \e[39;49m
+\e[48;5;23m \e[48;5;43m \e[48;5;59m \e[48;5;15m \e[39;49m
+\e[48;5;23m \e[48;5;43m \e[48;5;59m \e[48;5;15m \e[39;49m
+\e[48;5;23m \e[48;5;43m \e[48;5;59m \e[48;5;15m \e[39;49m
+\e[48;5;23m \e[48;5;43m \e[48;5;59m \e[48;5;15m \e[39;49m
+\e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;39m \e[48;5;59m \e[48;5;15m \e[39;49m
+\e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;39m \e[48;5;59m \e[48;5;87m \e[48;5;15m \e[39;49m
+\e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;39m \e[48;5;59m \e[48;5;87m \e[48;5;15m \e[39;49m
+\e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;39m \e[48;5;59m \e[48;5;87m \e[48;5;15m \e[39;49m
+\e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;39m \e[48;5;59m \e[48;5;87m \e[48;5;15m \e[39;49m
+\e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;39m \e[48;5;59m \e[48;5;87m \e[48;5;15m \e[39;49m
+\e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;39m \e[48;5;59m \e[48;5;87m \e[48;5;15m \e[39;49m
+\e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;39m \e[48;5;59m \e[48;5;87m \e[48;5;15m \e[39;49m
+\e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;39m \e[48;5;59m \e[48;5;87m \e[48;5;15m \e[39;49m
+\e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;19m \e[48;5;12m \e[48;5;39m \e[48;5;59m \e[48;5;87m \e[48;5;15m \e[39;49m
+\e[48;5;35m \e[48;5;55m \e[48;5;59m \e[48;5;87m \e[48;5;15m \e[39;49m
+\e[48;5;35m \e[48;5;55m \e[48;5;59m \e[48;5;87m \e[48;5;15m \e[39;49m
+\e[48;5;35m \e[48;5;55m \e[48;5;59m \e[48;5;87m \e[48;5;15m \e[39;49m
+\e[48;5;35m \e[48;5;55m \e[48;5;59m \e[48;5;15m \e[39;49m
+\e[48;5;35m \e[48;5;55m \e[48;5;75m \e[48;5;15m \e[39;49m
+\e[48;5;35m \e[48;5;55m \e[48;5;75m \e[48;5;15m \e[39;49m
+\e[48;5;35m \e[48;5;55m \e[48;5;75m \e[48;5;15m \e[39;49m
+\e[48;5;51m \e[48;5;55m \e[48;5;75m \e[48;5;15m \e[39;49m
+\e[48;5;51m \e[48;5;55m \e[48;5;75m \e[48;5;15m \e[39;49m
+\e[48;5;51m \e[48;5;71m \e[48;5;75m \e[48;5;15m \e[39;49m
+\e[48;5;51m \e[48;5;71m \e[48;5;75m \e[48;5;15m \e[39;49m
+\e[48;5;67m \e[48;5;13m \e[48;5;67m \e[48;5;13m \e[48;5;67m \e[48;5;13m \e[48;5;67m \e[48;5;13m \e[48;5;71m \e[48;5;75m \e[48;5;15m \e[39;49m
+\e[48;5;13m \e[48;5;67m \e[48;5;13m \e[48;5;67m \e[48;5;13m \e[48;5;67m \e[48;5;13m \e[48;5;67m \e[48;5;13m \e[48;5;71m \e[48;5;75m \e[48;5;15m \e[39;49m
+\e[48;5;13m \e[48;5;67m \e[48;5;13m \e[48;5;67m \e[48;5;13m \e[48;5;67m \e[48;5;13m \e[48;5;67m \e[48;5;13m \e[48;5;71m \e[48;5;75m \e[48;5;15m \e[39;49m
+\e[48;5;67m \e[48;5;13m \e[48;5;67m \e[48;5;13m \e[48;5;67m \e[48;5;13m \e[48;5;67m \e[48;5;13m \e[48;5;71m \e[48;5;75m \e[48;5;15m \e[39;49m
+\e[48;5;66m \e[48;5;71m \e[48;5;75m \e[48;5;15m \e[39;49m
+\e[48;5;66m \e[48;5;71m \e[48;5;75m \e[48;5;15m \e[39;49m
+\e[48;5;66m \e[48;5;70m \e[48;5;75m \e[48;5;15m \e[39;49m
+\e[48;5;66m \e[48;5;70m \e[48;5;75m \e[48;5;15m \e[39;49m
+\e[48;5;65m \e[48;5;70m \e[48;5;75m \e[48;5;15m \e[39;49m
+\e[48;5;65m \e[48;5;70m \e[48;5;75m \e[48;5;15m \e[39;49m
+\e[48;5;65m \e[48;5;70m \e[48;5;75m \e[48;5;15m \e[39;49m
+\e[48;5;65m \e[48;5;70m \e[48;5;74m \e[48;5;15m \e[39;49m
+\e[48;5;65m \e[48;5;70m \e[48;5;74m \e[48;5;15m \e[39;49m
+\e[48;5;65m \e[48;5;70m \e[48;5;74m \e[48;5;15m \e[39;49m
+\e[48;5;65m \e[48;5;70m \e[48;5;74m \e[48;5;15m \e[39;49m
+\e[48;5;64m \e[48;5;9m \e[48;5;64m \e[48;5;9m \e[48;5;64m \e[48;5;9m \e[48;5;69m \e[48;5;74m \e[48;5;15m \e[39;49m
+\e[48;5;9m \e[48;5;64m \e[48;5;9m \e[48;5;64m \e[48;5;9m \e[48;5;64m \e[48;5;9m \e[48;5;64m \e[48;5;69m \e[48;5;74m \e[48;5;15m \e[39;49m
+\e[48;5;64m \e[48;5;9m \e[48;5;64m \e[48;5;9m \e[48;5;64m \e[48;5;9m \e[48;5;64m \e[48;5;9m \e[48;5;64m \e[48;5;9m \e[48;5;64m \e[48;5;69m \e[48;5;74m \e[48;5;15m \e[39;49m
+\e[48;5;64m \e[48;5;9m \e[48;5;64m \e[48;5;9m \e[48;5;64m \e[48;5;9m \e[48;5;64m \e[48;5;9m \e[48;5;69m \e[48;5;74m \e[48;5;15m \e[39;49m
+\e[48;5;9m \e[48;5;64m \e[48;5;9m \e[48;5;64m \e[48;5;9m \e[48;5;64m \e[48;5;9m \e[48;5;64m \e[48;5;9m \e[48;5;69m \e[48;5;74m \e[48;5;15m \e[39;49m
+
+Weights:
+normal, \e[1mbold, \e[0mdefault
+
+Postures:
+normal, italic, default
+
+Text decorations:
+normal, \e[4munderlined, \e[24mdefault
+
--- /dev/null
+Colors (foreground/background):
+ |black |blue |green |cyan |red |magenta|yellow |white |default
+black |\e[30m\e[40m Words \e[39;49m|\e[30m\e[44m Words \e[39;49m|\e[30m\e[42m Words \e[39;49m|\e[30m\e[46m Words \e[39;49m|\e[30m\e[41m Words \e[39;49m|\e[30m\e[45m Words \e[39;49m|\e[30m\e[43m Words \e[39;49m|\e[30m\e[47m Words \e[39;49m|\e[30m Words \e[39;49m
+blue |\e[34m\e[40m Words \e[39;49m|\e[34m\e[44m Words \e[39;49m|\e[34m\e[42m Words \e[39;49m|\e[34m\e[46m Words \e[39;49m|\e[34m\e[41m Words \e[39;49m|\e[34m\e[45m Words \e[39;49m|\e[34m\e[43m Words \e[39;49m|\e[34m\e[47m Words \e[39;49m|\e[34m Words \e[39;49m
+green |\e[32m\e[40m Words \e[39;49m|\e[32m\e[44m Words \e[39;49m|\e[32m\e[42m Words \e[39;49m|\e[32m\e[46m Words \e[39;49m|\e[32m\e[41m Words \e[39;49m|\e[32m\e[45m Words \e[39;49m|\e[32m\e[43m Words \e[39;49m|\e[32m\e[47m Words \e[39;49m|\e[32m Words \e[39;49m
+cyan |\e[36m\e[40m Words \e[39;49m|\e[36m\e[44m Words \e[39;49m|\e[36m\e[42m Words \e[39;49m|\e[36m\e[46m Words \e[39;49m|\e[36m\e[41m Words \e[39;49m|\e[36m\e[45m Words \e[39;49m|\e[36m\e[43m Words \e[39;49m|\e[36m\e[47m Words \e[39;49m|\e[36m Words \e[39;49m
+red |\e[31m\e[40m Words \e[39;49m|\e[31m\e[44m Words \e[39;49m|\e[31m\e[42m Words \e[39;49m|\e[31m\e[46m Words \e[39;49m|\e[31m\e[41m Words \e[39;49m|\e[31m\e[45m Words \e[39;49m|\e[31m\e[43m Words \e[39;49m|\e[31m\e[47m Words \e[39;49m|\e[31m Words \e[39;49m
+magenta|\e[35m\e[40m Words \e[39;49m|\e[35m\e[44m Words \e[39;49m|\e[35m\e[42m Words \e[39;49m|\e[35m\e[46m Words \e[39;49m|\e[35m\e[41m Words \e[39;49m|\e[35m\e[45m Words \e[39;49m|\e[35m\e[43m Words \e[39;49m|\e[35m\e[47m Words \e[39;49m|\e[35m Words \e[39;49m
+yellow |\e[33m\e[40m Words \e[39;49m|\e[33m\e[44m Words \e[39;49m|\e[33m\e[42m Words \e[39;49m|\e[33m\e[46m Words \e[39;49m|\e[33m\e[41m Words \e[39;49m|\e[33m\e[45m Words \e[39;49m|\e[33m\e[43m Words \e[39;49m|\e[33m\e[47m Words \e[39;49m|\e[33m Words \e[39;49m
+white |\e[37m\e[40m Words \e[39;49m|\e[37m\e[44m Words \e[39;49m|\e[37m\e[42m Words \e[39;49m|\e[37m\e[46m Words \e[39;49m|\e[37m\e[41m Words \e[39;49m|\e[37m\e[45m Words \e[39;49m|\e[37m\e[43m Words \e[39;49m|\e[37m\e[47m Words \e[39;49m|\e[37m Words \e[39;49m
+default|\e[40m Words \e[39;49m|\e[44m Words \e[39;49m|\e[42m Words \e[39;49m|\e[46m Words \e[39;49m|\e[41m Words \e[39;49m|\e[45m Words \e[39;49m|\e[43m Words \e[39;49m|\e[47m Words \e[39;49m| Words
+
+Colors (hue/saturation):
+\e[41m \e[47m \e[39;49m
+\e[41m \e[47m \e[39;49m
+\e[41m \e[47m \e[39;49m
+\e[41m \e[47m \e[39;49m
+\e[41m \e[47m \e[39;49m
+\e[41m \e[47m \e[39;49m
+\e[41m \e[47m \e[39;49m
+\e[41m \e[47m \e[39;49m
+\e[41m \e[47m \e[39;49m
+\e[43m \e[47m \e[39;49m
+\e[43m \e[47m \e[39;49m
+\e[43m \e[47m \e[39;49m
+\e[43m \e[47m \e[39;49m
+\e[43m \e[47m \e[39;49m
+\e[43m \e[47m \e[39;49m
+\e[43m \e[47m \e[39;49m
+\e[43m \e[47m \e[39;49m
+\e[43m \e[47m \e[39;49m
+\e[43m \e[47m \e[39;49m
+\e[43m \e[47m \e[39;49m
+\e[43m \e[47m \e[39;49m
+\e[43m \e[47m \e[39;49m
+\e[43m \e[47m \e[39;49m
+\e[43m \e[47m \e[39;49m
+\e[43m \e[47m \e[39;49m
+\e[43m \e[47m \e[39;49m
+\e[43m \e[47m \e[39;49m
+\e[42m \e[47m \e[39;49m
+\e[42m \e[47m \e[39;49m
+\e[42m \e[47m \e[39;49m
+\e[42m \e[47m \e[39;49m
+\e[42m \e[47m \e[39;49m
+\e[42m \e[47m \e[39;49m
+\e[42m \e[47m \e[39;49m
+\e[42m \e[47m \e[39;49m
+\e[42m \e[47m \e[39;49m
+\e[42m \e[47m \e[39;49m
+\e[42m \e[47m \e[39;49m
+\e[42m \e[47m \e[39;49m
+\e[42m \e[47m \e[39;49m
+\e[42m \e[47m \e[39;49m
+\e[42m \e[47m \e[39;49m
+\e[42m \e[47m \e[39;49m
+\e[42m \e[47m \e[39;49m
+\e[42m \e[47m \e[39;49m
+\e[46m \e[47m \e[39;49m
+\e[46m \e[47m \e[39;49m
+\e[46m \e[47m \e[39;49m
+\e[46m \e[47m \e[39;49m
+\e[46m \e[47m \e[39;49m
+\e[46m \e[47m \e[39;49m
+\e[46m \e[47m \e[39;49m
+\e[46m \e[47m \e[39;49m
+\e[46m \e[47m \e[39;49m
+\e[46m \e[47m \e[39;49m
+\e[46m \e[47m \e[39;49m
+\e[46m \e[47m \e[39;49m
+\e[46m \e[47m \e[39;49m
+\e[46m \e[47m \e[39;49m
+\e[46m \e[47m \e[39;49m
+\e[46m \e[47m \e[39;49m
+\e[46m \e[47m \e[39;49m
+\e[46m \e[47m \e[39;49m
+\e[44m \e[47m \e[39;49m
+\e[44m \e[47m \e[39;49m
+\e[44m \e[47m \e[39;49m
+\e[44m \e[47m \e[39;49m
+\e[44m \e[47m \e[39;49m
+\e[44m \e[47m \e[39;49m
+\e[44m \e[47m \e[39;49m
+\e[44m \e[47m \e[39;49m
+\e[44m \e[47m \e[39;49m
+\e[44m \e[47m \e[39;49m
+\e[44m \e[47m \e[39;49m
+\e[44m \e[47m \e[39;49m
+\e[44m \e[47m \e[39;49m
+\e[44m \e[47m \e[39;49m
+\e[44m \e[47m \e[39;49m
+\e[44m \e[47m \e[39;49m
+\e[44m \e[47m \e[39;49m
+\e[44m \e[47m \e[39;49m
+\e[45m \e[47m \e[39;49m
+\e[45m \e[47m \e[39;49m
+\e[45m \e[47m \e[39;49m
+\e[45m \e[47m \e[39;49m
+\e[45m \e[47m \e[39;49m
+\e[45m \e[47m \e[39;49m
+\e[45m \e[47m \e[39;49m
+\e[45m \e[47m \e[39;49m
+\e[45m \e[47m \e[39;49m
+\e[45m \e[47m \e[39;49m
+\e[45m \e[47m \e[39;49m
+\e[45m \e[47m \e[39;49m
+\e[45m \e[47m \e[39;49m
+\e[45m \e[47m \e[39;49m
+\e[45m \e[47m \e[39;49m
+\e[45m \e[47m \e[39;49m
+\e[45m \e[47m \e[39;49m
+\e[45m \e[47m \e[39;49m
+\e[41m \e[47m \e[39;49m
+\e[41m \e[47m \e[39;49m
+\e[41m \e[47m \e[39;49m
+\e[41m \e[47m \e[39;49m
+\e[41m \e[47m \e[39;49m
+\e[41m \e[47m \e[39;49m
+\e[41m \e[47m \e[39;49m
+\e[41m \e[47m \e[39;49m
+\e[41m \e[47m \e[39;49m
+
+Weights:
+normal, \e[1mbold, \e[0mdefault
+
+Postures:
+normal, italic, default
+
+Text decorations:
+normal, \e[4munderlined, \e[24mdefault
+
--- /dev/null
+/* 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");
+
+ 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;
+}