summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/syscons/scterm-teken.c14
-rw-r--r--sys/teken/teken.c21
-rw-r--r--sys/teken/teken.h1
-rw-r--r--sys/teken/teken_demo.c2
4 files changed, 14 insertions, 24 deletions
diff --git a/sys/dev/syscons/scterm-teken.c b/sys/dev/syscons/scterm-teken.c
index 6f51ac1..133d622 100644
--- a/sys/dev/syscons/scterm-teken.c
+++ b/sys/dev/syscons/scterm-teken.c
@@ -300,12 +300,20 @@ static unsigned int
scteken_attr(const teken_attr_t *a)
{
unsigned int attr = 0;
+ teken_color_t fg, bg;
+ if (a->ta_format & TF_REVERSE) {
+ fg = a->ta_bgcolor;
+ bg = a->ta_fgcolor;
+ } else {
+ fg = a->ta_fgcolor;
+ bg = a->ta_bgcolor;
+ }
if (a->ta_format & TF_BOLD)
- attr |= fgcolors_bold[a->ta_fgcolor];
+ attr |= fgcolors_bold[fg];
else
- attr |= fgcolors_normal[a->ta_fgcolor];
- attr |= bgcolors[a->ta_bgcolor];
+ attr |= fgcolors_normal[fg];
+ attr |= bgcolors[bg];
#ifdef FG_UNDERLINE
if (a->ta_format & TF_UNDERLINE)
diff --git a/sys/teken/teken.c b/sys/teken/teken.c
index 5a16f8d..58f4f37 100644
--- a/sys/teken/teken.c
+++ b/sys/teken/teken.c
@@ -70,9 +70,6 @@ static FILE *df;
#define teken_scs_switch(t, g)
#endif /* TEKEN_XTERM && TEKEN_UTF8 */
-/* Private flags for teken_format_t. */
-#define TF_REVERSE 0x08
-
/* Private flags for t_stateflags. */
#define TS_FIRSTDIGIT 0x01 /* First numeric digit in escape sequence. */
#define TS_INSERT 0x02 /* Insert mode. */
@@ -114,19 +111,10 @@ static inline void
teken_funcs_putchar(teken_t *t, const teken_pos_t *p, teken_char_t c,
const teken_attr_t *a)
{
- teken_attr_t ta;
teken_assert(p->tp_row < t->t_winsize.tp_row);
teken_assert(p->tp_col < t->t_winsize.tp_col);
- /* Apply inversion. */
- if (a->ta_format & TF_REVERSE) {
- ta.ta_format = a->ta_format;
- ta.ta_fgcolor = a->ta_bgcolor;
- ta.ta_bgcolor = a->ta_fgcolor;
- a = &ta;
- }
-
t->t_funcs->tf_putchar(t->t_softc, p, c, a);
}
@@ -134,21 +122,12 @@ static inline void
teken_funcs_fill(teken_t *t, const teken_rect_t *r,
const teken_char_t c, const teken_attr_t *a)
{
- teken_attr_t ta;
teken_assert(r->tr_end.tp_row > r->tr_begin.tp_row);
teken_assert(r->tr_end.tp_row <= t->t_winsize.tp_row);
teken_assert(r->tr_end.tp_col > r->tr_begin.tp_col);
teken_assert(r->tr_end.tp_col <= t->t_winsize.tp_col);
- /* Apply inversion. */
- if (a->ta_format & TF_REVERSE) {
- ta.ta_format = a->ta_format;
- ta.ta_fgcolor = a->ta_bgcolor;
- ta.ta_bgcolor = a->ta_fgcolor;
- a = &ta;
- }
-
t->t_funcs->tf_fill(t->t_softc, r, c, a);
}
diff --git a/sys/teken/teken.h b/sys/teken/teken.h
index dd19e76..e1a2cad 100644
--- a/sys/teken/teken.h
+++ b/sys/teken/teken.h
@@ -54,6 +54,7 @@ typedef unsigned char teken_format_t;
#define TF_BOLD 0x01
#define TF_UNDERLINE 0x02
#define TF_BLINK 0x04
+#define TF_REVERSE 0x08
typedef unsigned char teken_color_t;
#define TC_BLACK 0
#define TC_RED 1
diff --git a/sys/teken/teken_demo.c b/sys/teken/teken_demo.c
index 02463a7..e68cca1 100644
--- a/sys/teken/teken_demo.c
+++ b/sys/teken/teken_demo.c
@@ -121,6 +121,8 @@ printchar(const teken_pos_t *p)
attr |= A_UNDERLINE;
if (px->a.ta_format & TF_BLINK)
attr |= A_BLINK;
+ if (px->a.ta_format & TF_REVERSE)
+ attr |= A_REVERSE;
bkgdset(attr | COLOR_PAIR(px->a.ta_fgcolor + 8 * px->a.ta_bgcolor));
mvaddstr(p->tp_row, p->tp_col, str);
OpenPOWER on IntegriCloud