From 74b874af0ea646ef6915f15114ed3065b5b88a20 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Fri, 2 Feb 2024 10:13:47 +0100 Subject: Add envelope drawing instead of numbers --- src/drawing.c | 51 +++++++++++++++++++++++++++------------------------ 1 file changed, 27 insertions(+), 24 deletions(-) (limited to 'src/drawing.c') diff --git a/src/drawing.c b/src/drawing.c index cfe0321..fa20467 100644 --- a/src/drawing.c +++ b/src/drawing.c @@ -980,8 +980,15 @@ draw_parameters_wave(ChannelWaveParams *params, bool global) { size_t y = PARAMS_START_Y; // Wave Patterns. - u8 col_wave_a = cols[0] != COL_OFF && cols[1] != COL_OFF && (params->wave_mode == 0 || params->wave_mode == 2) ? COL_ACC_1 : COL_OFF; - u8 col_wave_b = cols[2] != COL_OFF && cols[3] != COL_OFF && (params->wave_mode == 1 || params->wave_mode == 2) ? COL_ACC_2 : COL_OFF; + u8 col_wave_a = COL_OFF; + u8 col_wave_b = COL_OFF; + if (params->wave_mode == 2) { + col_wave_a = cols[0] != COL_OFF && cols[1] != COL_OFF ? COL_ACC_1 : COL_OFF; + col_wave_b = cols[2] != COL_OFF && cols[3] != COL_OFF ? COL_ACC_2 : COL_OFF; + } else { + col_wave_a = cols[0] != COL_OFF && cols[1] != COL_OFF && (params->wave_mode == 0) ? COL_ACC_1 : COL_OFF; + col_wave_b = cols[2] != COL_OFF && cols[3] != COL_OFF && (params->wave_mode == 1) ? COL_ACC_1 : COL_OFF; + } draw_wave_pattern(waves[params->shape_a][params->type_a], x, y, col_wave_a); draw_wave_pattern(waves[params->shape_b][params->type_b], x + PARAMS_BOX_OFFSET_X * 2, y, col_wave_b); } @@ -1031,35 +1038,31 @@ draw_parameters_wave(ChannelWaveParams *params, bool global) { } } - // Attack. + // Envelope. { if (params->wave_mode == 2) { cols[7] = COL_OFF; - } - size_t x = PARAMS_START_X + PARAMS_BOX_OFFSET_X * 2 + 3; - size_t y = PARAMS_START_Y + PARAMS_BOX_OFFSET_Y + 5; - if (params->wave_attack == 0) { - txt_drawf("OFF", x + 3, y, cols[7]); - } else if (params->wave_attack < 10) { - txt_drawf("%d", x + 8, y, cols[7], params->wave_attack); - } else { - txt_drawf("%d", x + 6, y, cols[7], params->wave_attack); - } - } - - // Decay. - { - if (params->wave_mode == 2) { cols[8] = COL_OFF; } - size_t x = PARAMS_START_X + PARAMS_BOX_OFFSET_X * 3 + 3; - size_t y = PARAMS_START_Y + PARAMS_BOX_OFFSET_Y + 5; + size_t x = PARAMS_START_X + PARAMS_BOX_OFFSET_X * 2; + size_t y = PARAMS_START_Y + 1 + PARAMS_BOX_OFFSET_Y; + size_t x0 = x; + size_t y0 = y + 15; + size_t x1 = x + params->wave_attack * 2; + size_t y1 = y; + size_t x2 = x + params->wave_attack * 2 + params->wave_decay * 2; + size_t y2 = y + 15; + u8 col_env = cols[7] != COL_OFF && cols[8] != COL_OFF ? COL_ACC_2 : COL_OFF; + if (params->wave_attack != 0) { + draw_line(x0, y0, x1, y1, col_env); + } if (params->wave_decay == 0) { - txt_drawf("OFF", x + 3, y, cols[8]); - } else if (params->wave_decay < 10) { - txt_drawf("%d", x + 8, y, cols[8], params->wave_decay); + x2 = x + PARAMS_BOX_OFFSET_X * 2 - 4; + y2 = y; + draw_line(x1, y1, x2, y2, col_env); } else { - txt_drawf("%d", x + 6, y, cols[8], params->wave_decay); + draw_line(x1, y1, x2, y2, col_env); + draw_line(x2, y2, x + PARAMS_BOX_OFFSET_X * 2 - 4, y2, col_env); } } -- cgit v1.2.1