// SPDX-License-Identifier: MIT // // EmulationStation Desktop Edition // SliderComponent.h // // Slider to set value in a predefined range. // #ifndef ES_CORE_COMPONENTS_SLIDER_COMPONENT_H #define ES_CORE_COMPONENTS_SLIDER_COMPONENT_H #include "GuiComponent.h" #include "components/ImageComponent.h" class Font; class TextCache; // Slider to set value in a predefined range. class SliderComponent : public GuiComponent { public: using GuiComponent::getValue; using GuiComponent::setValue; // Minimum and maximum values, how much to increment each step the knob is moved and // an optional unit. SliderComponent(float min, float max, float increment, const std::string& suffix = ""); void setValue(float value); float getValue() { return mValue; } bool input(InputConfig* config, Input input) override; void update(int deltaTime) override; void render(const glm::mat4& parentTrans) override; void onSizeChanged() override; std::vector getHelpPrompts() override; private: void onValueChanged(); float mMin, mMax; float mValue; float mSingleIncrement; float mMoveRate; float mBarHeight; int mMoveAccumulator; ImageComponent mKnob; std::string mSuffix; std::shared_ptr mFont; std::shared_ptr mTextCache; }; #endif // ES_CORE_COMPONENTS_SLIDER_COMPONENT_H