Rose
Classes | Public Member Functions | Public Attributes | Protected Attributes | Static Protected Attributes | Friends | List of all members
rose::Gauge Class Reference

Display a numeric value as a graphic indicator. More...

#include <Gauge.h>

Inheritance diagram for rose::Gauge:
Inheritance graph
[legend]
Collaboration diagram for rose::Gauge:
Collaboration graph
[legend]

Classes

class  GaugeInterior
 Manages the interior of the Gauge. More...
 

Public Member Functions

 ~Gauge () override=default
 Default destructor.
 
 Gauge (const Gauge &)=delete
 
Gaugeoperator= (const Gauge &)=delete
 
 Gauge (Gauge &&)=delete
 
Gaugeoperator= (Gauge &&)=delete
 
 Gauge (ImageId imageId=RoseImageInvalid)
 Constructor. More...
 
 Gauge (const GaugeValueLimits &gaugeValueLimits, const GaugeValueHues &gaugeValueHuess, ImageId imageId=RoseImageInvalid)
 Constructor. More...
 
 Gauge (GaugeValueLimits &&gaugeValueLimits, GaugeValueHues &&gaugeValueHues, ImageId imageId=RoseImageInvalid)
 Constructor. More...
 
void initializeComposite () override
 See Widget::initializeComposite()
 
Rectangle widgetLayout (sdl::Renderer &renderer, Rectangle available, uint layoutStage) override
 See Widget widgetLayout()
 
void draw (sdl::Renderer &renderer, Rectangle parentRect) override
 See Widget::draw()
 
void setValue (float value)
 Set the value to be displayed. More...
 
void setOrientation (Orientation orientation) override
 
- Public Member Functions inherited from rose::Frame
 Frame (bool invert) noexcept
 
 Frame (int padding) noexcept
 
std::string_view nodeId () const noexcept override
 
void drawAnimate (gm::Context &context, const Position< int > &containerPosition)
 
void draw (gm::Context &context, const Position< int > &containerPosition) override
 Draw the visual.
 
Rectangle layout (gm::Context &context, const Rectangle &screenRect) override
 Layout the visual.
 
- Public Member Functions inherited from rose::Manager
 Manager (const Manager &)=delete
 
 Manager (Manager &&)=delete
 
Manageroperator= (const Manager &)=delete
 
Manageroperator= (Manager &&)=delete
 
std::string_view nodeId () const noexcept override
 
void add (const std::shared_ptr< Node > &node) override
 Add a Node to the contents of the Manager. More...
 
void draw (gm::Context &context, const Position< int > &containerPosition) override
 Draw the manager and contents. More...
 
Rectangle layout (gm::Context &context, const Rectangle &screenRect) override
 Layout the Manager and contents. More...
 
void setLayoutManager (std::unique_ptr< LayoutManager > &&layoutManager)
 Set the layout manager. More...
 
std::unique_ptr< LayoutManager > & layoutManager ()
 Get the LayoutManager. More...
 
- Public Member Functions inherited from rose::Widget
 Widget (const Widget &)=delete
 
 Widget (Widget &&)=delete
 
Widgetoperator= (const Widget &)=delete
 
Widgetoperator= (Widget &&)=delete
 
std::shared_ptr< WidgetpointerWidget (const Position< int > &position, const Position< int > &containerPosition)
 Search for the Widget within which the position lies. More...
 
Position< int > computeScreenPosition ()
 Recursively compute the Widget Position on the Screen. More...
 
bool contains (const Position< int > &position)
 Determine if a given Screen Position is within the Widget Rectangle. More...
 
ApplicationgetApplication ()
 Get a reference to the Application object. More...
 
ApplicationgetApplication () const
 const version of getApplication()
 
std::shared_ptr< WindowgetWindow ()
 Get the Window ancestor of a Widget. More...
 
std::shared_ptr< WindowgetWindow () const
 const version of getWindow().
 
bool enterEvent ()
 Notify Widget of mouse pointer enter event. More...
 
void setEnterLeaveEventCallback (EventCallback eventCallback)
 Set the enter callback.
 
bool leaveEvent ()
 Notify Widget of mouse pointer leave event. More...
 
void setLeaveEventCallback (EventCallback eventCallback)
 Set the leave callback.
 
bool buttonEvent (bool pressed, uint button, uint clicks, bool passed)
 Notify Widget of mouse button events. More...
 
void setButtonEventCallback (ButtonCallback buttonCallback)
 Set the button callback.
 
bool mouseMotionEvent (bool pressed, uint button, const Position< int > &mousePos, const Position< int > &relativePos, bool passed)
 Notify Widget of mouse motion events. More...
 
void setMouseMotionEventCallback (MouseMotionCallback mouseMotionCallback)
 Set the mouse motion callback.
 
bool mouseScrollEvent (const Position< int > &deltaPos, bool passed)
 Notify Widget of mouse scroll wheel events. More...
 
void setMouseScrollEventCallback (ScrollCallback scrollCallback)
 Set the mouse scroll callback.
 
bool keyboardShortcutEvent (uint32_t shortcutCode, bool state, uint repeat)
 Notify the Widget of a keyboard shortcut invocation. More...
 
void setKeyboardShortcutCallback (KeyboardShortcutCallback keyboardShortcutCallback)
 Set the keyboard shortcut callback.
 
bool keyTextInputEvent (const std::string &text)
 Notify the Widget of text input. More...
 
void setTextInputCallback (TextInputCallback textInputCallback)
 Set the text input callback.
 
bool supportsKeyboardFocus () const
 
bool keyboardFocusEvent (bool hasFocus)
 Notify the Widget when it gains or looses keyboard focus. More...
 
void setKeyboardFocusCallback (KeyboardFocusCallback keyboardFocusCallback)
 Set the keyboard focus callback.
 
bool keyboardEvent (const SDL_KeyboardEvent &keyboardEvent)
 
void setKeyboardEvent (KeyboardEventCallback keyboardEventCallback)
 
- Public Member Functions inherited from rose::Visual
void setScreenRectangle (const Position< int > &containerPosition)
 Compute the screen rectangle from the Container screen Position. More...
 
Rectangle getScreenRectangle (const Position< int > &containerPosition) const
 Get the rectangle occupied by the Visual. More...
 
Position< int > drawPadding (const Position< int > &containerPosition)
 Pad the drawing location.
 
Rectangle layoutPadding (const Rectangle &screenRect)
 Pad the layout.
 
void setSize (const Size &size)
 Set preferred Size.
 
Size getSize () const
 Get the preferred size.
 
void setPosition (const Position< int > &position)
 Set preferred Position.
 
Position< int > getPosition () const
 Get the preferred Position.
 
void setPadding (const Padding &padding)
 Set Padding.
 
void setScreenRectangle (const Rectangle &screenRect)
 Set Screen Rectangle.
 
constexpr bool isVisible () const noexcept
 Check visibility.
 
void setVisible (bool visible) noexcept
 Set visibility.
 
void setLayoutHint (const LayoutHint &hint)
 Add a LayoutHint.
 
std::optional< int > getAttachmentHint (LayoutHint::Attachment attachment)
 Get an AttachmentHint value given a LayoutHint::Attachment. More...
 
std::optional< int > getGridHint (LayoutHint::GridLayoutHint gridLayoutHint)
 Get a GridLayoutHint value given a LayoutHint::GridLayoutHint. More...
 
template<size_t HintClass>
std::optional< const ValueMapgetHintMap () const
 
SemanticGesture supportedSemanticGestures () const
 Get supported SemanticGestures.
 
- Public Member Functions inherited from rose::Container
void remove (const std::shared_ptr< Node > &node)
 
- Public Member Functions inherited from rose::Node
 Node (const std::shared_ptr< Container > &container)
 Create a node and add it to a Container. More...
 
void setId (const Id &nodeId) noexcept
 Set Id.
 
std::string_view getId () const
 Get Id.
 
IdPath getIdPath () const
 Get the Id Path.
 
virtual void addedToContainer ()
 Called when a Node is added to a Container. More...
 
std::shared_ptr< Containercontainer ()
 
std::shared_ptr< Containercontainer () const
 
template<typename C >
std::shared_ptr< C > containerAs ()
 
template<typename C >
std::shared_ptr< C > containerAs () const
 
std::shared_ptr< const NodegetNode () const
 Get a const std::shared_ptr to this node. More...
 
std::shared_ptr< NodegetNode ()
 Get a std::shared_ptr to this node. More...
 
template<typename NodeType >
std::shared_ptr< const NodegetNode () const
 Get a std::shared_ptr<const NodeType> to this node. More...
 
template<typename NodeType >
std::shared_ptr< NodeType > getNode ()
 Get a std::shared_ptr<NodeType> to this node. More...
 
std::shared_ptr< Noderemove ()
 
- Public Member Functions inherited from rose::FrameElements
 FrameElements (int padding)
 
void set (const CornerStyle cornerStyle)
 Set the CornerStyle.
 
void setState (bool state)
 Set the state, true = inverted.
 
void setAnimateColor (const color::RGBA &color)
 Set the active color.
 
void setInactiveColor (const color::RGBA &color)
 Set the background color.
 
bool getState () const
 
void frameSettings (const FrameSettings &frameSettings)
 
- Public Member Functions inherited from rose::Animation
void setActionCurve (std::unique_ptr< ActionCurves::ActionCurve > &&actionCurve)
 
void setAnimationEnable (AnimationEnable animationEnable)
 

Public Attributes

std::shared_ptr< Slot< float > > valueRx
 A Slot to receive values on.
 
- Public Attributes inherited from rose::Visual
std::map< size_t, ValueMapmHintsMap {}
 The std::map of hint class to ValueMap.
 
- Public Attributes inherited from rose::Animation
std::unique_ptr< ActionCurves::ActionCurvemActionCurve {}
 

Protected Attributes

float mValue {0.f}
 The current value displayed by the Gauge.
 
sdl::Texture mTexture {}
 The Texture with the full Gauge strip.
 
int mStripLength {0}
 The current value converted to strip length in pixels.
 
ImageId mIndicator {RoseImageInvalid}
 The Gauge indicator, when a valid ImageId.
 
GaugeValueLimits mValueLimits
 The limits and color areas of the Gauge. More...
 
GaugeValueHues mValueHues
 The colors for the five possible value bands. More...
 
Orientation mOrientation {Orientation::Unset}
 Orientation of the gauge. Unset is treated as Horizontal.
 
- Protected Attributes inherited from rose::Manager
std::unique_ptr< LayoutManagermLayoutManager {}
 The layout manager which determines the presentation of contained Widgets.
 
- Protected Attributes inherited from rose::Widget
EventCallback mEnterEventCallback {}
 The pointer has entered the Widget.
 
EventCallback mLeaveEventCallback {}
 The pointer has left the Widget.
 
ButtonCallback mButtonEventCallback {}
 The pointer button has been pressed with the pointer inside the Widget.
 
MouseMotionCallback mMouseMotionCallback {}
 The pointer is in motion, inside the Widget with a button pressed.
 
ScrollCallback mMouseScrollCallback {}
 The mouse scroll wheel has moved with the pointer inside the Widget.
 
KeyboardShortcutCallback mKeyboardShortcutCallback {}
 A keyboard button event while the Widget has keyboard focus.
 
TextInputCallback mTextInputCallback {}
 A text input event while the Widget has keyboard focus.
 
KeyboardFocusCallback mKeyboardFocusCallback {}
 Notification that this Widget has gained or lost keyboard focus.
 
KeyboardEventCallback mKeyboardEventCallback {}
 Notification that this Widget has received a keyboard event.
 
- Protected Attributes inherited from rose::Visual
SemanticGesture mSemanticGesture {}
 
Position< int > mPos {}
 Position relative to the container, arrived at by layout.
 
Size mSize {}
 The size on screen, arrived at by layout.
 
Position< int > mPreferredPos {}
 The preferred position.
 
Size mPreferredSize {}
 The preferred size.
 
Rectangle mScreenRect {}
 The screen Rectangle computed at drawing time.
 
Padding mPadding {}
 Immediately around the Visual, used for separation and alignment.
 
State mState {}
 The object state Id string.
 
bool mVisible {true}
 If true the object is visible.
 
- Protected Attributes inherited from rose::Node
std::weak_ptr< ContainermContainer {}
 The Container that holds the Node. More...
 
Id mId {}
 
- Protected Attributes inherited from rose::FrameElements
color::RGBA mBaseColor
 
color::RGBA mInvertColor
 
color::RGBA mTopColor
 
color::RGBA mBotColor
 
color::RGBA mLeftColor
 
color::RGBA mRightColor
 
color::RGBA mActiveColor
 
color::RGBA mInactiveColor
 
float mColorValue {}
 
int mFrameWidth {2}
 
Padding mFramePadding {}
 
CornerStyle mCornerStyle {CornerStyle::Round}
 
bool mInvert {}
 
gm::Texture mBorder {}
 
gm::Texture mInactiveBG {}
 
gm::Texture mAnimatedBG {}
 
FrameSettings mFrameSettings {}
 
- Protected Attributes inherited from rose::Animation
Callback mAnimationCallback
 
Enable mAnimationEnableStateCallback
 
AnimationEnable mAnimationEnableState {AnimationEnable::Disable}
 

Static Protected Attributes

static constexpr GaugeValueLimits defaultLimits
 The default limits. More...
 
static constexpr GaugeValueHues defaultHues
 The default band Hues. More...
 

Friends

class GaugeInterior
 

Additional Inherited Members

- Public Types inherited from rose::Visual
using ValueMap = std::map< int, int >
 The std::map type for each hint class.
 
- Public Types inherited from rose::Node
using NodePtr = std::shared_ptr< Node >
 
- Public Types inherited from rose::Animation
using Callback = std::function< void(gm::Context &context, const Position< int > &, uint32_t frame)>
 
using Enable = std::function< void(AnimationEnable animationEnable)>
 
- Static Public Member Functions inherited from rose::Node
template<typename NodeType >
static std::shared_ptr< NodeType > create ()
 Create a Node with no arguments. More...
 
template<typename NodeType , typename ... Args>
static std::shared_ptr< NodeType > create (Args ... args)
 Create a Node with arguments. More...
 
template<typename NodeType , typename ContainerType , typename ... Args>
static std::shared_ptr< NodeType > add (ContainerType container, Args ... args)
 Create a Node with arguments and add to a Container. More...
 
- Static Public Member Functions inherited from rose::FrameElements
static gm::Texture createBackgroundMask (gm::Context &context, Size size, int frameWidth, bool roundCorners=false)
 
static void colorBackgroundMask (gm::Context &context, gm::Texture &mask, const color::RGBA &base, const color::RGBA &active, float value)
 
- Static Public Member Functions inherited from rose::Animation
static void setAnimation (const std::shared_ptr< Window > &window, std::shared_ptr< Animation > animation, const Position< int > &position)
 
static void removeAnimation (const std::shared_ptr< Window > &window, std::shared_ptr< Animation > animation)
 
- Static Public Attributes inherited from rose::Frame
static constexpr std::string_view id = "Frame"
 
- Static Public Attributes inherited from rose::Manager
static constexpr std::string_view id = "Manager"
 
- Static Public Attributes inherited from rose::Widget
static constexpr std::string_view id = "Widget"
 
- Static Public Attributes inherited from rose::Container
static constexpr std::string_view id = "Container"
 
- Static Public Attributes inherited from rose::Node
static constexpr std::string_view id = "Node"
 
- Protected Types inherited from rose::FrameElements
enum  SelectedCorners : uint32_t {
  NoCorners = 0, TopLeftCorner = 0x8, TopRightCorner = 0x4, TopCorners = TopLeftCorner | TopRightCorner,
  BottomLeftCorner = 0x2, BottomRightCorner = 0x1, BottomCorners = BottomLeftCorner | BottomRightCorner, LeftCorners = TopLeftCorner | BottomLeftCorner,
  RightCorners = TopRightCorner | BottomRightCorner, AllCorners = 0xf
}
 Specify corners selected for some process, usually drawing.
 
enum  SelectedSides : uint32_t {
  NoSides = 0, TopSide = 1, BotSide = 2, LeftSide = 4,
  RightSide = 8, AllSides = TopSide | BotSide | LeftSide | RightSide, TabTopSides = TopSide | LeftSide | RightSide
}
 Specify sides selected for some process, usually drawing.
 
- Protected Member Functions inherited from rose::FrameElements
void renderSelectedSides (gm::Context &context, FrameElements::SelectedSides selectedSides, BorderStyle useBorder, ImageId corner, const Size &size, int extend=0)
 Render sides as part of a border around the frame. More...
 
void drawBackground (gm::Context &context, Rectangle &src, Rectangle &dst)
 Draw the background for the Frame. More...
 
gm::Texture createBackgroundTexture (gm::Context &context, Rectangle &src, Rectangle &dst, const color::RGBA &color)
 
std::tuple< UseBorder, SelectedCornersdecoration ()
 
void drawFrame (gm::Context &context, Rectangle widgetRect)
 Draw the Frame and background. More...
 
void buttonDisplayStateChange (ButtonDisplayState buttonDisplayState)
 Make visual changes to FrameElements for button display. More...
 
- Static Protected Member Functions inherited from rose::FrameElements
static void trimCorners (gm::Surface &surface, color::RGBA color, FrameElements::SelectedCorners selectedCorners, Size cornerSize, Size frameSize)
 Trim corners on a background surface to allow for rounded corners. More...
 
static void renderSelectedCorners (gm::Context &context, SelectedCorners selectedCorners, ImageId corner, const Size &size)
 Render corner images as part of a border around the frame. More...
 

Detailed Description

Display a numeric value as a graphic indicator.

Display an analogue value as the position of an indicator on a background scale.

The Gauge supports five bands defined by six values. If fewer bands are needed the band defining value can be set to be equal. The full Gauge strip, as it would be displayed when set to UpperBound, is created. The indicated value can be displayed by render copying the strip from LowerBound to mStripLength; or by render copying the full strip and placing an indicator image centered on mStripLength.

Constructor & Destructor Documentation

◆ Gauge() [1/3]

rose::Gauge::Gauge ( ImageId  imageId = RoseImageInvalid)
explicit

Constructor.

Parameters
imageIdThe ImageId of the indicator image.

◆ Gauge() [2/3]

rose::Gauge::Gauge ( const GaugeValueLimits gaugeValueLimits,
const GaugeValueHues gaugeValueHuess,
ImageId  imageId = RoseImageInvalid 
)

Constructor.

Parameters
gaugeValueLimitsThe desired value limits.
gaugeValueHuessThe desired value color hues.

◆ Gauge() [3/3]

rose::Gauge::Gauge ( GaugeValueLimits &&  gaugeValueLimits,
GaugeValueHues &&  gaugeValueHues,
ImageId  imageId = RoseImageInvalid 
)

Constructor.

Parameters
gaugeValueLimitsThe desired value limits.
gaugeValueHuesThe desired value color hues.

Member Function Documentation

◆ setValue()

void rose::Gauge::setValue ( float  value)

Set the value to be displayed.

Parameters
valueThe value which will be clamped between LowerBound and UpperBound.

Member Data Documentation

◆ defaultHues

constexpr GaugeValueHues rose::Gauge::defaultHues
staticprotected
Initial value:
= { 300, 240, 120,
60, 10}

The default band Hues.

These Hues are combined with the Theme base Color Saturation and Lightness to derive band colors.

◆ defaultLimits

constexpr GaugeValueLimits rose::Gauge::defaultLimits
staticprotected
Initial value:
= {0.f, 0.1f, 0.2f,
0.8f, 0.9f, 1.f}

The default limits.

The first and last values must be the lower and upper bounds respectively. Other values must increase or remain the same. For example when the LowerBound is also the LowNormal value the GaugeValueLimits could be : { 0.f, 0.f, 0.f, 0.75f, 0.8f, 1.0f }

◆ mValueHues

GaugeValueHues rose::Gauge::mValueHues
protected

The colors for the five possible value bands.

The five values are, in order: LowEmergency, LowWarning, Normal, HighWarning, HighEmergency

◆ mValueLimits

GaugeValueLimits rose::Gauge::mValueLimits
protected

The limits and color areas of the Gauge.

The six values are, in order: LowerBound, LowWarning, LowNormal, HighNormal, HighWarning, Upperbound


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