summaryrefslogtreecommitdiff
path: root/3rdparty/imnodes/imnodes.h
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/imnodes/imnodes.h')
-rw-r--r--3rdparty/imnodes/imnodes.h335
1 files changed, 0 insertions, 335 deletions
diff --git a/3rdparty/imnodes/imnodes.h b/3rdparty/imnodes/imnodes.h
deleted file mode 100644
index f7a9df0..0000000
--- a/3rdparty/imnodes/imnodes.h
+++ /dev/null
@@ -1,335 +0,0 @@
-#pragma once
-
-#include <stddef.h>
-
-struct ImGuiContext;
-struct ImVec2;
-
-namespace ImNodes
-{
-enum ColorStyle
-{
- ColorStyle_NodeBackground = 0,
- ColorStyle_NodeBackgroundHovered,
- ColorStyle_NodeBackgroundSelected,
- ColorStyle_NodeOutline,
- ColorStyle_TitleBar,
- ColorStyle_TitleBarHovered,
- ColorStyle_TitleBarSelected,
- ColorStyle_Link,
- ColorStyle_LinkHovered,
- ColorStyle_LinkSelected,
- ColorStyle_Pin,
- ColorStyle_PinHovered,
- ColorStyle_BoxSelector,
- ColorStyle_BoxSelectorOutline,
- ColorStyle_GridBackground,
- ColorStyle_GridLine,
- ColorStyle_Count
-};
-
-enum StyleVar
-{
- StyleVar_GridSpacing = 0,
- StyleVar_NodeCornerRounding,
- StyleVar_NodePaddingHorizontal,
- StyleVar_NodePaddingVertical,
- StyleVar_NodeBorderThickness,
- StyleVar_LinkThickness,
- StyleVar_LinkLineSegmentsPerLength,
- StyleVar_LinkHoverDistance,
- StyleVar_PinCircleRadius,
- StyleVar_PinQuadSideLength,
- StyleVar_PinTriangleSideLength,
- StyleVar_PinLineThickness,
- StyleVar_PinHoverRadius,
- StyleVar_PinOffset
-};
-
-enum StyleFlags
-{
- StyleFlags_None = 0,
- StyleFlags_NodeOutline = 1 << 0,
- StyleFlags_GridLines = 1 << 2
-};
-
-// This enum controls the way attribute pins look.
-enum PinShape
-{
- PinShape_Circle,
- PinShape_CircleFilled,
- PinShape_Triangle,
- PinShape_TriangleFilled,
- PinShape_Quad,
- PinShape_QuadFilled
-};
-
-// This enum controls the way the attribute pins behave.
-enum AttributeFlags
-{
- AttributeFlags_None = 0,
- // Allow detaching a link by left-clicking and dragging the link at a pin it is connected to.
- // NOTE: the user has to actually delete the link for this to work. A deleted link can be
- // detected by calling IsLinkDestroyed() after EndNodeEditor().
- AttributeFlags_EnableLinkDetachWithDragClick = 1 << 0,
- // Visual snapping of an in progress link will trigger IsLink Created/Destroyed events. Allows
- // for previewing the creation of a link while dragging it across attributes. See here for demo:
- // https://github.com/Nelarius/ImNodes/issues/41#issuecomment-647132113 NOTE: the user has to
- // actually delete the link for this to work. A deleted link can be detected by calling
- // IsLinkDestroyed() after EndNodeEditor().
- AttributeFlags_EnableLinkCreationOnSnap = 1 << 1
-};
-
-struct IO
-{
- struct EmulateThreeButtonMouse
- {
- EmulateThreeButtonMouse();
-
- // The keyboard modifier to use in combination with mouse left click to pan the editor view.
- // Set to NULL by default. To enable this feature, set the modifier to point to a boolean
- // indicating the state of a modifier. For example,
- //
- // ImNodes::GetIO().emulate_three_button_mouse.modifier = &ImGui::GetIO().KeyAlt;
- const bool* modifier;
- } emulate_three_button_mouse;
-
- struct LinkDetachWithModifierClick
- {
- LinkDetachWithModifierClick();
-
- // Pointer to a boolean value indicating when the desired modifier is pressed. Set to NULL
- // by default. To enable the feature, set the modifier to point to a boolean indicating the
- // state of a modifier. For example,
- //
- // ImNodes::GetIO().link_detach_with_modifier_click.modifier = &ImGui::GetIO().KeyCtrl;
- //
- // Left-clicking a link with this modifier pressed will detach that link. NOTE: the user has
- // to actually delete the link for this to work. A deleted link can be detected by calling
- // IsLinkDestroyed() after EndNodeEditor().
- const bool* modifier;
- } link_detach_with_modifier_click;
-
- IO();
-};
-
-struct Style
-{
- float grid_spacing;
-
- float node_corner_rounding;
- float node_padding_horizontal;
- float node_padding_vertical;
- float node_border_thickness;
-
- float link_thickness;
- float link_line_segments_per_length;
- float link_hover_distance;
-
- // The following variables control the look and behavior of the pins. The default size of each
- // pin shape is balanced to occupy approximately the same surface area on the screen.
-
- // The circle radius used when the pin shape is either PinShape_Circle or PinShape_CircleFilled.
- float pin_circle_radius;
- // The quad side length used when the shape is either PinShape_Quad or PinShape_QuadFilled.
- float pin_quad_side_length;
- // The equilateral triangle side length used when the pin shape is either PinShape_Triangle or
- // PinShape_TriangleFilled.
- float pin_triangle_side_length;
- // The thickness of the line used when the pin shape is not filled.
- float pin_line_thickness;
- // The radius from the pin's center position inside of which it is detected as being hovered
- // over.
- float pin_hover_radius;
- // Offsets the pins' positions from the edge of the node to the outside of the node.
- float pin_offset;
-
- // By default, StyleFlags_NodeOutline and StyleFlags_Gridlines are enabled.
- StyleFlags flags;
- // Set these mid-frame using Push/PopColorStyle. You can index this color array with with a
- // ColorStyle enum value.
- unsigned int colors[ColorStyle_Count];
-
- Style();
-};
-
-struct Context;
-
-// Call this function if you are compiling ImNodes in to a dll, separate from ImGui. Calling this
-// function sets the GImGui global variable, which is not shared across dll boundaries.
-void SetImGuiContext(ImGuiContext* ctx);
-
-Context* CreateContext();
-void DestroyContext(Context* ctx = NULL); // NULL = destroy current context
-Context* GetCurrentContext();
-void SetCurrentContext(Context* ctx);
-
-// An editor context corresponds to a set of nodes in a single workspace (created with a single
-// Begin/EndNodeEditor pair)
-//
-// By default, the library creates an editor context behind the scenes, so using any of the ImNodes
-// functions doesn't require you to explicitly create a context.
-struct EditorContext;
-
-EditorContext* EditorContextCreate();
-void EditorContextFree(EditorContext*);
-void EditorContextSet(EditorContext*);
-ImVec2 EditorContextGetPanning();
-void EditorContextResetPanning(const ImVec2& pos);
-void EditorContextMoveToNode(const int node_id);
-
-IO& GetIO();
-
-// Returns the global style struct. See the struct declaration for default values.
-Style& GetStyle();
-// Style presets matching the dear imgui styles of the same name.
-void StyleColorsDark(); // on by default
-void StyleColorsClassic();
-void StyleColorsLight();
-
-// The top-level function call. Call this before calling BeginNode/EndNode. Calling this function
-// will result the node editor grid workspace being rendered.
-void BeginNodeEditor();
-void EndNodeEditor();
-
-// Use PushColorStyle and PopColorStyle to modify Style::colors mid-frame.
-void PushColorStyle(ColorStyle item, unsigned int color);
-void PopColorStyle();
-void PushStyleVar(StyleVar style_item, float value);
-void PopStyleVar();
-
-// id can be any positive or negative integer, but INT_MIN is currently reserved for internal use.
-void BeginNode(int id);
-void EndNode();
-
-ImVec2 GetNodeDimensions(int id);
-
-// Place your node title bar content (such as the node title, using ImGui::Text) between the
-// following function calls. These functions have to be called before adding any attributes, or the
-// layout of the node will be incorrect.
-void BeginNodeTitleBar();
-void EndNodeTitleBar();
-
-// Attributes are ImGui UI elements embedded within the node. Attributes can have pin shapes
-// rendered next to them. Links are created between pins.
-//
-// The activity status of an attribute can be checked via the IsAttributeActive() and
-// IsAnyAttributeActive() function calls. This is one easy way of checking for any changes made to
-// an attribute's drag float UI, for instance.
-//
-// Each attribute id must be unique.
-
-// Create an input attribute block. The pin is rendered on left side.
-void BeginInputAttribute(int id, PinShape shape = PinShape_CircleFilled);
-void EndInputAttribute();
-// Create an output attribute block. The pin is rendered on the right side.
-void BeginOutputAttribute(int id, PinShape shape = PinShape_CircleFilled);
-void EndOutputAttribute();
-// Create a static attribute block. A static attribute has no pin, and therefore can't be linked to
-// anything. However, you can still use IsAttributeActive() and IsAnyAttributeActive() to check for
-// attribute activity.
-void BeginStaticAttribute(int id);
-void EndStaticAttribute();
-
-// Push a single AttributeFlags value. By default, only AttributeFlags_None is set.
-void PushAttributeFlag(AttributeFlags flag);
-void PopAttributeFlag();
-
-// Render a link between attributes.
-// The attributes ids used here must match the ids used in Begin(Input|Output)Attribute function
-// calls. The order of start_attr and end_attr doesn't make a difference for rendering the link.
-void Link(int id, int start_attribute_id, int end_attribute_id);
-
-// Enable or disable the ability to click and drag a specific node.
-void SetNodeDraggable(int node_id, const bool draggable);
-
-// The node's position can be expressed in three coordinate systems:
-// * screen space coordinates, -- the origin is the upper left corner of the window.
-// * editor space coordinates -- the origin is the upper left corner of the node editor window
-// * grid space coordinates, -- the origin is the upper left corner of the node editor window,
-// translated by the current editor panning vector (see EditorContextGetPanning() and
-// EditorContextResetPanning())
-
-// Use the following functions to get and set the node's coordinates in these coordinate systems.
-
-void SetNodeScreenSpacePos(int node_id, const ImVec2& screen_space_pos);
-void SetNodeEditorSpacePos(int node_id, const ImVec2& editor_space_pos);
-void SetNodeGridSpacePos(int node_id, const ImVec2& grid_pos);
-
-ImVec2 GetNodeScreenSpacePos(const int node_id);
-ImVec2 GetNodeEditorSpacePos(const int node_id);
-ImVec2 GetNodeGridSpacePos(const int node_id);
-
-// Returns true if the current node editor canvas is being hovered over by the mouse, and is not
-// blocked by any other windows.
-bool IsEditorHovered();
-// The following functions return true if a UI element is being hovered over by the mouse cursor.
-// Assigns the id of the UI element being hovered over to the function argument. Use these functions
-// after EndNodeEditor() has been called.
-bool IsNodeHovered(int* node_id);
-bool IsLinkHovered(int* link_id);
-bool IsPinHovered(int* attribute_id);
-
-// Use The following two functions to query the number of selected nodes or links in the current
-// editor. Use after calling EndNodeEditor().
-int NumSelectedNodes();
-int NumSelectedLinks();
-// Get the selected node/link ids. The pointer argument should point to an integer array with at
-// least as many elements as the respective NumSelectedNodes/NumSelectedLinks function call
-// returned.
-void GetSelectedNodes(int* node_ids);
-void GetSelectedLinks(int* link_ids);
-
-// Clears the list of selected nodes/links. Useful if you want to delete a selected node or link.
-void ClearNodeSelection();
-void ClearLinkSelection();
-
-// Was the previous attribute active? This will continuously return true while the left mouse button
-// is being pressed over the UI content of the attribute.
-bool IsAttributeActive();
-// Was any attribute active? If so, sets the active attribute id to the output function argument.
-bool IsAnyAttributeActive(int* attribute_id = NULL);
-
-// Use the following functions to query a change of state for an existing link, or new link. Call
-// these after EndNodeEditor().
-
-// Did the user start dragging a new link from a pin?
-bool IsLinkStarted(int* started_at_attribute_id);
-// Did the user drop the dragged link before attaching it to a pin?
-// There are two different kinds of situations to consider when handling this event:
-// 1) a link which is created at a pin and then dropped
-// 2) an existing link which is detached from a pin and then dropped
-// Use the including_detached_links flag to control whether this function triggers when the user
-// detaches a link and drops it.
-bool IsLinkDropped(int* started_at_attribute_id = NULL, bool including_detached_links = true);
-// Did the user finish creating a new link?
-bool IsLinkCreated(
- int* started_at_attribute_id,
- int* ended_at_attribute_id,
- bool* created_from_snap = NULL);
-bool IsLinkCreated(
- int* started_at_node_id,
- int* started_at_attribute_id,
- int* ended_at_node_id,
- int* ended_at_attribute_id,
- bool* created_from_snap = NULL);
-
-// Was an existing link detached from a pin by the user? The detached link's id is assigned to the
-// output argument link_id.
-bool IsLinkDestroyed(int* link_id);
-
-// Use the following functions to write the editor context's state to a string, or directly to a
-// file. The editor context is serialized in the INI file format.
-
-const char* SaveCurrentEditorStateToIniString(size_t* data_size = NULL);
-const char* SaveEditorStateToIniString(const EditorContext* editor, size_t* data_size = NULL);
-
-void LoadCurrentEditorStateFromIniString(const char* data, size_t data_size);
-void LoadEditorStateFromIniString(EditorContext* editor, const char* data, size_t data_size);
-
-void SaveCurrentEditorStateToIniFile(const char* file_name);
-void SaveEditorStateToIniFile(const EditorContext* editor, const char* file_name);
-
-void LoadCurrentEditorStateFromIniFile(const char* file_name);
-void LoadEditorStateFromIniFile(EditorContext* editor, const char* file_name);
-} // namespace ImNodes