aboutsummaryrefslogtreecommitdiffstats
path: root/test-visual.c
diff options
context:
space:
mode:
authorMattias Andrée <maandree@kth.se>2022-07-25 12:35:05 +0200
committerMattias Andrée <maandree@kth.se>2022-07-25 12:35:05 +0200
commit41ae3f04fd22d22c552742458344591061822884 (patch)
tree00ef785370327ebf578efa49a38c430523c4924a /test-visual.c
parentAdd test-visual (diff)
downloadlibgamepad-41ae3f04fd22d22c552742458344591061822884.tar.gz
libgamepad-41ae3f04fd22d22c552742458344591061822884.tar.bz2
libgamepad-41ae3f04fd22d22c552742458344591061822884.tar.xz
m + add force feedback support
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'test-visual.c')
-rw-r--r--test-visual.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/test-visual.c b/test-visual.c
index 58ba20d..316299c 100644
--- a/test-visual.c
+++ b/test-visual.c
@@ -24,12 +24,21 @@ draw_axis(char buffer[], const struct abs_axis *axis, size_t len)
/* TODO axis->value can actually be out of bounds */
char value_buf[sizeof(intmax_t) * 3 + 2];
size_t width, x, value_len;
+#ifdef __GNUC__
+# pragma GCC diagnostic push
+# pragma GCC diagnostic ignored "-Wformat-overflow"
+#endif
sprintf(buffer, "%-*ji%ji", (int)(len - axis->max_len), axis->min, axis->max);
+#ifdef __GNUC__
+# pragma GCC diagnostic pop
+#endif
width = len - axis->max_len - axis->min_len;
value_len = (size_t)sprintf(value_buf, "%ji", axis->value);
x = axis->max_len + (width - value_len) / 2;
memcpy(&buffer[x], value_buf, value_len);
- x = ((axis->value - axis->min) * len + (axis->max - axis->min) / 2) / (axis->max - axis->min);
+ x = (size_t)(axis->value - axis->min) * len;
+ x += (size_t)(axis->max - axis->min) / 2;
+ x /= (size_t)(axis->max - axis->min);
memmove(&buffer[x + sizeof("\033[m") - 1], &buffer[x], len - x);
memcpy(&buffer[x], "\033[m", sizeof("\033[m") - 1);
return buffer;
@@ -129,13 +138,13 @@ main(int argc, char *argv[])
x = i % button_columns;
y = i / button_columns;
printf("\033[%zu;%zuH%s¿%s?\033[m", y + 1, x * (max_button_name_len + 3) + 1,
- libgamepad_get_button_is_pressed(&gamepad, (unsigned int)gamepad.buttons[i]) ? "\033[7m" : "\033[m",
+ libgamepad_get_button_is_pressed(&gamepad, gamepad.buttons[i]) ? "\033[7m" : "\033[m",
button_names[i]);
}
printf("\033[%zuH", button_rows + 1);
for (i = 0; i < gamepad.nabsolute_axes; i++) {
printf("\n%-*s ¿\033[7m%s?", (int)max_abs_axis_name_len,
- libgamepad_get_absolute_axis_name((unsigned int)gamepad.absolute_axes[i]),
+ libgamepad_get_absolute_axis_name(gamepad.absolute_axes[i]),
draw_axis(buffer, &abs_axes[i], axis_len));
}