Flexible base for variously styled buttons that needs to be supplied multiple textures. More...

#include <LumaButton.hpp>

Public Member Functions

 LumaButton (Instance *inst, LumaStyleId style=LumaStyleId())
 
LumaButtonsufraceNeutralColor (std::optional< float4 >)
 
LumaButtonoverlayNeutralColor (std::optional< float4 >)
 
LumaButtonresizeStage (FlatShader::ResizeStage)
 
LumaButtonsurface (ResourcePath)
 
LumaButtonoverlay (ResourcePath)
 
LumaButtonhot (ResourcePath)
 
LumaButtonpreblend (float4 val)
 
LumaButtontranslucent (bool val)
 
- Public Member Functions inherited from iv::PickableSlot
 PickableSlot (Instance *inst)
 
void pickable_elem (Pickable *pickable)
 
float2 input_position_local ()
 
- Public Member Functions inherited from iv::Slot
 Slot (Instance *)
 
void status (iv::TableDebugView *view)
 
Instanceinstance () const
 
- Public Member Functions inherited from iv::VectorChildrenElem< SlotChild >
 VectorChildrenElem (Instance *inst)
 
 ~VectorChildrenElem ()
 
T * createChild (CArgs const &... cargs)
 
T * createChild_Instance (char const *name, CArgs const &... cargs)
 
void pushChild (SlotChild *)
 
void removeChild (SlotChild *)
 
- 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 Member Functions inherited from iv::LumaListener
 LumaListener (Instance *inst, LumaStyleId)
 
 ~LumaListener ()
 
Instanceinstance () const
 
LumaStyleId style_id () const
 
const LumaStylestyle () const
 
- Public Member Functions inherited from iv::TranslucentElem
 TranslucentElem (Elem *elem)
 
void status (iv::TableDebugView *view)
 
Elemelem ()
 
const Elemelem () const
 
TranslucentElempreblend (float4 val)
 
TranslucentElemtranslucent (bool val)
 

Public Attributes

ClientMarker cm
 
DirtyAttr< std::optional< float4 > > attr_sufraceNeutralColor
 
DirtyAttr< std::optional< float4 > > attr_overlayNeutralColor
 
DirtyAttr< FlatShader::ResizeStageattr_resizeStage
 
DirtyAttr< ResourcePathattr_surface
 
DirtyAttr< ResourcePathattr_overlay
 
DirtyAttr< ResourcePathattr_hot
 
- Public Attributes inherited from iv::PickableSlot
ClientMarker cm
 
Position_InputNode input
 
- Public Attributes inherited from iv::Slot
ClientMarker cm
 
- Public Attributes inherited from iv::VectorChildrenElem< 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
 
- Public Attributes inherited from iv::LumaListener
ClientMarker cm
 
- Public Attributes inherited from iv::TranslucentElem
ClientMarker cm
 
DirtyAttr< float4attr_preblend
 Enables blending in fragment shader - blends into a fixed color rather than into the current content of framebuffer. This allows us to emulate blending in static scenes without requiring specific draw order. More...
 
DirtyAttr< bool > attr_translucent
 Item will be drawn as translucent - enables blending and draws after all opaque elements sorted by depth with other translucent objects. More...
 

Static Public Attributes

static const constexpr int DefaultShadowHeightPx = 2
 

Protected Member Functions

virtual void first_pass_impl (ElementRenderer *) override
 
virtual void ColorsChanged (float4 surface, float4 on_surface)
 
void CallColorsChanged ()
 
virtual void LumaStyleChanged (LumaStyle const &) override
 
- Protected Member Functions inherited from iv::PickableSlot
virtual bool position_test (int2 input_pos) override
 
- Protected Member Functions inherited from iv::Slot
virtual void second_pass_impl (ElementRenderer *) override
 
- Protected Member Functions inherited from iv::VectorChildrenElem< 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)
 

Protected Attributes

Slot surface_slot
 
- Protected Attributes inherited from iv::PickableSlot
Pickablepickable
 
- Protected Attributes inherited from iv::VectorChildrenElem< SlotChild >
std::vector< SlotChild * > children
 
bool children_dirty
 

Detailed Description

Flexible base for variously styled buttons that needs to be supplied multiple textures.

At least LumaButton::surface should be set. LumaButton::hot is nice addition for visual responsiveness and LumaButton::overlay should contain foreground graphics - symbols, glyphs or an icon.

Definition at line 17 of file LumaButton.hpp.

Constructor & Destructor Documentation

◆ LumaButton()

iv::LumaButton::LumaButton ( Instance inst,
LumaStyleId  style = LumaStyleId() 
)

Definition at line 9 of file LumaButton.cpp.

Member Function Documentation

◆ sufraceNeutralColor()

LumaButton * iv::LumaButton::sufraceNeutralColor ( std::optional< float4 val)

Definition at line 231 of file LumaButton.cpp.

◆ overlayNeutralColor()

LumaButton * iv::LumaButton::overlayNeutralColor ( std::optional< float4 val)

Definition at line 237 of file LumaButton.cpp.

◆ resizeStage()

LumaButton * iv::LumaButton::resizeStage ( FlatShader::ResizeStage  val)

Definition at line 243 of file LumaButton.cpp.

◆ surface()

LumaButton * iv::LumaButton::surface ( ResourcePath  val)

Definition at line 249 of file LumaButton.cpp.

◆ overlay()

LumaButton * iv::LumaButton::overlay ( ResourcePath  val)

Definition at line 255 of file LumaButton.cpp.

◆ hot()

LumaButton * iv::LumaButton::hot ( ResourcePath  val)

Definition at line 261 of file LumaButton.cpp.

◆ preblend()

LumaButton * iv::LumaButton::preblend ( float4  val)

Definition at line 267 of file LumaButton.cpp.

◆ translucent()

LumaButton * iv::LumaButton::translucent ( bool  val)

Definition at line 273 of file LumaButton.cpp.

◆ first_pass_impl()

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

Reimplemented from iv::Slot.

Definition at line 164 of file LumaButton.cpp.

◆ ColorsChanged()

virtual void iv::LumaButton::ColorsChanged ( float4  surface,
float4  on_surface 
)
inlineprotectedvirtual

Useful when inheriting LumaButton, adding specifically animated graphics on top of it. This tells us about the color shheme currently in use by LumaButton, so that the extra graphics can sync with that.

Reimplemented in iv::Rectangle_LumaButton.

Definition at line 78 of file LumaButton.hpp.

◆ CallColorsChanged()

void iv::LumaButton::CallColorsChanged ( )
protected

Definition at line 221 of file LumaButton.cpp.

◆ LumaStyleChanged()

void iv::LumaButton::LumaStyleChanged ( LumaStyle const &  stye)
overrideprotectedvirtual

Implements iv::LumaListener.

Definition at line 226 of file LumaButton.cpp.

Member Data Documentation

◆ cm

ClientMarker iv::LumaButton::cm

Definition at line 20 of file LumaButton.hpp.

◆ DefaultShadowHeightPx

const constexpr int iv::LumaButton::DefaultShadowHeightPx = 2
staticconstexpr

Definition at line 23 of file LumaButton.hpp.

◆ attr_sufraceNeutralColor

DirtyAttr< std::optional< float4 > > iv::LumaButton::attr_sufraceNeutralColor

Definition at line 40 of file LumaButton.hpp.

◆ attr_overlayNeutralColor

DirtyAttr< std::optional< float4 > > iv::LumaButton::attr_overlayNeutralColor

Definition at line 44 of file LumaButton.hpp.

◆ attr_resizeStage

DirtyAttr< FlatShader::ResizeStage > iv::LumaButton::attr_resizeStage

Resize stage option used for all textures.

Definition at line 49 of file LumaButton.hpp.

◆ attr_surface

DirtyAttr< ResourcePath > iv::LumaButton::attr_surface

Color are rotated from NeutralColor to surface or highlight color. Base graphics for the button.

Definition at line 55 of file LumaButton.hpp.

◆ attr_overlay

DirtyAttr< ResourcePath > iv::LumaButton::attr_overlay

Displayed on top of everything. Colors are rotated from NeutralColor to on_surface or on_highlight color.

Definition at line 61 of file LumaButton.hpp.

◆ attr_hot

DirtyAttr< ResourcePath > iv::LumaButton::attr_hot

Displayed on top of surface during hover and duration. Colors are rotated from NeutralColor to surface or highlight color.

Definition at line 67 of file LumaButton.hpp.

◆ surface_slot

Slot iv::LumaButton::surface_slot
protected

Definition at line 81 of file LumaButton.hpp.


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