diff options
Diffstat (limited to 'src/gui/console.h')
| -rw-r--r-- | src/gui/console.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/gui/console.h b/src/gui/console.h index e69de29..0730f15 100644 --- a/src/gui/console.h +++ b/src/gui/console.h @@ -0,0 +1,67 @@ +#pragma once +#include "base.h" + +enum RESIZE_EDGES : U8 { + RESIZE_NONE = 0, + RESIZE_LEFT = 1 << 0, + RESIZE_RIGHT = 1 << 1, + RESIZE_BOTTOM = 1 << 2 +}; + +enum CONSOLE_MENU_INPUT_MODE : U8 { + CONSOLE_MENU_INPUT_NONE = 0, + CONSOLE_MENU_INPUT_HIST = 1, + CONSOLE_MENU_INPUT_CVAR = 2 +}; + +struct CVAR; + +struct CONSOLE_WRAPPED_LINE { + STR text{}; + U64 source_id{}; +}; + +struct GUI_CONSOLEWINDOW : GUI_WINDOW { + struct GUI_CONSOLEWINDOW_MENU { + struct GUI_CONSOLEWINDOW_INPUT_MENU { + char suppressed_value[GUI_TEXTBOX_MAX]{}; + LIST<GUI_CONTEXTMENU_ITEM> items{}; + CONSOLE_MENU_INPUT_MODE mode{}; + char query[GUI_TEXTBOX_MAX]{}; + GUI_CONTEXTMENU* menu{}; + LIST<CVAR*> cvars{}; + U32 history_size{}; + U32 cvar_count{}; + U8 suppressed{}; + } input; + + struct GUI_CONSOLEWINDOW_OUTPUT_MENU { + LIST<GUI_CONTEXTMENU_ITEM> items{}; + GUI_CONTEXTMENU* menu{}; + } output; + } menus; + + LIST<CONSOLE_WRAPPED_LINE> wrapped_lines{}; + U64 wrapped_revision{(U64)-1}; + I32 wrapped_width{-1}; + U64 seen_revision{}; + I32 scroll_offset{}; + I32 visible_rows{}; + + U64 output_selection_anchor{}; + U64 output_selection_cursor{}; + U8 output_selection_active{}; + U8 output_selecting{}; + U8 copy_key_held{}; + + GUI_TEXTBOX* input{}; + GUI_BUTTON* close{}; + GUI_TITLE* title{}; + + RESIZE_EDGES active_edges = RESIZE_NONE; + VEC2 drag_start_mouse{}; + VEC2 drag_start_pos{}; + VEC2 drag_start_sz{}; + U8 lmb_held{}; + U8 rmb_held{}; +}; |
