1 #pragma once 2 3 #include <stdint.h> 4 #include <stdbool.h> 5 #include <SDL2/SDL.h> 6 7 // taken from the ptplay project and modified 8 enum ptbuttons 9 { 10 PTB_DUMMY, 11 12 // ALL SCREENS 13 PTB_SONGNAME, 14 PTB_SAMPLENAME, 15 PTB_LOADSAMPLE, 16 17 // ASK DIALOG 18 PTB_SUREY, 19 PTB_SUREN, 20 21 // PAT2SMP ASK DIALOG 22 PTB_PAT2SMP_HI, 23 PTB_PAT2SMP_LO, 24 PTB_PAT2SMP_ABORT, 25 26 // POS ED. SCREEN 27 PTB_PE_BADGE, 28 PTB_PE_PATT, 29 PTB_PE_SCROLLTOP, 30 PTB_PE_SCROLLUP, 31 PTB_PE_EXIT, 32 PTB_PE_SCROLLDOWN, 33 PTB_PE_SCROLLBOT, 34 35 // EDIT OP. SCREEN 36 PTB_EO_TITLEBAR, 37 PTB_EO_1, 38 PTB_EO_2, 39 PTB_EO_3, 40 PTB_EO_EXIT, 41 42 // EDIT OP. SCREEN #1 43 PTB_EO_TRACK_NOTE_UP, 44 PTB_EO_PATT_NOTE_UP, 45 PTB_EO_TRACK_NOTE_DOWN, 46 PTB_EO_PATT_NOTE_DOWN, 47 PTB_EO_TRACK_OCTA_UP, 48 PTB_EO_PATT_OCTA_UP, 49 PTB_EO_TRACK_OCTA_DOWN, 50 PTB_EO_PATT_OCTA_DOWN, 51 52 // EDIT OP. SCREEN #2 53 PTB_EO_RECORD, 54 PTB_EO_DELETE, 55 PTB_EO_KILL, 56 PTB_EO_QUANTIZE, 57 PTB_EO_EXCHGE, 58 PTB_EO_COPY, 59 PTB_EO_METRO_1, 60 PTB_EO_METRO_2, 61 PTB_EO_FROM, 62 PTB_EO_FROM_NUM, 63 PTB_EO_FROM_UP, 64 PTB_EO_FROM_DOWN, 65 PTB_EO_KEYS, 66 PTB_EO_TO, 67 PTB_EO_TO_NUM, 68 PTB_EO_TO_UP, 69 PTB_EO_TO_DOWN, 70 71 // EDIT OP. SCREEN #3 72 PTB_EO_MIX, 73 PTB_EO_ECHO, 74 PTB_EO_POS, 75 PTB_EO_POS_NUM, 76 PTB_EO_POS_UP, 77 PTB_EO_POS_DOWN, 78 PTB_EO_BOOST, 79 PTB_EO_FILTER, 80 PTB_EO_MOD, 81 PTB_EO_MOD_NUM, 82 PTB_EO_MOD_UP, 83 PTB_EO_MOD_DOWN, 84 PTB_EO_X_FADE, 85 PTB_EO_BACKWD, 86 PTB_EO_CB, 87 PTB_EO_CHORD, 88 PTB_EO_FU, 89 PTB_EO_FD, 90 PTB_EO_UPSAMP, 91 PTB_EO_DNSAMP, 92 PTB_EO_VOL, 93 PTB_EO_VOL_NUM, 94 PTB_EO_VOL_UP, 95 PTB_EO_VOL_DOWN, 96 97 // EDIT OP. SCREEN #4 98 PTB_EO_DOCHORD, 99 PTB_EO_MAJOR, 100 PTB_EO_MAJOR7, 101 PTB_EO_NOTE1, 102 PTB_EO_NOTE1_UP, 103 PTB_EO_NOTE1_DOWN, 104 PTB_EO_RESET, 105 PTB_EO_MINOR, 106 PTB_EO_MINOR7, 107 PTB_EO_NOTE2, 108 PTB_EO_NOTE2_UP, 109 PTB_EO_NOTE2_DOWN, 110 PTB_EO_UNDO, 111 PTB_EO_SUS4, 112 PTB_EO_MAJOR6, 113 PTB_EO_NOTE3, 114 PTB_EO_NOTE3_UP, 115 PTB_EO_NOTE3_DOWN, 116 PTB_EO_LENGTH, 117 PTB_EO_MINOR6, 118 PTB_EO_NOTE4, 119 PTB_EO_NOTE4_UP, 120 PTB_EO_NOTE4_DOWN, 121 122 // DISK OP. SCREEN 123 PTB_DO_PACKMOD, 124 PTB_DO_MODARROW, 125 PTB_DO_LOADMODULE, 126 PTB_DO_SAVEMODULE, 127 PTB_DO_SAMPLEFORMAT, 128 PTB_DO_SAMPLEARROW, 129 PTB_DO_LOADSAMPLE, 130 PTB_DO_SAVESAMPLE, 131 PTB_DO_DATAPATH, 132 PTB_DO_PARENT, 133 PTB_DO_REFRESH, 134 PTB_DO_SCROLLTOP, 135 PTB_DO_SCROLLUP, 136 PTB_DO_EXIT, 137 PTB_DO_SCROLLDOWN, 138 PTB_DO_SCROLLBOT, 139 PTB_DO_FILEAREA, 140 141 // CLEAR 142 PTB_CLEARSONG, 143 PTB_CLEARSAMPLES, 144 PTB_CLEARALL, 145 PTB_CLEARCANCEL, 146 147 // MAIN SCREEN 148 PTB_QUIT, 149 PTB_PLAY, 150 PTB_PATTERN, 151 PTB_EDIT, 152 PTB_RECORD, 153 PTB_STOP, 154 PTB_CLEAR, 155 PTB_EDITOP, 156 PTB_DISKOP, 157 PTB_MOD2WAV, 158 PTB_POSED, 159 PTB_PAT2SMP, 160 PTB_SAMPLER, 161 PTB_CHAN1, 162 PTB_CHAN2, 163 PTB_CHAN3, 164 PTB_CHAN4, 165 PTB_ABOUT, 166 PTB_POSS, 167 PTB_POSU, 168 PTB_POSD, 169 PTB_PATTERNS, 170 PTB_PATTERNU, 171 PTB_PATTERND, 172 PTB_LENGTHS, 173 PTB_LENGTHU, 174 PTB_LENGTHD, 175 PTB_FTUNEU, 176 PTB_FTUNED, 177 PTB_SAMPLES, 178 PTB_SAMPLEU, 179 PTB_SAMPLED, 180 PTB_SVOLUMES, 181 PTB_SVOLUMEU, 182 PTB_SVOLUMED, 183 PTB_SLENGTHS, 184 PTB_SLENGTHU, 185 PTB_SLENGTHD, 186 PTB_SREPEATS, 187 PTB_SREPEATU, 188 PTB_SREPEATD, 189 PTB_SREPLENS, 190 PTB_SREPLENU, 191 PTB_SREPLEND, 192 PTB_TEMPOU, 193 PTB_TEMPOD, 194 PTB_POS, 195 PTB_POSINS, 196 PTB_POSDEL, 197 PTB_VISUALS, 198 PTB_PATTBOX, 199 PTB_PATTDATA, 200 201 // SAMPLER SCREEN 202 PTB_SA_EXIT, 203 PTB_SA_PLAYWAVE, 204 PTB_SA_SHOWRANGE, 205 PTB_SA_ZOOMOUT, 206 PTB_SA_STOP, 207 PTB_SA_PLAYDISPLAY, 208 PTB_SA_SHOWALL, 209 PTB_SA_RANGEALL, 210 PTB_SA_LOOP, 211 PTB_SA_PLAYRANGE, 212 PTB_SA_RANGECENTER, 213 PTB_SA_RANGEBEG, 214 PTB_SA_RANGEEND, 215 PTB_SA_CUT, 216 PTB_SA_COPY, 217 PTB_SA_PASTE, 218 PTB_SA_VOLUME, 219 PTB_SA_TUNETONE, 220 PTB_SA_FIXDC, 221 PTB_SA_FILTERS, 222 PTB_SA_SAMPLE, 223 PTB_SA_RESAMPLE, 224 PTB_SA_RESAMPLENOTE, 225 PTB_SA_SAMPLEAREA, 226 PTB_SA_ZOOMBARAREA, 227 PTB_SA_VOL_FROM_NUM, 228 PTB_SA_VOL_TO_NUM, 229 PTB_SA_FIL_LP_CUTOFF, 230 PTB_SA_FIL_HP_CUTOFF 231 }; 232 233 typedef struct guiButton_t 234 { 235 int32_t x1, y1, x2, y2, b; 236 } guiButton_t; 237 238 enum 239 { 240 POINTER_W = 16, 241 POINTER_H = 16, 242 243 POINTER_MODE_IDLE = 0, 244 POINTER_MODE_EDIT = 1, 245 POINTER_MODE_PLAY = 2, 246 POINTER_MODE_MSG1 = 3, 247 POINTER_MODE_RECORD = 4, 248 POINTER_MODE_MSG2 = 5, 249 250 POINTER_GRAY = 0, 251 POINTER_YELLOW = 1, 252 POINTER_BLUE = 2, 253 POINTER_PURPLE = 3, 254 POINTER_GREEN = 4, 255 POINTER_RED = 5 256 }; 257 258 #define NUM_CURSORS 6 259 260 extern SDL_Cursor *cursors[NUM_CURSORS]; 261 262 void setMsgPointer(void); 263 void setErrPointer(void); 264 void pointerSetMode(uint8_t pointerMode, bool carry); 265 void pointerResetThreadSafe(void); // used for effect F00 in replayer (stop song) 266 void pointerSetPreviousMode(void); 267 bool setSystemCursor(SDL_Cursor *cur); 268 void freeMouseCursors(void); 269 bool createMouseCursors(void); 270 271 void readMouseXY(void); 272 void updateMouseScaling(void); 273 void mouseWheelUpHandler(void); 274 void mouseWheelDownHandler(void); 275 void mouseButtonUpHandler(uint8_t mouseButton); 276 void mouseButtonDownHandler(uint8_t mouseButton); 277 void handleGUIButtonRepeat(void); 278 void updateMouseCounters(void); 279