#include <Elem.hpp>
Public Attributes | |
ClientMarker | cm |
DirtyAttr< bool > | attr_enabled |
DirtyAttr< float4x4 > | modelTransform |
DirtyAttr< ShaderScissor > | scissor |
Public Attributes inherited from iv::InputNode | |
ClientMarker | cm |
Protected Member Functions | |
virtual void | input_childDisconnect (InputNode *) override |
virtual void | input_eachChild (std::function< void(InputNode *) > const &) override |
virtual void | first_pass_impl (ElementRenderer *)=0 |
virtual void | second_pass_impl (ElementRenderer *) |
Protected Member Functions inherited from iv::InputNode | |
virtual bool | input_trigger_process (InputRoot *root, Input::DeviceKey key) |
virtual void | input_process (InputRoot *root, Input::DeviceKey key, bool &press, bool &real, bool &offspace) |
Detailed Description
Constructor & Destructor Documentation
◆ Elem()
◆ ~Elem()
Member Function Documentation
◆ status()
void iv::Elem::status | ( | iv::TableDebugView * | view | ) |
◆ instance()
◆ elem_setParent()
◆ elem_getParent()
◆ elem_getRoot()
|
virtual |
Reimplemented in iv::Camera.
◆ elem_eachChild()
|
inlinevirtual |
Just used for debugging.
Reimplemented in iv::ProtectedSlot, iv::VectorChildrenElem< ChildT >, iv::VectorChildrenElem< TextSegment >, iv::VectorChildrenElem< SlotChild >, iv::VectorChildrenElem< DividerSlot >, iv::OneChildElem< ChildT >, and iv::OneChildElem< SlotChild >.
◆ elem_childDisconnect()
|
inlinevirtual |
◆ first_pass()
void iv::Elem::first_pass | ( | ElementRenderer * | er | ) |
Refresh synthesized parameters, from bottom to top. Also refresh everything (except childrens inherited parameters) that depends on synthesized or initialization parameters and does not depend on inherited parameters.
For each child:
- Call child->first_pass().
- Check changes in own initialization parameters and childs synthesized parameters. If this change would modify own internal state or own synthesized parameters, then modify them. Changes to internal state caused by this change can also be delayed to second pass, in which case we need to queue for that second pass. This is useful if we realy want to avoid double recomputation of internal state that can be changed both by initialization / synthesized parameters and inherited parameters. If this change would modify childrens inherited parameters, then queue self for second pass. No need to queue self for second pass when own inherited parameters changed - inherited parameters are set from parent and parent calls second_pass automatically on child when this happens.
◆ second_pass()
void iv::Elem::second_pass | ( | ElementRenderer * | er | ) |
Refresh inherited parameters and whatever depends on them, from top to bottom.
Remove self from queue for second pass (necessary only if there is a possibility that it added self in that queue in first pass, not necessary when called from parents second_pass). Regenerate internal state and childrens inherited parameters if they depend on changed inherited parameters. Also regenerate internal states that depend on initialization or synthesized parameters and the regeneration was delayed to second pass. If we changed at leas one synthesized parameter in a child, then we need to call second_pass on that child too (this should be called once after all desired changes to that childs inherited parameters were made).
◆ first_pass_frame_id()
◆ second_pass_frame_id()
◆ enabled()
◆ quiet() [1/2]
void iv::Elem::quiet | ( | bool | val | ) |
◆ quiet() [2/2]
◆ FromLocalSpaceToScreenSpace()
◆ FromScreenSpaceToLocalSpace()
◆ FromScreenPlaneToLocalPlane()
◆ Add_InputNode()
◆ Remove_InputNode()
◆ input_childDisconnect()
|
overrideprotectedvirtual |
◆ input_eachChild()
|
overrideprotectedvirtual |
Should consistently give the same nodes and in the same order, if they could react to the same inputs, causing need for priority resolution. When the given children change, InputNode::input_deactivate should be called on all children that were removed from the set and input_treeChanged should be called
Reimplemented from iv::InputNode.
Reimplemented in iv::ProtectedSlot, iv::VectorChildrenElem< ChildT >, iv::VectorChildrenElem< TextSegment >, iv::VectorChildrenElem< SlotChild >, iv::VectorChildrenElem< DividerSlot >, iv::OneChildElem< ChildT >, and iv::OneChildElem< SlotChild >.
◆ first_pass_impl()
|
protectedpure virtual |
Implemented in iv::LumaFrame, iv::Transform, iv::Divider, iv::ProtectedSlot, iv::LumaButton, iv::TextLayout, iv::Image, iv::Slot, iv::Border, iv::Text, iv::Align, iv::Scroller, iv::Prefsize, and iv::LumaScroller.
◆ second_pass_impl()
|
inlineprotectedvirtual |
Reimplemented in iv::Transform, iv::Divider, iv::ProtectedSlot, iv::TextLayout, iv::Image, iv::Slot, iv::Border, iv::Text, iv::Align, iv::Scroller, and iv::Prefsize.
Member Data Documentation
◆ cm
ClientMarker iv::Elem::cm |
◆ attr_enabled
DirtyAttr< bool > iv::Elem::attr_enabled |
Elements are enabled by default. Disabled Elements do not call first_pass or second_pass and therefore no children of them are processed or drawn. This also sets InputNode::inputEnabled to the same value during first pass.
◆ modelTransform
◆ scissor
DirtyAttr< ShaderScissor > iv::Elem::scissor |
The documentation for this class was generated from the following files: