DIWNE::BasicNode
#include "DIWNE/Basic/BasicNode.h"
Inherits from DIWNE::Node, DIWNE::DiwneObject, std::enable_shared_from_this< DiwneObject >
Inherited by DIWNE::BasicNodeWithPins, DIWNE::SequenceNodeContainer, Workspace::Node
Public Functions
Name | |
---|---|
BasicNode(NodeEditor & editor, std::string label) | |
virtual void | begin(DrawInfo & context) override<br>First method to be called during object drawing. |
virtual void | bottomContent(DrawInfo & context) |
virtual void | centerContent(DrawInfo & context) |
virtual void | content(DrawInfo & context) override<br>Called after begin() during drawing. |
virtual void | drawBody() |
virtual void | drawHeader(ImDrawFlags corners =ImDrawFlags_RoundCornersTop) |
virtual void | end(DrawInfo & context) override<br>Called after content(). |
const std::string & | getTopLabel() const |
virtual void | leftContent(DrawInfo & context) |
virtual void | rightContent(DrawInfo & context) |
void | setTopLabel(const std::string & str) |
virtual void | topContent(DrawInfo & context) |
virtual void | translate(const ImVec2 & vec) override<br>Move the object's rect and any other associated positional data. |
virtual void | updateLayout(DrawInfo & context) override<br>Updates object's m_rect, m_displayRect and any other object size variables. |
Public Attributes
Name | |
---|---|
DiwnePanel | m_center |
DiwnePanel | m_left |
DiwnePanel | m_middle |
DiwnePanel | m_right |
DiwnePanel | m_top |
Protected Attributes
Name | |
---|---|
bool | m_bottomSpacing <br>Whether to add a gap between the node content and the end. |
float | m_contentSpacing <br>Gap between left, center and right panels (-1 for default item spacing). |
bool | m_headerSpacing <br>Whether to add a gap between the node header and its content. |
std::string | m_topLabel |
float | m_topLabelWidth <br>Top label width in DIWNE coordinates. |
float | m_topLabelWidthChange <br>Change of top label width since last frame, used to prevent layout flicker. |
Additional inherited members
Public Functions inherited from DIWNE::Node
Name | |
---|---|
Node(const Node & other) =delete | |
Node(NodeEditor & diwne, std::string labelDiwne ="DiwneNode") | |
virtual void | afterDraw(DrawInfo & context) override<br>Called last during drawing. |
virtual bool | allowDrawing() override<br>Decide whether the object should be drawn (when outside the window for example) |
virtual void | drawSelectionIndicator(DrawInfo & context) |
bool | getFlag(char index) const<br>Get the node bit flag value at index. |
virtual void | onDestroy(bool logEvent) override<br>Gets called the moment the object is marked for deletion by destroy(). |
virtual void | onDrag(DrawInfo & context, bool dragStart, bool dragEnd) override<br>This method gets called when the object is being dragged. |
virtual void | onHover(DrawInfo & context) override<br>This method gets called when the object is hovered. |
virtual void | onSelection(bool selected) override |
Node & | operator=(const Node & other) =delete |
void | setFlag(char index, bool value)<br>Set the node bit flag value at index. |
bool | willBeRemovedFromContainer(const DiwneObject * container) |
Protected Functions inherited from DIWNE::Node
Name | |
---|---|
virtual void | afterDrawDiwne(DrawInfo & context) override<br>Updates layout, processes interactions and then calls the user afterDraw() method. |
virtual bool | processSelectDiwne(DrawInfo & context) override<br>Processes any interactions related to whether the object should be selected. |
virtual void | setInitialPositionDiwne() override<br>Internal helper for setting the object's initial position. |
Public Attributes inherited from DIWNE::Node
Name | |
---|---|
bool | m_forceDraw <br>Internal flag to force drawing of the node, used by pins (TODO: move to DiwneObject?) |
Protected Attributes inherited from DIWNE::Node
Name | |
---|---|
NodeFlag | m_flag <br>The node flag bit field. |
Public Functions inherited from DIWNE::DiwneObject
Name | |
---|---|
DiwneObject(DIWNE::NodeEditor & diwne, std::string labelDiwne) | |
virtual | ~DiwneObject() |
virtual void | afterDraw(DrawInfo & context)<br>Called last during drawing. |
virtual bool | allowDragStart() const<br>Determines whether a drag operation can start from this object. |
virtual bool | allowDrawing()<br>Decide whether the object should be drawn (when outside the window for example) |
virtual bool | allowHover() const<br>Determines whether the object can be hovered. |
virtual bool | allowInteraction() const<br>Decide whether the object should react to user input in general. |
virtual bool | allowPopup() const<br>Determines whether a popup can be raised over the object. |
virtual bool | allowPress(const DrawInfo & context) const<br>Determines whether the object can be pressed. |
virtual bool | allowSelectOnClick(const DrawInfo & context) const<br>Determines whether the object can be selected by clicking it (eg. |
template <typename T =DiwneObject> <br>T * | as()<br>Returns a raw pointer to itself casted to a type. |
virtual void | destroy(bool logEvent =true)<br>Marks the object for lazy destruction/deallocation and removal from any containers (like the node editor). |
virtual void | draw(DrawMode drawMode =DrawMode_Interactive)<br>Generic draw method meant to be used by external code. |
virtual void | drawDiwne(DrawInfo & context, DrawMode drawMode =DrawMode_Interactive)<br>Internal draw method. |
DrawInfo | drawDiwneEx(DrawInfo & context, DrawMode drawMode =DrawMode_Interactive) |
virtual void | finalize(DrawInfo & context)<br>The final method to be called, gets called every frame and doesn't do any drawing. |
ImRect | getDisplayRect() const<br>Object's bounds aligned to current viewport pixel boundaries. |
ID | getId() const |
DiwneObject * | getParentObject() const |
ImVec2 | getPosition() const<br>Returns the top left corner of the object's rect. |
virtual ImRect | getRect() const<br>Rectangle bounds of the object in DIWNE coordinates (editor canvas coordinates). |
bool | getSelectable() |
virtual bool | getSelected() const<br>Whether the object is selected or not. |
StyleOverride * | getStyleOverride() const |
virtual void | initialize(DrawInfo & context)<br>First method to be called every frame. |
bool | isAnyParentSelected() |
bool | isChildObject() const |
bool | isChildOfObject(DiwneObject * parent) |
bool | isDestroyed() const |
bool | isDragging(DrawInfo & context)<br>Is this object the source of an active dragging operation? |
bool | isFixed() const<br>Fixed objects are ones rendered at a position determined by some other object. |
bool | isRendered() const |
bool | isToBeBroughtToFront() |
virtual void | onDestroy(bool logEvent)<br>Gets called the moment the object is marked for deletion by destroy(). |
virtual void | onDrag(DrawInfo & context, bool dragStart, bool dragEnd)<br>This method gets called when the object is being dragged. |
virtual void | onHover(DrawInfo & context)<br>This method gets called when the object is hovered. |
virtual void | onPopup() |
virtual void | onPressed(bool justPressed, DrawInfo & context)<br>Called when the object is pressed, meaning a key is pressed over it. |
virtual void | onReleased(bool justReleased, DrawInfo & context)<br>Called when the object is not pressed. |
virtual void | onSelection(bool selected) |
void | openPopup()<br>Request to open the object's popup if possible. |
bool | operator!=(const DiwneObject & rhs) const |
bool | operator==(const DiwneObject & rhs) const |
virtual void | popupContent(DrawInfo & context)<br>Content of popup menu raised on this objec. |
virtual void | processInteractions(DrawInfo & context)<br>Method for reacting to user input after the object is fully drawn and its dimensions are known. |
void | setBringToFront(bool val)<br>Marks the object to be brought to front (be drawn first). |
void | setFixed(bool val) |
void | setForceDraw(bool val)<br>When true, makes the object automatically add the ForceDraw DrawMode flag. |
void | setParentObject(DiwneObject * parent) |
void | setPopupEnabled(bool val) |
void | setPosition(const ImVec2 & position)<br>Move the object's rect and any other associated positional data to the specified position. |
void | setRendered(bool val) |
void | setSelectable(bool selectable)<br>Whether the object can be selected. |
virtual bool | setSelected(bool selected)<br>Set the selection state of the object. |
void | setStyleOverride(StyleOverride * styleOverride)<br>Assign a StyleOverride object to this DiwneObject. |
void | setTooltip(const std::string & text) |
void | setTooltipEnabled(bool val) |
template <typename T =DiwneObject> <br>std::shared_ptr< T > | sharedPtr()<br>Returns a shared pointer to this object. |
void | showTooltip(const std::string & label, const ImColor && color, DrawInfo & context)<br>Immediately show a tooltip next to the mouse cursor with the specified text. |
void | showTooltip(const std::string & label, const std::string & desc, const ImColor && color, DrawInfo & context, float wrapWidth =35.f)<br>Immediately show a tooltip next to the mouse cursor with the specified text. |
void | stopDrag(DrawInfo & context)<br>End an active drag operation this object is a source of. |
virtual Style & | style() const<br>Get the style for this object. |
virtual void | tooltipContent(DrawInfo & context)<br>Content of the object's tooltip. |
Protected Functions inherited from DIWNE::DiwneObject
Name | |
---|---|
virtual void | afterDrawDiwne(DrawInfo & context)<br>Updates layout, processes interactions and then calls the user afterDraw() method. |
virtual void | beginDiwne(DrawInfo & context) |
virtual void | endDiwne(DrawInfo & context) |
virtual void | finalizeDiwne(DrawInfo & context) |
virtual void | initializeDiwne(DrawInfo & context) |
virtual bool | isDraggedDiwne()<br>Is the object being dragged? (usually by mouse or some key combo) |
virtual bool | isHoveredDiwne()<br>Is the object being hovered? The default implementation mostly gets this information from ImGui::IsItemHovered() but the behavior can be changed or restricted. |
virtual bool | isJustPressedDiwne()<br>Determine whether a key/s of interest was/were just pressed. |
virtual bool | isPressedDiwne()<br>Determine whether a key/s of interest is/are pressed down over the object. |
virtual bool | popupShouldBeOpenedDiwne() const<br>Determine whether a popup should be opened, that is, by default, that right mouse button was pressed and isn't dragging. |
virtual void | processDragDiwne(DrawInfo & context) |
virtual void | processHoverDiwne(DrawInfo & context)<br>Processes whether the object is currently hovered. |
virtual void | processInteractionsDiwne(DrawInfo & context) |
virtual void | processPopupAndTooltipDiwne(DrawInfo & context)<br>Processes whether a popup should be opened over this object. |
virtual void | processPressAndReleaseDiwne(DrawInfo & context)<br>Processes whether the object is currently pressed (held) and further if it was just pressed or released. |
virtual bool | processSelectDiwne(DrawInfo & context)<br>Processes any interactions related to whether the object should be selected. |
virtual void | setInitialPositionDiwne()<br>Internal helper for setting the object's initial position. |
void | setSize(const ImVec2 & size) |
void | updateRectFromImGuiItem() |
Public Attributes inherited from DIWNE::DiwneObject
Name | |
---|---|
NodeEditor & | diwne <br>Reference to the NodeEditor instance (also named 'editor' in some classes) |
bool | m_deletable <br>Whether the object can be destroyed by the user. |
bool | m_destroy <br>Indicates the object is to be deleted (and deallocated) |
ImRect | m_displayRect <br>Rectangle bounds aligned with the last viewport. |
bool | m_draggable <br>Whether dragging of the object is allowed by default. |
DrawMode | m_drawMode <br>Read-only flag thats updated on each drawDiwne(). |
bool | m_drawnThisFrame <br>Read only flag indicating whether the object has been drawn this frame. |
bool | m_fixed <br>Whether the object can be moved by user operations. |
bool | m_forceHoverDiwne <br>Special flag that can be used to enforce hover state, used by pin drag assist. |
bool | m_hoverable <br>Whether hovering is enabled by default. |
bool | m_hovered <br>Is the object hovered (usually by the mouse or whatever isHoveredDiwne() tracks) |
bool | m_hoverRoot <br>Whether hovering this object should prevent other objects from hovering. |
ID | m_idDiwne <br>Unique numeric identifier of the object. |
bool | m_isDragged <br>Is the object dragged? Returns false immediately on drag end (unlike isDragging()). |
bool | m_isPressed <br>Is the object pressed down (held)? Requirement for dragging. |
bool | m_justHidden <br>Read only flag indicating that this object was drawn last frame, but not this one. |
bool | m_justPressed <br>Read only flag indicating the object was pressed this frame (eg. |
bool | m_justReleased <br>Read only flag indicating the object was released this frame (eg. |
std::string | m_labelDiwne <br>Unique string identifier, consists of <some string>:<m_idDiwne>. |
ImRect | m_rect <br>Rectangle bounds of the object in diwne coordinates. |
StyleOverride * | m_styleOverride <br>Style override to allow uniquely styled object types. |
Protected Attributes inherited from DIWNE::DiwneObject
Name | |
---|---|
unsigned long long | g_diwneIDCounter <br>Static unique ID generator, unique only for current application run. |
bool | m_bringToFront <br>Request the object's rendering order to be moved to the front above other objects. |
bool | m_forceDraw <br>Request the next draw of the object to have the ForceDraw DrawMode flag. |
bool | m_internalHover <br>Temporary storage for an internal ImGui::IsItemHovered() check Can be set in the end() method to determine if object is hovered if applicable. |
bool | m_openPopup <br>Request to open popup. |
bool | m_openTooltip <br>Request to open tooltip. |
DiwneObject * | m_parentObject <br>Sets the parent object of object, relevant in node container and hover hierarchy. |
bool | m_popupEnabled <br>Whether this object has popup enabled. |
std::string | m_popupLabelDiwne <br>ImGui popup identifier. |
bool | m_rendered <br>Whether the object should be drawn, this is a general flag that overrides behavior of the allowDrawing() method. |
bool | m_selectable <br>Should not be accessed directly. |
bool | m_selected <br>Should not be accessed directly. |
bool | m_tooltipEnabled <br>Whether this object has tooltip enabled. |
std::string | m_tooltipText |
Detailed Description
class DIWNE::BasicNode;
class DIWNE::BasicNode;
Parts of the node:
| Top |
|Left|Center|Right| --> |L|C|R| == Middle
| Bottom |
Public Functions Documentation
function BasicNode
BasicNode(
NodeEditor & editor,
std::string label
)
BasicNode(
NodeEditor & editor,
std::string label
)
function begin
virtual void begin(
DrawInfo & context
) override
virtual void begin(
DrawInfo & context
) override
First method to be called during object drawing.
Reimplements: DIWNE::DiwneObject::begin
Reimplemented by: Workspace::CoreNode::begin, Workspace::CoreNodeWithPins::begin, Workspace::Cycle::begin, Workspace::Sequence::begin, DIWNE::BasicNodeWithPins::begin
Can be used to initialize drawing code.
function bottomContent
virtual void bottomContent(
DrawInfo & context
)
virtual void bottomContent(
DrawInfo & context
)
function centerContent
virtual void centerContent(
DrawInfo & context
)
virtual void centerContent(
DrawInfo & context
)
Reimplemented by: Workspace::Camera::centerContent, Workspace::Cycle::centerContent, Workspace::Model::centerContent, Workspace::Operator::centerContent, Workspace::Operator::centerContent, Workspace::Screen::centerContent, Workspace::Sequence::centerContent, Workspace::TransformationBase::centerContent, DIWNE::SequenceNodeContainer::centerContent
function content
virtual void content(
DrawInfo & context
) override
virtual void content(
DrawInfo & context
) override
Called after begin() during drawing.
Reimplements: DIWNE::DiwneObject::content
Draws object content.
function drawBody
virtual void drawBody()
virtual void drawBody()
function drawHeader
virtual void drawHeader(
ImDrawFlags corners =ImDrawFlags_RoundCornersTop
)
virtual void drawHeader(
ImDrawFlags corners =ImDrawFlags_RoundCornersTop
)
function end
virtual void end(
DrawInfo & context
) override
virtual void end(
DrawInfo & context
) override
Called after content().
Reimplements: DIWNE::DiwneObject::end
Reimplemented by: Workspace::TransformationBase::end
Used to end content drawing.
function getTopLabel
const std::string & getTopLabel() const
const std::string & getTopLabel() const
function leftContent
virtual void leftContent(
DrawInfo & context
)
virtual void leftContent(
DrawInfo & context
)
Reimplemented by: Workspace::CoreNodeWithPins::leftContent, Workspace::Cycle::leftContent, Workspace::AngleAxisToQuatOperator::leftContent, DIWNE::BasicNodeWithPins::leftContent
function rightContent
virtual void rightContent(
DrawInfo & context
)
virtual void rightContent(
DrawInfo & context
)
Reimplemented by: Workspace::CoreNodeWithPins::rightContent, Workspace::Cycle::rightContent, DIWNE::BasicNodeWithPins::rightContent
function setTopLabel
void setTopLabel(
const std::string & str
)
void setTopLabel(
const std::string & str
)
function topContent
virtual void topContent(
DrawInfo & context
)
virtual void topContent(
DrawInfo & context
)
Reimplemented by: Workspace::CoreNode::topContent
function translate
virtual void translate(
const ImVec2 & vec
) override
virtual void translate(
const ImVec2 & vec
) override
Move the object's rect and any other associated positional data.
Reimplements: DIWNE::DiwneObject::translate
Reimplemented by: DIWNE::BasicNodeWithPins::translate, Workspace::CoreNodeWithPins::translate
function updateLayout
virtual void updateLayout(
DrawInfo & context
) override
virtual void updateLayout(
DrawInfo & context
) override
Updates object's m_rect, m_displayRect and any other object size variables.
See: m_rect, m_displayRect
Reimplements: DIWNE::DiwneObject::updateLayout
In other words this method is responsible for keeping track of the objects size.
IMPORTANT: This method should only update the m_rect's size, NOT it's position.
The object's rectangle is often set directly from ImGui's last item rectangle. But ImGui coordinates are aligned to pixel boundries via truncation of the coordinates, if the object's rect was updated directly using the screen space ImGui rectangle, there might be a slight discrepancy in the new position converted back to DIWNE coordinates which would cause the object to drift in a feedback loop.
m_displayRect should be updated together with m_rect to preserve correct pixel-aligned rendering in afterDraw(). TODO: Figure out if m_displayRect.Max should be aligned as well or not
This method is called after end() and before the afterDraw() method which can use the calculated size values for final drawing.
Public Attributes Documentation
variable m_center
DiwnePanel m_center;
DiwnePanel m_center;
variable m_left
DiwnePanel m_left;
DiwnePanel m_left;
variable m_middle
DiwnePanel m_middle;
DiwnePanel m_middle;
variable m_right
DiwnePanel m_right;
DiwnePanel m_right;
variable m_top
DiwnePanel m_top;
DiwnePanel m_top;
Protected Attributes Documentation
variable m_bottomSpacing
bool m_bottomSpacing = true;
bool m_bottomSpacing = true;
Whether to add a gap between the node content and the end.
variable m_contentSpacing
float m_contentSpacing = -1;
float m_contentSpacing = -1;
Gap between left, center and right panels (-1 for default item spacing).
variable m_headerSpacing
bool m_headerSpacing = true;
bool m_headerSpacing = true;
Whether to add a gap between the node header and its content.
variable m_topLabel
std::string m_topLabel;
std::string m_topLabel;
variable m_topLabelWidth
float m_topLabelWidth {0};
float m_topLabelWidth {0};
Top label width in DIWNE coordinates.
variable m_topLabelWidthChange
float m_topLabelWidthChange {0};
float m_topLabelWidthChange {0};
Change of top label width since last frame, used to prevent layout flicker.
Updated on 2025-05-31 at 12:55:31 +0000