HoverRace  2.0
Classes | Public Types | Public Member Functions | Protected Member Functions | Private Types | Private Attributes | List of all members
HoverRace::Display::Slider Class Reference

A slider for selecting values from a range. More...

#include <Slider.h>

+ Inheritance diagram for HoverRace::Display::Slider:

Classes

struct  Props
 

Public Types

using valueChangedSignal_t = boost::signals2::signal< void(double)>
 
- Public Types inherited from HoverRace::Display::ClickRegion
using clickedSignal_t = boost::signals2::signal< void(ClickRegion &)>
 
- Public Types inherited from HoverRace::Display::UiViewModel
enum  Alignment {
  Alignment::NW, Alignment::N, Alignment::NE, Alignment::E,
  Alignment::SE, Alignment::S, Alignment::SW, Alignment::W,
  Alignment::CENTER
}
 Imagine the component pinned to the container with a thumbtack. More...
 
using focusRelinquishedSignal_t = boost::signals2::signal< void(UiViewModel &, const Control::Nav &)>
 
using focusRequestedSignal_t = boost::signals2::signal< void(UiViewModel &)>
 

Public Member Functions

 Slider (Display &display, double min, double max, double step, uiLayoutFlags_t layoutFlags=0)
 Constructor. More...
 
virtual ~Slider ()
 
void AttachView (Display &disp) override
 
void FireModelUpdate (int prop) override
 Indicate that a model property has changed. More...
 
FillBoxGetBackgroundChild () const
 
FillBoxGetIndicatorChild () const
 
double GetMax () const
 
double GetMin () const
 
double GetStep () const
 
double GetValue () const
 
valueChangedSignal_tGetValueChangedSignal ()
 
RuleLineGetZeroLineChild () const
 
Vec3 Measure () override
 Calculate the size of the component. More...
 
bool OnNavigate (const Control::Nav &nav) override
 
void SetValue (double value)
 Set the value. More...
 
- Public Member Functions inherited from HoverRace::Display::ClickRegion
 ClickRegion (Display &display, uiLayoutFlags_t layoutFlags=0)
 Constructor for automatically-sized button. More...
 
 ClickRegion (Display &display, const Vec2 &size, uiLayoutFlags_t layoutFlags=0)
 Constructor for fixed-sized button. More...
 
virtual ~ClickRegion ()
 
clickedSignal_tGetClickedSignal ()
 
const Vec2GetSize ()
 Retrieve the size of the button. More...
 
bool IsAutoSize () const
 Check if automatic sizing is enabled. More...
 
bool IsEnabled () const
 Check if the widget is enabled. More...
 
bool OnAction () override
 
bool OnMouseMoved (const Vec2 &pos) override
 
bool OnMousePressed (const Control::Mouse::Click &click) override
 
bool OnMouseReleased (const Control::Mouse::Click &click) override
 
void SetAutoSize ()
 Enable automatic sizing. More...
 
void SetEnabled (bool enabled)
 
void SetSize (const Vec2 &size)
 Set the button to a fixed size. More...
 
void SetSize (double w, double h)
 Convenience function for SetSize(const Vec2&). More...
 
bool TryFocus (const Control::Nav &nav=Control::Nav::NEUTRAL) override
 Attempts to give this widget focus. More...
 
- Public Member Functions inherited from HoverRace::Display::UiViewModel
 UiViewModel (uiLayoutFlags_t layoutFlags=0)
 
virtual ~UiViewModel ()
 
virtual void DropFocus ()
 Force this widget to give up focus, if it is currently focused. More...
 
Vec2 GetAlignedPos (const Vec2 &pos, double w, double h) const
 Retrieve an arbitrary position adjusted by the current alignment. More...
 
Vec2 GetAlignedPos (double w, double h) const
 Retrieve the position adjusted by the current alignment. More...
 
Alignment GetAlignment () const
 Retrieve the alignment of the component. More...
 
focusRelinquishedSignal_tGetFocusRelinquishedSignal ()
 
focusRequestedSignal_tGetFocusRequestedSignal ()
 
uiLayoutFlags_t GetLayoutFlags () const
 Retrieve the layout flags. More...
 
const Vec2GetPos () const
 Get the position of the component. More...
 
const Vec2GetTranslation () const
 Retrieves the position translation. More...
 
bool IsFocused () const
 Check if this widget currently has input focus. More...
 
uiLayoutFlags_t IsLayoutFloating () const
 
uiLayoutFlags_t IsLayoutUnscaled () const
 
virtual bool OnMouseScrolled (const Control::Mouse::Scroll &)
 
void RequestFocus ()
 Attempt to hand over the input focus to this widget. More...
 
void SetAlignment (Alignment alignment)
 Set the alignment of the component. More...
 
void SetPos (const Vec2 &pos)
 Set the position of the component. More...
 
void SetPos (double x, double y)
 Convenience function for SetPos(const Vec2&). More...
 
void SetTranslation (const Vec2 &translation)
 Sets the position translation. More...
 
void SetTranslation (double x, double y)
 Convenience function for SetTranslation(const Vec2&). More...
 
- Public Member Functions inherited from HoverRace::Display::ViewModel
 ViewModel ()
 
virtual ~ViewModel ()
 
ViewGetView () const
 
void PrepareRender ()
 
void Render ()
 
void SetView (std::unique_ptr< View > &&view)
 

Protected Member Functions

void Layout () override
 Adjust the size and position of any child elements. More...
 
void OnMouseDrag (const Vec2 &relPos) override
 Handle when the mouse is dragged over the widget. More...
 
- Protected Member Functions inherited from HoverRace::Display::ClickRegion
virtual void FireClickedSignal ()
 
bool IsPressed () const
 
void RequestSizing ()
 Indicate that the size of the button may have changed, when auto-sizing is enabled. More...
 
Vec2 ScreenPosToRel (const Vec2 &pos)
 Convert screen coordinates to relative (widget) coordinates. More...
 
void SetPressed (bool pressed)
 
bool TestHit (const Vec2 &pos)
 Check if the coordinates of an event are within the bounds of this component. More...
 
- Protected Member Functions inherited from HoverRace::Display::UiViewModel
void RelinquishFocus (const Control::Nav &nav)
 Voluntarily give up input focus, passing it on to the next widget. More...
 
void SetFocused (bool focused)
 Set the focused state. More...
 
- Protected Member Functions inherited from HoverRace::Display::ViewModel
template<class T >
void AttachViewDynamic (Display &disp, T *self)
 
void RequestLayout ()
 Indicate that the current layout is out-of-date and needs to be adjusted. More...
 

Private Types

using SUPER = ClickRegion
 

Private Attributes

std::unique_ptr< FillBoxbackground
 
std::unique_ptr< FillBoxindicator
 
double max
 
double min
 
double step
 
double value
 
valueChangedSignal_t valueChangedSignal
 
std::unique_ptr< RuleLinezeroLine
 

Additional Inherited Members

- Protected Attributes inherited from HoverRace::Display::ClickRegion
Displaydisplay
 

Detailed Description

A slider for selecting values from a range.

Author
Michael Imamura

Member Typedef Documentation

using HoverRace::Display::Slider::valueChangedSignal_t = boost::signals2::signal<void(double)>

Constructor & Destructor Documentation

HoverRace::Display::Slider::Slider ( Display display,
double  min,
double  max,
double  step,
uiLayoutFlags_t  layoutFlags = 0 
)

Constructor.

Parameters
displayThe display child elements will be attached to.
minThe minimum value.
maxThe maximum value.
stepThe smallest unit between selectable values.
layoutFlagsOptional layout flags.
HoverRace::Display::Slider::~Slider ( )
virtual

Member Function Documentation

void HoverRace::Display::Slider::AttachView ( Display disp)
inlineoverridevirtual

Reimplemented from HoverRace::Display::ClickRegion.

void HoverRace::Display::Slider::FireModelUpdate ( int  prop)
overridevirtual

Indicate that a model property has changed.

If a view is attached, it will be notified.

Parameters
propThe model-specific ID of the property that changed.

Reimplemented from HoverRace::Display::ViewModel.

FillBox* HoverRace::Display::Slider::GetBackgroundChild ( ) const
inline
FillBox* HoverRace::Display::Slider::GetIndicatorChild ( ) const
inline
double HoverRace::Display::Slider::GetMax ( ) const
inline
double HoverRace::Display::Slider::GetMin ( ) const
inline
double HoverRace::Display::Slider::GetStep ( ) const
inline
double HoverRace::Display::Slider::GetValue ( ) const
inline
valueChangedSignal_t& HoverRace::Display::Slider::GetValueChangedSignal ( )
inline
RuleLine* HoverRace::Display::Slider::GetZeroLineChild ( ) const
inline
void HoverRace::Display::Slider::Layout ( )
overrideprotectedvirtual

Adjust the size and position of any child elements.

Subclasses with child elements should override this function.

This is called automatically during the PrepareRender() phase if RequestLayout() has been called. It is also called the first time PrepareRender() is invoked. After this function is called, it will not be called again until another call to RequestLayout().

Reimplemented from HoverRace::Display::ViewModel.

Vec3 HoverRace::Display::Slider::Measure ( )
overridevirtual

Calculate the size of the component.

For UI components, the return value is affected by layout flags.

Returns
The size (may be zero if the size cannot be determined yet).
Warning
Depending on the view, this may be an expensive operation since the view may have to call View::PrepareRender to apply model changes. As such, it is recommended to call Measure in the PrepareRender phase itself.

Reimplemented from HoverRace::Display::ClickRegion.

void HoverRace::Display::Slider::OnMouseDrag ( const Vec2 relPos)
overrideprotectedvirtual

Handle when the mouse is dragged over the widget.

Parameters
relPosThe relative position.

Reimplemented from HoverRace::Display::ClickRegion.

bool HoverRace::Display::Slider::OnNavigate ( const Control::Nav nav)
overridevirtual

Reimplemented from HoverRace::Display::UiViewModel.

void HoverRace::Display::Slider::SetValue ( double  value)

Set the value.

The value will be clamped to the range of the slider.

Parameters
valueThe value.

Member Data Documentation

std::unique_ptr<FillBox> HoverRace::Display::Slider::background
private
std::unique_ptr<FillBox> HoverRace::Display::Slider::indicator
private
double HoverRace::Display::Slider::max
private
double HoverRace::Display::Slider::min
private
double HoverRace::Display::Slider::step
private
double HoverRace::Display::Slider::value
private
valueChangedSignal_t HoverRace::Display::Slider::valueChangedSignal
private
std::unique_ptr<RuleLine> HoverRace::Display::Slider::zeroLine
private

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