/* date = June 11th 2023 1:20 pm */ #ifndef VN_WORKSPACE_VIEW_H #define VN_WORKSPACE_VIEW_H struct workspace_view { memory_arena Arena; enum workspace_view_type Type; workspace_panel *Parent; workspace_view *Next; workspace_view *Prev; void *Data; }; enum workspace_view_type { Workspace_View_Startup, Workspace_View_Editor, Workspace_View_CommandPalette, Workspace_View_Settings, }; struct workspace_view_editor { v2 Offset; r32 ZoomLevel; r32 Scale; // sixten(NOTE): Read-only, based on the zoom level workspace_editor_node *FirstNode; workspace_editor_node *LastNode; workspace_editor_node *FirstFreeNode; workspace_editor_node *LastFreeNode; }; struct workspace_view_command_palette { b32 ListerFieldSelected; u8 ListerInput[128]; s32 ListerInputUsed; text_edit_state ListerInputEditState; }; enum workspace_settings_category { Workspace_Settings_All, Workspace_Settings_General, Workspace_Settings_Theme, Workspace_Settings_Developer, }; struct workspace_view_settings { workspace_settings_category Category; // sixten: General b32 GeneralDropdownOpen; // sixten: Theme r32 ThemeScroll; }; //- sixten: Views inline workspace_view *Workspace_CreateNewView(workspace_view_type Type, workspace_panel *Parent); inline void Workspace_DestroyView(workspace_view *View); inline b32 Workspace_ViewIsCurrent(workspace *Workspace, workspace_view *View); inline string Workspace_GetViewName(workspace_view *View); //- sixten: Builder code static void Workspace_ViewListerInputCallback(render_group *Group, glyph_atlas *Atlas, ui_box *Box, void *Data); static void Workspace_BuildViewTypeLister(workspace *Workspace, workspace_view *View); static void Workspace_BuildView(workspace *Workspace, workspace_view *View); #endif //VN_WORKSPACE_VIEW_H