ft2-clone

Fasttracker 2 clone
Log | Files | Refs | README | LICENSE

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);