summaryrefslogtreecommitdiff
path: root/src/gui/console.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/console.h')
-rw-r--r--src/gui/console.h67
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{};
+};