Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/usr.bin/aiomixer aiomixer: use standout for headings, avoid ...
details: https://anonhg.NetBSD.org/src/rev/13f8794435eb
branches: trunk
changeset: 379058:13f8794435eb
user: nia <nia%NetBSD.org@localhost>
date: Fri May 07 17:47:30 2021 +0000
description:
aiomixer: use standout for headings, avoid banding in header
fixed a minor rendering problem when compiled against ncurses.
based mostly on feedback from uwe.
diffstat:
usr.bin/aiomixer/draw.c | 114 ++++++++++++++++++-----------------------------
1 files changed, 44 insertions(+), 70 deletions(-)
diffs (217 lines):
diff -r 03ed63de21c6 -r 13f8794435eb usr.bin/aiomixer/draw.c
--- a/usr.bin/aiomixer/draw.c Fri May 07 16:58:33 2021 +0000
+++ b/usr.bin/aiomixer/draw.c Fri May 07 17:47:30 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: draw.c,v 1.1 2021/05/07 16:29:24 nia Exp $ */
+/* $NetBSD: draw.c,v 1.2 2021/05/07 17:47:30 nia Exp $ */
/*-
* Copyright (c) 2021 The NetBSD Foundation, Inc.
* All rights reserved.
@@ -36,38 +36,12 @@
#include <stdlib.h>
#include "draw.h"
-static void bold_on(WINDOW *);
-static void bold_off(WINDOW *);
static int get_enum_color(const char *);
static void draw_enum(struct aiomixer_control *, int, bool);
static void draw_set(struct aiomixer_control *, int);
static void draw_levels(struct aiomixer_control *,
const struct mixer_level *, bool, bool);
-static void
-bold_on(WINDOW *w)
-{
- /*
- * Some (XXX: which?) legacy terminals do not support a Bold
- * attribute. In this case, we fall back to standout.
- */
- if (termattrs() & A_BOLD)
- wattron(w, A_BOLD);
- else
- wattron(w, A_STANDOUT);
-}
-
-static void
-bold_off(WINDOW *w)
-{
- chtype attrs = getattrs(w);
-
- if (attrs & A_BOLD)
- wattroff(w, A_BOLD);
- if (attrs & A_STANDOUT)
- wattroff(w, A_STANDOUT);
-}
-
void
draw_mixer_select(unsigned int num_mixers, unsigned int selected_mixer)
{
@@ -90,7 +64,7 @@ draw_mixer_select(unsigned int num_mixer
}
close(fd);
if (selected_mixer == i) {
- bold_on(stdscr);
+ attron(A_STANDOUT);
addstr("[*] ");
} else {
addstr("[ ] ");
@@ -98,7 +72,7 @@ draw_mixer_select(unsigned int num_mixer
printw("%s: %s %s %s\n", mixer_path,
dev.name, dev.version, dev.config);
if (selected_mixer == i)
- bold_off(stdscr);
+ attroff(A_STANDOUT);
}
}
@@ -117,21 +91,11 @@ draw_control(struct aiomixer *aio,
err(EXIT_FAILURE, "failed to read from mixer device");
wclear(control->widgetpad);
- if (selected) {
- bold_on(control->widgetpad);
- if (has_colors()) {
- wattron(control->widgetpad,
- COLOR_PAIR(COLOR_CONTROL_SELECTED));
- }
- waddch(control->widgetpad, '*');
- if (has_colors()) {
- wattroff(control->widgetpad,
- COLOR_PAIR(COLOR_CONTROL_SELECTED));
- }
- }
+ if (selected)
+ wattron(control->widgetpad, A_STANDOUT);
wprintw(control->widgetpad, "%s\n", control->info.label.name);
if (selected)
- bold_off(control->widgetpad);
+ wattroff(control->widgetpad, A_STANDOUT);
switch (value.type) {
case AUDIO_MIXER_ENUM:
@@ -193,8 +157,12 @@ draw_enum(struct aiomixer_control *contr
for (i = 0; i < control->info.un.e.num_mem; ++i) {
e = &control->info.un.e;
- if (ord == e->member[i].ord && selected)
- bold_on(control->widgetpad);
+ if (ord == e->member[i].ord && selected) {
+ if (termattrs() & A_BOLD)
+ wattron(control->widgetpad, A_BOLD);
+ else
+ wattron(control->widgetpad, A_STANDOUT);
+ }
waddch(control->widgetpad, '[');
if (ord == e->member[i].ord) {
if (has_colors()) {
@@ -213,8 +181,12 @@ draw_enum(struct aiomixer_control *contr
}
}
waddch(control->widgetpad, ']');
- if (ord == e->member[i].ord && selected)
- bold_off(control->widgetpad);
+ if (ord == e->member[i].ord && selected) {
+ if (termattrs() & A_BOLD)
+ wattroff(control->widgetpad, A_BOLD);
+ else
+ wattroff(control->widgetpad, A_STANDOUT);
+ }
if (i != (e->num_mem - 1))
waddstr(control->widgetpad, ", ");
}
@@ -243,13 +215,19 @@ draw_set(struct aiomixer_control *contro
}
waddstr(control->widgetpad, "] ");
if (control->setindex == i) {
- bold_on(control->widgetpad);
- waddch(control->widgetpad, '*');
+ if (termattrs() & A_BOLD)
+ wattron(control->widgetpad, A_BOLD);
+ else
+ wattron(control->widgetpad, A_STANDOUT);
}
wprintw(control->widgetpad, "%s",
control->info.un.s.member[i].label.name);
- if (control->setindex == i)
- bold_off(control->widgetpad);
+ if (control->setindex == i) {
+ if (termattrs() & A_BOLD)
+ wattroff(control->widgetpad, A_BOLD);
+ else
+ wattroff(control->widgetpad, A_STANDOUT);
+ }
if (i != (control->info.un.s.num_mem - 1))
waddstr(control->widgetpad, ", ");
}
@@ -265,7 +243,10 @@ draw_levels(struct aiomixer_control *con
for (i = 0; i < control->info.un.v.num_channels; ++i) {
if ((selected && !channels_unlocked) ||
(control->setindex == i && channels_unlocked)) {
- bold_on(control->widgetpad);
+ if (termattrs() & A_BOLD)
+ wattron(control->widgetpad, A_BOLD);
+ else
+ wattron(control->widgetpad, A_STANDOUT);
}
wprintw(control->widgetpad, "[%3u/%3u ",
levels->level[i], AUDIO_MAX_GAIN);
@@ -287,7 +268,10 @@ draw_levels(struct aiomixer_control *con
wprintw(control->widgetpad, "]\n");
if ((selected && !channels_unlocked) ||
(control->setindex == i && channels_unlocked)) {
- bold_off(control->widgetpad);
+ if (termattrs() & A_BOLD)
+ wattroff(control->widgetpad, A_BOLD);
+ else
+ wattroff(control->widgetpad, A_STANDOUT);
}
}
}
@@ -301,23 +285,12 @@ draw_classbar(struct aiomixer *aio)
for (i = 0; i < aio->numclasses; ++i) {
if (aio->curclass == i)
- bold_on(aio->classbar);
- wprintw(aio->classbar, "[%u:", i + 1);
- if (aio->curclass == i) {
- if (has_colors()) {
- wattron(aio->classbar,
- COLOR_PAIR(COLOR_CONTROL_SELECTED));
- }
- waddch(aio->classbar, '*');
- if (has_colors()) {
- wattroff(aio->classbar,
- COLOR_PAIR(COLOR_CONTROL_SELECTED));
- }
- }
- waddstr(aio->classbar, aio->classes[i].name);
+ wattron(aio->classbar, A_STANDOUT);
+ wprintw(aio->classbar, "[%u:%s]",
+ i + 1, aio->classes[i].name);
if (aio->curclass == i)
- bold_off(aio->classbar);
- waddstr(aio->classbar, "] ");
+ wattroff(aio->classbar, A_STANDOUT);
+ waddch(aio->classbar, ' ');
}
wprintw(aio->classbar, "\n\n");
@@ -326,15 +299,16 @@ draw_classbar(struct aiomixer *aio)
void
draw_header(struct aiomixer *aio)
{
+ wprintw(aio->header, "\n");
mvwaddstr(aio->header, 0,
getmaxx(aio->header) - (int)sizeof("NetBSD audio mixer") + 1,
"NetBSD audio mixer");
if (aio->mixerdev.version[0] != '\0') {
- wprintw(aio->header, "%s %s",
+ mvwprintw(aio->header, 0, 0, "%s %s",
aio->mixerdev.name, aio->mixerdev.version);
} else {
- wprintw(aio->header, "%s", aio->mixerdev.name);
+ mvwprintw(aio->header, 0, 0, "%s", aio->mixerdev.name);
}
}
Home |
Main Index |
Thread Index |
Old Index