/* 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 * Menu(Strings[0..n]) -> Nodes[0..n] * */ enum workspace_editor_node_type { Workspace_EditorNode_None, Workspace_EditorNode_Text, Workspace_EditorNode_Menu, }; struct workspace_editor_node { workspace_editor_node_type Type; workspace_editor_node *Next; workspace_editor_node *Prev; ui_box *Box; ui_box *TitleBox; 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: Builder code static void Workspace_EditorDrawCallback(render_group *Group, glyph_atlas *Atlas, ui_box *Box, void *Data); static void Workspace_BuildEditor(struct workspace *Workspace, struct workspace_view *View); #endif //VN_WORKSPACE_EDITOR_H