339 lines
8.0 KiB
C++
339 lines
8.0 KiB
C++
#include "imgui.h"
|
|
|
|
#include "../node_editor/imgui_node_editor.h"
|
|
|
|
#ifndef ZGUI_API
|
|
#define ZGUI_API
|
|
#endif
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
//
|
|
// ImGUI Node editor
|
|
//
|
|
//--------------------------------------------------------------------------------------------------
|
|
namespace ed = ax::NodeEditor;
|
|
extern "C"
|
|
{
|
|
|
|
//
|
|
// Editor
|
|
//
|
|
ZGUI_API ed::EditorContext *node_editor_CreateEditor(ed::Config *cfg)
|
|
{
|
|
return ed::CreateEditor(cfg);
|
|
}
|
|
|
|
ZGUI_API void node_editor_DestroyEditor(ed::EditorContext *editor)
|
|
{
|
|
return ed::DestroyEditor(editor);
|
|
}
|
|
|
|
ZGUI_API void node_editor_SetCurrentEditor(ed::EditorContext *editor)
|
|
{
|
|
return ed::SetCurrentEditor(editor);
|
|
}
|
|
|
|
ZGUI_API void node_editor_Begin(const char *id, const float size[2])
|
|
{
|
|
ed::Begin(id, ImVec2(size[0], size[1]));
|
|
}
|
|
|
|
ZGUI_API void node_editor_End()
|
|
{
|
|
ed::End();
|
|
}
|
|
|
|
ZGUI_API bool node_editor_ShowBackgroundContextMenu()
|
|
{
|
|
return ed::ShowBackgroundContextMenu();
|
|
}
|
|
|
|
ZGUI_API bool node_editor_ShowNodeContextMenu(ed::NodeId *id)
|
|
{
|
|
return ed::ShowNodeContextMenu(id);
|
|
}
|
|
|
|
ZGUI_API bool node_editor_ShowLinkContextMenu(ed::LinkId *id)
|
|
{
|
|
return ed::ShowLinkContextMenu(id);
|
|
}
|
|
|
|
ZGUI_API bool node_editor_ShowPinContextMenu(ed::PinId *id)
|
|
{
|
|
return ed::ShowPinContextMenu(id);
|
|
}
|
|
|
|
ZGUI_API void node_editor_Suspend()
|
|
{
|
|
ed::Suspend();
|
|
}
|
|
|
|
ZGUI_API void node_editor_Resume()
|
|
{
|
|
ed::Resume();
|
|
}
|
|
|
|
ZGUI_API void node_editor_NavigateToContent(float duration)
|
|
{
|
|
ed::NavigateToContent(duration);
|
|
}
|
|
|
|
ZGUI_API void node_editor_NavigateToSelection(bool zoomIn, float duration)
|
|
{
|
|
ed::NavigateToSelection(zoomIn, duration);
|
|
}
|
|
|
|
ZGUI_API void node_editor_SelectNode(ed::NodeId nodeId, bool append)
|
|
{
|
|
ed::SelectNode(nodeId, append);
|
|
}
|
|
|
|
ZGUI_API void node_editor_SelectLink(ed::LinkId linkId, bool append)
|
|
{
|
|
ed::SelectLink(linkId, append);
|
|
}
|
|
|
|
//
|
|
// Node
|
|
//
|
|
ZGUI_API void node_editor_BeginNode(ed::NodeId id)
|
|
{
|
|
ed::BeginNode(id);
|
|
}
|
|
|
|
ZGUI_API void node_editor_EndNode()
|
|
{
|
|
ed::EndNode();
|
|
}
|
|
|
|
ZGUI_API void node_editor_SetNodePosition(ed::NodeId id, const float pos[2])
|
|
{
|
|
ed::SetNodePosition(id, ImVec2(pos[0], pos[1]));
|
|
}
|
|
|
|
ZGUI_API void node_editor_getNodePosition(ed::NodeId id, float *pos)
|
|
{
|
|
auto node_pos = ed::GetNodePosition(id);
|
|
pos[0] = node_pos.x;
|
|
pos[1] = node_pos.y;
|
|
}
|
|
|
|
ZGUI_API void node_editor_getNodeSize(ed::NodeId id, float *size)
|
|
{
|
|
auto node_size = ed::GetNodeSize(id);
|
|
size[0] = node_size.x;
|
|
size[1] = node_size.y;
|
|
}
|
|
|
|
ZGUI_API bool node_editor_DeleteNode(ed::NodeId id)
|
|
{
|
|
return ed::DeleteNode(id);
|
|
}
|
|
|
|
//
|
|
// Pin
|
|
//
|
|
ZGUI_API void node_editor_BeginPin(ed::PinId id, ed::PinKind kind)
|
|
{
|
|
ed::BeginPin(id, kind);
|
|
}
|
|
|
|
ZGUI_API void node_editor_EndPin()
|
|
{
|
|
ed::EndPin();
|
|
}
|
|
|
|
ZGUI_API bool node_editor_PinHadAnyLinks(ed::PinId pinId)
|
|
{
|
|
return ed::PinHadAnyLinks(pinId);
|
|
}
|
|
|
|
ZGUI_API void node_editor_PinRect(const float a[2], const float b[2])
|
|
{
|
|
ed::PinRect(ImVec2(a[0], a[1]), ImVec2(b[0], b[1]));
|
|
}
|
|
|
|
ZGUI_API void node_editor_PinPivotRect(const float a[2], const float b[2])
|
|
{
|
|
ed::PinPivotRect(ImVec2(a[0], a[1]), ImVec2(b[0], b[1]));
|
|
}
|
|
|
|
ZGUI_API void node_editor_PinPivotSize(const float size[2])
|
|
{
|
|
ed::PinPivotSize(ImVec2(size[0], size[1]));
|
|
}
|
|
|
|
ZGUI_API void node_editor_PinPivotScale(const float scale[2])
|
|
{
|
|
ed::PinPivotScale(ImVec2(scale[0], scale[1]));
|
|
}
|
|
|
|
ZGUI_API void node_editor_PinPivotAlignment(const float alignment[2])
|
|
{
|
|
ed::PinPivotAlignment(ImVec2(alignment[0], alignment[1]));
|
|
}
|
|
|
|
//
|
|
// Link
|
|
//
|
|
ZGUI_API bool node_editor_Link(ed::LinkId id, ed::PinId startPinId, ed::PinId endPinId, const float color[4], float thickness)
|
|
{
|
|
return ed::Link(id, startPinId, endPinId, ImVec4(color[0], color[1], color[2], color[3]), thickness);
|
|
}
|
|
|
|
ZGUI_API bool node_editor_DeleteLink(ed::LinkId id)
|
|
{
|
|
return ed::DeleteLink(id);
|
|
}
|
|
|
|
ZGUI_API int node_editor_BreakPinLinks(ed::PinId id)
|
|
{
|
|
return ed::BreakLinks(id);
|
|
}
|
|
|
|
// Groups
|
|
ZGUI_API void node_editor_Group(const float size[2])
|
|
{
|
|
ed::Group(ImVec2(size[0], size[1]));
|
|
}
|
|
|
|
// Created
|
|
ZGUI_API bool node_editor_BeginCreate()
|
|
{
|
|
return ed::BeginCreate();
|
|
}
|
|
|
|
ZGUI_API void node_editor_EndCreate()
|
|
{
|
|
ed::EndCreate();
|
|
}
|
|
|
|
ZGUI_API bool node_editor_QueryNewLink(ed::PinId *startId, ed::PinId *endId)
|
|
{
|
|
return ed::QueryNewLink(startId, endId);
|
|
}
|
|
|
|
ZGUI_API bool node_editor_AcceptNewItem(const float color[4], float thickness)
|
|
{
|
|
return ed::AcceptNewItem(ImVec4(color[0], color[1], color[2], color[3]), thickness);
|
|
}
|
|
|
|
ZGUI_API void node_editor_RejectNewItem(const float color[4], float thickness)
|
|
{
|
|
return ed::RejectNewItem(ImVec4(color[0], color[1], color[2], color[3]), thickness);
|
|
}
|
|
|
|
// Delete
|
|
ZGUI_API bool node_editor_BeginDelete()
|
|
{
|
|
return ed::BeginDelete();
|
|
}
|
|
|
|
ZGUI_API void node_editor_EndDelete()
|
|
{
|
|
ed::EndDelete();
|
|
}
|
|
|
|
ZGUI_API bool node_editor_QueryDeletedLink(ed::LinkId *linkId, ed::PinId *startId, ed::PinId *endId)
|
|
{
|
|
return ed::QueryDeletedLink(linkId, startId, endId);
|
|
}
|
|
|
|
ZGUI_API bool node_editor_QueryDeletedNode(ed::NodeId *nodeId)
|
|
{
|
|
return ed::QueryDeletedNode(nodeId);
|
|
}
|
|
|
|
ZGUI_API bool node_editor_AcceptDeletedItem(bool deleteDependencies)
|
|
{
|
|
return ed::AcceptDeletedItem(deleteDependencies);
|
|
}
|
|
|
|
ZGUI_API void node_editor_RejectDeletedItem()
|
|
{
|
|
ed::RejectDeletedItem();
|
|
}
|
|
|
|
// Style
|
|
ZGUI_API ax::NodeEditor::Style node_editor_GetStyle()
|
|
{
|
|
return ed::GetStyle();
|
|
}
|
|
|
|
ZGUI_API const char *node_editor_GetStyleColorName(ed::StyleColor colorIndex)
|
|
{
|
|
return ed::GetStyleColorName(colorIndex);
|
|
}
|
|
|
|
ZGUI_API void node_editor_PushStyleColor(ed::StyleColor colorIndex, const ImVec4 *color)
|
|
{
|
|
ed::PushStyleColor(colorIndex, *color);
|
|
}
|
|
|
|
ZGUI_API void node_editor_PopStyleColor(int count)
|
|
{
|
|
ed::PopStyleColor(count);
|
|
}
|
|
|
|
ZGUI_API void node_editor_PushStyleVarF(ed::StyleVar varIndex, float value)
|
|
{
|
|
ed::PushStyleVar(varIndex, value);
|
|
}
|
|
|
|
ZGUI_API void node_editor_PushStyleVar2f(ed::StyleVar varIndex, const ImVec2 *value)
|
|
{
|
|
ed::PushStyleVar(varIndex, *value);
|
|
}
|
|
|
|
ZGUI_API void node_editor_PushStyleVar4f(ed::StyleVar varIndex, const ImVec4 *value)
|
|
{
|
|
ed::PushStyleVar(varIndex, *value);
|
|
}
|
|
|
|
ZGUI_API void node_editor_PopStyleVar(int count)
|
|
{
|
|
ed::PopStyleVar(count);
|
|
}
|
|
|
|
// Selection
|
|
|
|
ZGUI_API bool node_editor_HasSelectionChanged()
|
|
{
|
|
return ed::HasSelectionChanged();
|
|
}
|
|
|
|
ZGUI_API int node_editor_GetSelectedObjectCount()
|
|
{
|
|
return ed::GetSelectedObjectCount();
|
|
}
|
|
|
|
ZGUI_API void node_editor_ClearSelection()
|
|
{
|
|
return ed::ClearSelection();
|
|
}
|
|
|
|
ZGUI_API int node_editor_GetSelectedNodes(ed::NodeId *nodes, int size)
|
|
{
|
|
return ed::GetSelectedNodes(nodes, size);
|
|
}
|
|
|
|
ZGUI_API int node_editor_GetSelectedLinks(ed::LinkId *links, int size)
|
|
{
|
|
return ed::GetSelectedLinks(links, size);
|
|
}
|
|
|
|
ZGUI_API ImDrawList *node_editor_GetHintForegroundDrawList()
|
|
{
|
|
return ed::GetHintForegroundDrawList();
|
|
}
|
|
|
|
ZGUI_API ImDrawList *node_editor_GetHintBackgroundDrawList()
|
|
{
|
|
return ed::GetHintBackgroundDrawList();
|
|
}
|
|
|
|
ZGUI_API ImDrawList *node_editor_GetNodeBackgroundDrawList(ed::NodeId nodeId)
|
|
{
|
|
return ed::GetNodeBackgroundDrawList(nodeId);
|
|
}
|
|
} /* extern "C" */ |