/* date = June 11th 2023 1:20 pm */ #ifndef VN_WORKSPACE_VIEW_H #define VN_WORKSPACE_VIEW_H //////////////////////////////// //~ sixten: Workspace View Types struct workspace_view { arena *Arena; workspace_panel *Parent; workspace_view *Next; workspace_view *Prev; enum workspace_view_kind Kind; void *Data; }; enum workspace_view_kind { W_ViewKind_None, W_ViewKind_Startup, W_ViewKind_Settings, W_ViewKind_FileLister, W_ViewKind_TextEditor, W_ViewKind_SceneView, W_ViewKind_NavEditor, W_ViewKind_ImageViewer, W_ViewKind_Error, }; struct workspace_view_error { string Message; }; enum workspace_settings_category { W_Settings_All, W_Settings_General, W_Settings_Developer, }; struct workspace_view_settings { workspace_settings_category Category; r32 GlobalScroll; // sixten: General b32 GeneralDropdownOpen; }; struct workspace_view_image_viewer { string FileName; render_handle Texture; r32 Scale; v2_r32 Offset; }; //////////////////////////////// //~ sixten: Workspace View Functions //- sixten: Views inline workspace_view *W_CreateNewView(workspace_view_kind Type, workspace_panel *Parent); inline void W_DestroyView(workspace_view *View); inline b32 W_ViewIsCurrent(workspace_view *View); inline string W_NameFromView(arena *Arena, workspace_view *View); //- sixten: Builder code static void W_ViewListerInputCallback(render_group *Group, glyph_atlas *Atlas, ui_box *Box, void *Data); static void W_BuildViewTypeLister(workspace_view *View); static void W_BuildView(workspace_view *View); //- sixten: View Implementations static b32 W_ImageViewerSetup(workspace_view *View, string Name, string Contents); static void W_BuildImageViewer(workspace_view *View); static void W_BuildSceneView(workspace_view *View); static void W_BuildSettings(workspace_view *View); #endif //VN_WORKSPACE_VIEW_H