aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2023-07-21 18:16:37 +0200
committerBad Diode <bd@badd10de.dev>2023-07-21 18:16:37 +0200
commitabd10d9f6e048bb8cb21d2618f16e48ff5f781f2 (patch)
tree35d251fc2f0814ed226eb525d5d424c74d8ffec3
parent293ac066f324964739efa7d34a0e01ef8af43e89 (diff)
downloadstepper-abd10d9f6e048bb8cb21d2618f16e48ff5f781f2.tar.gz
stepper-abd10d9f6e048bb8cb21d2618f16e48ff5f781f2.zip
Add new parameter UI for square channels
-rw-r--r--src/drawing.c458
1 files changed, 194 insertions, 264 deletions
diff --git a/src/drawing.c b/src/drawing.c
index c596995..f843cb1 100644
--- a/src/drawing.c
+++ b/src/drawing.c
@@ -3,6 +3,28 @@
3// 3//
4 4
5void 5void
6draw_param_stub(size_t idx, u8 color) {
7 if (idx >= 10) {
8 return;
9 }
10 u8 x0 = PARAMS_START_X + (idx % 5) * PARAMS_BOX_OFFSET_X;
11 u8 x1 = x0 + PARAMS_BOX_W;
12 u8 y0 = PARAMS_START_Y;
13 if (idx >= 5) {
14 y0 += PARAMS_BOX_OFFSET_Y;
15 }
16 u8 y1 = y0 + PARAMS_BOX_H;
17 for (size_t i = 0; i < PARAMS_BOX_W; i += 2) {
18 draw_pixel(x0 + i + 1, y0, color);
19 draw_pixel(x0 + i + 1, y1, color);
20 }
21 for (size_t i = 0; i < PARAMS_BOX_H; i += 2) {
22 draw_pixel(x0, y0 + i + 1, color);
23 draw_pixel(x1, y0 + i + 1, color);
24 }
25}
26
27void
6draw_channel_sprite(size_t x, size_t y, u8 clr, u8 idx) { 28draw_channel_sprite(size_t x, size_t y, u8 clr, u8 idx) {
7 draw_icn(x, y, &ch_btn_sprite[0 + 6 * idx], clr, 0, 0); 29 draw_icn(x, y, &ch_btn_sprite[0 + 6 * idx], clr, 0, 0);
8 draw_icn(x + 8, y, &ch_btn_sprite[2 + 6 * idx], clr, 0, 0); 30 draw_icn(x + 8, y, &ch_btn_sprite[2 + 6 * idx], clr, 0, 0);
@@ -595,10 +617,10 @@ draw_wave_pattern(u8 *pattern, int x, int y, u8 clr) {
595IWRAM_CODE 617IWRAM_CODE
596void 618void
597clear_parameters(void) { 619clear_parameters(void) {
598 size_t x0 = PARAMS_START_X -1; 620 size_t x0 = PARAMS_START_X;
599 size_t y0 = PARAMS_START_Y; 621 size_t y0 = PARAMS_START_Y;
600 size_t x1 = PARAMS_START_X + PARAMS_W; 622 size_t x1 = PARAMS_START_X + PARAMS_W;
601 size_t y1 = PARAMS_START_Y + PARAMS_H - 1; 623 size_t y1 = PARAMS_START_Y + PARAMS_H;
602 draw_filled_rect(x0, y0, x1, y1, COL_BG); 624 draw_filled_rect(x0, y0, x1, y1, COL_BG);
603} 625}
604 626
@@ -700,272 +722,176 @@ draw_parameters_wave(ChannelWaveParams *params, bool global) {
700 722
701void 723void
702draw_parameters_square(ChannelSquareParams *params, bool sweep, bool global) { 724draw_parameters_square(ChannelSquareParams *params, bool sweep, bool global) {
703 size_t x_offset = sweep ? 0 : 30;
704 u8 col_fg = COL_FG; 725 u8 col_fg = COL_FG;
705 if (global && input_handler == handle_channel_selection) { 726 if (global && input_handler == handle_channel_selection) {
706 col_fg = COL_OFF; 727 col_fg = COL_OFF;
707 } 728 }
708 729
709 // Duty cycle. 730 // Duty cycle / shape.
710 { 731 {
711 // Shape drawing. 732 size_t x = PARAMS_START_X + 3;
712 { 733 size_t y = PARAMS_START_Y + 1;
713 size_t x = PARAMS_START_X + x_offset; 734
714 size_t y = PARAMS_START_Y + PARAMS_H - 43; 735 size_t x0 = x + 2;
715 736 size_t x1 = x0;
716 size_t x0 = x + 2; 737 size_t x2 = x0;
717 size_t x1 = x0; 738 size_t x3 = x0;
718 size_t x2 = x0; 739 size_t x4 = x0;
719 size_t x3 = x0; 740 size_t x5 = x0;
720 size_t x4 = x0; 741 size_t y0 = y + 14;
721 size_t x5 = x0; 742 size_t y1 = y + 2;
722 size_t y0 = y + 14; 743
723 size_t y1 = y + 2; 744 switch (params->duty_cycle) {
724 745 case 0: {
725 switch (params->duty_cycle) { 746 x1 += 4;
726 case 0: { 747 x2 += 6;
727 x1 += 4; 748 x3 += 13;
728 x2 += 6; 749 x4 += 15;
729 x3 += 13; 750 x5 += 20;
730 x4 += 15; 751 } break;
731 x5 += 20; 752 case 1: {
732 } break; 753 x1 += 4;
733 case 1: { 754 x2 += 7;
734 x1 += 4; 755 x3 += 13;
735 x2 += 7; 756 x4 += 16;
736 x3 += 13; 757 x5 += 20;
737 x4 += 16; 758 } break;
738 x5 += 20; 759 case 2: {
739 } break; 760 x1 += 3;
740 case 2: { 761 x2 += 8;
741 x1 += 3; 762 x3 += 12;
742 x2 += 8; 763 x4 += 17;
743 x3 += 12; 764 x5 += 20;
744 x4 += 17; 765 } break;
745 x5 += 20; 766 case 3: {
746 } break; 767 x1 += 2;
747 case 3: { 768 x2 += 9;
748 x1 += 2; 769 x3 += 11;
749 x2 += 9; 770 x4 += 18;
750 x3 += 11; 771 x5 += 20;
751 x4 += 18; 772 } break;
752 x5 += 20;
753 } break;
754 }
755 draw_line(x0, y0, x1, y0, COL_ACC_1);
756 draw_line(x1, y1, x1, y0, COL_ACC_1);
757 draw_line(x1, y1, x2, y1, COL_ACC_1);
758 draw_line(x2, y1, x2, y0, COL_ACC_1);
759 draw_line(x2, y0, x3, y0, COL_ACC_1);
760 draw_line(x3, y1, x3, y0, COL_ACC_1);
761 draw_line(x3, y1, x4, y1, COL_ACC_1);
762 draw_line(x4, y1, x4, y0, COL_ACC_1);
763 draw_line(x4, y0, x5, y0, COL_ACC_1);
764
765 // Bounding box.
766 draw_rect(x, y - 3, x + 24, y + 18, COL_ACC_1);
767 }
768
769 // Param box.
770 {
771 size_t x = PARAMS_START_X + x_offset;
772 size_t y = PARAMS_START_Y + PARAMS_H - 26;
773 draw_line(x, y + 7, x + 2, y + 7, col_fg);
774 draw_line(x + 22, y + 7, x + 24, y + 7, col_fg);
775 draw_line(x, y + 8, x, y + 19, col_fg);
776 draw_line(x + 24, y + 8, x + 24, y + 19, col_fg);
777 draw_line(x, y + 20, x + 24, y + 20, col_fg);
778 txt_drawf_small("duty", x + 3, y + 3, col_fg);
779
780 switch (params->duty_cycle) {
781 case 0: { txt_drawf("12", x + 6, y + 10, col_fg); } break;
782 case 1: { txt_drawf("25", x + 6, y + 10, col_fg); } break;
783 case 2: { txt_drawf("50", x + 6, y + 10, col_fg); } break;
784 case 3: { txt_drawf("75", x + 6, y + 10, col_fg); } break;
785 }
786 } 773 }
774 draw_line(x0, y0, x1, y0, COL_ACC_1);
775 draw_line(x1, y1, x1, y0, COL_ACC_1);
776 draw_line(x1, y1, x2, y1, COL_ACC_1);
777 draw_line(x2, y1, x2, y0, COL_ACC_1);
778 draw_line(x2, y0, x3, y0, COL_ACC_1);
779 draw_line(x3, y1, x3, y0, COL_ACC_1);
780 draw_line(x3, y1, x4, y1, COL_ACC_1);
781 draw_line(x4, y1, x4, y0, COL_ACC_1);
782 draw_line(x4, y0, x5, y0, COL_ACC_1);
787 } 783 }
788 784
789 // Envelope. 785 // Envelope.
790 { 786 {
791 // Env. drawing. 787 size_t x = PARAMS_START_X + PARAMS_BOX_OFFSET_X * 1 + 1;
792 { 788 size_t y = PARAMS_START_Y + 1;
793 // Bounding box. 789 size_t x0 = x;
794 { 790 size_t y0 = y + 15 - params->env_volume;
795 size_t x0 = PARAMS_START_X + 31 + x_offset; 791 size_t x1 = x + (3 * PARAMS_BOX_OFFSET_X) * params->env_time / 8 + 7;
796 size_t y0 = PARAMS_START_Y + PARAMS_H - 46; 792 size_t y1 = params->env_direction == 0 ? y + 15 : y;
797 size_t x1 = x0 + 79; 793 size_t x2 = x + PARAMS_BOX_OFFSET_X * 3 - 5;
798 size_t y1 = y0 + 21; 794 size_t y2 = y1;
799 draw_rect(x0, y0, x1, y1, COL_ACC_2); 795
800 } 796 // Env.
801 797 if (params->env_time == 0) {
802 size_t x = PARAMS_START_X + 42 + x_offset; 798 // TODO: Time 0 vol 0 (dir) doesn't make sense (mute)
803 size_t y = PARAMS_START_Y + PARAMS_H - 43; 799 // TODO: Time 0 vol 100 doesn't make sense (constant max volume)
804 size_t x0 = x; 800 // NOTE: Maybe it's just a matter of handling it better on the
805 size_t y0 = y + 15 - params->env_volume; 801 // control? Have to check every time we change direction to swap
806 size_t x1 = x + 8 * params->env_time; 802 // the conditions.
807 size_t y1 = params->env_direction == 0 ? y + 15 : y; 803 draw_line(x0, y0, x2, y0, COL_ACC_2);
808 size_t x2 = x + 8 * 7 + 1; 804 } else {
809 size_t y2 = y1; 805 draw_line(x0, y0, x1, y1, COL_ACC_2);
810 806 draw_line(x1, y1, x2, y2, COL_ACC_2);
811 // Env.
812 if (params->env_time == 0) {
813 draw_line(x1, y0, x2, y0, COL_ACC_2);
814 } else {
815 draw_line(x0, y0, x1, y1, COL_ACC_2);
816 draw_line(x1, y1, x2, y2, COL_ACC_2);
817 }
818 }
819
820 // Env. volume.
821 {
822 size_t x = PARAMS_START_X + 31 + x_offset;
823 size_t y = PARAMS_START_Y + PARAMS_H - 26;
824 draw_line(x, y + 7, x + 4, y + 7, col_fg);
825 draw_line(x + 20, y + 7, x + 24, y + 7, col_fg);
826 draw_line(x, y + 8, x, y + 19, col_fg);
827 draw_line(x + 24, y + 8, x + 24, y + 19, col_fg);
828 draw_line(x, y + 20, x + 24, y + 20, col_fg);
829 txt_drawf_small("vol", x + 5, y + 3, col_fg);
830
831 switch (params->env_volume) {
832 case 0: { txt_drawf("0", x + 9, y + 10, col_fg); } break;
833 case 1: { txt_drawf("6", x + 9, y + 10, col_fg); } break;
834 case 2: { txt_drawf("13", x + 6, y + 10, col_fg); } break;
835 case 3: { txt_drawf("20", x + 6, y + 10, col_fg); } break;
836 case 4: { txt_drawf("26", x + 6, y + 10, col_fg); } break;
837 case 5: { txt_drawf("33", x + 6, y + 10, col_fg); } break;
838 case 6: { txt_drawf("40", x + 6, y + 10, col_fg); } break;
839 case 7: { txt_drawf("46", x + 6, y + 10, col_fg); } break;
840 case 8: { txt_drawf("53", x + 6, y + 10, col_fg); } break;
841 case 9: { txt_drawf("60", x + 6, y + 10, col_fg); } break;
842 case 10: { txt_drawf("66", x + 6, y + 10, col_fg); } break;
843 case 11: { txt_drawf("73", x + 6, y + 10, col_fg); } break;
844 case 12: { txt_drawf("80", x + 6, y + 10, col_fg); } break;
845 case 13: { txt_drawf("86", x + 6, y + 10, col_fg); } break;
846 case 14: { txt_drawf("93", x + 6, y + 10, col_fg); } break;
847 case 15: { txt_drawf("100", x + 3, y + 10, col_fg); } break;
848 }
849 }
850
851 // Env. direction
852 {
853 size_t x = PARAMS_START_X + 59 + x_offset;
854 size_t y = PARAMS_START_Y + PARAMS_H - 26;
855 draw_line(x, y + 7, x + 4, y + 7, col_fg);
856 draw_line(x + 20, y + 7, x + 24, y + 7, col_fg);
857 draw_line(x, y + 8, x, y + 19, col_fg);
858 draw_line(x + 24, y + 8, x + 24, y + 19, col_fg);
859 draw_line(x, y + 20, x + 24, y + 20, col_fg);
860 txt_drawf_small("dir", x + 5, y + 3, col_fg);
861
862 char arr_up[2] = { 0x19, 0 };
863 char arr_down[2] = { 0x18, 0 };
864 switch (params->env_direction) {
865 case 0: { txt_drawf(arr_up, x + 9, y + 11, col_fg); } break;
866 case 1: { txt_drawf(arr_down, x + 9, y + 11, col_fg); } break;
867 }
868 } 807 }
808 }
869 809
870 // Env. time. 810 // TODO: Trig probability
871 { 811 {
872 size_t x = PARAMS_START_X + 87 + x_offset; 812 size_t x = PARAMS_START_X + PARAMS_BOX_OFFSET_X * 4 + 3;
873 size_t y = PARAMS_START_Y + PARAMS_H - 26; 813 size_t y = PARAMS_START_Y + 5;
874 draw_line(x, y + 7, x + 2, y + 7, col_fg); 814 txt_drawf("100", x, y, col_fg);
875 draw_line(x + 22, y + 7, x + 24, y + 7, col_fg); 815 txt_drawc('%', x + 18, y, col_fg);
876 draw_line(x, y + 8, x, y + 19, col_fg);
877 draw_line(x + 24, y + 8, x + 24, y + 19, col_fg);
878 draw_line(x, y + 20, x + 24, y + 20, col_fg);
879 txt_drawf_small("time", x + 3, y + 3, col_fg);
880
881 switch (params->env_time) {
882 case 0: { txt_drawf("0", x + 9, y + 10, col_fg); } break;
883 case 1: { txt_drawf("14", x + 6, y + 10, col_fg); } break;
884 case 2: { txt_drawf("28", x + 6, y + 10, col_fg); } break;
885 case 3: { txt_drawf("42", x + 6, y + 10, col_fg); } break;
886 case 4: { txt_drawf("57", x + 6, y + 10, col_fg); } break;
887 case 5: { txt_drawf("71", x + 6, y + 10, col_fg); } break;
888 case 6: { txt_drawf("85", x + 6, y + 10, col_fg); } break;
889 case 7: { txt_drawf("100", x + 3, y + 10, col_fg); } break;
890 }
891 }
892 } 816 }
893 817
894 // Sweep number. 818 // Sweep.
895 if (sweep) { 819 if (sweep) {
896 size_t x = PARAMS_START_X + 118; 820 size_t x = PARAMS_START_X;
897 size_t y = PARAMS_START_Y + PARAMS_H - 26; 821 size_t y = PARAMS_START_Y + PARAMS_BOX_OFFSET_Y;
898 draw_line(x, y + 7, x + 4, y + 7, col_fg); 822
899 draw_line(x + 20, y + 7, x + 24, y + 7, col_fg); 823 // Bounding box.
900 draw_line(x, y + 8, x, y + 19, col_fg); 824 u8 x0 = x + 1;
901 draw_line(x + 24, y + 8, x + 24, y + 19, col_fg); 825 u8 x1 = x + PARAMS_BOX_OFFSET_X * 3 - 5;
902 draw_line(x, y + 20, x + 24, y + 20, col_fg); 826 u8 y0 = y + 2;
903 txt_drawf_small("num", x + 5, y + 3, col_fg); 827 u8 y1 = y + PARAMS_BOX_H - 8;
904 828 draw_line(x0, y0, x1, y0, col_fg);
829 draw_line(x0, y1, x1, y1, col_fg);
830 draw_line(x0 - 1, y0 + 1, x0 - 1, y1 - 1, col_fg);
831 draw_line(x1 + 1, y0 + 1, x1 + 1, y1 - 1, col_fg);
832
833 // Number.
905 switch (params->sweep_number) { 834 switch (params->sweep_number) {
906 case 0: { txt_drawf("0", x + 9, y + 10, col_fg); } break; 835 case 0: { txt_drawf("0", x + 12, y + 5, col_fg); } break;
907 case 1: { txt_drawf("1", x + 9, y + 10, col_fg); } break; 836 case 1: { txt_drawf("1", x + 12, y + 5, col_fg); } break;
908 case 2: { txt_drawf("2", x + 9, y + 10, col_fg); } break; 837 case 2: { txt_drawf("2", x + 12, y + 5, col_fg); } break;
909 case 3: { txt_drawf("3", x + 9, y + 10, col_fg); } break; 838 case 3: { txt_drawf("3", x + 12, y + 5, col_fg); } break;
910 case 4: { txt_drawf("4", x + 9, y + 10, col_fg); } break; 839 case 4: { txt_drawf("4", x + 12, y + 5, col_fg); } break;
911 case 5: { txt_drawf("5", x + 9, y + 10, col_fg); } break; 840 case 5: { txt_drawf("5", x + 12, y + 5, col_fg); } break;
912 case 6: { txt_drawf("6", x + 9, y + 10, col_fg); } break; 841 case 6: { txt_drawf("6", x + 12, y + 5, col_fg); } break;
913 case 7: { txt_drawf("7", x + 9, y + 10, col_fg); } break; 842 case 7: { txt_drawf("7", x + 12, y + 5, col_fg); } break;
914 } 843 }
915 }
916
917 // Sweep time.
918 if (sweep) {
919 size_t x = PARAMS_START_X + 146;
920 size_t y = PARAMS_START_Y + PARAMS_H - 26;
921 draw_line(x, y + 7, x + 2, y + 7, col_fg);
922 draw_line(x + 22, y + 7, x + 24, y + 7, col_fg);
923 draw_line(x, y + 8, x, y + 19, col_fg);
924 draw_line(x + 24, y + 8, x + 24, y + 19, col_fg);
925 draw_line(x, y + 20, x + 24, y + 20, col_fg);
926 txt_drawf_small("time", x + 3, y + 3, col_fg);
927 844
845 // Time.
846 x += PARAMS_BOX_OFFSET_X;
928 switch (params->sweep_time) { 847 switch (params->sweep_time) {
929 case 0: { txt_drawf("0", x + 9, y + 10, col_fg); } break; 848 case 0: { txt_drawf("0", x + 12, y + 5, col_fg); } break;
930 case 1: { txt_drawf("1", x + 9, y + 10, col_fg); } break; 849 case 1: { txt_drawf("1", x + 12, y + 5, col_fg); } break;
931 case 2: { txt_drawf("2", x + 9, y + 10, col_fg); } break; 850 case 2: { txt_drawf("2", x + 12, y + 5, col_fg); } break;
932 case 3: { txt_drawf("3", x + 9, y + 10, col_fg); } break; 851 case 3: { txt_drawf("3", x + 12, y + 5, col_fg); } break;
933 case 4: { txt_drawf("4", x + 9, y + 10, col_fg); } break; 852 case 4: { txt_drawf("4", x + 12, y + 5, col_fg); } break;
934 case 5: { txt_drawf("5", x + 9, y + 10, col_fg); } break; 853 case 5: { txt_drawf("5", x + 12, y + 5, col_fg); } break;
935 case 6: { txt_drawf("6", x + 9, y + 10, col_fg); } break; 854 case 6: { txt_drawf("6", x + 12, y + 5, col_fg); } break;
936 case 7: { txt_drawf("7", x + 9, y + 10, col_fg); } break; 855 case 7: { txt_drawf("7", x + 12, y + 5, col_fg); } break;
937 } 856 }
938 }
939
940 // Sweep direction.
941 if (sweep) {
942 size_t x = PARAMS_START_X + 132;
943 size_t y = PARAMS_START_Y + PARAMS_H - 46;
944 draw_line(x, y + 7, x + 4, y + 7, col_fg);
945 draw_line(x + 20, y + 7, x + 24, y + 7, col_fg);
946 draw_line(x, y + 8, x, y + 19, col_fg);
947 draw_line(x + 24, y + 8, x + 24, y + 19, col_fg);
948 draw_line(x, y + 20, x + 24, y + 20, col_fg);
949 txt_drawf_small("dir", x + 5, y + 3, col_fg);
950 857
951 char arr_up[2] = { 0x19, 0 }; 858 // Direction.
952 char arr_down[2] = { 0x18, 0 }; 859 x += PARAMS_BOX_OFFSET_X;
860 char arr_down[2] = { 0x19, 0 };
861 char arr_up[2] = { 0x18, 0 };
953 switch (params->sweep_direction) { 862 switch (params->sweep_direction) {
954 case 0: { txt_drawf(arr_up, x + 9, y + 11, col_fg); } break; 863 case 0: { txt_drawf(arr_up, x + 12, y + 5, col_fg); } break;
955 case 1: { txt_drawf(arr_down, x + 9, y + 11, col_fg); } break; 864 case 1: { txt_drawf(arr_down, x + 12, y + 5, col_fg); } break;
956 } 865 }
957 } 866 }
958 867
959 // Labels. 868 // Labels.
960 { 869 {
961 size_t x = PARAMS_START_X + x_offset; 870 size_t x = PARAMS_START_X;
962 size_t y = PARAMS_START_Y + PARAMS_H - 43; 871 size_t y = PARAMS_START_Y;
963 txt_drawf_small("shape", x + 1, y - 12, col_fg); 872 txt_drawf_small("shape", x + 4 + PARAMS_BOX_OFFSET_X * 0, y + PARAMS_BOX_H - 7, col_fg);
964 txt_drawf_small("envelope", x + 54, y - 12, col_fg); 873 txt_drawf_small("vol", x + 8 + PARAMS_BOX_OFFSET_X * 1, y + PARAMS_BOX_H - 7, col_fg);
874 txt_drawf_small("time", x + 6 + PARAMS_BOX_OFFSET_X * 2, y + PARAMS_BOX_H - 7, col_fg);
875 txt_drawf_small("dir", x + 8 + PARAMS_BOX_OFFSET_X * 3, y + PARAMS_BOX_H - 7, col_fg);
876 txt_drawf_small("prob", x + 6 + PARAMS_BOX_OFFSET_X * 4, y + PARAMS_BOX_H - 7, col_fg);
877 y += PARAMS_BOX_OFFSET_Y;
965 if (sweep) { 878 if (sweep) {
966 txt_drawf_small("sweep", x + 133, y - 12, col_fg); 879 txt_drawf_small("sweep", x + 4 + PARAMS_BOX_OFFSET_X * 0, y + PARAMS_BOX_H - 7, col_fg);
880 txt_drawf_small("time", x + 6 + PARAMS_BOX_OFFSET_X * 1, y + PARAMS_BOX_H - 7, col_fg);
881 txt_drawf_small("dir", x + 8 + PARAMS_BOX_OFFSET_X * 2, y + PARAMS_BOX_H - 7, col_fg);
967 } 882 }
968 } 883 }
884
885 // Empty spacers.
886 {
887 if (!sweep) {
888 draw_param_stub(5, COL_OFF);
889 draw_param_stub(6, COL_OFF);
890 draw_param_stub(7, COL_OFF);
891 }
892 draw_param_stub(8, COL_OFF);
893 draw_param_stub(9, COL_OFF);
894 }
969} 895}
970 896
971void 897void
@@ -1117,34 +1043,38 @@ void
1117draw_parameters(void) { 1043draw_parameters(void) {
1118 clear_parameters(); 1044 clear_parameters();
1119 Pattern *pat = &patterns[pattern_selection_loc]; 1045 Pattern *pat = &patterns[pattern_selection_loc];
1120 draw_rect(PARAMS_START_X, PARAMS_START_Y, PARAMS_START_X + PARAMS_W, PARAMS_START_Y + PARAMS_H, COL_OFF); 1046 // DEBUG: Draw the parameter window
1121 // DEBUG: Drawing the reference grid 1047 // draw_rect(PARAMS_START_X, PARAMS_START_Y, PARAMS_START_X + PARAMS_W, PARAMS_START_Y + PARAMS_H, COL_OFF);
1122 // if (input_handler == handle_trigger_selection || 1048 // DEBUG: Drawing the reference grid overlay
1123 // input_handler == handle_param_selection_sq1 || 1049 // for (size_t i = 0; i < 10; i++) {
1124 // input_handler == handle_param_selection_sq2 || 1050 // draw_param_stub(i, COL_OFF);
1125 // input_handler == handle_param_selection_wave ||
1126 // input_handler == handle_param_selection_noise) {
1127 // switch (channel_selection_loc) {
1128 // case 0: { draw_parameters_square(&pat->ch1.params[trig_selection_loc], true, false); } break;
1129 // case 1: { draw_parameters_square(&pat->ch2.params[trig_selection_loc], false, false); } break;
1130 // case 2: { draw_parameters_wave(&pat->ch3.params[trig_selection_loc], false); } break;
1131 // case 3: { draw_parameters_noise(&pat->ch4.params[trig_selection_loc], false); } break;
1132 // }
1133 // return;
1134 // }
1135 // if (input_handler == handle_channel_selection ||
1136 // input_handler == handle_param_selection_ch1 ||
1137 // input_handler == handle_param_selection_ch2 ||
1138 // input_handler == handle_param_selection_ch3 ||
1139 // input_handler == handle_param_selection_ch4) {
1140 // switch (channel_selection_loc) {
1141 // case 0: { draw_parameters_square(&ch1_params, true, true); } break;
1142 // case 1: { draw_parameters_square(&ch2_params, false, true); } break;
1143 // case 2: { draw_parameters_wave(&ch3_params, true); } break;
1144 // case 3: { draw_parameters_noise(&ch4_params, true); } break;
1145 // }
1146 // return;
1147 // } 1051 // }
1052 if (input_handler == handle_trigger_selection ||
1053 input_handler == handle_param_selection_sq1 ||
1054 input_handler == handle_param_selection_sq2 ||
1055 input_handler == handle_param_selection_wave ||
1056 input_handler == handle_param_selection_noise) {
1057 switch (channel_selection_loc) {
1058 case 0: { draw_parameters_square(&pat->ch1.params[trig_selection_loc], true, false); } break;
1059 case 1: { draw_parameters_square(&pat->ch2.params[trig_selection_loc], false, false); } break;
1060 case 2: { draw_parameters_wave(&pat->ch3.params[trig_selection_loc], false); } break;
1061 case 3: { draw_parameters_noise(&pat->ch4.params[trig_selection_loc], false); } break;
1062 }
1063 return;
1064 }
1065 if (input_handler == handle_channel_selection ||
1066 input_handler == handle_param_selection_ch1 ||
1067 input_handler == handle_param_selection_ch2 ||
1068 input_handler == handle_param_selection_ch3 ||
1069 input_handler == handle_param_selection_ch4) {
1070 switch (channel_selection_loc) {
1071 case 0: { draw_parameters_square(&ch1_params, true, true); } break;
1072 case 1: { draw_parameters_square(&ch2_params, false, true); } break;
1073 case 2: { draw_parameters_wave(&ch3_params, true); } break;
1074 case 3: { draw_parameters_noise(&ch4_params, true); } break;
1075 }
1076 return;
1077 }
1148} 1078}
1149 1079
1150void 1080void