add win_float
This commit is contained in:
parent
6b48126f7e
commit
c8003fde24
74
src/main.c
74
src/main.c
@ -23,7 +23,7 @@ void get_fake_data(int *speed, int *power, int *bat, float *tq, int *rpm, int *e
|
||||
*speed = rand() % 201;
|
||||
*power = rand() % 1251;
|
||||
*bat = rand() % 101;
|
||||
*tq = 1.8 + (float)rand() / 3.5f * 1.7f;
|
||||
*tq = 1.8f + ((float)rand() / (float)RAND_MAX) * (3.5f - 1.8f);
|
||||
*rpm = rand() % 6000;
|
||||
*eff = rand() % 100;
|
||||
*bat_temp = (float)rand() / (float)RAND_MAX * 150.0f;
|
||||
@ -50,7 +50,7 @@ int smaller_of(int a, int b) {
|
||||
return (a < b) ? a : b;
|
||||
}
|
||||
|
||||
void win_number(WINDOW *lwin, int data, int digits){
|
||||
void win_int(WINDOW *lwin, int data, int digits){
|
||||
int lwiny, lwinx, len;
|
||||
char buf[16];
|
||||
getmaxyx(lwin, lwiny, lwinx);
|
||||
@ -90,6 +90,62 @@ void win_number(WINDOW *lwin, int data, int digits){
|
||||
wrefresh(lwin);
|
||||
}
|
||||
|
||||
void win_float(WINDOW *lwin, float data, int digits)
|
||||
{
|
||||
int lwiny, lwinx, len;
|
||||
char buf[16];
|
||||
|
||||
getmaxyx(lwin, lwiny, lwinx);
|
||||
|
||||
snprintf(buf , sizeof(buf), "%.1f", 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) / 2;
|
||||
int starty = (lwiny - bh * size) / 2;
|
||||
int offset = (bw * size + 1) * (digits - len);
|
||||
|
||||
win_clear(lwin);
|
||||
|
||||
for (int d = 0; d < len; d++) {
|
||||
int dx = startx + d * (bw * size + 1) + offset;
|
||||
|
||||
if (buf[d] == '.') {
|
||||
for (int yy = 0; yy < size; yy++)
|
||||
for (int xx = 0; xx < size; xx++)
|
||||
mvwaddch(
|
||||
lwin,
|
||||
starty + (bh - 1) * size + yy,
|
||||
dx + xx,
|
||||
ACS_CKBOARD
|
||||
);
|
||||
continue;
|
||||
}
|
||||
|
||||
int digit = buf[d] - '0';
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int option;
|
||||
@ -180,18 +236,18 @@ int main(int argc, char **argv)
|
||||
long now = now_ms();
|
||||
|
||||
if (now - t100 >= 100 * delay) {
|
||||
win_number(win[0], speed, 3);
|
||||
win_number(win[1], power, 4);
|
||||
//win[3]
|
||||
win_int(win[0], speed, 3);
|
||||
win_int(win[1], power, 4);
|
||||
win_float(win[3], tq, 3);
|
||||
//win[4]
|
||||
//win[5]
|
||||
t100 = now;
|
||||
}
|
||||
if (now - t1000 >= 1000 * delay){
|
||||
win_number(win[2], bat, 3);
|
||||
//win[6]
|
||||
//win[7]
|
||||
//win[8]
|
||||
win_int(win[2], bat, 3);
|
||||
win_float(win[6], bat_temp, 5);
|
||||
win_float(win[7], var_temp, 5);
|
||||
win_float(win[8], mot_temp, 5);
|
||||
t1000 = now;
|
||||
}
|
||||
//win[9];
|
||||
|
||||
Loading…
Reference in New Issue
Block a user