Compare commits
2 Commits
8fa46b3fbc
...
dda471aa34
| Author | SHA1 | Date | |
|---|---|---|---|
| dda471aa34 | |||
| 7d20fca1ab |
42
src/main.c
42
src/main.c
@ -152,34 +152,57 @@ 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);
|
||||
}
|
||||
|
||||
void bar_mark(WINDOW *lwin) {
|
||||
int lwiny, lwinx;
|
||||
int first_mark, last_mark;
|
||||
getmaxyx(lwin, lwiny, lwinx);
|
||||
first_mark = (75 * (lwinx - 4)) / 100;
|
||||
last_mark = (90 * (lwinx - 4)) / 100;
|
||||
mvwaddch(lwin, 0, first_mark + 1, '|');
|
||||
mvwaddch(lwin, lwiny - 1, first_mark + 1, '|');
|
||||
mvwaddch(lwin, 0, last_mark + 1, '|');
|
||||
mvwaddch(lwin, lwiny - 1, last_mark + 1, '|');
|
||||
}
|
||||
|
||||
int color_high(float data, float ldata, float hdata) {
|
||||
int percent = (int)((100.0f * (data - ldata)) / (hdata - ldata) + 0.5f);
|
||||
if (percent >= 90) return 1;
|
||||
@ -275,6 +298,7 @@ int main(int argc, char **argv) {
|
||||
mvwprintw(win[i], 0, 2, "%s", win_infos[i].title);
|
||||
wrefresh(win[i]);
|
||||
}
|
||||
bar_mark(win[4]);
|
||||
|
||||
int speed = 0, power = 0, bat = 0, rpm = 0;
|
||||
float tq = 0.0f, eff = 0.0f, bat_temp = 0.0f, var_temp = 0.0f, mot_temp = 0.0f;
|
||||
@ -306,7 +330,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;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user