Skip to content

Workspace::Screen

#include "GUI/Workspace/Nodes/Screen.h"

Inherits from Workspace::CoreNodeWithPins, Workspace::CoreNode, Workspace::Node, IVisitable, DIWNE::BasicNode, DIWNE::Node, DIWNE::DiwneObject, std::enable_shared_from_this< DiwneObject >

Public Functions

Name
Screen(DIWNE::NodeEditor & diwne)
~Screen() override
virtual voidaccept(NodeVisitor & visitor) override
virtual voidcenterContent(DIWNE::DrawInfo & context) override
virtual voiddrawMenuLevelOfDetail() override
virtual voidfinalize(DIWNE::DrawInfo & context) override<br>The final method to be called, gets called every frame and doesn't do any drawing.
ImVec2getScreenSize() const
virtual intmaxLengthOfData() override<br>Calculates the largest number of characters/decimal places a data item has in this node.
virtual voidonSelection(bool selected) override
virtual voidpopupContent(DIWNE::DrawInfo & context) override<br>Content of popup menu raised on this objec.
voidsetScreenSize(ImVec2 aspect)

Additional inherited members

Public Functions inherited from Workspace::CoreNodeWithPins

Name
CoreNodeWithPins(DIWNE::NodeEditor & diwne, Ptr< Core::Node > nodebase, bool showDataOnPins =true)
virtual voidafterDraw(DIWNE::DrawInfo & context) override<br>Called last during drawing.
virtual boolallowPress(const DIWNE::DrawInfo & context) const override<br>Determines whether the object can be pressed.
virtual voidbegin(DIWNE::DrawInfo & context) override<br>First method to be called during object drawing.
virtual voiddrawInputPins(DIWNE::DrawInfo & context)
virtual voiddrawOutputPins(DIWNE::DrawInfo & context)
const std::vector< Ptr< CorePin > > &getInputs() const<br>get vector of input pins
const std::vector< Ptr< CorePin > > &getOutputs() const<br>get vector of output pins
virtual voidleftContent(DIWNE::DrawInfo & context) override
virtual voidonDestroy(bool logEvent) override<br>Gets called the moment the object is marked for deletion by destroy().
virtual voidrightContent(DIWNE::DrawInfo & context) override
virtual voidtranslate(const ImVec2 & vec) override<br>Move the object's rect and any other associated positional data.
voidunplugAll()
voidupdatePinStyle(CorePin & pin)

Protected Functions inherited from Workspace::CoreNodeWithPins

Name
boolprocessPinDragAssist()<br>Inspects mouse position relative to all pins within the node and forces a pin hover operation on the nearest pin of the mouse is close enough, this allows pins to be (un)plugged more easily, not requiring the mouse to be directly over them.

Protected Attributes inherited from Workspace::CoreNodeWithPins

Name
std::vector< CorePin * >m_leftPins
DIWNE::VStackm_outputPinsVstack
std::vector< CorePin * >m_rightPins
boolm_showDataOnPins
std::vector< Ptr< CorePin > >m_workspaceInputs
std::vector< Ptr< CorePin > >m_workspaceOutputs

Public Functions inherited from Workspace::CoreNode

Name
CoreNode(DIWNE::NodeEditor & diwne, Ptr< Core::Node > nodebase)
~CoreNode() override
virtual boolallowDrawing() override<br>Decide whether the object should be drawn (when outside the window for example)
virtual voidbegin(DIWNE::DrawInfo & context) override<br>First method to be called during object drawing.
voiddrawMenuDuplicate(DIWNE::DrawInfo & context)
voiddrawMenuSetEditable()
voiddrawMenuSetPrecision()
voiddrawTrackingBorder(bool active, bool interpolating, float progress) const
voiddrawTrackingCursor(ImRect rect, const Core::TrackedNodeData * t, bool inactiveOverlay, bool round) const
voidduplicate(DIWNE::DrawInfo & context, bool multiDuplication)
virtual voidendDiwne(DIWNE::DrawInfo & context) override
floatgetDataItemsWidth()<br>Returns the desired width of data items (ImGui number fields)
FloatPopupMode &getFloatPopupMode()
const std::string &getKeyword() const<br>Returns the string identifier of the core node type.
LevelOfDetailgetLevelOfDetail()
virtual intgetLODCount()<br>Number of levels this node cycles through.
Ptr< Core::Node >getNodebase() const<br>Returns the managed I3TCore node.
intgetNumberOfVisibleDecimal()
virtual voidonDestroy(bool logEvent) override<br>Gets called the moment the object is marked for deletion by destroy().
virtual voidonPopup() override
virtual voidonReleased(bool justReleased, DIWNE::DrawInfo & context) override<br>Called when the object is not pressed.
voidqueueUpdateDataItemsWidth()<br>This call requests the data items width to be recalculated on the next draw of ths node.
voidsetFloatPopupMode(FloatPopupMode mode)
LevelOfDetailsetLevelOfDetail(LevelOfDetail levelOfDetail)
virtual voidsetNumberOfVisibleDecimal(int value)
virtual LevelOfDetailswitchLevelOfDetail(LevelOfDetail oldLevel)<br>Switches to the next LOD level.
virtual voidtopContent(DIWNE::DrawInfo & context) override
virtual voidtopRightHeaderContent(DIWNE::DrawInfo & context)<br>Special method to fill contents between the node label and the top right menu button (if present) The method call must include a m_top.spring(1.0f); call somewhere in it.
voiddrawMenuLevelOfDetail_builder(Ptr< CoreNode > node, std::vector< LevelOfDetail > const & levels_of_detail)

Protected Functions inherited from Workspace::CoreNode

Name
virtual floatupdateDataItemsWidth()<br>Calculates the final desired pixel width of data items (floats inside vectors, matrices etc.).

Public Attributes inherited from Workspace::CoreNode

Name
constexpr charCORE_NODE_FLAG
boolm_referenceSpaceSource <br>Indicates that this node is the source of a custom scene view reference space TODO: What if it's a source for multiple windows? Would be nice to keep track of that.

Protected Attributes inherited from Workspace::CoreNode

Name
floatm_dataItemsWidth
boolm_drawContextMenuButton
FloatPopupModem_floatPopupMode
boolm_isFirstDraw
boolm_isLabelBeingEdited
LevelOfDetailm_levelOfDetail
const Ptr< Core::Node >m_nodebase <br>Reference to the I3TCore node @description Each WorkspaceGUI node represents a single I3TCore node.
intm_numberOfVisibleDecimal <br>number of decimal places used while display floats in the workspace
boolm_topBottomSpacingDefault <br>Whether this node has spacing between content and header / end.
boolm_updateDataItemsWidth

Public Functions inherited from Workspace::Node

Name
Node(DIWNE::NodeEditor & diwne, std::string label ="Header")
virtual boolallowDragStart() const override<br>Determines whether a drag operation can start from this object.
virtual voiddrawMenuDelete()
boolgetDuplicateNode() const
virtual voidonDestroy(bool logEvent)<br>Gets called the moment the object is marked for deletion by destroy().
voidsetDuplicateNode(bool value)

Public Attributes inherited from Workspace::Node

Name
boolm_duplicateNode

Public Functions inherited from DIWNE::BasicNode

Name
BasicNode(NodeEditor & editor, std::string label)
virtual voidbegin(DrawInfo & context) override<br>First method to be called during object drawing.
virtual voidbottomContent(DrawInfo & context)
virtual voidcontent(DrawInfo & context) override<br>Called after begin() during drawing.
virtual voiddrawBody()
virtual voiddrawHeader(ImDrawFlags corners =ImDrawFlags_RoundCornersTop)
virtual voidend(DrawInfo & context) override<br>Called after content().
const std::string &getTopLabel() const
virtual voidleftContent(DrawInfo & context)
virtual voidrightContent(DrawInfo & context)
voidsetTopLabel(const std::string & str)
virtual voidtopContent(DrawInfo & context)
virtual voidtranslate(const ImVec2 & vec) override<br>Move the object's rect and any other associated positional data.
virtual voidupdateLayout(DrawInfo & context) override<br>Updates object's m_rect, m_displayRect and any other object size variables.

Public Attributes inherited from DIWNE::BasicNode

Name
DiwnePanelm_center
DiwnePanelm_left
DiwnePanelm_middle
DiwnePanelm_right
DiwnePanelm_top

Protected Attributes inherited from DIWNE::BasicNode

Name
boolm_bottomSpacing <br>Whether to add a gap between the node content and the end.
floatm_contentSpacing <br>Gap between left, center and right panels (-1 for default item spacing).
boolm_headerSpacing <br>Whether to add a gap between the node header and its content.
std::stringm_topLabel
floatm_topLabelWidth <br>Top label width in DIWNE coordinates.
floatm_topLabelWidthChange <br>Change of top label width since last frame, used to prevent layout flicker.

Public Functions inherited from DIWNE::Node

Name
Node(const Node & other) =delete
Node(NodeEditor & diwne, std::string labelDiwne ="DiwneNode")
virtual voidafterDraw(DrawInfo & context) override<br>Called last during drawing.
virtual boolallowDrawing() override<br>Decide whether the object should be drawn (when outside the window for example)
virtual voidbegin(DrawInfo & context) override<br>First method to be called during object drawing.
virtual voidcontent(DrawInfo & context) override<br>Called after begin() during drawing.
virtual voiddrawSelectionIndicator(DrawInfo & context)
virtual voidend(DrawInfo & context) override<br>Called after content().
boolgetFlag(char index) const<br>Get the node bit flag value at index.
virtual voidonDestroy(bool logEvent) override<br>Gets called the moment the object is marked for deletion by destroy().
virtual voidonDrag(DrawInfo & context, bool dragStart, bool dragEnd) override<br>This method gets called when the object is being dragged.
virtual voidonHover(DrawInfo & context) override<br>This method gets called when the object is hovered.
Node &operator=(const Node & other) =delete
voidsetFlag(char index, bool value)<br>Set the node bit flag value at index.
virtual voidupdateLayout(DrawInfo & context) override<br>Updates object's m_rect, m_displayRect and any other object size variables.
boolwillBeRemovedFromContainer(const DiwneObject * container)

Protected Functions inherited from DIWNE::Node

Name
virtual voidafterDrawDiwne(DrawInfo & context) override<br>Updates layout, processes interactions and then calls the user afterDraw() method.
virtual boolprocessSelectDiwne(DrawInfo & context) override<br>Processes any interactions related to whether the object should be selected.
virtual voidsetInitialPositionDiwne() override<br>Internal helper for setting the object's initial position.

Public Attributes inherited from DIWNE::Node

Name
boolm_forceDraw <br>Internal flag to force drawing of the node, used by pins (TODO: move to DiwneObject?)

Protected Attributes inherited from DIWNE::Node

Name
NodeFlagm_flag <br>The node flag bit field.

Public Functions inherited from DIWNE::DiwneObject

Name
DiwneObject(DIWNE::NodeEditor & diwne, std::string labelDiwne)
virtual~DiwneObject()
virtual voidafterDraw(DrawInfo & context)<br>Called last during drawing.
virtual boolallowDragStart() const<br>Determines whether a drag operation can start from this object.
virtual boolallowDrawing()<br>Decide whether the object should be drawn (when outside the window for example)
virtual boolallowHover() const<br>Determines whether the object can be hovered.
virtual boolallowInteraction() const<br>Decide whether the object should react to user input in general.
virtual boolallowPopup() const<br>Determines whether a popup can be raised over the object.
virtual boolallowPress(const DrawInfo & context) const<br>Determines whether the object can be pressed.
virtual boolallowSelectOnClick(const DrawInfo & context) const<br>Determines whether the object can be selected by clicking it (eg.
template <typename T =DiwneObject&gt; <br>T *as()<br>Returns a raw pointer to itself casted to a type.
virtual voidbegin(DrawInfo & context) =0<br>First method to be called during object drawing.
virtual voidcontent(DrawInfo & context) =0<br>Called after begin() during drawing.
virtual voiddestroy(bool logEvent =true)<br>Marks the object for lazy destruction/deallocation and removal from any containers (like the node editor).
virtual voiddraw(DrawMode drawMode =DrawMode_Interactive)<br>Generic draw method meant to be used by external code.
virtual voiddrawDiwne(DrawInfo & context, DrawMode drawMode =DrawMode_Interactive)<br>Internal draw method.
DrawInfodrawDiwneEx(DrawInfo & context, DrawMode drawMode =DrawMode_Interactive)
virtual voidend(DrawInfo & context) =0<br>Called after content().
ImRectgetDisplayRect() const<br>Object's bounds aligned to current viewport pixel boundaries.
IDgetId() const
DiwneObject *getParentObject() const
ImVec2getPosition() const<br>Returns the top left corner of the object's rect.
virtual ImRectgetRect() const<br>Rectangle bounds of the object in DIWNE coordinates (editor canvas coordinates).
boolgetSelectable()
virtual boolgetSelected() const<br>Whether the object is selected or not.
StyleOverride *getStyleOverride() const
virtual voidinitialize(DrawInfo & context)<br>First method to be called every frame.
boolisAnyParentSelected()
boolisChildObject() const
boolisChildOfObject(DiwneObject * parent)
boolisDestroyed() const
boolisDragging(DrawInfo & context)<br>Is this object the source of an active dragging operation?
boolisFixed() const<br>Fixed objects are ones rendered at a position determined by some other object.
boolisRendered() const
boolisToBeBroughtToFront()
virtual voidonDestroy(bool logEvent)<br>Gets called the moment the object is marked for deletion by destroy().
virtual voidonDrag(DrawInfo & context, bool dragStart, bool dragEnd)<br>This method gets called when the object is being dragged.
virtual voidonHover(DrawInfo & context)<br>This method gets called when the object is hovered.
virtual voidonPopup()
virtual voidonPressed(bool justPressed, DrawInfo & context)<br>Called when the object is pressed, meaning a key is pressed over it.
virtual voidonReleased(bool justReleased, DrawInfo & context)<br>Called when the object is not pressed.
voidopenPopup()<br>Request to open the object's popup if possible.
booloperator!=(const DiwneObject & rhs) const
booloperator==(const DiwneObject & rhs) const
virtual voidprocessInteractions(DrawInfo & context)<br>Method for reacting to user input after the object is fully drawn and its dimensions are known.
voidsetBringToFront(bool val)<br>Marks the object to be brought to front (be drawn first).
voidsetFixed(bool val)
voidsetForceDraw(bool val)<br>When true, makes the object automatically add the ForceDraw DrawMode flag.
voidsetParentObject(DiwneObject * parent)
voidsetPopupEnabled(bool val)
voidsetPosition(const ImVec2 & position)<br>Move the object's rect and any other associated positional data to the specified position.
voidsetRendered(bool val)
voidsetSelectable(bool selectable)<br>Whether the object can be selected.
virtual boolsetSelected(bool selected)<br>Set the selection state of the object.
voidsetStyleOverride(StyleOverride * styleOverride)<br>Assign a StyleOverride object to this DiwneObject.
voidsetTooltip(const std::string & text)
voidsetTooltipEnabled(bool val)
template <typename T =DiwneObject&gt; <br>std::shared_ptr< T >sharedPtr()<br>Returns a shared pointer to this object.
voidshowTooltip(const std::string & label, const ImColor && color, DrawInfo & context)<br>Immediately show a tooltip next to the mouse cursor with the specified text.
voidshowTooltip(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.
voidstopDrag(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 voidtooltipContent(DrawInfo & context)<br>Content of the object's tooltip.
virtual voidtranslate(const ImVec2 & vec)<br>Move the object's rect and any other associated positional data.
virtual voidupdateLayout(DrawInfo & context) =0<br>Updates object's m_rect, m_displayRect and any other object size variables.

Protected Functions inherited from DIWNE::DiwneObject

Name
virtual voidafterDrawDiwne(DrawInfo & context)<br>Updates layout, processes interactions and then calls the user afterDraw() method.
virtual voidbeginDiwne(DrawInfo & context)
virtual voidendDiwne(DrawInfo & context)
virtual voidfinalizeDiwne(DrawInfo & context)
virtual voidinitializeDiwne(DrawInfo & context)
virtual boolisDraggedDiwne()<br>Is the object being dragged? (usually by mouse or some key combo)
virtual boolisHoveredDiwne()<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 boolisJustPressedDiwne()<br>Determine whether a key/s of interest was/were just pressed.
virtual boolisPressedDiwne()<br>Determine whether a key/s of interest is/are pressed down over the object.
virtual boolpopupShouldBeOpenedDiwne() const<br>Determine whether a popup should be opened, that is, by default, that right mouse button was pressed and isn't dragging.
virtual voidprocessDragDiwne(DrawInfo & context)
virtual voidprocessHoverDiwne(DrawInfo & context)<br>Processes whether the object is currently hovered.
virtual voidprocessInteractionsDiwne(DrawInfo & context)
virtual voidprocessPopupAndTooltipDiwne(DrawInfo & context)<br>Processes whether a popup should be opened over this object.
virtual voidprocessPressAndReleaseDiwne(DrawInfo & context)<br>Processes whether the object is currently pressed (held) and further if it was just pressed or released.
virtual boolprocessSelectDiwne(DrawInfo & context)<br>Processes any interactions related to whether the object should be selected.
virtual voidsetInitialPositionDiwne()<br>Internal helper for setting the object's initial position.
voidsetSize(const ImVec2 & size)
voidupdateRectFromImGuiItem()

Public Attributes inherited from DIWNE::DiwneObject

Name
NodeEditor &diwne <br>Reference to the NodeEditor instance (also named 'editor' in some classes)
boolm_deletable <br>Whether the object can be destroyed by the user.
boolm_destroy <br>Indicates the object is to be deleted (and deallocated)
ImRectm_displayRect <br>Rectangle bounds aligned with the last viewport.
boolm_draggable <br>Whether dragging of the object is allowed by default.
DrawModem_drawMode <br>Read-only flag thats updated on each drawDiwne().
boolm_drawnThisFrame <br>Read only flag indicating whether the object has been drawn this frame.
boolm_fixed <br>Whether the object can be moved by user operations.
boolm_forceHoverDiwne <br>Special flag that can be used to enforce hover state, used by pin drag assist.
boolm_hoverable <br>Whether hovering is enabled by default.
boolm_hovered <br>Is the object hovered (usually by the mouse or whatever isHoveredDiwne() tracks)
boolm_hoverRoot <br>Whether hovering this object should prevent other objects from hovering.
IDm_idDiwne <br>Unique numeric identifier of the object.
boolm_isDragged <br>Is the object dragged? Returns false immediately on drag end (unlike isDragging()).
boolm_isPressed <br>Is the object pressed down (held)? Requirement for dragging.
boolm_justHidden <br>Read only flag indicating that this object was drawn last frame, but not this one.
boolm_justPressed <br>Read only flag indicating the object was pressed this frame (eg.
boolm_justReleased <br>Read only flag indicating the object was released this frame (eg.
std::stringm_labelDiwne <br>Unique string identifier, consists of <some string>:<m_idDiwne>.
ImRectm_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 longg_diwneIDCounter <br>Static unique ID generator, unique only for current application run.
boolm_bringToFront <br>Request the object's rendering order to be moved to the front above other objects.
boolm_forceDraw <br>Request the next draw of the object to have the ForceDraw DrawMode flag.
boolm_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.
boolm_openPopup <br>Request to open popup.
boolm_openTooltip <br>Request to open tooltip.
DiwneObject *m_parentObject <br>Sets the parent object of object, relevant in node container and hover hierarchy.
boolm_popupEnabled <br>Whether this object has popup enabled.
std::stringm_popupLabelDiwne <br>ImGui popup identifier.
boolm_rendered <br>Whether the object should be drawn, this is a general flag that overrides behavior of the allowDrawing() method.
boolm_selectable <br>Should not be accessed directly.
boolm_selected <br>Should not be accessed directly.
boolm_tooltipEnabled <br>Whether this object has tooltip enabled.
std::stringm_tooltipText

Public Functions Documentation

function Screen

cpp
explicit Screen(
    DIWNE::NodeEditor & diwne
)
explicit Screen(
    DIWNE::NodeEditor & diwne
)

function ~Screen

cpp
~Screen() override
~Screen() override

function accept

cpp
inline virtual void accept(
    NodeVisitor & visitor
) override
inline virtual void accept(
    NodeVisitor & visitor
) override

Reimplements: IVisitable::accept

function centerContent

cpp
virtual void centerContent(
    DIWNE::DrawInfo & context
) override
virtual void centerContent(
    DIWNE::DrawInfo & context
) override

Reimplements: DIWNE::BasicNode::centerContent

function drawMenuLevelOfDetail

cpp
virtual void drawMenuLevelOfDetail() override
virtual void drawMenuLevelOfDetail() override

Reimplements: Workspace::CoreNode::drawMenuLevelOfDetail

function finalize

cpp
virtual void finalize(
    DIWNE::DrawInfo & context
) override
virtual void finalize(
    DIWNE::DrawInfo & context
) override

The final method to be called, gets called every frame and doesn't do any drawing.

Reimplements: DIWNE::DiwneObject::finalize

function getScreenSize

cpp
ImVec2 getScreenSize() const
ImVec2 getScreenSize() const

function maxLengthOfData

cpp
virtual int maxLengthOfData() override
virtual int maxLengthOfData() override

Calculates the largest number of characters/decimal places a data item has in this node.

Reimplements: Workspace::CoreNode::maxLengthOfData

This call will often be delegated to the pins of the node.

function onSelection

cpp
virtual void onSelection(
    bool selected
) override
virtual void onSelection(
    bool selected
) override

Reimplements: Workspace::CoreNode::onSelection

function popupContent

cpp
virtual void popupContent(
    DIWNE::DrawInfo & context
) override
virtual void popupContent(
    DIWNE::DrawInfo & context
) override

Content of popup menu raised on this objec.

Reimplements: Workspace::CoreNode::popupContent

function setScreenSize

cpp
void setScreenSize(
    ImVec2 aspect
)
void setScreenSize(
    ImVec2 aspect
)

Updated on 2025-05-31 at 12:55:30 +0000