HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
Public Member Functions | Data Fields | Static Public Attributes
tt::WindowTrafficLightsWidget Class Reference
Inheritance diagram for tt::WindowTrafficLightsWidget:
tt::Widget

Public Member Functions

 WindowTrafficLightsWidget (Window &window, Widget *parent) noexcept
 
 WindowTrafficLightsWidget (const WindowTrafficLightsWidget &)=delete
 
WindowTrafficLightsWidgetoperator= (const WindowTrafficLightsWidget &)=delete
 
 WindowTrafficLightsWidget (WindowTrafficLightsWidget &&)=delete
 
WindowTrafficLightsWidgetoperator= (WindowTrafficLightsWidget &&)=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
 
HitBox hitBoxTest (vec position) const noexcept override
 Find the widget that is under the mouse cursor.
 
- 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
 
virtual bool acceptsFocus () const noexcept
 Check if the widget will accept keyboard focus.
 
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.
 
virtual void handleCommand (string_ltag command) noexcept
 Handle command.
 
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

aarect closeRectangle
 
aarect minimizeRectangle
 
aarect maximizeRectangle
 
FontGlyphIDs closeWindowGlyph
 
FontGlyphIDs minimizeWindowGlyph
 
FontGlyphIDs maximizeWindowGlyph
 
FontGlyphIDs restoreWindowGlyph
 
aarect closeWindowGlyphRectangle
 
aarect minimizeWindowGlyphRectangle
 
aarect maximizeWindowGlyphRectangle
 
aarect restoreWindowGlyphRectangle
 
bool hoverClose = false
 
bool hoverMinimize = false
 
bool hoverMaximize = false
 
bool pressedClose = false
 
bool pressedMinimize = false
 
bool pressedMaximize = false
 
- 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.
 

Static Public Attributes

static constexpr float GLYPH_SIZE = 5.0f
 
static constexpr float RADIUS = 5.5f
 
static constexpr float DIAMETER = RADIUS * 2.0f
 
static constexpr float MARGIN = 10.0f
 
static constexpr float SPACING = 8.0f
 

Member Function Documentation

◆ draw()

void tt::WindowTrafficLightsWidget::draw ( DrawContext const & drawContext,
hires_utc_clock::time_point displayTimePoint )
overridevirtualnoexcept

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.

◆ handleMouseEvent()

void tt::WindowTrafficLightsWidget::handleMouseEvent ( MouseEvent const & event)
overridevirtualnoexcept

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()

HitBox tt::WindowTrafficLightsWidget::hitBoxTest ( vec position) const
overridevirtualnoexcept

Find the widget that is under the mouse cursor.

Thread safety: locks.

Reimplemented from tt::Widget.

◆ layout()

void tt::WindowTrafficLightsWidget::layout ( hires_utc_clock::time_point displayTimePoint)
overridevirtualnoexcept

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: