ref: 4dfccacdd7d6538d2073a020a1b7f7d1fb4bf774
dir: /src/ft2_textboxes.h/
#pragma once #include <stdint.h> #include <stdbool.h> #include <SDL2/SDL.h> enum // TEXTBOXES { TB_RES_1, // reserved TB_INST1, TB_INST2, TB_INST3, TB_INST4, TB_INST5, TB_INST6, TB_INST7, TB_INST8, TB_SAMP1, TB_SAMP2, TB_SAMP3, TB_SAMP4, TB_SAMP5, TB_SONG_NAME, TB_DISKOP_FILENAME, TB_CONF_DEF_MODS_DIR, TB_CONF_DEF_INSTRS_DIR, TB_CONF_DEF_SAMPS_DIR, TB_CONF_DEF_PATTS_DIR, TB_CONF_DEF_TRACKS_DIR, NUM_TEXTBOXES }; #define TEXT_CURSOR_BLINK_RATE 6 #define TEXT_SCROLL_VALUE 30 enum { TEXTBOX_NO_UPDATE = 0, TEXTBOX_UPDATE = 1 }; typedef struct textBox_t // DO NOT TOUCH! { uint16_t x, y, w; uint8_t h, tx, ty; uint16_t maxChars; bool rightMouseButton, changeMouseCursor; // these ones are changed at run time char *textPtr; bool visible; uint8_t *renderBuf; int16_t cursorPos; uint16_t renderW, renderBufW, renderBufH; int32_t bufOffset; } textBox_t; bool textIsMarked(void); void exitTextEditing(void); int16_t getTextCursorX(textBox_t *t); int16_t getTextCursorY(textBox_t *t); void drawTextBox(uint16_t textBoxID); void showTextBox(uint16_t textBoxID); void hideTextBox(uint16_t textBoxID); bool testTextBoxMouseDown(void); void updateTextBoxPointers(void); void setupInitialTextBoxPointers(void); void setTextCursorToEnd(textBox_t *t); void handleTextEditControl(SDL_Keycode keycode); void handleTextEditInputChar(char textChar); void handleTextBoxWhileMouseDown(void); void freeTextBoxes(void);