From f6b1834fd0cae56a125c7ea65b6e5bf15d553dd3 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Fri, 21 Jul 2023 19:09:18 +0200 Subject: Add new UI for wave channel parameters --- src/drawing.c | 244 ++++++++++------------------------------------------------ 1 file changed, 41 insertions(+), 203 deletions(-) (limited to 'src/drawing.c') diff --git a/src/drawing.c b/src/drawing.c index f8cacb0..78021c0 100644 --- a/src/drawing.c +++ b/src/drawing.c @@ -638,86 +638,65 @@ 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 + 8; + size_t y = PARAMS_START_Y; // Wave Patterns. - draw_wave_pattern(wave_a, x, y + 1, COL_ACC_1); - draw_wave_pattern(wave_b, x + 70, y + 1, COL_ACC_2); - - // Wave text. - x -= 2; - 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 + 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]); - txt_drawf_small("%02x%02x%02x%02x", x + 34, y + 28, col_fg, - wave_a[12], wave_a[13], wave_a[14], wave_a[15]); - - x += 70; - 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 + 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]); - txt_drawf_small("%02x%02x%02x%02x", x + 34, y + 28, col_fg, - wave_b[12], wave_b[13], wave_b[14], wave_b[15]); + draw_wave_pattern(wave_a, x, y, COL_ACC_1); + draw_wave_pattern(wave_b, x + PARAMS_BOX_OFFSET_X * 2, y, COL_ACC_2); } - // Draw default wave buttons. + // TODO: Trig probability { - const u32 *tile = default_wave_buttons; - size_t x = PARAMS_START_X; - 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); - } - for (size_t i = 0, k = 0; i < 4 * 2; i += 2, k++) { - draw_icn(x + 70 + 17 * k , y, &tile[i * 2 + 0], col_fg, 1, 0); - draw_icn(x + 70 + 17 * k + 8, y, &tile[i * 2 + 2], col_fg, 1, 0); - } + size_t x = PARAMS_START_X + PARAMS_BOX_OFFSET_X * 4 + 3; + size_t y = PARAMS_START_Y + 5; + txt_drawf("100", x, y, col_fg); + txt_drawc('%', x + 18, y, col_fg); } // Mode selection. { - size_t x = PARAMS_START_X + 140; - 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); - draw_line(x + 30, y + 5, x + 30, y + 17, col_fg); - draw_line(x, y + 17, x + 30, y + 17, col_fg); - txt_drawf_small("mode", x + 6, y, col_fg); - + size_t x = PARAMS_START_X; + size_t y = PARAMS_START_Y + PARAMS_BOX_OFFSET_Y; switch (params->wave_mode) { - case 0: { txt_drawf("A", x + 12, y + 7, col_fg); } break; - case 1: { txt_drawf("B", x + 12, y + 7, col_fg); } break; - case 2: { txt_drawf("A+B", x + 6, y + 7, col_fg); } break; + case 0: { txt_drawf("A", x + 12, y + 5, col_fg); } break; + case 1: { txt_drawf("B", x + 12, y + 5, col_fg); } break; + case 2: { txt_drawf("A+B", x + 6, y + 5, col_fg); } break; } } // Wave volume. { - size_t x = PARAMS_START_X + 140; - 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); - draw_line(x + 30, y + 8, x + 30, y + 19, col_fg); - draw_line(x, y + 20, x + 30, y + 20, col_fg); - txt_drawf_small("vol", x + 8, y + 3, col_fg); - + size_t x = PARAMS_START_X + PARAMS_BOX_OFFSET_X; + size_t y = PARAMS_START_Y + PARAMS_BOX_OFFSET_Y; switch (params->wave_volume) { - case 0: { txt_drawf("0", x + 12, y + 10, col_fg); } break; - case 1: { txt_drawf("25", x + 9, y + 10, col_fg); } break; - case 2: { txt_drawf("50", x + 9, y + 10, col_fg); } break; - case 3: { txt_drawf("75", x + 9, y + 10, col_fg); } break; - case 4: { txt_drawf("100", x + 6, y + 10, col_fg); } break; + case 0: { txt_drawf("0", x + 12, y + 5, col_fg); } break; + case 1: { txt_drawf("25", x + 9, y + 5, col_fg); } break; + case 2: { txt_drawf("50", x + 9, y + 5, col_fg); } break; + case 3: { txt_drawf("75", x + 9, y + 5, col_fg); } break; + case 4: { txt_drawf("100", x + 6, y + 5, col_fg); } break; } } + + // Labels. + { + size_t x = PARAMS_START_X; + size_t y = PARAMS_START_Y; + txt_drawf_small("sin", x + 8 + PARAMS_BOX_OFFSET_X * 0, y + PARAMS_BOX_H - 7, col_fg); + txt_drawf_small("phase", x + 4 + PARAMS_BOX_OFFSET_X * 1, y + PARAMS_BOX_H - 7, col_fg); + txt_drawf_small("saw", x + 8 + PARAMS_BOX_OFFSET_X * 2, y + PARAMS_BOX_H - 7, col_fg); + txt_drawf_small("phase", x + 4 + PARAMS_BOX_OFFSET_X * 3, y + PARAMS_BOX_H - 7, col_fg); + txt_drawf_small("prob", x + 6 + PARAMS_BOX_OFFSET_X * 4, y + PARAMS_BOX_H - 7, col_fg); + y += PARAMS_BOX_OFFSET_Y; + txt_drawf_small("mode", x + 6 + PARAMS_BOX_OFFSET_X * 0, y + PARAMS_BOX_H - 7, col_fg); + txt_drawf_small("vol", x + 8 + PARAMS_BOX_OFFSET_X * 1, y + PARAMS_BOX_H - 7, col_fg); + } + + // Empty spacers. + { + draw_param_stub(7, COL_OFF); + draw_param_stub(8, COL_OFF); + draw_param_stub(9, COL_OFF); + } } void @@ -963,147 +942,6 @@ draw_parameters_noise(ChannelNoiseParams* params, bool global) { draw_param_stub(8, COL_OFF); draw_param_stub(9, COL_OFF); } - // size_t x_offset = 30; - // u8 col_fg = COL_FG; - // if (global && input_handler == handle_channel_selection) { - // col_fg = COL_OFF; - // } - - // // Bit mode. - // { - // // Param box. - // { - // size_t x = PARAMS_START_X + x_offset; - // size_t y = PARAMS_START_Y + PARAMS_H - 26; - // draw_line(x, y + 7, x + 2, y + 7, col_fg); - // draw_line(x + 22, y + 7, x + 24, y + 7, col_fg); - // draw_line(x, y + 8, x, y + 19, col_fg); - // draw_line(x + 24, y + 8, x + 24, y + 19, col_fg); - // draw_line(x, y + 20, x + 24, y + 20, col_fg); - // txt_drawf_small("mode", x + 3, y + 3, col_fg); - - // switch (params->bit_mode) { - // case 0: { txt_drawf("A", x + 9, y + 10, col_fg); } break; - // case 1: { txt_drawf("B", x + 9, y + 10, col_fg); } break; - // } - // } - // } - - // // Envelope. - // { - // // Env. drawing. - // { - // // Bounding box. - // { - // size_t x0 = PARAMS_START_X + 31 + x_offset; - // size_t y0 = PARAMS_START_Y + PARAMS_H - 46; - // size_t x1 = x0 + 79; - // size_t y1 = y0 + 21; - // draw_rect(x0, y0, x1, y1, COL_ACC_2); - // } - - // size_t x = PARAMS_START_X + 42 + x_offset; - // size_t y = PARAMS_START_Y + PARAMS_H - 43; - // size_t x0 = x; - // size_t y0 = y + 15 - params->env_volume; - // size_t x1 = x + 8 * params->env_time; - // size_t y1 = params->env_direction == 0 ? y + 15 : y; - // size_t x2 = x + 8 * 7 + 1; - // size_t y2 = y1; - - // // Env. - // if (params->env_time == 0) { - // draw_line(x1, y0, x2, y0, COL_ACC_2); - // } else { - // draw_line(x0, y0, x1, y1, COL_ACC_2); - // draw_line(x1, y1, x2, y2, COL_ACC_2); - // } - // } - - // // Env. volume. - // { - // size_t x = PARAMS_START_X + 31 + x_offset; - // size_t y = PARAMS_START_Y + PARAMS_H - 26; - // draw_line(x, y + 7, x + 4, y + 7, col_fg); - // draw_line(x + 20, y + 7, x + 24, y + 7, col_fg); - // draw_line(x, y + 8, x, y + 19, col_fg); - // draw_line(x + 24, y + 8, x + 24, y + 19, col_fg); - // draw_line(x, y + 20, x + 24, y + 20, col_fg); - // txt_drawf_small("vol", x + 5, y + 3, col_fg); - - // switch (params->env_volume) { - // case 0: { txt_drawf("0", x + 9, y + 10, col_fg); } break; - // case 1: { txt_drawf("6", x + 9, y + 10, col_fg); } break; - // case 2: { txt_drawf("13", x + 6, y + 10, col_fg); } break; - // case 3: { txt_drawf("20", x + 6, y + 10, col_fg); } break; - // case 4: { txt_drawf("26", x + 6, y + 10, col_fg); } break; - // case 5: { txt_drawf("33", x + 6, y + 10, col_fg); } break; - // case 6: { txt_drawf("40", x + 6, y + 10, col_fg); } break; - // case 7: { txt_drawf("46", x + 6, y + 10, col_fg); } break; - // case 8: { txt_drawf("53", x + 6, y + 10, col_fg); } break; - // case 9: { txt_drawf("60", x + 6, y + 10, col_fg); } break; - // case 10: { txt_drawf("66", x + 6, y + 10, col_fg); } break; - // case 11: { txt_drawf("73", x + 6, y + 10, col_fg); } break; - // case 12: { txt_drawf("80", x + 6, y + 10, col_fg); } break; - // case 13: { txt_drawf("86", x + 6, y + 10, col_fg); } break; - // case 14: { txt_drawf("93", x + 6, y + 10, col_fg); } break; - // case 15: { txt_drawf("100", x + 3, y + 10, col_fg); } break; - // } - // } - - // // Env. direction - // { - // size_t x = PARAMS_START_X + 59 + x_offset; - // size_t y = PARAMS_START_Y + PARAMS_H - 26; - // draw_line(x, y + 7, x + 4, y + 7, col_fg); - // draw_line(x + 20, y + 7, x + 24, y + 7, col_fg); - // draw_line(x, y + 8, x, y + 19, col_fg); - // draw_line(x + 24, y + 8, x + 24, y + 19, col_fg); - // draw_line(x, y + 20, x + 24, y + 20, col_fg); - // txt_drawf_small("dir", x + 5, y + 3, col_fg); - - // char arr_up[2] = { 0x19, 0 }; - // char arr_down[2] = { 0x18, 0 }; - // switch (params->env_direction) { - // case 0: { - // txt_drawf(arr_up, x + 9, y + 11, col_fg); - // } break; - // case 1: { - // txt_drawf(arr_down, x + 9, y + 11, col_fg); - // } break; - // } - // } - - // // Env. time. - // { - // size_t x = PARAMS_START_X + 87 + x_offset; - // size_t y = PARAMS_START_Y + PARAMS_H - 26; - // draw_line(x, y + 7, x + 2, y + 7, col_fg); - // draw_line(x + 22, y + 7, x + 24, y + 7, col_fg); - // draw_line(x, y + 8, x, y + 19, col_fg); - // draw_line(x + 24, y + 8, x + 24, y + 19, col_fg); - // draw_line(x, y + 20, x + 24, y + 20, col_fg); - // txt_drawf_small("time", x + 3, y + 3, col_fg); - - // switch (params->env_time) { - // case 0: { txt_drawf("0", x + 9, y + 10, col_fg); } break; - // case 1: { txt_drawf("14", x + 6, y + 10, col_fg); } break; - // case 2: { txt_drawf("28", x + 6, y + 10, col_fg); } break; - // case 3: { txt_drawf("42", x + 6, y + 10, col_fg); } break; - // case 4: { txt_drawf("57", x + 6, y + 10, col_fg); } break; - // case 5: { txt_drawf("71", x + 6, y + 10, col_fg); } break; - // case 6: { txt_drawf("85", x + 6, y + 10, col_fg); } break; - // case 7: { txt_drawf("100", x + 3, y + 10, col_fg); } break; - // } - // } - // } - - // // Labels. - // { - // size_t x = PARAMS_START_X + x_offset; - // size_t y = PARAMS_START_Y + PARAMS_H - 43; - // txt_drawf_small("envelope", x + 54, y - 12, col_fg); - // } } void -- cgit v1.2.1