guislider.h File Reference
Go to the documentation of this file.
Source: include/ffw/gui/guislider.h
/* This file is part of FineFramework project */
#ifndef FFW_GUI_SLIDER
#define FFW_GUI_SLIDER
#include "guiwidget.h"
namespace ffw {
class FFW_API GuiSlider: public GuiWidget {
public:
struct Style {
GuiWidget::Style button;
GuiWidget::Style bar;
GuiWidget::Style self;
};
GuiSlider(GuiWindow* context, bool vertical);
virtual ~GuiSlider() = default;
bool isVertical() const;
void setValue(float val);
float getValue() const;
void setBarSize(const Point<GuiUnits>& s);
inline const Point<GuiUnits>& getBarSize() const {
return barSize;
}
const ffw::Pointf& getRange() const;
void setRange(float min, float max);
void setButtonSize(const Point<GuiUnits>& s);
inline const Point<GuiUnits>& getButtonSize() const {
return buttonSize;
}
void setInversed(bool inversed);
bool getInversed() const;
ffw::Pointf getMinimumWrapSize() override;
void setBarStyleGroup(const GuiWidget::Style* style);
inline const GuiWidget::Style* getBarStyleGroup() const {
return styleBar;
}
void setButtonStyleGroup(const GuiWidget::Style* style);
inline const GuiWidget::Style* getButtonStyleGroup() const {
return styleButton;
}
void setStyle(const GuiSlider::Style* style, bool defaults = false);
protected:
const GuiWidget::Style* styleButton;
const GuiWidget::Style* styleBar;
Point<GuiUnits> buttonSize;
Point<GuiUnits> barSize;
private:
void calculateButtonSize(ffw::Pointf& pos, ffw::Pointf& size) const;
void eventRender(const ffw::Pointf& contentoffset, const ffw::Pointf& contentsize) override;
void eventHover(bool gained) override;
void eventFocus(bool gained) override;
void eventMouse(const ffw::Pointf& pos) override;
void eventMouseButton(ffw::MouseButton button, ffw::MouseMode mode) override;
virtual void eventThemeChanged(const GuiTheme* theme, bool defaults) override;
bool vertical;
ffw::Pointf range;
float value;
bool inverse;
Pointi clickedOffset;
};
}
#endif