use bitmap for bar
This commit is contained in:
parent
dda471aa34
commit
4227e38ad6
49
src/main.c
49
src/main.c
@ -152,7 +152,7 @@ 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) {
|
||||
void win_bar(WINDOW *lwin, int data, int data_max, int use_color, int digits) {
|
||||
int lwiny, lwinx;
|
||||
getmaxyx(lwin, lwiny, lwinx);
|
||||
|
||||
@ -178,17 +178,54 @@ void win_bar(WINDOW *lwin, int data, int data_max, int use_color) {
|
||||
}
|
||||
}
|
||||
|
||||
char buf[16];
|
||||
snprintf(buf, sizeof(buf), "%d W", data);
|
||||
mvwprintw(lwin, lwiny / 2 - 1, 3, "%s", buf);
|
||||
|
||||
if (use_color) {
|
||||
wattroff(lwin, COLOR_PAIR(3));
|
||||
wattroff(lwin, COLOR_PAIR(2));
|
||||
wattroff(lwin, COLOR_PAIR(1));
|
||||
}
|
||||
|
||||
if (use_color) {
|
||||
wattroff(lwin, COLOR_PAIR(0));
|
||||
}
|
||||
|
||||
char buf[16];
|
||||
int len;
|
||||
snprintf(buf , sizeof(buf), "%d", data);
|
||||
len = strlen(buf);
|
||||
|
||||
int bh = 5; // bitmap height
|
||||
int bw = 3; // bitmap width
|
||||
|
||||
int size = smaller_of((lwiny - 2) / bh, (lwinx - 2 - (digits - 1)) / (bw * digits));
|
||||
|
||||
int total_width = digits * (bw * size) + (digits - 1);
|
||||
int startx = (lwinx - total_width) / 3;
|
||||
int starty = (lwiny - bh * size) / 2;
|
||||
int offset = (bw * size + 1) * (digits - len);
|
||||
|
||||
for (int d = 0; d < len; d++) {
|
||||
int digit = buf[d] - '0';
|
||||
int dx = startx + d * (bw * size + 1) + offset;
|
||||
|
||||
for (int y = 0; y < bh; y++) {
|
||||
for (int x = 0; x < bw; x++) {
|
||||
if (digit_bitmaps[digit][y][x]) {
|
||||
for (int yy = 0; yy < size; yy++)
|
||||
for (int xx = 0; xx < size; xx++)
|
||||
mvwaddch(lwin,
|
||||
starty + y * size + yy,
|
||||
dx + x * size + xx,
|
||||
ACS_CKBOARD);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
wrefresh(lwin);
|
||||
|
||||
if (use_color) {
|
||||
wattroff(lwin, COLOR_PAIR(0));
|
||||
}
|
||||
}
|
||||
|
||||
void bar_mark(WINDOW *lwin) {
|
||||
@ -330,7 +367,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);
|
||||
win_bar(win[4], power, hpower, use_color, 4);
|
||||
win_float(win[5], eff, 5, use_color, color_high(eff, leff, heff));
|
||||
t100 = now;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user