Rose
|
Display a numeric value as a graphic indicator. More...
#include <Gauge.h>
Classes | |
class | GaugeInterior |
Manages the interior of the Gauge. More... | |
Public Member Functions | |
~Gauge () override=default | |
Default destructor. | |
Gauge (const Gauge &)=delete | |
Gauge & | operator= (const Gauge &)=delete |
Gauge (Gauge &&)=delete | |
Gauge & | operator= (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 |
![]() | |
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. | |
![]() | |
Manager (const Manager &)=delete | |
Manager (Manager &&)=delete | |
Manager & | operator= (const Manager &)=delete |
Manager & | operator= (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... | |
![]() | |
Widget (const Widget &)=delete | |
Widget (Widget &&)=delete | |
Widget & | operator= (const Widget &)=delete |
Widget & | operator= (Widget &&)=delete |
std::shared_ptr< Widget > | pointerWidget (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... | |
Application & | getApplication () |
Get a reference to the Application object. More... | |
Application & | getApplication () const |
const version of getApplication() | |
std::shared_ptr< Window > | getWindow () |
Get the Window ancestor of a Widget. More... | |
std::shared_ptr< Window > | getWindow () 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) |
![]() | |
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 ValueMap > | getHintMap () const |
SemanticGesture | supportedSemanticGestures () const |
Get supported SemanticGestures. | |
![]() | |
void | remove (const std::shared_ptr< Node > &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< Container > | container () |
std::shared_ptr< Container > | container () const |
template<typename C > | |
std::shared_ptr< C > | containerAs () |
template<typename C > | |
std::shared_ptr< C > | containerAs () const |
std::shared_ptr< const Node > | getNode () const |
Get a const std::shared_ptr to this node. More... | |
std::shared_ptr< Node > | getNode () |
Get a std::shared_ptr to this node. More... | |
template<typename NodeType > | |
std::shared_ptr< const Node > | getNode () 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< Node > | remove () |
![]() | |
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) |
![]() | |
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. | |
![]() | |
std::map< size_t, ValueMap > | mHintsMap {} |
The std::map of hint class to ValueMap. | |
![]() | |
std::unique_ptr< ActionCurves::ActionCurve > | mActionCurve {} |
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. | |
![]() | |
std::unique_ptr< LayoutManager > | mLayoutManager {} |
The layout manager which determines the presentation of contained Widgets. | |
![]() | |
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. | |
![]() | |
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. | |
![]() | |
std::weak_ptr< Container > | mContainer {} |
The Container that holds the Node. More... | |
Id | mId {} |
![]() | |
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 {} |
![]() | |
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 | |
![]() | |
using | ValueMap = std::map< int, int > |
The std::map type for each hint class. | |
![]() | |
using | NodePtr = std::shared_ptr< Node > |
![]() | |
using | Callback = std::function< void(gm::Context &context, const Position< int > &, uint32_t frame)> |
using | Enable = std::function< void(AnimationEnable animationEnable)> |
![]() | |
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 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 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 constexpr std::string_view | id = "Frame" |
![]() | |
static constexpr std::string_view | id = "Manager" |
![]() | |
static constexpr std::string_view | id = "Widget" |
![]() | |
static constexpr std::string_view | id = "Container" |
![]() | |
static constexpr std::string_view | id = "Node" |
![]() | |
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. | |
![]() | |
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, SelectedCorners > | decoration () |
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 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... | |
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.
|
explicit |
Constructor.
imageId | The ImageId of the indicator image. |
rose::Gauge::Gauge | ( | const GaugeValueLimits & | gaugeValueLimits, |
const GaugeValueHues & | gaugeValueHuess, | ||
ImageId | imageId = RoseImageInvalid |
||
) |
Constructor.
gaugeValueLimits | The desired value limits. |
gaugeValueHuess | The desired value color hues. |
rose::Gauge::Gauge | ( | GaugeValueLimits && | gaugeValueLimits, |
GaugeValueHues && | gaugeValueHues, | ||
ImageId | imageId = RoseImageInvalid |
||
) |
Constructor.
gaugeValueLimits | The desired value limits. |
gaugeValueHues | The desired value color hues. |
void rose::Gauge::setValue | ( | float | value | ) |
Set the value to be displayed.
value | The value which will be clamped between LowerBound and UpperBound. |
|
staticprotected |
The default band Hues.
These Hues are combined with the Theme base Color Saturation and Lightness to derive band colors.
|
staticprotected |
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 }
|
protected |
The colors for the five possible value bands.
The five values are, in order: LowEmergency, LowWarning, Normal, HighWarning, HighEmergency
|
protected |
The limits and color areas of the Gauge.
The six values are, in order: LowerBound, LowWarning, LowNormal, HighNormal, HighWarning, Upperbound