convert win functions to take st
This commit is contained in:
parent
b562f573b6
commit
f4f540e532
102
src/main.c
102
src/main.c
@ -80,26 +80,26 @@ int smaller_of(int a, int b) {
|
|||||||
return (a < b) ? a : b;
|
return (a < b) ? a : b;
|
||||||
}
|
}
|
||||||
|
|
||||||
void win_int(WINDOW *lwin, int data, int digits, int use_color, int color) {
|
void win_int(StInt st, int use_color, int color) {
|
||||||
int lwiny, lwinx, len;
|
int lwiny, lwinx, len;
|
||||||
char buf[16];
|
char buf[16];
|
||||||
getmaxyx(lwin, lwiny, lwinx);
|
getmaxyx(st.lwin, lwiny, lwinx);
|
||||||
snprintf(buf , sizeof(buf), "%d", data);
|
snprintf(buf , sizeof(buf), "%d", st.data);
|
||||||
len = strlen(buf);
|
len = strlen(buf);
|
||||||
|
|
||||||
int bh = 5; // bitmap height
|
int bh = 5; // bitmap height
|
||||||
int bw = 3; // bitmap width
|
int bw = 3; // bitmap width
|
||||||
|
|
||||||
int size = smaller_of((lwiny - 2) / bh, (lwinx - 2 - (digits - 1)) / (bw * digits));
|
int size = smaller_of((lwiny - 2) / bh, (lwinx - 2 - (st.digits - 1)) / (bw * st.digits));
|
||||||
|
|
||||||
int total_width = digits * (bw * size) + (digits - 1);
|
int total_width = st.digits * (bw * size) + (st.digits - 1);
|
||||||
int startx = (lwinx - total_width) / 2;
|
int startx = (lwinx - total_width) / 2;
|
||||||
int starty = (lwiny - bh * size) / 2;
|
int starty = (lwiny - bh * size) / 2;
|
||||||
int offset = (bw * size + 1) * (digits - len);
|
int offset = (bw * size + 1) * (st.digits - len);
|
||||||
|
|
||||||
win_clear(lwin);
|
win_clear(st.lwin);
|
||||||
|
|
||||||
if (use_color) wattron(lwin, COLOR_PAIR(color));
|
if (use_color) wattron(st.lwin, COLOR_PAIR(color));
|
||||||
|
|
||||||
for (int d = 0; d < len; d++) {
|
for (int d = 0; d < len; d++) {
|
||||||
int digit = buf[d] - '0';
|
int digit = buf[d] - '0';
|
||||||
@ -110,7 +110,7 @@ void win_int(WINDOW *lwin, int data, int digits, int use_color, int color) {
|
|||||||
if (digit_bitmaps[digit][y][x]) {
|
if (digit_bitmaps[digit][y][x]) {
|
||||||
for (int yy = 0; yy < size; yy++)
|
for (int yy = 0; yy < size; yy++)
|
||||||
for (int xx = 0; xx < size; xx++)
|
for (int xx = 0; xx < size; xx++)
|
||||||
mvwaddch(lwin,
|
mvwaddch(st.lwin,
|
||||||
starty + y * size + yy,
|
starty + y * size + yy,
|
||||||
dx + x * size + xx,
|
dx + x * size + xx,
|
||||||
ACS_CKBOARD);
|
ACS_CKBOARD);
|
||||||
@ -119,33 +119,33 @@ void win_int(WINDOW *lwin, int data, int digits, int use_color, int color) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (use_color) wattroff(lwin, COLOR_PAIR(color));
|
if (use_color) wattroff(st.lwin, COLOR_PAIR(color));
|
||||||
|
|
||||||
wrefresh(lwin);
|
wrefresh(st.lwin);
|
||||||
}
|
}
|
||||||
|
|
||||||
void win_float(WINDOW *lwin, float data, int digits, int use_color, int color) {
|
void win_float(StFlt st, int use_color, int color) {
|
||||||
int lwiny, lwinx, len;
|
int lwiny, lwinx, len;
|
||||||
char buf[16];
|
char buf[16];
|
||||||
|
|
||||||
getmaxyx(lwin, lwiny, lwinx);
|
getmaxyx(st.lwin, lwiny, lwinx);
|
||||||
|
|
||||||
snprintf(buf , sizeof(buf), "%.1f", data);
|
snprintf(buf , sizeof(buf), "%.1f", st.data);
|
||||||
len = strlen(buf);
|
len = strlen(buf);
|
||||||
|
|
||||||
int bh = 5; // bitmap height
|
int bh = 5; // bitmap height
|
||||||
int bw = 3; // bitmap width
|
int bw = 3; // bitmap width
|
||||||
|
|
||||||
int size = smaller_of((lwiny - 2) / bh, (lwinx - 2 - (digits - 1)) / (bw * digits));
|
int size = smaller_of((lwiny - 2) / bh, (lwinx - 2 - (st.digits - 1)) / (bw * st.digits));
|
||||||
|
|
||||||
int total_width = digits * (bw * size) + (digits - 1);
|
int total_width = st.digits * (bw * size) + (st.digits - 1);
|
||||||
int startx = (lwinx - total_width) / 2;
|
int startx = (lwinx - total_width) / 2;
|
||||||
int starty = (lwiny - bh * size) / 2;
|
int starty = (lwiny - bh * size) / 2;
|
||||||
int offset = (bw * size + 1) * (digits - len);
|
int offset = (bw * size + 1) * (st.digits - len);
|
||||||
|
|
||||||
win_clear(lwin);
|
win_clear(st.lwin);
|
||||||
|
|
||||||
if (use_color) wattron(lwin, COLOR_PAIR(color));
|
if (use_color) wattron(st.lwin, COLOR_PAIR(color));
|
||||||
|
|
||||||
for (int d = 0; d < len; d++) {
|
for (int d = 0; d < len; d++) {
|
||||||
int dx = startx + d * (bw * size + 1) + offset;
|
int dx = startx + d * (bw * size + 1) + offset;
|
||||||
@ -154,7 +154,7 @@ void win_float(WINDOW *lwin, float data, int digits, int use_color, int color) {
|
|||||||
for (int yy = 0; yy < size; yy++)
|
for (int yy = 0; yy < size; yy++)
|
||||||
for (int xx = 0; xx < size; xx++)
|
for (int xx = 0; xx < size; xx++)
|
||||||
mvwaddch(
|
mvwaddch(
|
||||||
lwin,
|
st.lwin,
|
||||||
starty + (bh - 1) * size + yy,
|
starty + (bh - 1) * size + yy,
|
||||||
dx + xx,
|
dx + xx,
|
||||||
ACS_CKBOARD
|
ACS_CKBOARD
|
||||||
@ -169,7 +169,7 @@ void win_float(WINDOW *lwin, float data, int digits, int use_color, int color) {
|
|||||||
if (digit_bitmaps[digit][y][x]) {
|
if (digit_bitmaps[digit][y][x]) {
|
||||||
for (int yy = 0; yy < size; yy++)
|
for (int yy = 0; yy < size; yy++)
|
||||||
for (int xx = 0; xx < size; xx++)
|
for (int xx = 0; xx < size; xx++)
|
||||||
mvwaddch(lwin,
|
mvwaddch(st.lwin,
|
||||||
starty + y * size + yy,
|
starty + y * size + yy,
|
||||||
dx + x * size + xx,
|
dx + x * size + xx,
|
||||||
ACS_CKBOARD);
|
ACS_CKBOARD);
|
||||||
@ -178,20 +178,20 @@ void win_float(WINDOW *lwin, float data, int digits, int use_color, int color) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (use_color) wattroff(lwin, COLOR_PAIR(color));
|
if (use_color) wattroff(st.lwin, COLOR_PAIR(color));
|
||||||
|
|
||||||
wrefresh(lwin);
|
wrefresh(st.lwin);
|
||||||
}
|
}
|
||||||
|
|
||||||
void win_bar(WINDOW *lwin, int data, int data_max, int use_color, int digits) {
|
void win_bar(StInt st, int use_color) {
|
||||||
int lwiny, lwinx;
|
int lwiny, lwinx;
|
||||||
getmaxyx(lwin, lwiny, lwinx);
|
getmaxyx(st.lwin, lwiny, lwinx);
|
||||||
|
|
||||||
win_clear(lwin);
|
win_clear(st.lwin);
|
||||||
|
|
||||||
int bar_width = lwinx - 4;
|
int bar_width = lwinx - 4;
|
||||||
int bar_height = lwiny - 2;
|
int bar_height = lwiny - 2;
|
||||||
int filled = (data * bar_width) / data_max;
|
int filled = (st.data * bar_width) / st.hdata;
|
||||||
int yellow = (75 * bar_width) / 100;
|
int yellow = (75 * bar_width) / 100;
|
||||||
int red = (90 * bar_width) / 100;
|
int red = (90 * bar_width) / 100;
|
||||||
|
|
||||||
@ -199,40 +199,40 @@ void win_bar(WINDOW *lwin, int data, int data_max, int use_color, int digits) {
|
|||||||
for (int x = 0; x < filled; x++) {
|
for (int x = 0; x < filled; x++) {
|
||||||
if (use_color) {
|
if (use_color) {
|
||||||
if (x < yellow)
|
if (x < yellow)
|
||||||
wattron(lwin, COLOR_PAIR(3));
|
wattron(st.lwin, COLOR_PAIR(3));
|
||||||
else if (x < red)
|
else if (x < red)
|
||||||
wattron(lwin, COLOR_PAIR(2));
|
wattron(st.lwin, COLOR_PAIR(2));
|
||||||
else
|
else
|
||||||
wattron(lwin, COLOR_PAIR(1));
|
wattron(st.lwin, COLOR_PAIR(1));
|
||||||
}
|
}
|
||||||
mvwaddch(lwin, y, 2 + x, ACS_CKBOARD);
|
mvwaddch(st.lwin, y, 2 + x, ACS_CKBOARD);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (use_color) {
|
if (use_color) {
|
||||||
wattroff(lwin, COLOR_PAIR(3));
|
wattroff(st.lwin, COLOR_PAIR(3));
|
||||||
wattroff(lwin, COLOR_PAIR(2));
|
wattroff(st.lwin, COLOR_PAIR(2));
|
||||||
wattroff(lwin, COLOR_PAIR(1));
|
wattroff(st.lwin, COLOR_PAIR(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (use_color) {
|
if (use_color) {
|
||||||
wattroff(lwin, COLOR_PAIR(0));
|
wattroff(st.lwin, COLOR_PAIR(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
char buf[16];
|
char buf[16];
|
||||||
int len;
|
int len;
|
||||||
snprintf(buf , sizeof(buf), "%d", data);
|
snprintf(buf , sizeof(buf), "%d", st.data);
|
||||||
len = strlen(buf);
|
len = strlen(buf);
|
||||||
|
|
||||||
int bh = 5; // bitmap height
|
int bh = 5; // bitmap height
|
||||||
int bw = 3; // bitmap width
|
int bw = 3; // bitmap width
|
||||||
|
|
||||||
int size = smaller_of((lwiny - 2) / bh, (lwinx - 2 - (digits - 1)) / (bw * digits));
|
int size = smaller_of((lwiny - 2) / bh, (lwinx - 2 - (st.digits - 1)) / (bw * st.digits));
|
||||||
|
|
||||||
int total_width = digits * (bw * size) + (digits - 1);
|
int total_width = st.digits * (bw * size) + (st.digits - 1);
|
||||||
int startx = (lwinx - total_width) / 3;
|
int startx = (lwinx - total_width) / 3;
|
||||||
int starty = (lwiny - bh * size) / 2;
|
int starty = (lwiny - bh * size) / 2;
|
||||||
int offset = (bw * size + 1) * (digits - len);
|
int offset = (bw * size + 1) * (st.digits - len);
|
||||||
|
|
||||||
for (int d = 0; d < len; d++) {
|
for (int d = 0; d < len; d++) {
|
||||||
int digit = buf[d] - '0';
|
int digit = buf[d] - '0';
|
||||||
@ -243,7 +243,7 @@ void win_bar(WINDOW *lwin, int data, int data_max, int use_color, int digits) {
|
|||||||
if (digit_bitmaps[digit][y][x]) {
|
if (digit_bitmaps[digit][y][x]) {
|
||||||
for (int yy = 0; yy < size; yy++)
|
for (int yy = 0; yy < size; yy++)
|
||||||
for (int xx = 0; xx < size; xx++)
|
for (int xx = 0; xx < size; xx++)
|
||||||
mvwaddch(lwin,
|
mvwaddch(st.lwin,
|
||||||
starty + y * size + yy,
|
starty + y * size + yy,
|
||||||
dx + x * size + xx,
|
dx + x * size + xx,
|
||||||
ACS_CKBOARD);
|
ACS_CKBOARD);
|
||||||
@ -252,10 +252,10 @@ void win_bar(WINDOW *lwin, int data, int data_max, int use_color, int digits) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
wrefresh(lwin);
|
wrefresh(st.lwin);
|
||||||
|
|
||||||
if (use_color) {
|
if (use_color) {
|
||||||
wattroff(lwin, COLOR_PAIR(0));
|
wattroff(st.lwin, COLOR_PAIR(0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -413,18 +413,18 @@ int main(int argc, char **argv) {
|
|||||||
}
|
}
|
||||||
long now = now_ms();
|
long now = now_ms();
|
||||||
if (now - t100 >= 100 * delay) {
|
if (now - t100 >= 100 * delay) {
|
||||||
win_int(tel.speed.lwin, tel.speed.data, 3, use_color, color_high(tel.speed.data, tel.speed.ldata, tel.speed.hdata));
|
win_int(tel.speed, use_color, color_high(tel.speed.data, tel.speed.ldata, tel.speed.hdata));
|
||||||
win_int(tel.rpm.lwin, tel.rpm.data, 4, use_color, color_high(tel.rpm.data, tel.rpm.ldata, tel.rpm.hdata));
|
win_int(tel.rpm, use_color, color_high(tel.rpm.data, tel.rpm.ldata, tel.rpm.hdata));
|
||||||
win_float(tel.tq.lwin, tel.tq.data, 3, use_color, color_high(tel.tq.data, tel.tq.ldata, tel.tq.hdata));
|
win_float(tel.tq, use_color, color_high(tel.tq.data, tel.tq.ldata, tel.tq.hdata));
|
||||||
win_bar(tel.power.lwin, tel.power.data, tel.power.hdata, use_color, tel.power.digits);
|
win_bar(tel.power, use_color);
|
||||||
win_float(tel.eff.lwin, tel.eff.data, 5, use_color, color_high(tel.eff.data, tel.eff.ldata, tel.eff.hdata));
|
win_float(tel.eff, use_color, color_high(tel.eff.data, tel.eff.ldata, tel.eff.hdata));
|
||||||
t100 = now;
|
t100 = now;
|
||||||
}
|
}
|
||||||
if (now - t1000 >= 1000 * delay) {
|
if (now - t1000 >= 1000 * delay) {
|
||||||
win_int(tel.bat.lwin, tel.bat.data, 3, use_color, color_low(tel.bat.data, tel.bat.ldata, tel.bat.hdata));
|
win_int(tel.bat, use_color, color_low(tel.bat.data, tel.bat.ldata, tel.bat.hdata));
|
||||||
win_float(tel.bat_temp.lwin, tel.bat_temp.data, 5, use_color, color_high(tel.bat_temp.data, tel.bat_temp.ldata, tel.bat_temp.hdata));
|
win_float(tel.bat_temp, use_color, color_high(tel.bat_temp.data, tel.bat_temp.ldata, tel.bat_temp.hdata));
|
||||||
win_float(tel.var_temp.lwin, tel.var_temp.data, 5, use_color, color_high(tel.var_temp.data, tel.var_temp.ldata, tel.var_temp.hdata));
|
win_float(tel.var_temp, use_color, color_high(tel.var_temp.data, tel.var_temp.ldata, tel.var_temp.hdata));
|
||||||
win_float(tel.mot_temp.lwin, tel.mot_temp.data, 5, use_color, color_high(tel.mot_temp.data, tel.mot_temp.ldata, tel.mot_temp.hdata));
|
win_float(tel.mot_temp, use_color, color_high(tel.mot_temp.data, tel.mot_temp.ldata, tel.mot_temp.hdata));
|
||||||
t1000 = now;
|
t1000 = now;
|
||||||
}
|
}
|
||||||
//win[9];
|
//win[9];
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user