7#include "mouse_buttons.hpp"
8#include "../geometry/point.hpp"
9#include "../geometry/vector.hpp"
10#include "../geometry/transform.hpp"
11#include "../hires_utc_clock.hpp"
16 enum class Type { None, Entered, Exited, Move, Drag, ButtonDown, ButtonUp, Wheel };
52 event.type = mouse_event::Type::Entered;
56 static mouse_event exited() noexcept {
62 event.position = point2{far_, far_};
63 event.type = mouse_event::Type::Exited;
78 r.downPosition = point2{transform * rhs.downPosition};
79 r.wheelDelta = vector2{
transform * rhs.wheelDelta};
83 friend std::string to_string(mouse_event
const &rhs)
noexcept {
86 using enum mouse_event::Type;
87 case None: type_s =
"none";
break;
88 case Entered: type_s =
"entered";
break;
89 case Exited: type_s =
"exited";
break;
90 case Move: type_s =
"move";
break;
91 case Drag: type_s =
"drag";
break;
92 case ButtonDown: type_s =
"down";
break;
93 case ButtonUp: type_s =
"up";
break;
94 case Wheel: type_s =
"wheel";
break;
95 default: tt_no_default();
98 return std::format(
"<mouse {} {}>", type_s, rhs.position);
102 return lhs << to_string(rhs);
Definition mouse_buttons.hpp:11
Definition mouse_event.hpp:15
point2 position
The current position of the mouse pointer.
Definition mouse_event.hpp:23
point2 downPosition
The position the last time a button was pressed.
Definition mouse_event.hpp:26
int clickCount
Number of clicks from the last button clicked.
Definition mouse_event.hpp:38
vector2 delta() const noexcept
Get the location of the mouse relative to the start of a drag.
Definition mouse_event.hpp:69
mouse_buttons down
Buttons that are pressed/held down.
Definition mouse_event.hpp:35
vector2 wheelDelta
Change in wheel rotation, in pixels.
Definition mouse_event.hpp:29
mouse_buttons cause
Buttons which has caused this event.
Definition mouse_event.hpp:32
Definition transform.hpp:83