From fcf71328ffc9452352dd74f2a241f3a3d0389daa Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Tue, 30 May 2023 09:03:01 +0200 Subject: Add cursor selection (thick line) --- src/drawing.c | 108 +++++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 81 insertions(+), 27 deletions(-) diff --git a/src/drawing.c b/src/drawing.c index 622b468..a867b12 100644 --- a/src/drawing.c +++ b/src/drawing.c @@ -36,7 +36,15 @@ draw_channel_cursor(size_t i, u8 clr) { size_t x0 = CHAN_START_X + offset_x; size_t x1 = CHAN_START_X + offset_x + CHAN_W; size_t y = CHAN_START_Y + offset_y; - draw_line(x0, y, x1, y, clr); + switch (settings.cursor) { + case CURSOR_THICK_LINE: { + draw_line(x0, y, x1, y, clr); + draw_line(x0, y + 1, x1, y + 1, clr); + } break; + default: { + draw_line(x0, y, x1, y, clr); + } break; + } } // @@ -83,7 +91,15 @@ draw_trig_cursor(size_t i, u8 clr) { size_t x0 = TRIG_START_X + offset_x; size_t x1 = TRIG_START_X + TRIG_W + offset_x; size_t y = TRIG_START_Y + TRIG_H + offset_y; - draw_line(x0, y, x1, y, clr); + switch (settings.cursor) { + case CURSOR_THICK_LINE: { + draw_line(x0, y, x1, y, clr); + draw_line(x0, y + 1, x1, y + 1, clr); + } break; + default: { + draw_line(x0, y, x1, y, clr); + } break; + } } void @@ -128,17 +144,23 @@ draw_right_col_cursor(int i, u8 clr) { y = BANK_START_Y + PAT_H + 2 + 3 * PAT_OFFSET_Y; } break; } - draw_line(x0, y, x1, y, clr); + switch (settings.cursor) { + case CURSOR_THICK_LINE: { + draw_line(x0, y, x1, y, clr); + draw_line(x0, y + 1, x1, y + 1, clr); + } break; + default: { draw_line(x0, y, x1, y, clr); } break; + } } void -draw_current_step(u8 step, u8 col) { +draw_current_step(u8 step, u8 clr) { size_t offset_x = TRIG_OFFSET_X * (step % 8); size_t offset_y = step < 8 ? 2 : 2 + TRIG_OFFSET_Y; size_t x0 = TRIG_START_X + 3 + offset_x; size_t x1 = TRIG_START_X - 3 + TRIG_W + offset_x; - size_t y = TRIG_START_Y - 4 + TRIG_H + offset_y; - draw_line(x0, y, x1, y, col); + size_t y = TRIG_START_Y - 5 + TRIG_H + offset_y; + draw_line(x0, y, x1, y, clr); } void @@ -195,7 +217,15 @@ draw_pattern_cursor(size_t i, u8 clr) { size_t x0 = PAT_START_X + offset_x; size_t x1 = PAT_START_X + offset_x + PAT_W; size_t y = PAT_START_Y + offset_y; - draw_line(x0, y, x1, y, clr); + switch (settings.cursor) { + case CURSOR_THICK_LINE: { + draw_line(x0, y, x1, y, clr); + draw_line(x0, y + 1, x1, y + 1, clr); + } break; + default: { + draw_line(x0, y, x1, y, clr); + } break; + } } void @@ -411,21 +441,21 @@ draw_params_cursor_wave(size_t i, u8 clr) { // 32 half bytes (Wave A) 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, // 32 half bytes (Wave B) 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, // Default wave A. - 20, 20, 20, 20, + 21, 21, 21, 21, // Default wave B. - 20, 20, 20, 20, + 21, 21, 21, 21, // Mode selection. - 20, + 21, // Volume selection. - 0, + 1, }; size_t cursor_length = 0; if (i < 64) { @@ -436,8 +466,16 @@ draw_params_cursor_wave(size_t i, u8 clr) { cursor_length = 30; } size_t x = PARAMS_START_X + x_positions[i] - 1; - size_t y = PARAMS_START_Y + PARAMS_H - 23 + y_positions[i]; - draw_line(x, y, x + cursor_length, y, clr); + size_t y = PARAMS_START_Y + PARAMS_H - 25 + y_positions[i]; + switch (settings.cursor) { + case CURSOR_THICK_LINE: { + draw_line(x, y, x + cursor_length, y, clr); + draw_line(x, y + 1, x + cursor_length, y + 1, clr); + } break; + default: { + draw_line(x, y, x + cursor_length, y, clr); + } break; + } } void @@ -457,7 +495,15 @@ draw_params_cursor_noise(size_t i, u8 clr) { size_t cursor_length = 24; size_t x = PARAMS_START_X + x_positions[i] + 30; size_t y = PARAMS_START_Y + PARAMS_H - 23 + y_positions[i]; - draw_line(x, y, x + cursor_length, y, clr); + switch (settings.cursor) { + case CURSOR_THICK_LINE: { + draw_line(x, y, x + cursor_length, y, clr); + draw_line(x, y + 1, x + cursor_length, y + 1, clr); + } break; + default: { + draw_line(x, y, x + cursor_length, y, clr); + } break; + } } void @@ -484,7 +530,15 @@ draw_params_cursor_square(size_t i, u8 clr, bool sweep) { size_t cursor_length = 24; size_t x = PARAMS_START_X + x_positions[i] + x_offset; size_t y = PARAMS_START_Y + PARAMS_H - 23 + y_positions[i]; - draw_line(x, y, x + cursor_length, y, clr); + switch (settings.cursor) { + case CURSOR_THICK_LINE: { + draw_line(x, y, x + cursor_length, y, clr); + draw_line(x, y + 1, x + cursor_length, y + 1, clr); + } break; + default: { + draw_line(x, y, x + cursor_length, y, clr); + } break; + } } void @@ -537,7 +591,7 @@ draw_parameters_wave(ChannelWaveParams *params, bool global) { u8 *wave_b = params->wave_b; size_t x = PARAMS_START_X; - size_t y = PARAMS_START_Y + 13; + size_t y = PARAMS_START_Y + 12; // Wave Patterns. draw_wave_pattern(wave_a, x, y, COL_ACC_1); @@ -545,9 +599,9 @@ draw_parameters_wave(ChannelWaveParams *params, bool global) { // Wave text. x -= 2; - txt_drawf_small("%02x%02x%02x%02x", x, y + 20, col_fg, + txt_drawf_small("%02x%02x%02x%02x", x, y + 19, col_fg, wave_a[0], wave_a[1], wave_a[2], wave_a[3]); - txt_drawf_small("%02x%02x%02x%02x", x + 34, y + 20, col_fg, + txt_drawf_small("%02x%02x%02x%02x", x + 34, y + 19, col_fg, wave_a[4], wave_a[5], wave_a[6], wave_a[7]); txt_drawf_small("%02x%02x%02x%02x", x, y + 28, col_fg, wave_a[8], wave_a[9], wave_a[10], wave_a[11]); @@ -555,9 +609,9 @@ draw_parameters_wave(ChannelWaveParams *params, bool global) { wave_a[12], wave_a[13], wave_a[14], wave_a[15]); x += 70; - txt_drawf_small("%02x%02x%02x%02x", x, y + 20, col_fg, + txt_drawf_small("%02x%02x%02x%02x", x, y + 19, col_fg, wave_b[0], wave_b[1], wave_b[2], wave_b[3]); - txt_drawf_small("%02x%02x%02x%02x", x + 34, y + 20, col_fg, + txt_drawf_small("%02x%02x%02x%02x", x + 34, y + 19, col_fg, wave_b[4], wave_b[5], wave_b[6], wave_b[7]); txt_drawf_small("%02x%02x%02x%02x", x, y + 28, col_fg, wave_b[8], wave_b[9], wave_b[10], wave_b[11]); @@ -569,7 +623,7 @@ draw_parameters_wave(ChannelWaveParams *params, bool global) { { const u32 *tile = default_wave_buttons; size_t x = PARAMS_START_X; - size_t y = PARAMS_START_Y + PARAMS_H - 12; + size_t y = PARAMS_START_Y + PARAMS_H - 13; for (size_t i = 0, k = 0; i < 4 * 2; i += 2, k++) { draw_icn(x + 17 * k , y, &tile[i * 2 + 0], col_fg, 1, 0); draw_icn(x + 17 * k + 8, y, &tile[i * 2 + 2], col_fg, 1, 0); @@ -583,7 +637,7 @@ draw_parameters_wave(ChannelWaveParams *params, bool global) { // Mode selection. { size_t x = PARAMS_START_X + 140; - size_t y = PARAMS_START_Y + PARAMS_H - 22; + size_t y = PARAMS_START_Y + PARAMS_H - 23; draw_line(x, y + 4, x + 5, y + 4, col_fg); draw_line(x + 25, y + 4, x + 30, y + 4, col_fg); draw_line(x, y + 5, x, y + 16, col_fg); @@ -601,7 +655,7 @@ draw_parameters_wave(ChannelWaveParams *params, bool global) { // Wave volume. { size_t x = PARAMS_START_X + 140; - size_t y = PARAMS_START_Y + PARAMS_H - 45; + size_t y = PARAMS_START_Y + PARAMS_H - 46; draw_line(x, y + 7, x + 7, y + 7, col_fg); draw_line(x + 23, y + 7, x + 30, y + 7, col_fg); draw_line(x, y + 8, x, y + 19, col_fg); -- cgit v1.2.1