47 #ifndef __CU_SLIDER_H__
48 #define __CU_SLIDER_H__
50 #include <cugl/2d/CUNode.h>
51 #include <cugl/2d/CUButton.h>
58 #define DEFAULT_MAX 100
60 #define DEFAULT_RADIUS 20
63 #pragma mark SliderListener
83 typedef std::function<void(const std::string& name, float value)>
SliderListener;
150 #pragma mark Constructors
176 virtual void dispose()
override;
187 return init(
Vec2(DEFAULT_MIN,DEFAULT_MAX),
Rect(DEFAULT_MIN,DEFAULT_RADIUS,DEFAULT_MAX,0));
231 const std::shared_ptr<Node>& path,
232 const std::shared_ptr<Button>& knob);
266 #pragma mark Static Constructors
276 static std::shared_ptr<Slider>
alloc() {
277 std::shared_ptr<Slider> node = std::make_shared<Slider>();
278 return (node->init() ? node :
nullptr);
299 static std::shared_ptr<Slider>
alloc(
const Vec2& range,
const Rect& bounds) {
300 std::shared_ptr<Slider> node = std::make_shared<Slider>();
301 return (node->init(range,bounds) ? node :
nullptr);
325 const std::shared_ptr<Node>& path,
326 const std::shared_ptr<Button>& knob) {
327 std::shared_ptr<Slider> node = std::make_shared<Slider>();
328 return (node->initWithUI(range,bounds,path,knob) ? node :
nullptr);
360 const std::shared_ptr<JsonValue> data) {
361 std::shared_ptr<Slider> node = std::make_shared<Slider>();
362 return (node->initWithData(loader,data) ? node :
nullptr);
367 #pragma mark Slider State
460 #pragma mark Appearance
539 #pragma mark Tick Support
599 #pragma mark Listeners
636 void setListener(SliderListener listener) { _listener = listener; }
696 #pragma mark Internal Helpers
744 void placeKnob(
const std::shared_ptr<Button>& knob);
756 void placePath(
const std::shared_ptr<Node>& path);
float _tick
Definition: CUSlider.h:133
float getMinValue() const
Definition: CUSlider.h:376
float x
Definition: CUVec2.h:66
float y
Definition: CUVec2.h:68
bool hasSnap() const
Definition: CUSlider.h:585
virtual void dispose() override
SliderListener _listener
Definition: CUSlider.h:146
const Rect & getBounds() const
Definition: CUSlider.h:521
void setRange(const Vec2 &range)
Definition: CUSlider.h:426
static std::shared_ptr< Slider > alloc(const Vec2 &range, const Rect &bounds)
Definition: CUSlider.h:299
Vec2 _range
Definition: CUSlider.h:121
virtual bool init() override
Definition: CUSlider.h:186
std::shared_ptr< Button > _knob
Definition: CUSlider.h:124
static std::shared_ptr< Slider > allocWithData(const SceneLoader *loader, const std::shared_ptr< JsonValue > data)
Definition: CUSlider.h:359
float getMaxValue() const
Definition: CUSlider.h:396
float _value
Definition: CUSlider.h:119
bool _mouse
Definition: CUSlider.h:140
void snapTick(bool value)
Definition: CUSlider.h:596
void getBounds(const Rect &value)
Definition: CUSlider.h:536
const Vec2 & getRange() const
Definition: CUSlider.h:416
bool _snap
Definition: CUSlider.h:135
const SliderListener getListener() const
Definition: CUSlider.h:623
float validate(float value) const
float getValue() const
Definition: CUSlider.h:445
bool initWithUI(const Vec2 &range, const Rect &bounds, const std::shared_ptr< Node > &path, const std::shared_ptr< Button > &knob)
void setPath(const std::shared_ptr< Node > &path)
Definition: CUSlider.h:506
void setMinValue(float value)
Definition: CUSlider.h:386
void placeKnob(const std::shared_ptr< Button > &knob)
bool hasListener() const
Definition: CUSlider.h:610
void dragKnob(const Vec2 &pos)
void setKnob(const std::shared_ptr< Button > &knob)
Definition: CUSlider.h:483
void placePath(const std::shared_ptr< Node > &path)
void setListener(SliderListener listener)
Definition: CUSlider.h:636
bool _active
Definition: CUSlider.h:138
Rect _adjust
Definition: CUSlider.h:130
std::function< void(const std::string &name, float value)> SliderListener
Definition: CUSlider.h:83
static std::shared_ptr< Slider > allocWithUI(const Vec2 &range, const Rect &bounds, const std::shared_ptr< Node > &path, const std::shared_ptr< Button > &knob)
Definition: CUSlider.h:324
void setRange(float min, float max)
Definition: CUSlider.h:438
Definition: CUSceneLoader.h:77
static std::shared_ptr< Slider > alloc()
Definition: CUSlider.h:276
~Slider()
Definition: CUSlider.h:165
bool activate(Uint32 key)
const std::shared_ptr< Node > & getPath() const
Definition: CUSlider.h:493
const std::shared_ptr< Button > & getKnob() const
Definition: CUSlider.h:469
void setValue(float value)
Definition: CUSlider.h:456
std::shared_ptr< Node > _path
Definition: CUSlider.h:126
Definition: CUSlider.h:114
void setTick(float value)
Definition: CUSlider.h:574
Uint32 _inputkey
Definition: CUSlider.h:144
bool isActive() const
Definition: CUSlider.h:691
Definition: CUAction.h:51
float getTick() const
Definition: CUSlider.h:556
Rect _bounds
Definition: CUSlider.h:128
void setMaxValue(float value)
Definition: CUSlider.h:406
Vec2 _dragpos
Definition: CUSlider.h:142
bool initWithData(const SceneLoader *loader, const std::shared_ptr< JsonValue > data) override