ft2_radiobuttons.h (4705B)
1 #pragma once 2 3 #include <stdint.h> 4 #include <stdbool.h> 5 6 enum // RADIOBUTTONS 7 { 8 // HELP 9 RB_HELP_FEATURES, 10 RB_HELP_EFFECTS, 11 RB_HELP_KEYBINDINGS, 12 RB_HELP_HOW_TO_USE_FT2, 13 RB_HELP_FAQ, 14 RB_HELP_KNOWN_BUGS, 15 16 // NIBBLES 17 RB_NIBBLES_1PLAYER, 18 RB_NIBBLES_2PLAYERS, 19 RB_NIBBLES_NOVICE, 20 RB_NIBBLES_AVERAGE, 21 RB_NIBBLES_PRO, 22 RB_NIBBLES_TRITON, 23 24 // SAMPLER 25 RB_SAMPLE_NO_LOOP, 26 RB_SAMPLE_FORWARD_LOOP, 27 RB_SAMPLE_PINGPONG_LOOP, 28 RB_SAMPLE_8BIT, 29 RB_SAMPLE_16BIT, 30 31 // INSTRUMENT EDITOR 32 RB_INST_WAVE_SINE, 33 RB_INST_WAVE_SQUARE, 34 RB_INST_WAVE_RAMP_DOWN, 35 RB_INST_WAVE_RAMP_UP, 36 37 // CONFIG SELECT 38 RB_CONFIG_AUDIO, 39 RB_CONFIG_LAYOUT, 40 RB_CONFIG_MISCELLANEOUS, 41 42 #ifdef HAS_MIDI 43 RB_CONFIG_MIDI_INPUT, 44 #endif 45 46 // CONFIG AUDIO 47 48 // SOUND BUFFER SIZE 49 RB_CONFIG_SBS_512, 50 RB_CONFIG_SBS_1024, 51 RB_CONFIG_SBS_2048, 52 53 // AUDIO BIT DEPTH 54 RB_CONFIG_AUDIO_16BIT, 55 RB_CONFIG_AUDIO_24BIT, 56 57 // AUDIO INTERPOLATION 58 RB_CONFIG_AUDIO_INTRP_DISABLED, 59 RB_CONFIG_AUDIO_INTRP_LINEAR, 60 RB_CONFIG_AUDIO_INTRP_QUADRATIC, 61 RB_CONFIG_AUDIO_INTRP_CUBIC, 62 RB_CONFIG_AUDIO_INTRP_SINC8, 63 RB_CONFIG_AUDIO_INTRP_SINC16, 64 65 // AUDIO FREQUENCY 66 RB_CONFIG_AUDIO_44KHZ, 67 RB_CONFIG_AUDIO_48KHZ, 68 RB_CONFIG_AUDIO_96KHZ, 69 70 // AUDIO INPUT FREQUENCY 71 RB_CONFIG_AUDIO_INPUT_44KHZ, 72 RB_CONFIG_AUDIO_INPUT_48KHZ, 73 RB_CONFIG_AUDIO_INPUT_96KHZ, 74 75 // FREQUENCY SLIDES 76 RB_CONFIG_FREQ_SLIDES_AMIGA, 77 RB_CONFIG_FREQ_SLIDES_LINEAR, 78 79 // CONFIG LAYOUT 80 81 // MOUSE SHAPE 82 RB_CONFIG_MOUSE_NICE, 83 RB_CONFIG_MOUSE_UGLY, 84 RB_CONFIG_MOUSE_AWFUL, 85 RB_CONFIG_MOUSE_USABLE, 86 87 // MOUSE BUSY SHAPE 88 RB_CONFIG_MOUSE_BUSY_GLASS, 89 RB_CONFIG_MOUSE_BUSY_CLOCK, 90 91 // SCOPE STYLE 92 RB_CONFIG_SCOPE_NORMAL, 93 RB_CONFIG_SCOPE_LINED, 94 95 // PATTERN CHANNELS 96 RB_CONFIG_MAXCHAN_4, 97 RB_CONFIG_MAXCHAN_6, 98 RB_CONFIG_MAXCHAN_8, 99 RB_CONFIG_MAXCHAN_12, 100 101 // PATTERN FONT 102 RB_CONFIG_FONT_CAPITALS, 103 RB_CONFIG_FONT_LOWERCASE, 104 RB_CONFIG_FONT_FUTURE, 105 RB_CONFIG_FONT_BOLD, 106 107 // PALETTE ENTRIES 108 RB_CONFIG_PAL_PATTERNTEXT, 109 RB_CONFIG_PAL_BLOCKMARK, 110 RB_CONFIG_PAL_TEXTONBLOCK, 111 RB_CONFIG_PAL_MOUSE, 112 RB_CONFIG_PAL_DESKTOP, 113 RB_CONFIG_PAL_BUTTONS, 114 115 // PALETTE PRESETS 116 RB_CONFIG_PAL_ARCTIC, 117 RB_CONFIG_PAL_LITHE_DARK, 118 RB_CONFIG_PAL_AURORA_BOREALIS, 119 RB_CONFIG_PAL_ROSE, 120 RB_CONFIG_PAL_BLUES, 121 RB_CONFIG_PAL_DARK_MODE, 122 RB_CONFIG_PAL_GOLD, 123 RB_CONFIG_PAL_VIOLENT, 124 RB_CONFIG_PAL_HEAVY_METAL, 125 RB_CONFIG_PAL_WHY_COLORS, 126 RB_CONFIG_PAL_JUNGLE, 127 RB_CONFIG_PAL_USER_DEFINED, 128 129 // FILE SORTING 130 RB_CONFIG_FILESORT_EXT, 131 RB_CONFIG_FILESORT_NAME, 132 133 // WINDOW SIZE 134 RB_CONFIG_WIN_SIZE_AUTO, 135 RB_CONFIG_WIN_SIZE_1X, 136 RB_CONFIG_WIN_SIZE_3X, 137 RB_CONFIG_WIN_SIZE_2X, 138 RB_CONFIG_WIN_SIZE_4X, 139 140 // DISK OP 141 RB_DISKOP_MODULE, 142 RB_DISKOP_INSTR, 143 RB_DISKOP_SAMPLE, 144 RB_DISKOP_PATTERN, 145 RB_DISKOP_TRACK, 146 147 RB_DISKOP_MOD_SAVEAS_MOD, 148 RB_DISKOP_MOD_SAVEAS_XM, 149 RB_DISKOP_MOD_SAVEAS_WAV, 150 RB_DISKOP_INS_SAVEAS_XI, 151 RB_DISKOP_SMP_SAVEAS_RAW, 152 RB_DISKOP_SMP_SAVEAS_IFF, 153 RB_DISKOP_SMP_SAVEAS_WAV, 154 RB_DISKOP_PAT_SAVEAS_XP, 155 RB_DISKOP_TRK_SAVEAS_XT, 156 157 RB_WAV_RENDER_BITDEPTH16, 158 RB_WAV_RENDER_BITDEPTH32, 159 160 NUM_RADIOBUTTONS, 161 162 // groups (must be *after* NUM_RADIOBUTTONS) 163 164 RB_GROUP_HELP, 165 166 RB_GROUP_NIBBLES_PLAYERS, 167 RB_GROUP_NIBBLES_DIFFICULTY, 168 169 RB_GROUP_SAMPLE_LOOP, 170 RB_GROUP_SAMPLE_DEPTH, 171 RB_GROUP_INST_WAVEFORM, 172 173 RB_GROUP_CONFIG_SELECT, 174 RB_GROUP_CONFIG_SOUND_BUFF_SIZE, 175 RB_GROUP_CONFIG_AUDIO_BIT_DEPTH, 176 RB_GROUP_CONFIG_AUDIO_INTERPOLATION, 177 RB_GROUP_CONFIG_AUDIO_FREQ, 178 RB_GROUP_CONFIG_AUDIO_INPUT_FREQ, 179 RB_GROUP_CONFIG_FREQ_SLIDES, 180 181 RB_GROUP_CONFIG_MOUSE, 182 RB_GROUP_CONFIG_MOUSE_BUSY, 183 RB_GROUP_CONFIG_SCOPE, 184 RB_GROUP_CONFIG_PATTERN_CHANS, 185 RB_GROUP_CONFIG_FONT, 186 RB_GROUP_CONFIG_PAL_ENTRIES, 187 RB_GROUP_CONFIG_PAL_PRESET, 188 189 RB_GROUP_CONFIG_FILESORT, 190 RB_GROUP_CONFIG_WIN_SIZE, 191 192 RB_GROUP_DISKOP_ITEM, 193 194 RB_GROUP_DISKOP_MOD_SAVEAS, 195 RB_GROUP_DISKOP_INS_SAVEAS, 196 RB_GROUP_DISKOP_SMP_SAVEAS, 197 RB_GROUP_DISKOP_PAT_SAVEAS, 198 RB_GROUP_DISKOP_TRK_SAVEAS, 199 200 RB_GROUP_WAV_RENDER_BITDEPTH, 201 }; 202 203 enum 204 { 205 RADIOBUTTON_UNCHECKED = 0, 206 RADIOBUTTON_CHECKED = 1, 207 RADIOBUTTON_PRESSED = 2 208 }; 209 210 #define RADIOBUTTON_W 11 211 #define RADIOBUTTON_H 11 212 #define RADIOBUTTON_STATES 3 213 214 typedef struct radioButton_t // DO NOT TOUCH! 215 { 216 uint16_t x, y, clickAreaWidth; 217 uint16_t group; 218 void (*callbackFunc)(void); 219 220 uint8_t state; 221 bool visible; 222 } radioButton_t; 223 224 void drawRadioButton(uint16_t radioButtonID); 225 void showRadioButton(uint16_t radioButtonID); 226 void hideRadioButton(uint16_t radioButtonID); 227 void checkRadioButton(uint16_t radioButtonID); 228 void uncheckRadioButtonGroup(uint16_t radioButtonGroup); 229 void showRadioButtonGroup(uint16_t radioButtonGroup); 230 void hideRadioButtonGroup(uint16_t radioButtonGroup); 231 void handleRadioButtonsWhileMouseDown(void); 232 bool testRadioButtonMouseDown(void); 233 void testRadioButtonMouseRelease(void);