/* date = May 13th 2023 6:20 pm */ #ifndef VN_WORKSPACE_EDITOR_H #define VN_WORKSPACE_EDITOR_H /* sixten(NOTE): Node types * * Text(String, opt. Character) -> Node * Branch(Strings[0..n]) -> Nodes[0..n] * */ enum workspace_editor_node_type { Workspace_EditorNode_None, Workspace_EditorNode_Start, Workspace_EditorNode_Text, Workspace_EditorNode_Branch, }; struct workspace_editor_node { workspace_editor_node_type Type; workspace_editor_node *Next; workspace_editor_node *Prev; ui_box *Box; ui_box *TitleBox; ui_box *CloseBox; v2 P; }; struct workspace_editor_lister_dropdown { // sixten: Input field char InputField[128]; s32 InputFieldUsed; b32 InputFieldSelected; // sixten: Properties b32 Open; v2 P; }; //- sixten: Managing nodes static workspace_editor_node *Workspace_GetNewEditorNode(struct workspace_view *View); //- sixten: Transformations inline v2 Workspace_ViewToWorld(v2 Offset, r32 Scale, v2 Dim, v2 P); inline v2 Workspace_WorldToView(v2 Offset, r32 Scale, v2 Dim, v2 P); inline r32 Workspace_CalculateScaleFromZoomLevel(r32 ZoomLevel); //- sixten: Lister dropdown static void Workspace_OpenListerDropdown(v2 MouseP); //- sixten: Builder code static void Workspace_BuildEditorListerDropdown(workspace_editor_lister_dropdown *ListerDropdown); static void Workspace_EditorDrawCallback(render_group *Group, glyph_atlas *Atlas, ui_box *Box, void *Data); static void Workspace_BuildEditor(struct workspace_view *View); #endif //VN_WORKSPACE_EDITOR_H