#ifndef CIMMODES_EDITOR_INCLUDED
#define CIMMODES_EDITOR_INCLUDED
#include "cimgui.h"
#ifdef CIMGUI_DEFINE_ENUMS_AND_STRUCTS
typedef struct NodeId NodeId;
typedef struct LinkId LinkId;
typedef struct PinId PinId;
typedef struct EditorContext EditorContext;
struct NodeId;
struct LinkId;
struct PinId;
typedef enum {
Input,
Output
}PinKind;
typedef enum {
Forward,
Backward
}FlowDirection;
typedef enum {
FitVerticalView,
FitHorizontalView,
CenterOnly,
}CanvasSizeMode;
typedef enum {
None=0x00000000,
Navigation=0x00000001,
Position=0x00000002,
Size=0x00000004,
Selection=0x00000008,
AddNode=0x00000010,
RemoveNode=0x00000020,
User=0x00000040,
}SaveReasonFlags;
typedef bool (*ConfigSaveSettings)(const char* data, size_t size, SaveReasonFlags reason, void* userPointer);
typedef size_t (*ConfigLoadSettings)(char* data, void* userPointer);
typedef bool (*ConfigSaveNodeSettings)(NodeId nodeId, const char* data, size_t size, SaveReasonFlags reason, void* userPointer);
typedef size_t (*ConfigLoadNodeSettings)(NodeId nodeId, char* data, void* userPointer);
typedef void (*ConfigSession)(void* userPointer);
typedef struct Config Config;
typedef CanvasSizeMode CanvasSizeModeAlias;
struct Config
{
const char* SettingsFile;
ConfigSession BeginSaveSession;
ConfigSession EndSaveSession;
ConfigSaveSettings SaveSettings;
ConfigLoadSettings LoadSettings;
ConfigSaveNodeSettings SaveNodeSettings;
ConfigLoadNodeSettings LoadNodeSettings;
void* UserPointer;
ImVector_float CustomZoomLevels;
CanvasSizeModeAlias CanvasSizeMode;
int DragButtonIndex;
int SelectButtonIndex;
int NavigateButtonIndex;
int ContextMenuButtonIndex;
bool EnableSmoothZoom;
float SmoothZoomPower;
};
typedef enum {
StyleColor_Bg,
StyleColor_Grid,
StyleColor_NodeBg,
StyleColor_NodeBorder,
StyleColor_HovNodeBorder,
StyleColor_SelNodeBorder,
StyleColor_NodeSelRect,
StyleColor_NodeSelRectBorder,
StyleColor_HovLinkBorder,
StyleColor_SelLinkBorder,
StyleColor_HighlightLinkBorder,
StyleColor_LinkSelRect,
StyleColor_LinkSelRectBorder,
StyleColor_PinRect,
StyleColor_PinRectBorder,
StyleColor_Flow,
StyleColor_FlowMarker,
StyleColor_GroupBg,
StyleColor_GroupBorder,
StyleColor_Count
}StyleColor;
typedef enum {
StyleVar_NodePadding,
StyleVar_NodeRounding,
StyleVar_NodeBorderWidth,
StyleVar_HoveredNodeBorderWidth,
StyleVar_SelectedNodeBorderWidth,
StyleVar_PinRounding,
StyleVar_PinBorderWidth,
StyleVar_LinkStrength,
StyleVar_SourceDirection,
StyleVar_TargetDirection,
StyleVar_ScrollDuration,
StyleVar_FlowMarkerDistance,
StyleVar_FlowSpeed,
StyleVar_FlowDuration,
StyleVar_PivotAlignment,
StyleVar_PivotSize,
StyleVar_PivotScale,
StyleVar_PinCorners,
StyleVar_PinRadius,
StyleVar_PinArrowSize,
StyleVar_PinArrowWidth,
StyleVar_GroupRounding,
StyleVar_GroupBorderWidth,
StyleVar_HighlightConnectedLinks,
StyleVar_SnapLinkToPinDir,
StyleVar_HoveredNodeBorderOffset,
StyleVar_SelectedNodeBorderOffset,
StyleVar_Count
}StyleVar;
typedef struct cimnodes_editor_Style cimnodes_editor_Style;
struct cimnodes_editor_Style
{
ImVec4_c NodePadding;
float NodeRounding;
float NodeBorderWidth;
float HoveredNodeBorderWidth;
float HoverNodeBorderOffset;
float SelectedNodeBorderWidth;
float SelectedNodeBorderOffset;
float PinRounding;
float PinBorderWidth;
float LinkStrength;
ImVec2_c SourceDirection;
ImVec2_c TargetDirection;
float ScrollDuration;
float FlowMarkerDistance;
float FlowSpeed;
float FlowDuration;
ImVec2_c PivotAlignment;
ImVec2_c PivotSize;
ImVec2_c PivotScale;
float PinCorners;
float PinRadius;
float PinArrowSize;
float PinArrowWidth;
float GroupRounding;
float GroupBorderWidth;
float HighlightConnectedLinks;
float SnapLinkToPinDir;
ImVec4_c Colors[StyleColor_Count];
};
struct EditorContext;
typedef struct SafeType SafeType;
typedef struct SafePointerType SafePointerType;
typedef struct NodeId NodeId;
typedef struct LinkId LinkId;
typedef struct PinId PinId;
#else
#endif
#ifndef CIMGUI_DEFINE_ENUMS_AND_STRUCTS
typedef ax::NodeEditor::Config Config;
typedef ax::NodeEditor::EditorContext EditorContext;
typedef ax::NodeEditor::LinkId LinkId;
typedef ax::NodeEditor::NodeId NodeId;
typedef ax::NodeEditor::PinId PinId;
typedef ax::NodeEditor::Style cimnodes_editor_Style;
typedef ax::NodeEditor::CanvasSizeMode CanvasSizeMode;
typedef ax::NodeEditor::FlowDirection FlowDirection;
typedef ax::NodeEditor::PinKind PinKind;
typedef ax::NodeEditor::SaveReasonFlags SaveReasonFlags;
typedef ax::NodeEditor::StyleColor StyleColor;
typedef ax::NodeEditor::StyleVar StyleVar;
typedef ImVector<float> ImVector_float;
typedef ax::NodeEditor::LinkId LinkId;
typedef ax::NodeEditor::NodeId NodeId;
typedef ax::NodeEditor::PinId PinId;
#endif CIMGUI_API Config* ax_NodeEditor_Config_Config_Config(void);
CIMGUI_API void Config_destroy(Config* self);
CIMGUI_API void ax_NodeEditor_SetCurrentEditor(EditorContext* ctx);
CIMGUI_API EditorContext* ax_NodeEditor_GetCurrentEditor(void);
CIMGUI_API EditorContext* ax_NodeEditor_CreateEditor(const Config* config);
CIMGUI_API void ax_NodeEditor_DestroyEditor(EditorContext* ctx);
CIMGUI_API const Config* ax_NodeEditor_GetConfig(EditorContext* ctx);
CIMGUI_API cimnodes_editor_Style* ax_NodeEditor_GetStyle(void);
CIMGUI_API const char* ax_NodeEditor_GetStyleColorName(StyleColor colorIndex);
CIMGUI_API void ax_NodeEditor_PushStyleColor(StyleColor colorIndex,const ImVec4_c color);
CIMGUI_API void ax_NodeEditor_PopStyleColor(int count);
CIMGUI_API void ax_NodeEditor_PushStyleVar_Float(StyleVar varIndex,float value);
CIMGUI_API void ax_NodeEditor_PushStyleVar_Vec2(StyleVar varIndex,const ImVec2_c value);
CIMGUI_API void ax_NodeEditor_PushStyleVar_Vec4(StyleVar varIndex,const ImVec4_c value);
CIMGUI_API void ax_NodeEditor_PopStyleVar(int count);
CIMGUI_API void ax_NodeEditor_Begin(const char* id,const ImVec2_c size);
CIMGUI_API void ax_NodeEditor_End(void);
CIMGUI_API void ax_NodeEditor_BeginNode(NodeId* id);
CIMGUI_API void ax_NodeEditor_BeginPin(PinId* id,PinKind kind);
CIMGUI_API void ax_NodeEditor_PinRect(const ImVec2_c a,const ImVec2_c b);
CIMGUI_API void ax_NodeEditor_PinPivotRect(const ImVec2_c a,const ImVec2_c b);
CIMGUI_API void ax_NodeEditor_PinPivotSize(const ImVec2_c size);
CIMGUI_API void ax_NodeEditor_PinPivotScale(const ImVec2_c scale);
CIMGUI_API void ax_NodeEditor_PinPivotAlignment(const ImVec2_c alignment);
CIMGUI_API void ax_NodeEditor_EndPin(void);
CIMGUI_API void ax_NodeEditor_Group(const ImVec2_c size);
CIMGUI_API void ax_NodeEditor_EndNode(void);
CIMGUI_API bool ax_NodeEditor_BeginGroupHint(NodeId* nodeId);
CIMGUI_API ImVec2_c ax_NodeEditor_GetGroupMin(void);
CIMGUI_API ImVec2_c ax_NodeEditor_GetGroupMax(void);
CIMGUI_API ImDrawList* ax_NodeEditor_GetHintForegroundDrawList(void);
CIMGUI_API ImDrawList* ax_NodeEditor_GetHintBackgroundDrawList(void);
CIMGUI_API void ax_NodeEditor_EndGroupHint(void);
CIMGUI_API ImDrawList* ax_NodeEditor_GetNodeBackgroundDrawList(NodeId* nodeId);
CIMGUI_API bool ax_NodeEditor_Link(LinkId* id,PinId* startPinId,PinId* endPinId,const ImVec4_c color,float thickness);
CIMGUI_API void ax_NodeEditor_Flow(LinkId* linkId,FlowDirection direction);
CIMGUI_API bool ax_NodeEditor_BeginCreate(const ImVec4_c color,float thickness);
CIMGUI_API bool ax_NodeEditor_QueryNewLink_Nil(PinId* startId,PinId* endId);
CIMGUI_API bool ax_NodeEditor_QueryNewLink_Vec4(PinId* startId,PinId* endId,const ImVec4_c color,float thickness);
CIMGUI_API bool ax_NodeEditor_QueryNewNode_Nil(PinId* pinId);
CIMGUI_API bool ax_NodeEditor_QueryNewNode_Vec4(PinId* pinId,const ImVec4_c color,float thickness);
CIMGUI_API bool ax_NodeEditor_AcceptNewItem_Nil(void);
CIMGUI_API bool ax_NodeEditor_AcceptNewItem_Vec4(const ImVec4_c color,float thickness);
CIMGUI_API void ax_NodeEditor_RejectNewItem_Nil(void);
CIMGUI_API void ax_NodeEditor_RejectNewItem_Vec4(const ImVec4_c color,float thickness);
CIMGUI_API void ax_NodeEditor_EndCreate(void);
CIMGUI_API bool ax_NodeEditor_BeginDelete(void);
CIMGUI_API bool ax_NodeEditor_QueryDeletedLink(LinkId* linkId,PinId* startId,PinId* endId);
CIMGUI_API bool ax_NodeEditor_QueryDeletedNode(NodeId* nodeId);
CIMGUI_API bool ax_NodeEditor_AcceptDeletedItem(bool deleteDependencies);
CIMGUI_API void ax_NodeEditor_RejectDeletedItem(void);
CIMGUI_API void ax_NodeEditor_EndDelete(void);
CIMGUI_API void ax_NodeEditor_SetNodePosition(NodeId* nodeId,const ImVec2_c editorPosition);
CIMGUI_API void ax_NodeEditor_SetGroupSize(NodeId* nodeId,const ImVec2_c size);
CIMGUI_API ImVec2_c ax_NodeEditor_GetNodePosition(NodeId* nodeId);
CIMGUI_API ImVec2_c ax_NodeEditor_GetNodeSize(NodeId* nodeId);
CIMGUI_API void ax_NodeEditor_CenterNodeOnScreen(NodeId* nodeId);
CIMGUI_API void ax_NodeEditor_SetNodeZPosition(NodeId* nodeId,float z);
CIMGUI_API float ax_NodeEditor_GetNodeZPosition(NodeId* nodeId);
CIMGUI_API void ax_NodeEditor_RestoreNodeState(NodeId* nodeId);
CIMGUI_API void ax_NodeEditor_Suspend(void);
CIMGUI_API void ax_NodeEditor_Resume(void);
CIMGUI_API bool ax_NodeEditor_IsSuspended(void);
CIMGUI_API bool ax_NodeEditor_IsActive(void);
CIMGUI_API bool ax_NodeEditor_HasSelectionChanged(void);
CIMGUI_API int ax_NodeEditor_GetSelectedObjectCount(void);
CIMGUI_API int ax_NodeEditor_GetSelectedNodes(NodeId* nodes,int size);
CIMGUI_API int ax_NodeEditor_GetSelectedLinks(LinkId* links,int size);
CIMGUI_API bool ax_NodeEditor_IsNodeSelected(NodeId* nodeId);
CIMGUI_API bool ax_NodeEditor_IsLinkSelected(LinkId* linkId);
CIMGUI_API void ax_NodeEditor_ClearSelection(void);
CIMGUI_API void ax_NodeEditor_SelectNode(NodeId* nodeId,bool append);
CIMGUI_API void ax_NodeEditor_SelectLink(LinkId* linkId,bool append);
CIMGUI_API void ax_NodeEditor_DeselectNode(NodeId* nodeId);
CIMGUI_API void ax_NodeEditor_DeselectLink(LinkId* linkId);
CIMGUI_API bool ax_NodeEditor_DeleteNode(NodeId* nodeId);
CIMGUI_API bool ax_NodeEditor_DeleteLink(LinkId* linkId);
CIMGUI_API bool ax_NodeEditor_HasAnyLinks_NodeId(NodeId* nodeId);
CIMGUI_API bool ax_NodeEditor_HasAnyLinks_PinId(PinId* pinId);
CIMGUI_API int ax_NodeEditor_BreakLinks_NodeId(NodeId* nodeId);
CIMGUI_API int ax_NodeEditor_BreakLinks_PinId(PinId* pinId);
CIMGUI_API void ax_NodeEditor_NavigateToContent(float duration);
CIMGUI_API void ax_NodeEditor_NavigateToSelection(bool zoomIn,float duration);
CIMGUI_API bool ax_NodeEditor_ShowNodeContextMenu(NodeId* nodeId);
CIMGUI_API bool ax_NodeEditor_ShowPinContextMenu(PinId* pinId);
CIMGUI_API bool ax_NodeEditor_ShowLinkContextMenu(LinkId* linkId);
CIMGUI_API bool ax_NodeEditor_ShowBackgroundContextMenu(void);
CIMGUI_API void ax_NodeEditor_EnableShortcuts(bool enable);
CIMGUI_API bool ax_NodeEditor_AreShortcutsEnabled(void);
CIMGUI_API bool ax_NodeEditor_BeginShortcut(void);
CIMGUI_API bool ax_NodeEditor_AcceptCut(void);
CIMGUI_API bool ax_NodeEditor_AcceptCopy(void);
CIMGUI_API bool ax_NodeEditor_AcceptPaste(void);
CIMGUI_API bool ax_NodeEditor_AcceptDuplicate(void);
CIMGUI_API bool ax_NodeEditor_AcceptCreateNode(void);
CIMGUI_API int ax_NodeEditor_GetActionContextSize(void);
CIMGUI_API int ax_NodeEditor_GetActionContextNodes(NodeId* nodes,int size);
CIMGUI_API int ax_NodeEditor_GetActionContextLinks(LinkId* links,int size);
CIMGUI_API void ax_NodeEditor_EndShortcut(void);
CIMGUI_API float ax_NodeEditor_GetCurrentZoom(void);
CIMGUI_API NodeId* ax_NodeEditor_GetHoveredNode(void);
CIMGUI_API PinId* ax_NodeEditor_GetHoveredPin(void);
CIMGUI_API LinkId* ax_NodeEditor_GetHoveredLink(void);
CIMGUI_API NodeId* ax_NodeEditor_GetDoubleClickedNode(void);
CIMGUI_API PinId* ax_NodeEditor_GetDoubleClickedPin(void);
CIMGUI_API LinkId* ax_NodeEditor_GetDoubleClickedLink(void);
CIMGUI_API bool ax_NodeEditor_IsBackgroundClicked(void);
CIMGUI_API bool ax_NodeEditor_IsBackgroundDoubleClicked(void);
CIMGUI_API ImGuiMouseButton ax_NodeEditor_GetBackgroundClickButtonIndex(void);
CIMGUI_API ImGuiMouseButton ax_NodeEditor_GetBackgroundDoubleClickButtonIndex(void);
CIMGUI_API bool ax_NodeEditor_GetLinkPins(LinkId* linkId,PinId* startPinId,PinId* endPinId);
CIMGUI_API bool ax_NodeEditor_PinHadAnyLinks(PinId* pinId);
CIMGUI_API ImVec2_c ax_NodeEditor_GetScreenSize(void);
CIMGUI_API ImVec2_c ax_NodeEditor_ScreenToCanvas(const ImVec2_c pos);
CIMGUI_API ImVec2_c ax_NodeEditor_CanvasToScreen(const ImVec2_c pos);
CIMGUI_API int ax_NodeEditor_GetNodeCount(void);
CIMGUI_API int ax_NodeEditor_GetOrderedNodeIds(NodeId* nodes,int size);
CIMGUI_API NodeId* ax_NodeEditor_NodeId(uintptr_t val);
CIMGUI_API void ax_NodeEditor_NodeId_destroy(NodeId* self);
CIMGUI_API PinId* ax_NodeEditor_PinId(uintptr_t val);
CIMGUI_API void ax_NodeEditor_PinId_destroy(PinId* self);
CIMGUI_API LinkId* ax_NodeEditor_LinkId(uintptr_t val);
CIMGUI_API void ax_NodeEditor_LinkId_destroy(LinkId* self);
CIMGUI_API uintptr_t ax_NodeEditor_NodeId_value(NodeId* self);
CIMGUI_API uintptr_t ax_NodeEditor_PinId_value(PinId* self);
CIMGUI_API uintptr_t ax_NodeEditor_LinkId_value(LinkId* self);
#endif