From f4f540e53254a20f1bb3e51ca313ed9c7bf947d9 Mon Sep 17 00:00:00 2001 From: smayzy Date: Mon, 6 Apr 2026 13:22:31 +0200 Subject: [PATCH] convert win functions to take st --- src/main.c | 102 ++++++++++++++++++++++++++--------------------------- 1 file changed, 51 insertions(+), 51 deletions(-) diff --git a/src/main.c b/src/main.c index 9e63983..7d61477 100644 --- a/src/main.c +++ b/src/main.c @@ -80,26 +80,26 @@ int smaller_of(int a, int 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; char buf[16]; - getmaxyx(lwin, lwiny, lwinx); - snprintf(buf , sizeof(buf), "%d", data); + getmaxyx(st.lwin, lwiny, lwinx); + snprintf(buf , sizeof(buf), "%d", st.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 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 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++) { 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]) { for (int yy = 0; yy < size; yy++) for (int xx = 0; xx < size; xx++) - mvwaddch(lwin, + mvwaddch(st.lwin, starty + y * size + yy, dx + x * size + xx, 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; 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); int bh = 5; // bitmap height 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 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++) { 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 xx = 0; xx < size; xx++) mvwaddch( - lwin, + st.lwin, starty + (bh - 1) * size + yy, dx + xx, 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]) { for (int yy = 0; yy < size; yy++) for (int xx = 0; xx < size; xx++) - mvwaddch(lwin, + mvwaddch(st.lwin, starty + y * size + yy, dx + x * size + xx, 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; - getmaxyx(lwin, lwiny, lwinx); + getmaxyx(st.lwin, lwiny, lwinx); - win_clear(lwin); + win_clear(st.lwin); int bar_width = lwinx - 4; 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 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++) { if (use_color) { if (x < yellow) - wattron(lwin, COLOR_PAIR(3)); + wattron(st.lwin, COLOR_PAIR(3)); else if (x < red) - wattron(lwin, COLOR_PAIR(2)); + wattron(st.lwin, COLOR_PAIR(2)); 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) { - wattroff(lwin, COLOR_PAIR(3)); - wattroff(lwin, COLOR_PAIR(2)); - wattroff(lwin, COLOR_PAIR(1)); + wattroff(st.lwin, COLOR_PAIR(3)); + wattroff(st.lwin, COLOR_PAIR(2)); + wattroff(st.lwin, COLOR_PAIR(1)); } if (use_color) { - wattroff(lwin, COLOR_PAIR(0)); + wattroff(st.lwin, COLOR_PAIR(0)); } char buf[16]; int len; - snprintf(buf , sizeof(buf), "%d", data); + snprintf(buf , sizeof(buf), "%d", st.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 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 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++) { 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]) { for (int yy = 0; yy < size; yy++) for (int xx = 0; xx < size; xx++) - mvwaddch(lwin, + mvwaddch(st.lwin, starty + y * size + yy, dx + x * size + xx, 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) { - 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(); 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.rpm.lwin, tel.rpm.data, 4, 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_bar(tel.power.lwin, tel.power.data, tel.power.hdata, use_color, tel.power.digits); - win_float(tel.eff.lwin, tel.eff.data, 5, use_color, color_high(tel.eff.data, tel.eff.ldata, tel.eff.hdata)); + win_int(tel.speed, use_color, color_high(tel.speed.data, tel.speed.ldata, tel.speed.hdata)); + win_int(tel.rpm, use_color, color_high(tel.rpm.data, tel.rpm.ldata, tel.rpm.hdata)); + win_float(tel.tq, use_color, color_high(tel.tq.data, tel.tq.ldata, tel.tq.hdata)); + win_bar(tel.power, use_color); + win_float(tel.eff, use_color, color_high(tel.eff.data, tel.eff.ldata, tel.eff.hdata)); t100 = now; } 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_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.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.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_int(tel.bat, use_color, color_low(tel.bat.data, tel.bat.ldata, tel.bat.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, use_color, color_high(tel.var_temp.data, tel.var_temp.ldata, tel.var_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; } //win[9];