34 #ifndef __CU_MOUSE_H__
35 #define __CU_MOUSE_H__
38 #include "../math/CURect.h"
39 #include "../math/CUVec2.h"
42 #define SDL_BUTTON_ALLMASK ((1 << 6) - 1)
70 #pragma mark Constructors
89 bool hasLeft()
const {
return (_state & SDL_BUTTON_LMASK) != 0; }
96 bool hasMiddle()
const {
return (_state & SDL_BUTTON_MMASK) != 0; }
103 bool hasRight()
const {
return (_state & SDL_BUTTON_RMASK) != 0; }
113 bool hasX1()
const {
return (_state & SDL_BUTTON_X1MASK) != 0; }
123 bool hasX2()
const {
return (_state & SDL_BUTTON_X2MASK) != 0; }
130 void setLeft(
bool value) { toggle(SDL_BUTTON_LMASK,value); }
137 void setMiddle(
bool value) { toggle(SDL_BUTTON_MMASK,value); }
144 void setRight(
bool value) { toggle(SDL_BUTTON_RMASK,value); }
154 void setX1(
bool value) { toggle(SDL_BUTTON_X1MASK,value); }
164 void setX2(
bool value) { toggle(SDL_BUTTON_X2MASK,value); }
167 #pragma mark Bitwise Operations
180 _state &= mouse._state;
196 _state |= mouse._state;
213 _state ^= mouse._state;
229 _state &= ~mouse._state;
315 void toggle(Uint32 bmask,
bool value) {
316 _state = (value ? _state | bmask : _state & ~bmask);
320 friend class MouseEvent;
350 buttons._state = state; timestamp = stamp; position = point;
385 direction = offset; timestamp = stamp; flipped = flip;
391 #pragma mark MouseButtonListener
426 typedef std::function<void(const MouseEvent& event, Uint8 clicks, bool focus)>
430 #pragma mark MouseMotionListener
462 typedef std::function<void(const MouseEvent& event, const Vec2& previous, bool focus)>
466 #pragma mark MouseWheelListener
493 typedef std::function<void(const MouseWheelEvent& event, bool focus)>
569 #pragma mark Constructor
591 virtual void dispose()
override;
623 #pragma mark Data Polling
677 #pragma mark Listeners
930 #pragma mark Input Device
962 virtual void queryEvents(std::vector<Uint32>& eventset)
override;
bool addWheelListener(Uint32 key, MouseWheelListener listener)
bool removePressListener(Uint32 key)
bool flipped
Definition: CUMouse.h:370
const MouseMotionListener getMotionListener(Uint32 key) const
virtual ~Mouse()
Definition: CUMouse.h:584
Vec2 _lastPoint
Definition: CUMouse.h:551
bool addDragListener(Uint32 key, MouseMotionListener listener)
ButtonState buttonReleased() const
Definition: CUMouse.h:650
bool addReleaseListener(Uint32 key, MouseButtonListener listener)
bool removeWheelListener(Uint32 key)
Definition: CUTimestamp.h:61
Definition: CUMouse.h:328
ButtonState buttonUp() const
Definition: CUMouse.h:636
Definition: CUMouse.h:522
std::unordered_map< Uint32, MouseButtonListener > _pressListeners
Definition: CUMouse.h:559
Timestamp timestamp
Definition: CUMouse.h:331
bool isListener(Uint32 key) const
Vec2 pointerOffset() const
Definition: CUMouse.h:666
std::unordered_map< Uint32, MouseWheelListener > _wheelListeners
Definition: CUMouse.h:567
virtual void clearState() override
MouseWheelEvent()
Definition: CUMouse.h:375
const MouseButtonListener getPressListener(Uint32 key) const
Vec2 _wheelOffset
Definition: CUMouse.h:556
bool removeDragListener(Uint32 key)
bool addMotionListener(Uint32 key, MouseMotionListener listener)
bool removeReleaseListener(Uint32 key)
Mouse()
Definition: CUMouse.h:579
std::function< void(const MouseEvent &event, Uint8 clicks, bool focus)> MouseButtonListener
Definition: CUMouse.h:427
const MouseWheelListener getWheelListener(Uint32 key) const
virtual bool updateState(const SDL_Event &event, const Timestamp &stamp) override
std::unordered_map< Uint32, MouseButtonListener > _releaseListeners
Definition: CUMouse.h:561
ButtonState _currState
Definition: CUMouse.h:548
const MouseMotionListener getDragListener(Uint32 key) const
PointerAwareness getPointerAwareness() const
Definition: CUMouse.h:604
const MouseButtonListener getReleaseListener(Uint32 key) const
bool addPressListener(Uint32 key, MouseButtonListener listener)
virtual void dispose() override
ButtonState buttons
Definition: CUMouse.h:333
Vec2 _currPoint
Definition: CUMouse.h:553
MouseEvent()
Definition: CUMouse.h:340
PointerAwareness
Definition: CUMouse.h:532
std::unordered_map< Uint32, MouseMotionListener > _moveListeners
Definition: CUMouse.h:563
ButtonState buttonPressed() const
Definition: CUMouse.h:643
Vec2 pointerPosition() const
Definition: CUMouse.h:657
Vec2 direction
Definition: CUMouse.h:368
Vec2 wheelDirection() const
Definition: CUMouse.h:675
Vec2 position
Definition: CUMouse.h:335
std::unordered_map< Uint32, MouseMotionListener > _dragListeners
Definition: CUMouse.h:565
std::function< void(const MouseWheelEvent &event, bool focus)> MouseWheelListener
Definition: CUMouse.h:494
void setPointerAwareness(PointerAwareness awareness)
Definition: CUMouse.h:620
PointerAwareness _awareness
Definition: CUMouse.h:543
virtual bool requestFocus(Uint32 key) override
ButtonState buttonDown() const
Definition: CUMouse.h:629
MouseWheelEvent(const Vec2 &offset, const Timestamp &stamp, bool flip=false)
Definition: CUMouse.h:384
Definition: CUMouse.h:363
virtual void queryEvents(std::vector< Uint32 > &eventset) override
Definition: CUAnimationNode.h:52
MouseEvent(Uint32 state, const Vec2 &point, const Timestamp &stamp)
Definition: CUMouse.h:349
std::function< void(const MouseEvent &event, const Vec2 &previous, bool focus)> MouseMotionListener
Definition: CUMouse.h:463
Timestamp timestamp
Definition: CUMouse.h:366
ButtonState _lastState
Definition: CUMouse.h:546
bool removeMotionListener(Uint32 key)