HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
Public Member Functions | Data Fields
tt::ToggleWidget< ValueType > Class Template Reference
Inheritance diagram for tt::ToggleWidget< ValueType >:
tt::Widget

Public Member Functions

template<typename V >
 ToggleWidget (Window &window, Widget *parent, V &&value, ValueType trueValue) noexcept
 
 ToggleWidget (const ToggleWidget &)=delete
 
ToggleWidgetoperator= (const ToggleWidget &)=delete
 
 ToggleWidget (ToggleWidget &&)=delete
 
ToggleWidgetoperator= (ToggleWidget &&)=delete
 
void layout (hires_utc_clock::time_point displayTimePoint) noexcept override
 Layout the widget.
 
void draw (DrawContext const &drawContext, hires_utc_clock::time_point displayTimePoint) noexcept override
 Draw widget.
 
void handleMouseEvent (MouseEvent const &event) noexcept override
 
void handleCommand (string_ltag command) noexcept override
 Handle command.
 
HitBox hitBoxTest (vec position) const noexcept override
 Find the widget that is under the mouse cursor.
 
bool acceptsFocus () const noexcept override
 Check if the widget will accept keyboard focus.
 
- Public Member Functions inherited from tt::Widget
 Widget (Window &window, Widget *parent, vec defaultExtent) noexcept
 
 Widget (const Widget &)=delete
 
Widgetoperator= (const Widget &)=delete
 
 Widget (Widget &&)=delete
 
Widgetoperator= (Widget &&)=delete
 
virtual WidgetaddWidget (Alignment alignment, std::unique_ptr< Widget > childWidget) noexcept
 Add a widget directly to this widget.
 
template<typename T , typename... Args>
T & makeWidgetDirectly (Args &&... args)
 Add a widget directly to this widget.
 
template<typename T , typename... Args>
T & makeWidget (Args &&... args)
 Add a widget directly to this widget.
 
template<typename T , typename... Args>
T & makeAlignedWidgetDirectly (Alignment alignement, Args &&... args)
 Add a widget directly to this widget.
 
template<typename T , typename... Args>
T & makeAlignedWidget (Alignment alignment, Args &&... args)
 Add a widget directly to this widget.
 
aarect makeWindowRectangle () const noexcept
 Create a window rectangle from left, bottom, width and height Thread-safety: locks window.widgetSolverMutex.
 
void setMinimumExtent (vec newMinimumExtent) noexcept
 
void setMinimumExtent (float width, float height) noexcept
 
void setPreferredExtent (vec newPreferredExtent) noexcept
 
void setFixedExtent (vec newFixedExtent) noexcept
 
void setFixedHeight (float height) noexcept
 
void setFixedWidth (float width) noexcept
 
rhea::constraint placeBelow (Widget const &rhs, float margin=theme->margin) const noexcept
 
rhea::constraint placeAbove (Widget const &rhs, float margin=theme->margin) const noexcept
 
rhea::constraint placeLeftOf (Widget const &rhs, float margin=theme->margin) const noexcept
 
rhea::constraint placeRightOf (Widget const &rhs, float margin=theme->margin) const noexcept
 
rhea::constraint placeAtTop (float margin=theme->margin) const noexcept
 
rhea::constraint placeAtBottom (float margin=theme->margin) const noexcept
 
rhea::constraint placeLeft (float margin=theme->margin) const noexcept
 
rhea::constraint placeRight (float margin=theme->margin) const noexcept
 
vec extent () const noexcept
 
void setExtent (vec rhs) noexcept
 
vec offsetFromParent () const noexcept
 
void setOffsetFromParent (vec rhs) noexcept
 
vec offsetFromWindow () const noexcept
 
void setOffsetFromWindow (vec rhs) noexcept
 
aarect rectangle () const noexcept
 Get the rectangle in local coordinates.
 
aarect windowRectangle () const noexcept
 Get the rectangle in window coordinates.
 
aarect clippingRectangle () const noexcept
 Get the clipping-rectangle in window coordinates.
 
GUIDevicedevice () const noexcept
 
ssize_t nestingLevel () noexcept
 Get nesting level used for selecting colors for the widget.
 
float z () noexcept
 Get z value for compositing order.
 
virtual int needs (hires_utc_clock::time_point displayTimePoint) noexcept
 Request the needs of the widget.
 
int layoutChildren (hires_utc_clock::time_point displayTimePoint, bool force) noexcept
 Layout children of this widget.
 
std::vector< Widget * > childPointers (bool reverse) const noexcept
 
virtual WidgetnextKeyboardWidget (Widget const *currentKeyboardWidget, bool reverse) const noexcept
 
virtual void handleKeyboardEvent (KeyboardEvent const &event) noexcept
 

Data Fields

observable< ValueType > value
 
observable< std::stringlabel
 
- Data Fields inherited from tt::Widget
rhea::variable const left
 Location of the frame compared to the window.
 
rhea::variable const bottom
 
rhea::variable const width
 
rhea::variable const height
 
rhea::linear_expression const right = left + width
 
rhea::linear_expression const centre = left + width * 0.5
 
rhea::linear_expression const top = bottom + height
 
rhea::linear_expression const middle = bottom + height * 0.5
 
float elevation
 
std::atomic< R32G32SFloat_extent
 
std::atomic< R32G32SFloat_offsetFromParent
 
std::atomic< R32G32SFloat_offsetFromWindow
 
std::atomic< bool > forceLayout = true
 
std::atomic< bool > forceRedraw = true
 
observable< bool > enabled = true
 The widget is enabled.
 

Member Function Documentation

◆ acceptsFocus()

template<typename ValueType = bool>
bool tt::ToggleWidget< ValueType >::acceptsFocus ( ) const
inlineoverridevirtualnoexcept

Check if the widget will accept keyboard focus.

Thread safety: reads atomics.

Reimplemented from tt::Widget.

◆ draw()

template<typename ValueType = bool>
void tt::ToggleWidget< ValueType >::draw ( DrawContext const & drawContext,
hires_utc_clock::time_point displayTimePoint )
inlineoverridevirtualnoexcept

Draw widget.

The overriding function should call the base class's draw(), the place where the call this function will determine the order of the vertices into each buffer. This is important when needing to do the painters algorithm for alpha-compositing. However the pipelines are always drawn in the same order.

Thread safety: locks, must be called from render-thread

Reimplemented from tt::Widget.

◆ handleCommand()

template<typename ValueType = bool>
void tt::ToggleWidget< ValueType >::handleCommand ( string_ltag command)
inlineoverridevirtualnoexcept

Handle command.

Thread safety: locks

Reimplemented from tt::Widget.

◆ handleMouseEvent()

template<typename ValueType = bool>
void tt::ToggleWidget< ValueType >::handleMouseEvent ( MouseEvent const & event)
inlineoverridevirtualnoexcept

Handle mouse event. Called by the operating system to show the position and button state of the mouse. This is called very often so it must be made efficient. This function is also used to determine the mouse cursor.

Thread safety: locks

Reimplemented from tt::Widget.

◆ hitBoxTest()

template<typename ValueType = bool>
HitBox tt::ToggleWidget< ValueType >::hitBoxTest ( vec position) const
inlineoverridevirtualnoexcept

Find the widget that is under the mouse cursor.

Thread safety: locks.

Reimplemented from tt::Widget.

◆ layout()

template<typename ValueType = bool>
void tt::ToggleWidget< ValueType >::layout ( hires_utc_clock::time_point displayTimePoint)
inlineoverridevirtualnoexcept

Layout the widget.

super::layout() should be called at start of the overriden function.

Thread safety: locks, must be called from render-thread

Reimplemented from tt::Widget.


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