#pragma once #include <stdint.h>#include <stdbool.h>#include "ft2_cpu.h" enum // RADIOBUTTONS{ // HELP RB_HELP_FEATURES, RB_HELP_EFFECTS, RB_HELP_KEYBINDINGS, RB_HELP_HOW_TO_USE_FT2, RB_HELP_FAQ, RB_HELP_KNOWN_BUGS, // NIBBLES RB_NIBBLES_1PLAYER, RB_NIBBLES_2PLAYERS, RB_NIBBLES_NOVICE, RB_NIBBLES_AVERAGE, RB_NIBBLES_PRO, RB_NIBBLES_MANIAC, // SAMPLER RB_SAMPLE_NO_LOOP, RB_SAMPLE_FORWARD_LOOP, RB_SAMPLE_PINGPONG_LOOP, RB_SAMPLE_8BIT, RB_SAMPLE_16BIT, // INSTRUMENT EDITOR RB_INST_WAVE_SINE, RB_INST_WAVE_SQUARE, RB_INST_WAVE_RAMP_DOWN, RB_INST_WAVE_RAMP_UP, // CONFIG SELECT RB_CONFIG_AUDIO, RB_CONFIG_LAYOUT, RB_CONFIG_MISCELLANEOUS, #ifdef HAS_MIDI RB_CONFIG_MIDI_INPUT,#endif // CONFIG AUDIO // SOUND BUFFER SIZE RB_CONFIG_SBS_512, RB_CONFIG_SBS_1024, RB_CONFIG_SBS_2048, // AUDIO BIT DEPTH RB_CONFIG_AUDIO_16BIT, RB_CONFIG_AUDIO_24BIT, // AUDIO INTERPOLATION RB_CONFIG_AUDIO_INTRP_DISABLED, RB_CONFIG_AUDIO_INTRP_LINEAR, RB_CONFIG_AUDIO_INTRP_SINC8, RB_CONFIG_AUDIO_INTRP_SINC16, // AUDIO FREQUENCY RB_CONFIG_AUDIO_44KHZ, RB_CONFIG_AUDIO_48KHZ,#if CPU_64BIT RB_CONFIG_AUDIO_96KHZ,#endif // AUDIO INPUT FREQUENCY RB_CONFIG_AUDIO_INPUT_44KHZ, RB_CONFIG_AUDIO_INPUT_48KHZ, RB_CONFIG_AUDIO_INPUT_96KHZ, // FREQUENCY SLIDES RB_CONFIG_FREQ_SLIDES_AMIGA, RB_CONFIG_FREQ_SLIDES_LINEAR, // CONFIG LAYOUT // MOUSE SHAPE RB_CONFIG_MOUSE_NICE, RB_CONFIG_MOUSE_UGLY, RB_CONFIG_MOUSE_AWFUL, RB_CONFIG_MOUSE_USABLE, // MOUSE BUSY SHAPE RB_CONFIG_MOUSE_BUSY_GLASS, RB_CONFIG_MOUSE_BUSY_CLOCK, // SCOPE STYLE RB_CONFIG_SCOPE_NORMAL, RB_CONFIG_SCOPE_LINED, // PATTERN CHANNELS RB_CONFIG_MAXCHAN_4, RB_CONFIG_MAXCHAN_6, RB_CONFIG_MAXCHAN_8, RB_CONFIG_MAXCHAN_12, // PATTERN FONT RB_CONFIG_FONT_CAPITALS, RB_CONFIG_FONT_LOWERCASE, RB_CONFIG_FONT_FUTURE, RB_CONFIG_FONT_BOLD, // PALETTE ENTRIES RB_CONFIG_PAL_PATTERNTEXT, RB_CONFIG_PAL_BLOCKMARK, RB_CONFIG_PAL_TEXTONBLOCK, RB_CONFIG_PAL_MOUSE, RB_CONFIG_PAL_DESKTOP, RB_CONFIG_PAL_BUTTONS, // PALETTE PRESETS RB_CONFIG_PAL_ARCTIC, RB_CONFIG_PAL_LITHE_DARK, RB_CONFIG_PAL_AURORA_BOREALIS, RB_CONFIG_PAL_ROSE, RB_CONFIG_PAL_BLUES, RB_CONFIG_PAL_DARK_MODE, RB_CONFIG_PAL_GOLD, RB_CONFIG_PAL_VIOLENT, RB_CONFIG_PAL_HEAVY_METAL, RB_CONFIG_PAL_WHY_COLORS, RB_CONFIG_PAL_JUNGLE, RB_CONFIG_PAL_USER_DEFINED, // FILE SORTING RB_CONFIG_FILESORT_EXT, RB_CONFIG_FILESORT_NAME, // WINDOW SIZE RB_CONFIG_WIN_SIZE_AUTO, RB_CONFIG_WIN_SIZE_1X, RB_CONFIG_WIN_SIZE_3X, RB_CONFIG_WIN_SIZE_2X, RB_CONFIG_WIN_SIZE_4X, // DISK OP RB_DISKOP_MODULE, RB_DISKOP_INSTR, RB_DISKOP_SAMPLE, RB_DISKOP_PATTERN, RB_DISKOP_TRACK, RB_DISKOP_MOD_SAVEAS_MOD, RB_DISKOP_MOD_SAVEAS_XM, RB_DISKOP_MOD_SAVEAS_WAV, RB_DISKOP_INS_SAVEAS_XI, RB_DISKOP_SMP_SAVEAS_RAW, RB_DISKOP_SMP_SAVEAS_IFF, RB_DISKOP_SMP_SAVEAS_WAV, RB_DISKOP_PAT_SAVEAS_XP, RB_DISKOP_TRK_SAVEAS_XT, RB_WAV_RENDER_BITDEPTH16, RB_WAV_RENDER_BITDEPTH32, NUM_RADIOBUTTONS, // groups (must be *after* NUM_RADIOBUTTONS) RB_GROUP_HELP, RB_GROUP_NIBBLES_PLAYERS, RB_GROUP_NIBBLES_DIFFICULTY, RB_GROUP_SAMPLE_LOOP, RB_GROUP_SAMPLE_DEPTH, RB_GROUP_INST_WAVEFORM, RB_GROUP_CONFIG_SELECT, RB_GROUP_CONFIG_SOUND_BUFF_SIZE, RB_GROUP_CONFIG_AUDIO_BIT_DEPTH, RB_GROUP_CONFIG_AUDIO_INTERPOLATION, RB_GROUP_CONFIG_AUDIO_FREQ, RB_GROUP_CONFIG_AUDIO_INPUT_FREQ, RB_GROUP_CONFIG_FREQ_SLIDES, RB_GROUP_CONFIG_MOUSE, RB_GROUP_CONFIG_MOUSE_BUSY, RB_GROUP_CONFIG_SCOPE, RB_GROUP_CONFIG_PATTERN_CHANS, RB_GROUP_CONFIG_FONT, RB_GROUP_CONFIG_PAL_ENTRIES, RB_GROUP_CONFIG_PAL_PRESET, RB_GROUP_CONFIG_FILESORT, RB_GROUP_CONFIG_WIN_SIZE, RB_GROUP_DISKOP_ITEM, RB_GROUP_DISKOP_MOD_SAVEAS, RB_GROUP_DISKOP_INS_SAVEAS, RB_GROUP_DISKOP_SMP_SAVEAS, RB_GROUP_DISKOP_PAT_SAVEAS, RB_GROUP_DISKOP_TRK_SAVEAS, RB_GROUP_WAV_RENDER_BITDEPTH,}; enum{ RADIOBUTTON_UNCHECKED = 0, RADIOBUTTON_CHECKED = 1, RADIOBUTTON_PRESSED = 2}; #define RADIOBUTTON_W 11#define RADIOBUTTON_H 11#define RADIOBUTTON_STATES 3 typedef struct radioButton_t // DO NOT TOUCH!{ uint16_t x, y, clickAreaWidth; uint16_t group; void (*callbackFunc)(void); uint8_t state; bool visible;} radioButton_t; void drawRadioButton(uint16_t radioButtonID);void showRadioButton(uint16_t radioButtonID);void hideRadioButton(uint16_t radioButtonID);void checkRadioButton(uint16_t radioButtonID);void uncheckRadioButtonGroup(uint16_t radioButtonGroup);void showRadioButtonGroup(uint16_t radioButtonGroup);void hideRadioButtonGroup(uint16_t radioButtonGroup);void handleRadioButtonsWhileMouseDown(void);bool testRadioButtonMouseDown(void);void testRadioButtonMouseRelease(void);
#pragma once
#include <stdint.h>
#include <stdbool.h>
#include "ft2_cpu.h"
enum // RADIOBUTTONS
{
// HELP
RB_HELP_FEATURES,
RB_HELP_EFFECTS,
RB_HELP_KEYBINDINGS,
RB_HELP_HOW_TO_USE_FT2,
RB_HELP_FAQ,
RB_HELP_KNOWN_BUGS,
// NIBBLES
RB_NIBBLES_1PLAYER,
RB_NIBBLES_2PLAYERS,
RB_NIBBLES_NOVICE,
RB_NIBBLES_AVERAGE,
RB_NIBBLES_PRO,
RB_NIBBLES_MANIAC,
// SAMPLER
RB_SAMPLE_NO_LOOP,
RB_SAMPLE_FORWARD_LOOP,
RB_SAMPLE_PINGPONG_LOOP,
RB_SAMPLE_8BIT,
RB_SAMPLE_16BIT,
// INSTRUMENT EDITOR
RB_INST_WAVE_SINE,
RB_INST_WAVE_SQUARE,
RB_INST_WAVE_RAMP_DOWN,
RB_INST_WAVE_RAMP_UP,
// CONFIG SELECT
RB_CONFIG_AUDIO,
RB_CONFIG_LAYOUT,
RB_CONFIG_MISCELLANEOUS,
#ifdef HAS_MIDI
RB_CONFIG_MIDI_INPUT,
#endif
// CONFIG AUDIO
// SOUND BUFFER SIZE
RB_CONFIG_SBS_512,
RB_CONFIG_SBS_1024,
RB_CONFIG_SBS_2048,
// AUDIO BIT DEPTH
RB_CONFIG_AUDIO_16BIT,
RB_CONFIG_AUDIO_24BIT,
// AUDIO INTERPOLATION
RB_CONFIG_AUDIO_INTRP_DISABLED,
RB_CONFIG_AUDIO_INTRP_LINEAR,
RB_CONFIG_AUDIO_INTRP_SINC8,
RB_CONFIG_AUDIO_INTRP_SINC16,
// AUDIO FREQUENCY
RB_CONFIG_AUDIO_44KHZ,
RB_CONFIG_AUDIO_48KHZ,
#if CPU_64BIT
RB_CONFIG_AUDIO_96KHZ,
#endif
// AUDIO INPUT FREQUENCY
RB_CONFIG_AUDIO_INPUT_44KHZ,
RB_CONFIG_AUDIO_INPUT_48KHZ,
RB_CONFIG_AUDIO_INPUT_96KHZ,
// FREQUENCY SLIDES
RB_CONFIG_FREQ_SLIDES_AMIGA,
RB_CONFIG_FREQ_SLIDES_LINEAR,
// CONFIG LAYOUT
// MOUSE SHAPE
RB_CONFIG_MOUSE_NICE,
RB_CONFIG_MOUSE_UGLY,
RB_CONFIG_MOUSE_AWFUL,
RB_CONFIG_MOUSE_USABLE,
// MOUSE BUSY SHAPE
RB_CONFIG_MOUSE_BUSY_GLASS,
RB_CONFIG_MOUSE_BUSY_CLOCK,
// SCOPE STYLE
RB_CONFIG_SCOPE_NORMAL,
RB_CONFIG_SCOPE_LINED,
// PATTERN CHANNELS
RB_CONFIG_MAXCHAN_4,
RB_CONFIG_MAXCHAN_6,
RB_CONFIG_MAXCHAN_8,
RB_CONFIG_MAXCHAN_12,
// PATTERN FONT
RB_CONFIG_FONT_CAPITALS,
RB_CONFIG_FONT_LOWERCASE,
RB_CONFIG_FONT_FUTURE,
RB_CONFIG_FONT_BOLD,
// PALETTE ENTRIES
RB_CONFIG_PAL_PATTERNTEXT,
RB_CONFIG_PAL_BLOCKMARK,
RB_CONFIG_PAL_TEXTONBLOCK,
RB_CONFIG_PAL_MOUSE,
RB_CONFIG_PAL_DESKTOP,
RB_CONFIG_PAL_BUTTONS,
// PALETTE PRESETS
RB_CONFIG_PAL_ARCTIC,
RB_CONFIG_PAL_LITHE_DARK,
RB_CONFIG_PAL_AURORA_BOREALIS,
RB_CONFIG_PAL_ROSE,
RB_CONFIG_PAL_BLUES,
RB_CONFIG_PAL_DARK_MODE,
RB_CONFIG_PAL_GOLD,
RB_CONFIG_PAL_VIOLENT,
RB_CONFIG_PAL_HEAVY_METAL,
RB_CONFIG_PAL_WHY_COLORS,
RB_CONFIG_PAL_JUNGLE,
RB_CONFIG_PAL_USER_DEFINED,
// FILE SORTING
RB_CONFIG_FILESORT_EXT,
RB_CONFIG_FILESORT_NAME,
// WINDOW SIZE
RB_CONFIG_WIN_SIZE_AUTO,
RB_CONFIG_WIN_SIZE_1X,
RB_CONFIG_WIN_SIZE_3X,
RB_CONFIG_WIN_SIZE_2X,
RB_CONFIG_WIN_SIZE_4X,
// DISK OP
RB_DISKOP_MODULE,
RB_DISKOP_INSTR,
RB_DISKOP_SAMPLE,
RB_DISKOP_PATTERN,
RB_DISKOP_TRACK,
RB_DISKOP_MOD_SAVEAS_MOD,
RB_DISKOP_MOD_SAVEAS_XM,
RB_DISKOP_MOD_SAVEAS_WAV,
RB_DISKOP_INS_SAVEAS_XI,
RB_DISKOP_SMP_SAVEAS_RAW,
RB_DISKOP_SMP_SAVEAS_IFF,
RB_DISKOP_SMP_SAVEAS_WAV,
RB_DISKOP_PAT_SAVEAS_XP,
RB_DISKOP_TRK_SAVEAS_XT,
RB_WAV_RENDER_BITDEPTH16,
RB_WAV_RENDER_BITDEPTH32,
NUM_RADIOBUTTONS,
// groups (must be *after* NUM_RADIOBUTTONS)
RB_GROUP_HELP,
RB_GROUP_NIBBLES_PLAYERS,
RB_GROUP_NIBBLES_DIFFICULTY,
RB_GROUP_SAMPLE_LOOP,
RB_GROUP_SAMPLE_DEPTH,
RB_GROUP_INST_WAVEFORM,
RB_GROUP_CONFIG_SELECT,
RB_GROUP_CONFIG_SOUND_BUFF_SIZE,
RB_GROUP_CONFIG_AUDIO_BIT_DEPTH,
RB_GROUP_CONFIG_AUDIO_INTERPOLATION,
RB_GROUP_CONFIG_AUDIO_FREQ,
RB_GROUP_CONFIG_AUDIO_INPUT_FREQ,
RB_GROUP_CONFIG_FREQ_SLIDES,
RB_GROUP_CONFIG_MOUSE,
RB_GROUP_CONFIG_MOUSE_BUSY,
RB_GROUP_CONFIG_SCOPE,
RB_GROUP_CONFIG_PATTERN_CHANS,
RB_GROUP_CONFIG_FONT,
RB_GROUP_CONFIG_PAL_ENTRIES,
RB_GROUP_CONFIG_PAL_PRESET,
RB_GROUP_CONFIG_FILESORT,
RB_GROUP_CONFIG_WIN_SIZE,
RB_GROUP_DISKOP_ITEM,
RB_GROUP_DISKOP_MOD_SAVEAS,
RB_GROUP_DISKOP_INS_SAVEAS,
RB_GROUP_DISKOP_SMP_SAVEAS,
RB_GROUP_DISKOP_PAT_SAVEAS,
RB_GROUP_DISKOP_TRK_SAVEAS,
RB_GROUP_WAV_RENDER_BITDEPTH,
};
enum
{
RADIOBUTTON_UNCHECKED = 0,
RADIOBUTTON_CHECKED = 1,
RADIOBUTTON_PRESSED = 2
};
#define RADIOBUTTON_W 11
#define RADIOBUTTON_H 11
#define RADIOBUTTON_STATES 3
typedef struct radioButton_t // DO NOT TOUCH!
{
uint16_t x, y, clickAreaWidth;
uint16_t group;
void (*callbackFunc)(void);
uint8_t state;
bool visible;
} radioButton_t;
void drawRadioButton(uint16_t radioButtonID);
void showRadioButton(uint16_t radioButtonID);
void hideRadioButton(uint16_t radioButtonID);
void checkRadioButton(uint16_t radioButtonID);
void uncheckRadioButtonGroup(uint16_t radioButtonGroup);
void showRadioButtonGroup(uint16_t radioButtonGroup);
void hideRadioButtonGroup(uint16_t radioButtonGroup);
void handleRadioButtonsWhileMouseDown(void);
bool testRadioButtonMouseDown(void);
void testRadioButtonMouseRelease(void);