aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2023-05-30 09:03:01 +0200
committerBad Diode <bd@badd10de.dev>2023-05-30 09:03:01 +0200
commitfcf71328ffc9452352dd74f2a241f3a3d0389daa (patch)
tree9b0a4726b9edaa504b0251f0c25d6da28d5a24f9
parentaf9b2f0bc53fa2158cfc06d8b3b2c33e08c006d9 (diff)
downloadstepper-fcf71328ffc9452352dd74f2a241f3a3d0389daa.tar.gz
stepper-fcf71328ffc9452352dd74f2a241f3a3d0389daa.zip
Add cursor selection (thick line)
-rw-r--r--src/drawing.c108
1 files 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) {
36 size_t x0 = CHAN_START_X + offset_x; 36 size_t x0 = CHAN_START_X + offset_x;
37 size_t x1 = CHAN_START_X + offset_x + CHAN_W; 37 size_t x1 = CHAN_START_X + offset_x + CHAN_W;
38 size_t y = CHAN_START_Y + offset_y; 38 size_t y = CHAN_START_Y + offset_y;
39 draw_line(x0, y, x1, y, clr); 39 switch (settings.cursor) {
40 case CURSOR_THICK_LINE: {
41 draw_line(x0, y, x1, y, clr);
42 draw_line(x0, y + 1, x1, y + 1, clr);
43 } break;
44 default: {
45 draw_line(x0, y, x1, y, clr);
46 } break;
47 }
40} 48}
41 49
42// 50//
@@ -83,7 +91,15 @@ draw_trig_cursor(size_t i, u8 clr) {
83 size_t x0 = TRIG_START_X + offset_x; 91 size_t x0 = TRIG_START_X + offset_x;
84 size_t x1 = TRIG_START_X + TRIG_W + offset_x; 92 size_t x1 = TRIG_START_X + TRIG_W + offset_x;
85 size_t y = TRIG_START_Y + TRIG_H + offset_y; 93 size_t y = TRIG_START_Y + TRIG_H + offset_y;
86 draw_line(x0, y, x1, y, clr); 94 switch (settings.cursor) {
95 case CURSOR_THICK_LINE: {
96 draw_line(x0, y, x1, y, clr);
97 draw_line(x0, y + 1, x1, y + 1, clr);
98 } break;
99 default: {
100 draw_line(x0, y, x1, y, clr);
101 } break;
102 }
87} 103}
88 104
89void 105void
@@ -128,17 +144,23 @@ draw_right_col_cursor(int i, u8 clr) {
128 y = BANK_START_Y + PAT_H + 2 + 3 * PAT_OFFSET_Y; 144 y = BANK_START_Y + PAT_H + 2 + 3 * PAT_OFFSET_Y;
129 } break; 145 } break;
130 } 146 }
131 draw_line(x0, y, x1, y, clr); 147 switch (settings.cursor) {
148 case CURSOR_THICK_LINE: {
149 draw_line(x0, y, x1, y, clr);
150 draw_line(x0, y + 1, x1, y + 1, clr);
151 } break;
152 default: { draw_line(x0, y, x1, y, clr); } break;
153 }
132} 154}
133 155
134void 156void
135draw_current_step(u8 step, u8 col) { 157draw_current_step(u8 step, u8 clr) {
136 size_t offset_x = TRIG_OFFSET_X * (step % 8); 158 size_t offset_x = TRIG_OFFSET_X * (step % 8);
137 size_t offset_y = step < 8 ? 2 : 2 + TRIG_OFFSET_Y; 159 size_t offset_y = step < 8 ? 2 : 2 + TRIG_OFFSET_Y;
138 size_t x0 = TRIG_START_X + 3 + offset_x; 160 size_t x0 = TRIG_START_X + 3 + offset_x;
139 size_t x1 = TRIG_START_X - 3 + TRIG_W + offset_x; 161 size_t x1 = TRIG_START_X - 3 + TRIG_W + offset_x;
140 size_t y = TRIG_START_Y - 4 + TRIG_H + offset_y; 162 size_t y = TRIG_START_Y - 5 + TRIG_H + offset_y;
141 draw_line(x0, y, x1, y, col); 163 draw_line(x0, y, x1, y, clr);
142} 164}
143 165
144void 166void
@@ -195,7 +217,15 @@ draw_pattern_cursor(size_t i, u8 clr) {
195 size_t x0 = PAT_START_X + offset_x; 217 size_t x0 = PAT_START_X + offset_x;
196 size_t x1 = PAT_START_X + offset_x + PAT_W; 218 size_t x1 = PAT_START_X + offset_x + PAT_W;
197 size_t y = PAT_START_Y + offset_y; 219 size_t y = PAT_START_Y + offset_y;
198 draw_line(x0, y, x1, y, clr); 220 switch (settings.cursor) {
221 case CURSOR_THICK_LINE: {
222 draw_line(x0, y, x1, y, clr);
223 draw_line(x0, y + 1, x1, y + 1, clr);
224 } break;
225 default: {
226 draw_line(x0, y, x1, y, clr);
227 } break;
228 }
199} 229}
200 230
201void 231void
@@ -411,21 +441,21 @@ draw_params_cursor_wave(size_t i, u8 clr) {
411 // 32 half bytes (Wave A) 441 // 32 half bytes (Wave A)
412 0, 0, 0, 0, 0, 0, 0, 0, 442 0, 0, 0, 0, 0, 0, 0, 0,
413 0, 0, 0, 0, 0, 0, 0, 0, 443 0, 0, 0, 0, 0, 0, 0, 0,
414 8, 8, 8, 8, 8, 8, 8, 8, 444 9, 9, 9, 9, 9, 9, 9, 9,
415 8, 8, 8, 8, 8, 8, 8, 8, 445 9, 9, 9, 9, 9, 9, 9, 9,
416 // 32 half bytes (Wave B) 446 // 32 half bytes (Wave B)
417 0, 0, 0, 0, 0, 0, 0, 0, 447 0, 0, 0, 0, 0, 0, 0, 0,
418 0, 0, 0, 0, 0, 0, 0, 0, 448 0, 0, 0, 0, 0, 0, 0, 0,
419 8, 8, 8, 8, 8, 8, 8, 8, 449 9, 9, 9, 9, 9, 9, 9, 9,
420 8, 8, 8, 8, 8, 8, 8, 8, 450 9, 9, 9, 9, 9, 9, 9, 9,
421 // Default wave A. 451 // Default wave A.
422 20, 20, 20, 20, 452 21, 21, 21, 21,
423 // Default wave B. 453 // Default wave B.
424 20, 20, 20, 20, 454 21, 21, 21, 21,
425 // Mode selection. 455 // Mode selection.
426 20, 456 21,
427 // Volume selection. 457 // Volume selection.
428 0, 458 1,
429 }; 459 };
430 size_t cursor_length = 0; 460 size_t cursor_length = 0;
431 if (i < 64) { 461 if (i < 64) {
@@ -436,8 +466,16 @@ draw_params_cursor_wave(size_t i, u8 clr) {
436 cursor_length = 30; 466 cursor_length = 30;
437 } 467 }
438 size_t x = PARAMS_START_X + x_positions[i] - 1; 468 size_t x = PARAMS_START_X + x_positions[i] - 1;
439 size_t y = PARAMS_START_Y + PARAMS_H - 23 + y_positions[i]; 469 size_t y = PARAMS_START_Y + PARAMS_H - 25 + y_positions[i];
440 draw_line(x, y, x + cursor_length, y, clr); 470 switch (settings.cursor) {
471 case CURSOR_THICK_LINE: {
472 draw_line(x, y, x + cursor_length, y, clr);
473 draw_line(x, y + 1, x + cursor_length, y + 1, clr);
474 } break;
475 default: {
476 draw_line(x, y, x + cursor_length, y, clr);
477 } break;
478 }
441} 479}
442 480
443void 481void
@@ -457,7 +495,15 @@ draw_params_cursor_noise(size_t i, u8 clr) {
457 size_t cursor_length = 24; 495 size_t cursor_length = 24;
458 size_t x = PARAMS_START_X + x_positions[i] + 30; 496 size_t x = PARAMS_START_X + x_positions[i] + 30;
459 size_t y = PARAMS_START_Y + PARAMS_H - 23 + y_positions[i]; 497 size_t y = PARAMS_START_Y + PARAMS_H - 23 + y_positions[i];
460 draw_line(x, y, x + cursor_length, y, clr); 498 switch (settings.cursor) {
499 case CURSOR_THICK_LINE: {
500 draw_line(x, y, x + cursor_length, y, clr);
501 draw_line(x, y + 1, x + cursor_length, y + 1, clr);
502 } break;
503 default: {
504 draw_line(x, y, x + cursor_length, y, clr);
505 } break;
506 }
461} 507}
462 508
463void 509void
@@ -484,7 +530,15 @@ draw_params_cursor_square(size_t i, u8 clr, bool sweep) {
484 size_t cursor_length = 24; 530 size_t cursor_length = 24;
485 size_t x = PARAMS_START_X + x_positions[i] + x_offset; 531 size_t x = PARAMS_START_X + x_positions[i] + x_offset;
486 size_t y = PARAMS_START_Y + PARAMS_H - 23 + y_positions[i]; 532 size_t y = PARAMS_START_Y + PARAMS_H - 23 + y_positions[i];
487 draw_line(x, y, x + cursor_length, y, clr); 533 switch (settings.cursor) {
534 case CURSOR_THICK_LINE: {
535 draw_line(x, y, x + cursor_length, y, clr);
536 draw_line(x, y + 1, x + cursor_length, y + 1, clr);
537 } break;
538 default: {
539 draw_line(x, y, x + cursor_length, y, clr);
540 } break;
541 }
488} 542}
489 543
490void 544void
@@ -537,7 +591,7 @@ draw_parameters_wave(ChannelWaveParams *params, bool global) {
537 u8 *wave_b = params->wave_b; 591 u8 *wave_b = params->wave_b;
538 592
539 size_t x = PARAMS_START_X; 593 size_t x = PARAMS_START_X;
540 size_t y = PARAMS_START_Y + 13; 594 size_t y = PARAMS_START_Y + 12;
541 595
542 // Wave Patterns. 596 // Wave Patterns.
543 draw_wave_pattern(wave_a, x, y, COL_ACC_1); 597 draw_wave_pattern(wave_a, x, y, COL_ACC_1);
@@ -545,9 +599,9 @@ draw_parameters_wave(ChannelWaveParams *params, bool global) {
545 599
546 // Wave text. 600 // Wave text.
547 x -= 2; 601 x -= 2;
548 txt_drawf_small("%02x%02x%02x%02x", x, y + 20, col_fg, 602 txt_drawf_small("%02x%02x%02x%02x", x, y + 19, col_fg,
549 wave_a[0], wave_a[1], wave_a[2], wave_a[3]); 603 wave_a[0], wave_a[1], wave_a[2], wave_a[3]);
550 txt_drawf_small("%02x%02x%02x%02x", x + 34, y + 20, col_fg, 604 txt_drawf_small("%02x%02x%02x%02x", x + 34, y + 19, col_fg,
551 wave_a[4], wave_a[5], wave_a[6], wave_a[7]); 605 wave_a[4], wave_a[5], wave_a[6], wave_a[7]);
552 txt_drawf_small("%02x%02x%02x%02x", x, y + 28, col_fg, 606 txt_drawf_small("%02x%02x%02x%02x", x, y + 28, col_fg,
553 wave_a[8], wave_a[9], wave_a[10], wave_a[11]); 607 wave_a[8], wave_a[9], wave_a[10], wave_a[11]);
@@ -555,9 +609,9 @@ draw_parameters_wave(ChannelWaveParams *params, bool global) {
555 wave_a[12], wave_a[13], wave_a[14], wave_a[15]); 609 wave_a[12], wave_a[13], wave_a[14], wave_a[15]);
556 610
557 x += 70; 611 x += 70;
558 txt_drawf_small("%02x%02x%02x%02x", x, y + 20, col_fg, 612 txt_drawf_small("%02x%02x%02x%02x", x, y + 19, col_fg,
559 wave_b[0], wave_b[1], wave_b[2], wave_b[3]); 613 wave_b[0], wave_b[1], wave_b[2], wave_b[3]);
560 txt_drawf_small("%02x%02x%02x%02x", x + 34, y + 20, col_fg, 614 txt_drawf_small("%02x%02x%02x%02x", x + 34, y + 19, col_fg,
561 wave_b[4], wave_b[5], wave_b[6], wave_b[7]); 615 wave_b[4], wave_b[5], wave_b[6], wave_b[7]);
562 txt_drawf_small("%02x%02x%02x%02x", x, y + 28, col_fg, 616 txt_drawf_small("%02x%02x%02x%02x", x, y + 28, col_fg,
563 wave_b[8], wave_b[9], wave_b[10], wave_b[11]); 617 wave_b[8], wave_b[9], wave_b[10], wave_b[11]);
@@ -569,7 +623,7 @@ draw_parameters_wave(ChannelWaveParams *params, bool global) {
569 { 623 {
570 const u32 *tile = default_wave_buttons; 624 const u32 *tile = default_wave_buttons;
571 size_t x = PARAMS_START_X; 625 size_t x = PARAMS_START_X;
572 size_t y = PARAMS_START_Y + PARAMS_H - 12; 626 size_t y = PARAMS_START_Y + PARAMS_H - 13;
573 for (size_t i = 0, k = 0; i < 4 * 2; i += 2, k++) { 627 for (size_t i = 0, k = 0; i < 4 * 2; i += 2, k++) {
574 draw_icn(x + 17 * k , y, &tile[i * 2 + 0], col_fg, 1, 0); 628 draw_icn(x + 17 * k , y, &tile[i * 2 + 0], col_fg, 1, 0);
575 draw_icn(x + 17 * k + 8, y, &tile[i * 2 + 2], col_fg, 1, 0); 629 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) {
583 // Mode selection. 637 // Mode selection.
584 { 638 {
585 size_t x = PARAMS_START_X + 140; 639 size_t x = PARAMS_START_X + 140;
586 size_t y = PARAMS_START_Y + PARAMS_H - 22; 640 size_t y = PARAMS_START_Y + PARAMS_H - 23;
587 draw_line(x, y + 4, x + 5, y + 4, col_fg); 641 draw_line(x, y + 4, x + 5, y + 4, col_fg);
588 draw_line(x + 25, y + 4, x + 30, y + 4, col_fg); 642 draw_line(x + 25, y + 4, x + 30, y + 4, col_fg);
589 draw_line(x, y + 5, x, y + 16, col_fg); 643 draw_line(x, y + 5, x, y + 16, col_fg);
@@ -601,7 +655,7 @@ draw_parameters_wave(ChannelWaveParams *params, bool global) {
601 // Wave volume. 655 // Wave volume.
602 { 656 {
603 size_t x = PARAMS_START_X + 140; 657 size_t x = PARAMS_START_X + 140;
604 size_t y = PARAMS_START_Y + PARAMS_H - 45; 658 size_t y = PARAMS_START_Y + PARAMS_H - 46;
605 draw_line(x, y + 7, x + 7, y + 7, col_fg); 659 draw_line(x, y + 7, x + 7, y + 7, col_fg);
606 draw_line(x + 23, y + 7, x + 30, y + 7, col_fg); 660 draw_line(x + 23, y + 7, x + 30, y + 7, col_fg);
607 draw_line(x, y + 8, x, y + 19, col_fg); 661 draw_line(x, y + 8, x, y + 19, col_fg);