diff options
author | rtk0c <[email protected]> | 2022-06-27 18:27:13 -0700 |
---|---|---|
committer | rtk0c <[email protected]> | 2022-06-27 18:27:13 -0700 |
commit | 8f0dda5eab181b0f14f2652b4e984aaaae3f258c (patch) | |
tree | 4b825dc642cb6eb9a060e54bf8d69288fbee4904 /3rdparty/imgui-node-editor/imgui_node_editor_api.cpp | |
parent | fad6a88a13ab1f888ab25ad0aae19c1d63aa0623 (diff) |
Start from a clean slate
Diffstat (limited to '3rdparty/imgui-node-editor/imgui_node_editor_api.cpp')
-rw-r--r-- | 3rdparty/imgui-node-editor/imgui_node_editor_api.cpp | 734 |
1 files changed, 0 insertions, 734 deletions
diff --git a/3rdparty/imgui-node-editor/imgui_node_editor_api.cpp b/3rdparty/imgui-node-editor/imgui_node_editor_api.cpp deleted file mode 100644 index cc6cdc0..0000000 --- a/3rdparty/imgui-node-editor/imgui_node_editor_api.cpp +++ /dev/null @@ -1,734 +0,0 @@ -//------------------------------------------------------------------------------ -// VERSION 0.9.1 -// -// LICENSE -// This software is dual-licensed to the public domain and under the following -// license: you are granted a perpetual, irrevocable license to copy, modify, -// publish, and distribute this file as you see fit. -// -// CREDITS -// Written by Michal Cichon -//------------------------------------------------------------------------------ -# include "imgui_node_editor_internal.h" -# include <algorithm> - - -//------------------------------------------------------------------------------ -static ax::NodeEditor::Detail::EditorContext* s_Editor = nullptr; - - -//------------------------------------------------------------------------------ -template <typename C, typename I, typename F> -static int BuildIdList(C& container, I* list, int listSize, F&& accept) -{ - if (list != nullptr) - { - int count = 0; - for (auto object : container) - { - if (listSize <= 0) - break; - - if (accept(object)) - { - list[count] = I(object->ID().AsPointer()); - ++count; - --listSize;} - } - - return count; - } - else - return static_cast<int>(std::count_if(container.begin(), container.end(), accept)); -} - - -//------------------------------------------------------------------------------ -ax::NodeEditor::EditorContext* ax::NodeEditor::CreateEditor(const Config* config) -{ - return reinterpret_cast<ax::NodeEditor::EditorContext*>(new ax::NodeEditor::Detail::EditorContext(config)); -} - -void ax::NodeEditor::DestroyEditor(EditorContext* ctx) -{ - auto lastContext = GetCurrentEditor(); - - // Set context we're about to destroy as current, to give callback valid context - if (lastContext != ctx) - SetCurrentEditor(ctx); - - auto editor = reinterpret_cast<ax::NodeEditor::Detail::EditorContext*>(ctx); - - delete editor; - - if (lastContext != ctx) - SetCurrentEditor(lastContext); -} - -void ax::NodeEditor::SetCurrentEditor(EditorContext* ctx) -{ - s_Editor = reinterpret_cast<ax::NodeEditor::Detail::EditorContext*>(ctx); -} - -ax::NodeEditor::EditorContext* ax::NodeEditor::GetCurrentEditor() -{ - return reinterpret_cast<ax::NodeEditor::EditorContext*>(s_Editor); -} - -ax::NodeEditor::Style& ax::NodeEditor::GetStyle() -{ - return s_Editor->GetStyle(); -} - -const char* ax::NodeEditor::GetStyleColorName(StyleColor colorIndex) -{ - return s_Editor->GetStyle().GetColorName(colorIndex); -} - -void ax::NodeEditor::PushStyleColor(StyleColor colorIndex, const ImVec4& color) -{ - s_Editor->GetStyle().PushColor(colorIndex, color); -} - -void ax::NodeEditor::PopStyleColor(int count) -{ - s_Editor->GetStyle().PopColor(count); -} - -void ax::NodeEditor::PushStyleVar(StyleVar varIndex, float value) -{ - s_Editor->GetStyle().PushVar(varIndex, value); -} - -void ax::NodeEditor::PushStyleVar(StyleVar varIndex, const ImVec2& value) -{ - s_Editor->GetStyle().PushVar(varIndex, value); -} - -void ax::NodeEditor::PushStyleVar(StyleVar varIndex, const ImVec4& value) -{ - s_Editor->GetStyle().PushVar(varIndex, value); -} - -void ax::NodeEditor::PopStyleVar(int count) -{ - s_Editor->GetStyle().PopVar(count); -} - -void ax::NodeEditor::Begin(const char* id, const ImVec2& size) -{ - s_Editor->Begin(id, size); -} - -void ax::NodeEditor::End() -{ - s_Editor->End(); -} - -void ax::NodeEditor::BeginNode(NodeId id) -{ - s_Editor->GetNodeBuilder().Begin(id); -} - -void ax::NodeEditor::BeginPin(PinId id, PinKind kind) -{ - s_Editor->GetNodeBuilder().BeginPin(id, kind); -} - -void ax::NodeEditor::PinRect(const ImVec2& a, const ImVec2& b) -{ - s_Editor->GetNodeBuilder().PinRect(a, b); -} - -void ax::NodeEditor::PinPivotRect(const ImVec2& a, const ImVec2& b) -{ - s_Editor->GetNodeBuilder().PinPivotRect(a, b); -} - -void ax::NodeEditor::PinPivotSize(const ImVec2& size) -{ - s_Editor->GetNodeBuilder().PinPivotSize(size); -} - -void ax::NodeEditor::PinPivotScale(const ImVec2& scale) -{ - s_Editor->GetNodeBuilder().PinPivotScale(scale); -} - -void ax::NodeEditor::PinPivotAlignment(const ImVec2& alignment) -{ - s_Editor->GetNodeBuilder().PinPivotAlignment(alignment); -} - -void ax::NodeEditor::EndPin() -{ - s_Editor->GetNodeBuilder().EndPin(); -} - -void ax::NodeEditor::Group(const ImVec2& size) -{ - s_Editor->GetNodeBuilder().Group(size); -} - -void ax::NodeEditor::EndNode() -{ - s_Editor->GetNodeBuilder().End(); -} - -bool ax::NodeEditor::BeginGroupHint(NodeId nodeId) -{ - return s_Editor->GetHintBuilder().Begin(nodeId); -} - -ImVec2 ax::NodeEditor::GetGroupMin() -{ - return s_Editor->GetHintBuilder().GetGroupMin(); -} - -ImVec2 ax::NodeEditor::GetGroupMax() -{ - return s_Editor->GetHintBuilder().GetGroupMax(); -} - -ImDrawList* ax::NodeEditor::GetHintForegroundDrawList() -{ - return s_Editor->GetHintBuilder().GetForegroundDrawList(); -} - -ImDrawList* ax::NodeEditor::GetHintBackgroundDrawList() -{ - return s_Editor->GetHintBuilder().GetBackgroundDrawList(); -} - -void ax::NodeEditor::EndGroupHint() -{ - s_Editor->GetHintBuilder().End(); -} - -ImDrawList* ax::NodeEditor::GetNodeBackgroundDrawList(NodeId nodeId) -{ - if (auto node = s_Editor->FindNode(nodeId)) - return s_Editor->GetNodeBuilder().GetUserBackgroundDrawList(node); - else - return nullptr; -} - -bool ax::NodeEditor::Link(LinkId id, PinId startPinId, PinId endPinId, const ImVec4& color/* = ImVec4(1, 1, 1, 1)*/, float thickness/* = 1.0f*/) -{ - return s_Editor->DoLink(id, startPinId, endPinId, ImColor(color), thickness); -} - -void ax::NodeEditor::Flow(LinkId linkId, FlowDirection direction) -{ - if (auto link = s_Editor->FindLink(linkId)) - s_Editor->Flow(link, direction); -} - -bool ax::NodeEditor::BeginCreate(const ImVec4& color, float thickness) -{ - auto& context = s_Editor->GetItemCreator(); - - if (context.Begin()) - { - context.SetStyle(ImColor(color), thickness); - return true; - } - else - return false; -} - -bool ax::NodeEditor::QueryNewLink(PinId* startId, PinId* endId) -{ - using Result = ax::NodeEditor::Detail::CreateItemAction::Result; - - auto& context = s_Editor->GetItemCreator(); - - return context.QueryLink(startId, endId) == Result::True; -} - -bool ax::NodeEditor::QueryNewLink(PinId* startId, PinId* endId, const ImVec4& color, float thickness) -{ - using Result = ax::NodeEditor::Detail::CreateItemAction::Result; - - auto& context = s_Editor->GetItemCreator(); - - auto result = context.QueryLink(startId, endId); - if (result != Result::Indeterminate) - context.SetStyle(ImColor(color), thickness); - - return result == Result::True; -} - -bool ax::NodeEditor::QueryNewNode(PinId* pinId) -{ - using Result = ax::NodeEditor::Detail::CreateItemAction::Result; - - auto& context = s_Editor->GetItemCreator(); - - return context.QueryNode(pinId) == Result::True; -} - -bool ax::NodeEditor::QueryNewNode(PinId* pinId, const ImVec4& color, float thickness) -{ - using Result = ax::NodeEditor::Detail::CreateItemAction::Result; - - auto& context = s_Editor->GetItemCreator(); - - auto result = context.QueryNode(pinId); - if (result != Result::Indeterminate) - context.SetStyle(ImColor(color), thickness); - - return result == Result::True; -} - -bool ax::NodeEditor::AcceptNewItem() -{ - using Result = ax::NodeEditor::Detail::CreateItemAction::Result; - - auto& context = s_Editor->GetItemCreator(); - - return context.AcceptItem() == Result::True; -} - -bool ax::NodeEditor::AcceptNewItem(const ImVec4& color, float thickness) -{ - using Result = ax::NodeEditor::Detail::CreateItemAction::Result; - - auto& context = s_Editor->GetItemCreator(); - - auto result = context.AcceptItem(); - if (result != Result::Indeterminate) - context.SetStyle(ImColor(color), thickness); - - return result == Result::True; -} - -void ax::NodeEditor::RejectNewItem() -{ - auto& context = s_Editor->GetItemCreator(); - - context.RejectItem(); -} - -void ax::NodeEditor::RejectNewItem(const ImVec4& color, float thickness) -{ - using Result = ax::NodeEditor::Detail::CreateItemAction::Result; - - auto& context = s_Editor->GetItemCreator(); - - if (context.RejectItem() != Result::Indeterminate) - context.SetStyle(ImColor(color), thickness); -} - -void ax::NodeEditor::EndCreate() -{ - auto& context = s_Editor->GetItemCreator(); - - context.End(); -} - -bool ax::NodeEditor::BeginDelete() -{ - auto& context = s_Editor->GetItemDeleter(); - - return context.Begin(); -} - -bool ax::NodeEditor::QueryDeletedLink(LinkId* linkId, PinId* startId, PinId* endId) -{ - auto& context = s_Editor->GetItemDeleter(); - - return context.QueryLink(linkId, startId, endId); -} - -bool ax::NodeEditor::QueryDeletedNode(NodeId* nodeId) -{ - auto& context = s_Editor->GetItemDeleter(); - - return context.QueryNode(nodeId); -} - -bool ax::NodeEditor::AcceptDeletedItem(bool deleteDependencies) -{ - auto& context = s_Editor->GetItemDeleter(); - - return context.AcceptItem(deleteDependencies); -} - -void ax::NodeEditor::RejectDeletedItem() -{ - auto& context = s_Editor->GetItemDeleter(); - - context.RejectItem(); -} - -void ax::NodeEditor::EndDelete() -{ - auto& context = s_Editor->GetItemDeleter(); - - context.End(); -} - -void ax::NodeEditor::SetNodePosition(NodeId nodeId, const ImVec2& position) -{ - s_Editor->SetNodePosition(nodeId, position); -} - -void ax::NodeEditor::SetGroupSize(NodeId nodeId, const ImVec2& size) -{ - s_Editor->SetGroupSize(nodeId, size); -} - -ImVec2 ax::NodeEditor::GetNodePosition(NodeId nodeId) -{ - return s_Editor->GetNodePosition(nodeId); -} - -ImVec2 ax::NodeEditor::GetNodeSize(NodeId nodeId) -{ - return s_Editor->GetNodeSize(nodeId); -} - -void ax::NodeEditor::CenterNodeOnScreen(NodeId nodeId) -{ - if (auto node = s_Editor->FindNode(nodeId)) - node->CenterOnScreenInNextFrame(); -} - -void ax::NodeEditor::SetNodeZPosition(NodeId nodeId, float z) -{ - s_Editor->SetNodeZPosition(nodeId, z); -} - -float ax::NodeEditor::GetNodeZPosition(NodeId nodeId) -{ - return s_Editor->GetNodeZPosition(nodeId); -} - -void ax::NodeEditor::RestoreNodeState(NodeId nodeId) -{ - if (auto node = s_Editor->FindNode(nodeId)) - s_Editor->MarkNodeToRestoreState(node); -} - -void ax::NodeEditor::Suspend() -{ - s_Editor->Suspend(); -} - -void ax::NodeEditor::Resume() -{ - s_Editor->Resume(); -} - -bool ax::NodeEditor::IsSuspended() -{ - return s_Editor->IsSuspended(); -} - -bool ax::NodeEditor::IsActive() -{ - return s_Editor->IsFocused(); -} - -bool ax::NodeEditor::HasSelectionChanged() -{ - return s_Editor->HasSelectionChanged(); -} - -int ax::NodeEditor::GetSelectedObjectCount() -{ - return (int)s_Editor->GetSelectedObjects().size(); -} - -int ax::NodeEditor::GetSelectedNodes(NodeId* nodes, int size) -{ - return BuildIdList(s_Editor->GetSelectedObjects(), nodes, size, [](auto object) - { - return object->AsNode() != nullptr; - }); -} - -int ax::NodeEditor::GetSelectedLinks(LinkId* links, int size) -{ - return BuildIdList(s_Editor->GetSelectedObjects(), links, size, [](auto object) - { - return object->AsLink() != nullptr; - }); -} - -bool ax::NodeEditor::IsNodeSelected(NodeId nodeId) -{ - if (auto node = s_Editor->FindNode(nodeId)) - return s_Editor->IsSelected(node); - else - return false; -} - -bool ax::NodeEditor::IsLinkSelected(LinkId linkId) -{ - if (auto link = s_Editor->FindLink(linkId)) - return s_Editor->IsSelected(link); - else - return false; -} - -void ax::NodeEditor::ClearSelection() -{ - s_Editor->ClearSelection(); -} - -void ax::NodeEditor::SelectNode(NodeId nodeId, bool append) -{ - if (auto node = s_Editor->FindNode(nodeId)) - { - if (append) - s_Editor->SelectObject(node); - else - s_Editor->SetSelectedObject(node); - } -} - -void ax::NodeEditor::SelectLink(LinkId linkId, bool append) -{ - if (auto link = s_Editor->FindLink(linkId)) - { - if (append) - s_Editor->SelectObject(link); - else - s_Editor->SetSelectedObject(link); - } -} - -void ax::NodeEditor::DeselectNode(NodeId nodeId) -{ - if (auto node = s_Editor->FindNode(nodeId)) - s_Editor->DeselectObject(node); -} - -void ax::NodeEditor::DeselectLink(LinkId linkId) -{ - if (auto link = s_Editor->FindLink(linkId)) - s_Editor->DeselectObject(link); -} - -bool ax::NodeEditor::DeleteNode(NodeId nodeId) -{ - if (auto node = s_Editor->FindNode(nodeId)) - return s_Editor->GetItemDeleter().Add(node); - else - return false; -} - -bool ax::NodeEditor::DeleteLink(LinkId linkId) -{ - if (auto link = s_Editor->FindLink(linkId)) - return s_Editor->GetItemDeleter().Add(link); - else - return false; -} - -bool ax::NodeEditor::HasAnyLinks(NodeId nodeId) -{ - return s_Editor->HasAnyLinks(nodeId); -} - -bool ax::NodeEditor::HasAnyLinks(PinId pinId) -{ - return s_Editor->HasAnyLinks(pinId); -} - -int ax::NodeEditor::BreakLinks(NodeId nodeId) -{ - return s_Editor->BreakLinks(nodeId); -} - -int ax::NodeEditor::BreakLinks(PinId pinId) -{ - return s_Editor->BreakLinks(pinId); -} - -void ax::NodeEditor::NavigateToContent(float duration) -{ - s_Editor->NavigateTo(s_Editor->GetContentBounds(), true, duration); -} - -void ax::NodeEditor::NavigateToSelection(bool zoomIn, float duration) -{ - s_Editor->NavigateTo(s_Editor->GetSelectionBounds(), zoomIn, duration); -} - -bool ax::NodeEditor::ShowNodeContextMenu(NodeId* nodeId) -{ - return s_Editor->GetContextMenu().ShowNodeContextMenu(nodeId); -} - -bool ax::NodeEditor::ShowPinContextMenu(PinId* pinId) -{ - return s_Editor->GetContextMenu().ShowPinContextMenu(pinId); -} - -bool ax::NodeEditor::ShowLinkContextMenu(LinkId* linkId) -{ - return s_Editor->GetContextMenu().ShowLinkContextMenu(linkId); -} - -bool ax::NodeEditor::ShowBackgroundContextMenu() -{ - return s_Editor->GetContextMenu().ShowBackgroundContextMenu(); -} - -void ax::NodeEditor::EnableShortcuts(bool enable) -{ - s_Editor->EnableShortcuts(enable); -} - -bool ax::NodeEditor::AreShortcutsEnabled() -{ - return s_Editor->AreShortcutsEnabled(); -} - -bool ax::NodeEditor::BeginShortcut() -{ - return s_Editor->GetShortcut().Begin(); -} - -bool ax::NodeEditor::AcceptCut() -{ - return s_Editor->GetShortcut().AcceptCut(); -} - -bool ax::NodeEditor::AcceptCopy() -{ - return s_Editor->GetShortcut().AcceptCopy(); -} - -bool ax::NodeEditor::AcceptPaste() -{ - return s_Editor->GetShortcut().AcceptPaste(); -} - -bool ax::NodeEditor::AcceptDuplicate() -{ - return s_Editor->GetShortcut().AcceptDuplicate(); -} - -bool ax::NodeEditor::AcceptCreateNode() -{ - return s_Editor->GetShortcut().AcceptCreateNode(); -} - -int ax::NodeEditor::GetActionContextSize() -{ - return static_cast<int>(s_Editor->GetShortcut().m_Context.size()); -} - -int ax::NodeEditor::GetActionContextNodes(NodeId* nodes, int size) -{ - return BuildIdList(s_Editor->GetSelectedObjects(), nodes, size, [](auto object) - { - return object->AsNode() != nullptr; - }); -} - -int ax::NodeEditor::GetActionContextLinks(LinkId* links, int size) -{ - return BuildIdList(s_Editor->GetSelectedObjects(), links, size, [](auto object) - { - return object->AsLink() != nullptr; - }); -} - -void ax::NodeEditor::EndShortcut() -{ - return s_Editor->GetShortcut().End(); -} - -float ax::NodeEditor::GetCurrentZoom() -{ - return s_Editor->GetView().InvScale; -} - -ax::NodeEditor::NodeId ax::NodeEditor::GetHoveredNode() -{ - return s_Editor->GetHoveredNode(); -} - -ax::NodeEditor::PinId ax::NodeEditor::GetHoveredPin() -{ - return s_Editor->GetHoveredPin(); -} - -ax::NodeEditor::LinkId ax::NodeEditor::GetHoveredLink() -{ - return s_Editor->GetHoveredLink(); -} - -ax::NodeEditor::NodeId ax::NodeEditor::GetDoubleClickedNode() -{ - return s_Editor->GetDoubleClickedNode(); -} - -ax::NodeEditor::PinId ax::NodeEditor::GetDoubleClickedPin() -{ - return s_Editor->GetDoubleClickedPin(); -} - -ax::NodeEditor::LinkId ax::NodeEditor::GetDoubleClickedLink() -{ - return s_Editor->GetDoubleClickedLink(); -} - -bool ax::NodeEditor::IsBackgroundClicked() -{ - return s_Editor->IsBackgroundClicked(); -} - -bool ax::NodeEditor::IsBackgroundDoubleClicked() -{ - return s_Editor->IsBackgroundDoubleClicked(); -} - -bool ax::NodeEditor::GetLinkPins(LinkId linkId, PinId* startPinId, PinId* endPinId) -{ - auto link = s_Editor->FindLink(linkId); - if (!link) - return false; - - if (startPinId) - *startPinId = link->m_StartPin->m_ID; - if (endPinId) - *endPinId = link->m_EndPin->m_ID; - - return true; -} - -bool ax::NodeEditor::PinHadAnyLinks(PinId pinId) -{ - return s_Editor->PinHadAnyLinks(pinId); -} - -ImVec2 ax::NodeEditor::GetScreenSize() -{ - return s_Editor->GetRect().GetSize(); -} - -ImVec2 ax::NodeEditor::ScreenToCanvas(const ImVec2& pos) -{ - return s_Editor->ToCanvas(pos); -} - -ImVec2 ax::NodeEditor::CanvasToScreen(const ImVec2& pos) -{ - return s_Editor->ToScreen(pos); -} - -int ax::NodeEditor::GetNodeCount() -{ - return s_Editor->CountLiveNodes(); -} - -int ax::NodeEditor::GetOrderedNodeIds(NodeId* nodes, int size) -{ - return s_Editor->GetNodeIds(nodes, size); -} |