Container that adds margins around child, allowing wide variety of positioning options inside parent. More...

#include <Border.hpp>

Public Member Functions

 Border (Instance *)
 
void status (iv::TableDebugView *view)
 
Borderenabled (bool val)
 
BorderborderLeft (std::optional< float >)
 
BorderborderRight (std::optional< float >)
 
BorderborderTop (std::optional< float >)
 
BorderborderBottom (std::optional< float >)
 
BorderborderFront (std::optional< float >)
 
BorderborderBack (std::optional< float >)
 
BorderleftTop (std::optional< float > left, std::optional< float > top)
 
BorderleftBottom (std::optional< float > left, std::optional< float > bottom)
 
BorderrightTop (std::optional< float > right, std::optional< float > top)
 
BorderrightBottom (std::optional< float > right, std::optional< float > bottom)
 
BorderleftRight (std::optional< float > left, std::optional< float > right)
 
BordertopBottom (std::optional< float > top, std::optional< float > bottom)
 
BorderfrontBack (std::optional< float > front, std::optional< float > back)
 
Instanceinstance () const
 
- Public Member Functions inherited from iv::OneChildElem< SlotChild >
 OneChildElem (Instance *inst)
 
 ~OneChildElem ()
 
T * createChild (CArgs const &... cargs)
 
T * createChild_Instance (char const *name, CArgs const &... cargs)
 
void setChild (SlotChild *)
 
void removeChild ()
 
- Public Member Functions inherited from iv::Elem
 Elem (Instance *inst)
 
 ~Elem ()
 
void status (iv::TableDebugView *view)
 
Instanceinstance () const
 
void elem_setParent (Elem *)
 
Elemelem_getParent ()
 
virtual Cameraelem_getRoot ()
 
void first_pass (ElementRenderer *)
 
void second_pass (ElementRenderer *)
 
unsigned first_pass_frame_id ()
 
unsigned second_pass_frame_id ()
 
Elemenabled (bool val)
 
void quiet (bool)
 
bool quiet () const
 
float3 FromLocalSpaceToScreenSpace (float3 local_space)
 
float3 FromScreenSpaceToLocalSpace (float3 screen_space)
 
float2 FromScreenPlaneToLocalPlane (float2 screen_space)
 
void Add_InputNode (InputNode *node)
 
void Remove_InputNode (InputNode *node)
 
- Public Member Functions inherited from iv::InputNode
 InputNode (Instance *inst)
 
 ~InputNode ()
 
Instanceinstance () const
 
void status (iv::TableDebugView *view)
 
void inputEnabled (bool)
 
bool inputEnabled ()
 
void quiet (bool)
 
bool quiet () const
 
void input_deactivate ()
 
void input_treeRefresh ()
 
void input_setParent (InputNode *)
 
InputNodeinput_getParent ()
 
virtual InputRootinput_getRoot ()
 
bool input_trigger_visit (InputRoot *root, Input::DeviceKey key)
 
bool input_visit (InputRoot *root, Input::DeviceKey key, bool &press, bool &real, bool &offspace)
 
- Public Member Functions inherited from iv::SlotChild
 SlotChild (Elem *elem)
 
Instanceinstance () const
 
void status (iv::TableDebugView *view)
 
virtual bool picking_test (int2 input_pos) override
 
virtual bool picking_test_pixel_perfect (float2 local_pos)
 
- Public Member Functions inherited from iv::Pickable
 Pickable (Elem *elem)
 
Elemelem ()
 
const Elemelem () const
 

Public Attributes

ClientMarker cm
 
DirtyAttr< std::optional< float > > attr_borderLeft
 
DirtyAttr< std::optional< float > > attr_borderRight
 
DirtyAttr< std::optional< float > > attr_borderTop
 
DirtyAttr< std::optional< float > > attr_borderBottom
 
DirtyAttr< std::optional< float > > attr_borderFront
 
DirtyAttr< std::optional< float > > attr_borderBack
 
- Public Attributes inherited from iv::OneChildElem< SlotChild >
ClientMarker cm
 
- Public Attributes inherited from iv::Elem
ClientMarker cm
 
DirtyAttr< bool > attr_enabled
 
DirtyAttr< float4x4modelTransform
 
DirtyAttr< ShaderScissorscissor
 
- Public Attributes inherited from iv::InputNode
ClientMarker cm
 
- Public Attributes inherited from iv::SlotChild
ClientMarker cm
 
DirtyAttr< float3expectedSize
 
DirtyAttr< float3preferredSize
 
DirtyAttr< float3size
 
- Public Attributes inherited from iv::Pickable
ClientMarker cm
 

Protected Member Functions

virtual void first_pass_impl (ElementRenderer *) override
 
virtual void second_pass_impl (ElementRenderer *) override
 
- Protected Member Functions inherited from iv::OneChildElem< SlotChild >
virtual void elem_eachChild (std::function< void(Elem *) > const &) override
 
virtual void elem_childDisconnect (Elem *) override
 
virtual void input_eachChild (std::function< void(InputNode *) > const &f) override
 
virtual void input_childDisconnect (InputNode *child) override
 
- 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)
 

Additional Inherited Members

- Protected Attributes inherited from iv::OneChildElem< SlotChild >
DirtyAttr< SlotChild * > child
 

Detailed Description

Container that adds margins around child, allowing wide variety of positioning options inside parent.

When some borders values are left unset, then the border stretches automatically to allow child to have its preferred size along that axis.

Typical use cases:

  1. Transparent borders around child - All borders along useful axes are set to 0 or higher value. Child is stretched or shrinked to fill the remaining space inside.
  2. Align and offset child - Leave at least one border unset (std::nullopt) around each useful axis. Child will get its preferred size (if there is enough space) and child will be position with given offset along sides that have border set to a valid value. If neither border along one axis is set, then the child will be centered along that axis.

Definition at line 20 of file Border.hpp.

Constructor & Destructor Documentation

◆ Border()

iv::Border::Border ( Instance inst)

Definition at line 8 of file Border.cpp.

Member Function Documentation

◆ status()

void iv::Border::status ( iv::TableDebugView view)

Definition at line 23 of file Border.cpp.

◆ enabled()

Border * iv::Border::enabled ( bool  val)

Definition at line 230 of file Border.cpp.

◆ borderLeft()

Border * iv::Border::borderLeft ( std::optional< float >  val)

Definition at line 236 of file Border.cpp.

◆ borderRight()

Border * iv::Border::borderRight ( std::optional< float >  val)

Definition at line 242 of file Border.cpp.

◆ borderTop()

Border * iv::Border::borderTop ( std::optional< float >  val)

Definition at line 248 of file Border.cpp.

◆ borderBottom()

Border * iv::Border::borderBottom ( std::optional< float >  val)

Definition at line 254 of file Border.cpp.

◆ borderFront()

Border * iv::Border::borderFront ( std::optional< float >  val)

Definition at line 260 of file Border.cpp.

◆ borderBack()

Border * iv::Border::borderBack ( std::optional< float >  val)

Definition at line 266 of file Border.cpp.

◆ leftTop()

Border * iv::Border::leftTop ( std::optional< float >  left,
std::optional< float >  top 
)

Definition at line 272 of file Border.cpp.

◆ leftBottom()

Border * iv::Border::leftBottom ( std::optional< float >  left,
std::optional< float >  bottom 
)

Definition at line 279 of file Border.cpp.

◆ rightTop()

Border * iv::Border::rightTop ( std::optional< float >  right,
std::optional< float >  top 
)

Definition at line 286 of file Border.cpp.

◆ rightBottom()

Border * iv::Border::rightBottom ( std::optional< float >  right,
std::optional< float >  bottom 
)

Definition at line 293 of file Border.cpp.

◆ leftRight()

Border * iv::Border::leftRight ( std::optional< float >  left,
std::optional< float >  right 
)

Definition at line 300 of file Border.cpp.

◆ topBottom()

Border * iv::Border::topBottom ( std::optional< float >  top,
std::optional< float >  bottom 
)

Definition at line 307 of file Border.cpp.

◆ frontBack()

Border * iv::Border::frontBack ( std::optional< float >  front,
std::optional< float >  back 
)

Definition at line 314 of file Border.cpp.

◆ first_pass_impl()

void iv::Border::first_pass_impl ( ElementRenderer er)
overrideprotectedvirtual

Implements iv::Elem.

Definition at line 46 of file Border.cpp.

◆ second_pass_impl()

void iv::Border::second_pass_impl ( ElementRenderer er)
overrideprotectedvirtual

Reimplemented from iv::Elem.

Definition at line 191 of file Border.cpp.

◆ instance()

Instance * iv::Elem::instance

Definition at line 57 of file Elem.cpp.

Member Data Documentation

◆ cm

ClientMarker iv::Border::cm

Definition at line 23 of file Border.hpp.

◆ attr_borderLeft

DirtyAttr< std::optional< float > > iv::Border::attr_borderLeft

Definition at line 30 of file Border.hpp.

◆ attr_borderRight

DirtyAttr< std::optional< float > > iv::Border::attr_borderRight

Definition at line 31 of file Border.hpp.

◆ attr_borderTop

DirtyAttr< std::optional< float > > iv::Border::attr_borderTop

Definition at line 33 of file Border.hpp.

◆ attr_borderBottom

DirtyAttr< std::optional< float > > iv::Border::attr_borderBottom

Definition at line 34 of file Border.hpp.

◆ attr_borderFront

DirtyAttr< std::optional< float > > iv::Border::attr_borderFront

Definition at line 36 of file Border.hpp.

◆ attr_borderBack

DirtyAttr< std::optional< float > > iv::Border::attr_borderBack

Definition at line 37 of file Border.hpp.


The documentation for this class was generated from the following files: