ref: 900219373bae44cbf473a35dd8f414ce67768d28
dir: /src/ft2_pushbuttons.h/
#pragma once #include <stdint.h> #include <stdbool.h> enum // PUSHBUTTONS { // reserved PB_RES_1, PB_RES_2, PB_RES_3, PB_RES_4, PB_RES_5, PB_RES_6, PB_RES_7, PB_RES_8, // POSITION EDITOR PB_POSED_POS_UP, PB_POSED_POS_DOWN, PB_POSED_INS, PB_POSED_PATT_UP, PB_POSED_PATT_DOWN, PB_POSED_DEL, PB_POSED_LEN_UP, PB_POSED_LEN_DOWN, PB_POSED_REP_UP, PB_POSED_REP_DOWN, // SONG/PATTERN PB_BPM_UP, PB_BPM_DOWN, PB_SPEED_UP, PB_SPEED_DOWN, PB_EDITADD_UP, PB_EDITADD_DOWN, PB_PATT_UP, PB_PATT_DOWN, PB_PATTLEN_UP, PB_PATTLEN_DOWN, PB_PATT_EXPAND, PB_PATT_SHRINK, // LOGO PB_LOGO, PB_BADGE, // MAIN MENU PB_ABOUT, PB_NIBBLES, PB_KILL, PB_TRIM, PB_EXTEND_VIEW, PB_TRANSPOSE, PB_INST_ED_EXT, PB_SMP_ED_EXT, PB_ADV_EDIT, PB_ADD_CHANNELS, PB_SUB_CHANNELS, PB_PLAY_SONG, PB_PLAY_PATT, PB_STOP, PB_RECORD_SONG, PB_RECORD_PATT, PB_DISK_OP, PB_INST_ED, PB_SMP_ED, PB_CONFIG, PB_HELP, PB_EXIT_EXT_PATT, // INSTRUMENT SWITCHER PB_RANGE1, PB_RANGE2, PB_RANGE3, PB_RANGE4, PB_RANGE5, PB_RANGE6, PB_RANGE7, PB_RANGE8, PB_RANGE9, PB_RANGE10, PB_RANGE11, PB_RANGE12, PB_RANGE13, PB_RANGE14, PB_RANGE15, PB_RANGE16, PB_SWAP_BANK, PB_SAMPLE_LIST_UP, PB_SAMPLE_LIST_DOWN, // NIBBLES SCREEN PB_NIBBLES_PLAY, PB_NIBBLES_HELP, PB_NIBBLES_HIGHS, PB_NIBBLES_EXIT, // ADVANCED EDIT PB_REMAP_TRACK, PB_REMAP_PATTERN, PB_REMAP_SONG, PB_REMAP_BLOCK, // ABOUT SCREEN PB_EXIT_ABOUT, // HELP SCREEN PB_HELP_EXIT, PB_HELP_SCROLL_UP, PB_HELP_SCROLL_DOWN, // PATTERN EDITOR PB_CHAN_SCROLL_LEFT, PB_CHAN_SCROLL_RIGHT, // TRANSPOSE PB_TRANSP_CUR_INS_TRK_UP, PB_TRANSP_CUR_INS_TRK_DN, PB_TRANSP_CUR_INS_TRK_12UP, PB_TRANSP_CUR_INS_TRK_12DN, PB_TRANSP_ALL_INS_TRK_UP, PB_TRANSP_ALL_INS_TRK_DN, PB_TRANSP_ALL_INS_TRK_12UP, PB_TRANSP_ALL_INS_TRK_12DN, PB_TRANSP_CUR_INS_PAT_UP, PB_TRANSP_CUR_INS_PAT_DN, PB_TRANSP_CUR_INS_PAT_12UP, PB_TRANSP_CUR_INS_PAT_12DN, PB_TRANSP_ALL_INS_PAT_UP, PB_TRANSP_ALL_INS_PAT_DN, PB_TRANSP_ALL_INS_PAT_12UP, PB_TRANSP_ALL_INS_PAT_12DN, PB_TRANSP_CUR_INS_SNG_UP, PB_TRANSP_CUR_INS_SNG_DN, PB_TRANSP_CUR_INS_SNG_12UP, PB_TRANSP_CUR_INS_SNG_12DN, PB_TRANSP_ALL_INS_SNG_UP, PB_TRANSP_ALL_INS_SNG_DN, PB_TRANSP_ALL_INS_SNG_12UP, PB_TRANSP_ALL_INS_SNG_12DN, PB_TRANSP_CUR_INS_BLK_UP, PB_TRANSP_CUR_INS_BLK_DN, PB_TRANSP_CUR_INS_BLK_12UP, PB_TRANSP_CUR_INS_BLK_12DN, PB_TRANSP_ALL_INS_BLK_UP, PB_TRANSP_ALL_INS_BLK_DN, PB_TRANSP_ALL_INS_BLK_12UP, PB_TRANSP_ALL_INS_BLK_12DN, // SAMPLE EDITOR PB_SAMP_SCROLL_LEFT, PB_SAMP_SCROLL_RIGHT, PB_SAMP_PNOTE_UP, PB_SAMP_PNOTE_DOWN, PB_SAMP_STOP, PB_SAMP_PWAVE, PB_SAMP_PRANGE, PB_SAMP_PDISPLAY, PB_SAMP_SHOW_RANGE, PB_SAMP_RANGE_ALL, PB_SAMP_CLR_RANGE, PB_SAMP_ZOOM_OUT, PB_SAMP_SHOW_ALL, PB_SAMP_SAVE_RNG, PB_SAMP_CUT, PB_SAMP_COPY, PB_SAMP_PASTE, PB_SAMP_CROP, PB_SAMP_VOLUME, PB_SAMP_XFADE, PB_SAMP_EXIT, PB_SAMP_CLEAR, PB_SAMP_MIN, PB_SAMP_REPEAT_UP, PB_SAMP_REPEAT_DOWN, PB_SAMP_REPLEN_UP, PB_SAMP_REPLEN_DOWN, // SAMPLE EDITOR EXTENSION PB_SAMP_EXT_CLEAR_COPYBUF, PB_SAMP_EXT_CONV, PB_SAMP_EXT_ECHO, PB_SAMP_EXT_BACKWARDS, PB_SAMP_EXT_CONV_W, PB_SAMP_EXT_MORPH, PB_SAMP_EXT_COPY_INS, PB_SAMP_EXT_COPY_SMP, PB_SAMP_EXT_XCHG_INS, PB_SAMP_EXT_XCHG_SMP, PB_SAMP_EXT_RESAMPLE, PB_SAMP_EXT_MIX_SAMPLE, // INSTRUMENT EDITOR PB_INST_VDEF1, PB_INST_VDEF2, PB_INST_VDEF3, PB_INST_VDEF4, PB_INST_VDEF5, PB_INST_VDEF6, PB_INST_PDEF1, PB_INST_PDEF2, PB_INST_PDEF3, PB_INST_PDEF4, PB_INST_PDEF5, PB_INST_PDEF6, PB_INST_VP_ADD, PB_INST_VP_DEL, PB_INST_VS_UP, PB_INST_VS_DOWN, PB_INST_VREPS_UP, PB_INST_VREPS_DOWN, PB_INST_VREPE_UP, PB_INST_VREPE_DOWN, PB_INST_PP_ADD, PB_INST_PP_DEL, PB_INST_PS_UP, PB_INST_PS_DOWN, PB_INST_PREPS_UP, PB_INST_PREPS_DOWN, PB_INST_PREPE_UP, PB_INST_PREPE_DOWN, PB_INST_VOL_DOWN, PB_INST_VOL_UP, PB_INST_PAN_DOWN, PB_INST_PAN_UP, PB_INST_FTUNE_DOWN, PB_INST_FTUNE_UP, PB_INST_FADEOUT_DOWN, PB_INST_FADEOUT_UP, PB_INST_VIBSPEED_DOWN, PB_INST_VIBSPEED_UP, PB_INST_VIBDEPTH_DOWN, PB_INST_VIBDEPTH_UP, PB_INST_VIBSWEEP_DOWN, PB_INST_VIBSWEEP_UP, PB_INST_EXIT, PB_INST_OCT_UP, PB_INST_HALFTONE_UP, PB_INST_OCT_DOWN, PB_INST_HALFTONE_DOWN, // INSTRUMENT EDITOR EXTENSION PB_INST_EXT_MIDI_CH_DOWN, PB_INST_EXT_MIDI_CH_UP, PB_INST_EXT_MIDI_PRG_DOWN, PB_INST_EXT_MIDI_PRG_UP, PB_INST_EXT_MIDI_BEND_DOWN, PB_INST_EXT_MIDI_BEND_UP, // TRIM SCREEN PB_TRIM_CALC, PB_TRIM_TRIM, // CONFIG LEFT PANEL PB_CONFIG_RESET, PB_CONFIG_LOAD, PB_CONFIG_SAVE, PB_CONFIG_EXIT, // CONFIG AUDIO PB_CONFIG_AUDIO_RESCAN, PB_CONFIG_AUDIO_OUTPUT_DOWN, PB_CONFIG_AUDIO_OUTPUT_UP, PB_CONFIG_AUDIO_INPUT_DOWN, PB_CONFIG_AUDIO_INPUT_UP, PB_CONFIG_AMP_DOWN, PB_CONFIG_AMP_UP, PB_CONFIG_MASTVOL_DOWN, PB_CONFIG_MASTVOL_UP, // CONFIG LAYOUT PB_CONFIG_PAL_R_DOWN, PB_CONFIG_PAL_R_UP, PB_CONFIG_PAL_G_DOWN, PB_CONFIG_PAL_G_UP, PB_CONFIG_PAL_B_DOWN, PB_CONFIG_PAL_B_UP, PB_CONFIG_PAL_CONT_DOWN, PB_CONFIG_PAL_CONT_UP, // CONFIG MISCELLANEOUS PB_CONFIG_QUANTIZE_UP, PB_CONFIG_QUANTIZE_DOWN, PB_CONFIG_MIDICHN_UP, PB_CONFIG_MIDICHN_DOWN, PB_CONFIG_MIDITRANS_UP, PB_CONFIG_MIDITRANS_DOWN, PB_CONFIG_MIDISENS_DOWN, PB_CONFIG_MIDISENS_UP, #ifdef HAS_MIDI // CONFIG MIDI PB_CONFIG_MIDI_INPUT_DOWN, PB_CONFIG_MIDI_INPUT_UP, #endif // DISK OP. PB_DISKOP_SAVE, PB_DISKOP_DELETE, PB_DISKOP_RENAME, PB_DISKOP_MAKEDIR, PB_DISKOP_REFRESH, PB_DISKOP_SET_PATH, PB_DISKOP_SHOW_ALL, PB_DISKOP_EXIT, PB_DISKOP_ROOT, PB_DISKOP_PARENT, #ifdef _WIN32 PB_DISKOP_DRIVE1, PB_DISKOP_DRIVE2, PB_DISKOP_DRIVE3, PB_DISKOP_DRIVE4, PB_DISKOP_DRIVE5, PB_DISKOP_DRIVE6, PB_DISKOP_DRIVE7, PB_DISKOP_DRIVE8, #endif PB_DISKOP_LIST_UP, PB_DISKOP_LIST_DOWN, // WAV RENDERER PB_WAV_RENDER, PB_WAV_EXIT, PB_WAV_FREQ_UP, PB_WAV_FREQ_DOWN, PB_WAV_AMP_UP, PB_WAV_AMP_DOWN, PB_WAV_START_UP, PB_WAV_START_DOWN, PB_WAV_END_UP, PB_WAV_END_DOWN, NUM_PUSHBUTTONS }; enum { PUSHBUTTON_UNPRESSED = 0, PUSHBUTTON_PRESSED = 1 }; // amount of frames to wait #define BUTTON_DOWN_DELAY 25 // font #1/#2 special characters (used for buttons) #define ARROW_UP_STRING "\x05" #define ARROW_DOWN_STRING "\x03" #define ARROW_LEFT_STRING "\x1E" #define ARROW_RIGHT_STRING "\x1F" #define SMALL_1_STRING "\x08" #define SMALL_2_STRING "\x09" #define SMALL_3_STRING "\x0A" #define SMALL_4_STRING "\x0B" #define SMALL_5_STRING "\x0C" #define SMALL_6_STRING "\x0D" typedef struct pushButton_t // DO NOT TOUCH! { uint16_t x, y, w, h; uint8_t preDelay, delayFrames; char *caption, *caption2; void (*callbackFuncOnDown)(void); void (*callbackFuncOnUp)(void); uint8_t state; bool bitmapFlag, visible; const uint8_t *bitmapUnpressed; const uint8_t *bitmapPressed; } pushButton_t; void drawPushButton(uint16_t pushButtonID); void showPushButton(uint16_t pushButtonID); void hidePushButton(uint16_t pushButtonID); void handlePushButtonsWhileMouseDown(void); bool testPushButtonMouseDown(void); int16_t testPushButtonMouseRelease(bool runCallback);