diff --git a/src/main.c b/src/main.c index f0e887d..03c0c6e 100644 --- a/src/main.c +++ b/src/main.c @@ -152,30 +152,41 @@ void win_float(WINDOW *lwin, float data, int digits, int use_color, int color) { wrefresh(lwin); } -void win_bar(WINDOW *lwin, int data, int data_max, int use_color, int color) { +void win_bar(WINDOW *lwin, int data, int data_max, int use_color) { int lwiny, lwinx; getmaxyx(lwin, lwiny, lwinx); win_clear(lwin); - if (use_color) wattron(lwin, COLOR_PAIR(color)); - int bar_width = lwinx - 4; int bar_height = lwiny - 2; int filled = (data * bar_width) / data_max; + int yellow = (75 * bar_width) / 100; + int red = (90 * bar_width) / 100; for (int y = 1; y <= bar_height; y++) { - for (int x = 0; x < bar_width; x++) { - if (x < filled) - mvwaddch(lwin, y, 2 + x, ACS_CKBOARD); + for (int x = 0; x < filled; x++) { + if (use_color) { + if (x < yellow) + wattron(lwin, COLOR_PAIR(3)); + else if (x < red) + wattron(lwin, COLOR_PAIR(2)); + else + wattron(lwin, COLOR_PAIR(1)); + } + mvwaddch(lwin, y, 2 + x, ACS_CKBOARD); } } char buf[16]; - snprintf(buf, sizeof(buf), "%d rpm", data); + snprintf(buf, sizeof(buf), "%d W", data); mvwprintw(lwin, lwiny / 2 - 1, 3, "%s", buf); - if (use_color) wattroff(lwin, COLOR_PAIR(color)); + if (use_color) { + wattroff(lwin, COLOR_PAIR(3)); + wattroff(lwin, COLOR_PAIR(2)); + wattroff(lwin, COLOR_PAIR(1)); + } wrefresh(lwin); } @@ -306,7 +317,7 @@ int main(int argc, char **argv) { win_int(win[0], speed, 3, use_color, color_high(speed, lspeed, hspeed)); win_int(win[1], rpm, 4, use_color, color_high(rpm, lrpm, hrpm)); win_float(win[3], tq, 3, use_color, color_high(tq, ltq, htq)); - win_bar(win[4], power, hpower, use_color, color_high(power, lpower, hpower)); + win_bar(win[4], power, hpower, use_color); win_float(win[5], eff, 5, use_color, color_high(eff, leff, heff)); t100 = now; }