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
112 typedef std::function<void(const std::string& name, float value)>
Listener;
149 #pragma mark Constructors
175 virtual void dispose()
override;
186 return init(
Vec2(DEFAULT_MIN,DEFAULT_MAX),
Rect(DEFAULT_MIN,DEFAULT_RADIUS,DEFAULT_MAX,0));
230 const std::shared_ptr<Node>& path,
231 const std::shared_ptr<Button>& knob);
260 #pragma mark Static Constructors
270 static std::shared_ptr<Slider>
alloc() {
271 std::shared_ptr<Slider> node = std::make_shared<Slider>();
272 return (node->init() ? node :
nullptr);
293 static std::shared_ptr<Slider>
alloc(
const Vec2& range,
const Rect& bounds) {
294 std::shared_ptr<Slider> node = std::make_shared<Slider>();
295 return (node->init(range,bounds) ? node :
nullptr);
319 const std::shared_ptr<Node>& path,
320 const std::shared_ptr<Button>& knob) {
321 std::shared_ptr<Slider> node = std::make_shared<Slider>();
322 return (node->initWithUI(range,bounds,path,knob) ? node :
nullptr);
349 const std::shared_ptr<JsonValue>& data) {
350 std::shared_ptr<Slider> node = std::make_shared<Slider>();
351 return (node->initWithData(loader,data) ? node :
nullptr);
356 #pragma mark Slider State
449 #pragma mark Appearance
528 #pragma mark Tick Support
588 #pragma mark Listeners
685 #pragma mark Internal Helpers
733 void placeKnob(
const std::shared_ptr<Button>& knob);
745 void placePath(
const std::shared_ptr<Node>& path);
float _tick
Definition: CUSlider.h:132
float getMinValue() const
Definition: CUSlider.h:365
float x
Definition: CUVec2.h:66
float y
Definition: CUVec2.h:68
bool hasSnap() const
Definition: CUSlider.h:574
virtual void dispose() override
const Rect & getBounds() const
Definition: CUSlider.h:510
void setRange(const Vec2 &range)
Definition: CUSlider.h:415
static std::shared_ptr< Slider > alloc(const Vec2 &range, const Rect &bounds)
Definition: CUSlider.h:293
Vec2 _range
Definition: CUSlider.h:120
virtual bool init() override
Definition: CUSlider.h:185
std::shared_ptr< Button > _knob
Definition: CUSlider.h:123
float getMaxValue() const
Definition: CUSlider.h:385
float _value
Definition: CUSlider.h:118
std::function< void(const std::string &name, float value)> Listener
Definition: CUSlider.h:112
bool _mouse
Definition: CUSlider.h:139
void snapTick(bool value)
Definition: CUSlider.h:585
void getBounds(const Rect &value)
Definition: CUSlider.h:525
const Vec2 & getRange() const
Definition: CUSlider.h:405
bool _snap
Definition: CUSlider.h:134
float validate(float value) const
float getValue() const
Definition: CUSlider.h:434
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:495
void setMinValue(float value)
Definition: CUSlider.h:375
void placeKnob(const std::shared_ptr< Button > &knob)
bool hasListener() const
Definition: CUSlider.h:599
void dragKnob(const Vec2 &pos)
void setKnob(const std::shared_ptr< Button > &knob)
Definition: CUSlider.h:472
void placePath(const std::shared_ptr< Node > &path)
bool _active
Definition: CUSlider.h:137
Rect _adjust
Definition: CUSlider.h:129
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:318
void setRange(float min, float max)
Definition: CUSlider.h:427
Definition: CUSceneLoader.h:77
static std::shared_ptr< Slider > alloc()
Definition: CUSlider.h:270
~Slider()
Definition: CUSlider.h:164
bool activate(Uint32 key)
const std::shared_ptr< Node > & getPath() const
Definition: CUSlider.h:482
const std::shared_ptr< Button > & getKnob() const
Definition: CUSlider.h:458
Listener _listener
Definition: CUSlider.h:145
const Listener getListener() const
Definition: CUSlider.h:612
bool initWithData(const SceneLoader *loader, const std::shared_ptr< JsonValue > &data) override
void setValue(float value)
Definition: CUSlider.h:445
std::shared_ptr< Node > _path
Definition: CUSlider.h:125
Definition: CUSlider.h:90
void setTick(float value)
Definition: CUSlider.h:563
static std::shared_ptr< Slider > allocWithData(const SceneLoader *loader, const std::shared_ptr< JsonValue > &data)
Definition: CUSlider.h:348
Uint32 _inputkey
Definition: CUSlider.h:143
bool isActive() const
Definition: CUSlider.h:680
Definition: CUAction.h:51
void setListener(Listener listener)
Definition: CUSlider.h:625
float getTick() const
Definition: CUSlider.h:545
Rect _bounds
Definition: CUSlider.h:127
void setMaxValue(float value)
Definition: CUSlider.h:395
Vec2 _dragpos
Definition: CUSlider.h:141