diff options
Diffstat (limited to 'src/drawing.c')
-rw-r--r-- | src/drawing.c | 75 |
1 files changed, 65 insertions, 10 deletions
diff --git a/src/drawing.c b/src/drawing.c index 50f3de3..e94d0ff 100644 --- a/src/drawing.c +++ b/src/drawing.c | |||
@@ -594,9 +594,19 @@ draw_piano(void) { | |||
594 | draw_rect(x0, y0, x1, y1, COL_FG); | 594 | draw_rect(x0, y0, x1, y1, COL_FG); |
595 | for (size_t i = 0; i < 12 * 6; i++) { | 595 | for (size_t i = 0; i < 12 * 6; i++) { |
596 | u8 clr = COL_FG; | 596 | u8 clr = COL_FG; |
597 | s8 pos = i % 12; | ||
598 | switch (pos) { | ||
599 | case 0: | ||
600 | case 2: | ||
601 | case 4: | ||
602 | case 5: | ||
603 | case 7: | ||
604 | case 9: | ||
605 | case 11: break; | ||
606 | default: { clr = COL_BG; } break; | ||
607 | } | ||
597 | if (input_handler == handle_right_col_selection && | 608 | if (input_handler == handle_right_col_selection && |
598 | right_col_selection_loc == R_COL_SCALE) { | 609 | right_col_selection_loc == R_COL_SCALE) { |
599 | s8 pos = i % 12; | ||
600 | if (pos == current_scale_root) { | 610 | if (pos == current_scale_root) { |
601 | clr = COL_ACC_1; | 611 | clr = COL_ACC_1; |
602 | } else { | 612 | } else { |
@@ -1277,13 +1287,38 @@ clear_cursors(void) { | |||
1277 | 1287 | ||
1278 | void | 1288 | void |
1279 | draw_pattern_chain_cursor(void) { | 1289 | draw_pattern_chain_cursor(void) { |
1280 | size_t offset_x = (PAT_TRIG_H + 7) * (param_selection_loc % 8); | 1290 | switch (param_selection_loc) { |
1281 | size_t offset_y = param_selection_loc < 8 ? 0 : 0 + PAT_TRIG_OFFSET_Y; | 1291 | case CHAIN_BTN_ENABLE: { |
1282 | size_t x0 = PAT_TRIG_START_X + offset_x; | 1292 | size_t x0 = PAT_TRIG_START_X + 24; |
1283 | size_t x1 = PAT_TRIG_START_X + offset_x + PAT_TRIG_W; | 1293 | size_t x1 = x0 + 30; |
1284 | size_t y = PAT_TRIG_START_Y + offset_y + PAT_TRIG_H + 2; | 1294 | size_t y = PAT_TRIG_START_Y - 16 + 1 + 10; |
1285 | draw_line(x0, y, x1, y, COL_ACC_0); | 1295 | draw_line(x0, y, x1, y, COL_ACC_0); |
1286 | draw_line(x0, y + 1, x1, y + 1, COL_ACC_0); | 1296 | draw_line(x0, y + 1, x1, y + 1, COL_ACC_0); |
1297 | } break; | ||
1298 | case CHAIN_BTN_CLEAR: { | ||
1299 | size_t x0 = PAT_TRIG_START_X + 24 + 42; | ||
1300 | size_t x1 = x0 + 30; | ||
1301 | size_t y = PAT_TRIG_START_Y - 16 + 1 + 10; | ||
1302 | draw_line(x0, y, x1, y, COL_ACC_0); | ||
1303 | draw_line(x0, y + 1, x1, y + 1, COL_ACC_0); | ||
1304 | } break; | ||
1305 | case CHAIN_BTN_RANDOM: { | ||
1306 | size_t x0 = PAT_TRIG_START_X + 24 + 42 * 2; | ||
1307 | size_t x1 = x0 + 30; | ||
1308 | size_t y = PAT_TRIG_START_Y - 16 + 1 + 10; | ||
1309 | draw_line(x0, y, x1, y, COL_ACC_0); | ||
1310 | draw_line(x0, y + 1, x1, y + 1, COL_ACC_0); | ||
1311 | } break; | ||
1312 | default: { | ||
1313 | size_t offset_x = (PAT_TRIG_H + 7) * (param_selection_loc % 8); | ||
1314 | size_t offset_y = param_selection_loc < 8 ? 0 : 0 + PAT_TRIG_OFFSET_Y; | ||
1315 | size_t x0 = PAT_TRIG_START_X + offset_x; | ||
1316 | size_t x1 = PAT_TRIG_START_X + offset_x + PAT_TRIG_W; | ||
1317 | size_t y = PAT_TRIG_START_Y + offset_y + PAT_TRIG_H + 2; | ||
1318 | draw_line(x0, y, x1, y, COL_ACC_0); | ||
1319 | draw_line(x0, y + 1, x1, y + 1, COL_ACC_0); | ||
1320 | } break; | ||
1321 | } | ||
1287 | } | 1322 | } |
1288 | 1323 | ||
1289 | void | 1324 | void |
@@ -1756,7 +1791,7 @@ draw_notif_bar() { | |||
1756 | return; | 1791 | return; |
1757 | } | 1792 | } |
1758 | 1793 | ||
1759 | if (chain.len != 0) { | 1794 | if (chain.len != 0 && chain.enabled) { |
1760 | u8 x = x0 + 2; | 1795 | u8 x = x0 + 2; |
1761 | u8 y = y0 + 1; | 1796 | u8 y = y0 + 1; |
1762 | txt_drawf_small("CHAIN: ", x, y, color); | 1797 | txt_drawf_small("CHAIN: ", x, y, color); |
@@ -1789,6 +1824,7 @@ draw_notif_bar() { | |||
1789 | void | 1824 | void |
1790 | draw_pattern_chain() { | 1825 | draw_pattern_chain() { |
1791 | clear_parameters(); | 1826 | clear_parameters(); |
1827 | // Pattern chain triggers. | ||
1792 | for (size_t i = 0; i < 16; i++) { | 1828 | for (size_t i = 0; i < 16; i++) { |
1793 | u8 color = COL_FG; | 1829 | u8 color = COL_FG; |
1794 | size_t offset_x = PAT_TRIG_OFFSET_X * (i % 8); | 1830 | size_t offset_x = PAT_TRIG_OFFSET_X * (i % 8); |
@@ -1797,12 +1833,15 @@ draw_pattern_chain() { | |||
1797 | size_t x1 = PAT_TRIG_START_X + offset_x + PAT_TRIG_W; | 1833 | size_t x1 = PAT_TRIG_START_X + offset_x + PAT_TRIG_W; |
1798 | size_t y0 = PAT_TRIG_START_Y + offset_y; | 1834 | size_t y0 = PAT_TRIG_START_Y + offset_y; |
1799 | size_t y1 = PAT_TRIG_START_Y + offset_y + PAT_TRIG_H; | 1835 | size_t y1 = PAT_TRIG_START_Y + offset_y + PAT_TRIG_H; |
1836 | if (!chain.enabled) { | ||
1837 | color = COL_OFF; | ||
1838 | } | ||
1800 | draw_rect(x0, y0, x1, y1, color); | 1839 | draw_rect(x0, y0, x1, y1, color); |
1801 | if (chain.active[i]) { | 1840 | if (chain.active[i]) { |
1802 | txt_drawc('A' + chain.chain[i], x0 + 4, y0 + 3, color); | 1841 | txt_drawc('A' + chain.chain[i], x0 + 4, y0 + 3, color); |
1803 | } | 1842 | } |
1804 | color = COL_OFF; | 1843 | color = COL_OFF; |
1805 | if (chain.current == i && chain.len != 0) { | 1844 | if (chain.current == i && chain.len != 0 && chain.enabled) { |
1806 | color = COL_ACC_2; | 1845 | color = COL_ACC_2; |
1807 | if (chain.active[i]) { | 1846 | if (chain.active[i]) { |
1808 | txt_drawc('A' + chain.chain[i], x0 + 4, y0 + 3, color); | 1847 | txt_drawc('A' + chain.chain[i], x0 + 4, y0 + 3, color); |
@@ -1811,4 +1850,20 @@ draw_pattern_chain() { | |||
1811 | } | 1850 | } |
1812 | draw_line(x0 + 5, y1 - 2, x1 - 5, y1 - 2, color); | 1851 | draw_line(x0 + 5, y1 - 2, x1 - 5, y1 - 2, color); |
1813 | } | 1852 | } |
1853 | |||
1854 | // Pattern chain buttons. | ||
1855 | size_t x0 = PAT_TRIG_START_X + 24; | ||
1856 | size_t x1 = x0 + 30; | ||
1857 | size_t y0 = PAT_TRIG_START_Y - 16 + 1; | ||
1858 | size_t y1 = y0 + 8; | ||
1859 | txt_drawf_small("toggle", x0 + 2, y0, COL_FG); | ||
1860 | draw_rect(x0, y0, x1, y1, COL_FG); | ||
1861 | x0 += 42; | ||
1862 | x1 += 42; | ||
1863 | txt_drawf_small("clear", x0 + 4, y0, COL_FG); | ||
1864 | draw_rect(x0, y0, x1, y1, COL_FG); | ||
1865 | x0 += 42; | ||
1866 | x1 += 42; | ||
1867 | txt_drawf_small("random", x0 + 2, y0, COL_FG); | ||
1868 | draw_rect(x0, y0, x1, y1, COL_FG); | ||
1814 | } | 1869 | } |