ShishGL  1.0
A simple modular cross-platform graphics library
MouseEvent.hpp
Go to the documentation of this file.
1 /*============================================================================*/
2 #ifndef SHISHGL_MOUSE_EVENT_HPP
3 #define SHISHGL_MOUSE_EVENT_HPP
4 /*============================================================================*/
5 #include "Event.hpp"
6 #include "Mouse.hpp"
7 #include "Vector2.hpp"
8 #include "PlatformListener.hpp"
9 /*============================================================================*/
10 namespace Sh {
11 
12  class MouseEvent : public Event {
13  public:
14 
15  explicit MouseEvent(const Vector2<double>& where);
16 
17  ~MouseEvent() override = default;
18 
19  EventMask mask() override {
20  return MOUSE_MOVE;
21  }
22 
23  [[nodiscard]]
24  const Vector2<double>& where() const;
25 
26  void setWhere(const Vector2<double>& pos);
27 
28  bool happen(Listener* listener) override;
29 
30  protected:
31 
33 
34  };
35 
36  /*------------------------------------------------------------------------*/
37 
38  class MouseButtonEvent : public MouseEvent {
39  public:
40 
44 
45  ~MouseButtonEvent() override = default;
46 
47  EventMask mask() override {
48  return MOUSE_BUTTON;
49  }
50 
51  [[nodiscard]]
52  Mouse::Button button() const;
53 
54  [[nodiscard]]
55  Mouse::ButtonState state() const;
56 
57  bool happen(Listener* listener) override;
58 
59  protected:
60 
63 
64  };
65 
66  /*------------------------------------------------------------------------*/
67 
68  class MouseScrollEvent : public MouseEvent {
69  public:
70 
74 
75  ~MouseScrollEvent() override = default;
76 
77  EventMask mask() override {
78  return MOUSE_SCROLL;
79  }
80 
81  [[nodiscard]]
82  Mouse::ScrollDelta delta() const;
83 
84  [[nodiscard]]
85  Mouse::ScrollType type() const;
86 
87  bool happen(Listener* listener) override;
88 
89  protected:
90 
93 
94  };
95 
96 }
97 /*============================================================================*/
98 #endif //SHISHGL_MOUSE_EVENT_HPP
99 /*============================================================================*/
Sh::MouseButtonEvent::button
Mouse::Button button() const
Definition: MouseEvent.cpp:41
Sh::MouseEvent
Definition: MouseEvent.hpp:12
Sh::MouseScrollEvent::~MouseScrollEvent
~MouseScrollEvent() override=default
Vector2.hpp
Sh::Mouse::ScrollType
ScrollType
Definition: Mouse.hpp:21
Mouse.hpp
Sh::MouseButtonEvent::happen
bool happen(Listener *listener) override
Definition: MouseEvent.cpp:53
Sh::Mouse::Button
Button
Definition: Mouse.hpp:15
Sh::Vector2< double >
Sh::MouseEvent::MouseEvent
MouseEvent(const Vector2< double > &where)
Definition: MouseEvent.cpp:7
Sh::MouseScrollEvent::type
Mouse::ScrollType type() const
Definition: MouseEvent.cpp:73
Sh::MouseScrollEvent::mask
EventMask mask() override
Definition: MouseEvent.hpp:77
Sh::MouseButtonEvent::~MouseButtonEvent
~MouseButtonEvent() override=default
Sh::MouseButtonEvent::state
Mouse::ButtonState state() const
Definition: MouseEvent.cpp:47
Event.hpp
Sh::MouseButtonEvent::m_state
Mouse::ButtonState m_state
Definition: MouseEvent.hpp:62
Sh::MouseScrollEvent::m_type
Mouse::ScrollType m_type
Definition: MouseEvent.hpp:92
Sh::Event
Definition: Event.hpp:26
Sh::MouseEvent::~MouseEvent
~MouseEvent() override=default
Sh::MouseEvent::setWhere
void setWhere(const Vector2< double > &pos)
Definition: MouseEvent.cpp:19
Sh::MouseEvent::mask
EventMask mask() override
Definition: MouseEvent.hpp:19
Sh::MouseButtonEvent::MouseButtonEvent
MouseButtonEvent(const Vector2< double > &where, Mouse::Button button, Mouse::ButtonState state)
Definition: MouseEvent.cpp:31
PlatformListener.hpp
Sh
Definition: CoreApplication.hpp:10
Sh::MouseEvent::where
const Vector2< double > & where() const
Definition: MouseEvent.cpp:13
Sh::MouseEvent::happen
bool happen(Listener *listener) override
Definition: MouseEvent.cpp:25
Sh::MouseButtonEvent::m_button
Mouse::Button m_button
Definition: MouseEvent.hpp:61
Sh::Mouse::ButtonState
ButtonState
Definition: Mouse.hpp:10
Sh::MouseScrollEvent::delta
Mouse::ScrollDelta delta() const
Definition: MouseEvent.cpp:69
Sh::MouseEvent::m_where
Vector2< double > m_where
Definition: MouseEvent.hpp:32
Sh::MouseButtonEvent::mask
EventMask mask() override
Definition: MouseEvent.hpp:47
Sh::MouseScrollEvent
Definition: MouseEvent.hpp:68
Sh::Listener
Definition: Listener.hpp:7
Sh::MouseScrollEvent::MouseScrollEvent
MouseScrollEvent(const Vector2< double > &where, Mouse::ScrollDelta delta, Mouse::ScrollType type)
Definition: MouseEvent.cpp:59
Sh::EventMask
uint64_t EventMask
Definition: Event.hpp:11
Sh::MouseScrollEvent::m_delta
Mouse::ScrollDelta m_delta
Definition: MouseEvent.hpp:91
Sh::Mouse::ScrollDelta
double ScrollDelta
Definition: Mouse.hpp:26
Sh::MouseScrollEvent::happen
bool happen(Listener *listener) override
Definition: MouseEvent.cpp:79
Sh::MouseButtonEvent
Definition: MouseEvent.hpp:38