2#include "MRViewerFwd.h"
5#include "MRMesh/MRphmap.h"
44 const Vector2i&
getMousePos()
const {
return currentMousePos_; }
77 bool preMouseDown_(
MouseButton button,
int modifier );
78 bool mouseDown_(
MouseButton button,
int modifier );
79 bool preMouseUp_(
MouseButton button,
int modifier );
80 bool preDragDrop_(
const std::vector<std::filesystem::path>& paths );
81 bool preMouseMove_(
int x,
int y );
82 bool mouseScroll_(
float delta );
84 bool isCursorInside_{
false };
85 void cursorEntrance_(
bool entered );
87 bool dropOldEventsOnNew_{
false };
88 void resetAllIfNeeded_();
90 Vector3f downTranslation_;
92 Vector2i downMousePos_;
93 Vector2i prevMousePos_;
94 Vector2i currentMousePos_;
97 MouseMode currentMode_{ MouseMode::None };
101 int clickModifiers_{};
103 MouseButton clickPendingDown_{ MouseButton::NoButton };
107 using MouseModeMap = HashMap<int, MouseMode>;
108 using MouseModeBackMap = HashMap<MouseMode, int>;
111 MouseModeBackMap backMap_;
113 std::function<void( AffineXf3f& )> transformModifierCb_;
114 std::function<void(
float& )> fovModifierCb_;
Definition MRMouseController.h:24
MouseMode
Standard mouse functions for camera control.
Definition MRMouse.h:22
MouseButton
Definition MRMouse.h:12
std::chrono::time_point< std::chrono::system_clock > Time
Definition MRAsyncTimer.h:20
MRVIEWER_API std::optional< MouseControlKey > findControlByMode(MouseMode mode) const
returns nullopt if no control is present for given mode, otherwise returns associated control
MRVIEWER_API bool isPressed(MouseButton button) const
returns state of mouse button
static MRVIEWER_API int mouseAndModToKey(const MouseControlKey &key)
cast mouse button and modifier to simple int key
bool isCursorInside() const
Definition MRMouseController.h:50
MRVIEWER_API void setMouseControl(const MouseControlKey &key, MouseMode mode)
MRVIEWER_API bool isPressedAny() const
returns true if any mouse btn is down
MRVIEWER_API void connect()
called in Viewer init, connects to Viewer mouse signals
const Vector2i & getDownMousePos() const
returns previous mouse down (if several mouse buttons are down returns position of first one)
Definition MRMouseController.h:42
static MRVIEWER_API MouseControlKey keyToMouseAndMod(int key)
cast simple int key to mouse button and modifier
bool isDropOldEventOnNewActive() const
dropOldEventsOnNew flag - drop active mouse down state (calling mouseUp) if new mouse event happens
Definition MRMouseController.h:53
void setTrasformModifierCb(std::function< void(AffineXf3f &)> cb)
set callback to modify view transform before it is applied to viewport
Definition MRMouseController.h:67
void dropOldEventsOnNew(bool on)
Definition MRMouseController.h:54
void setFOVModifierCb(std::function< void(float &)> cb)
set callback to modify new field of view before it is applied to viewport
Definition MRMouseController.h:70
const Vector2i & getMousePos() const
returns current mouse position
Definition MRMouseController.h:44
MR_ADD_CTOR_DELETE_MOVE(MouseController)
static MRVIEWER_API std::string getControlString(const MouseControlKey &key)
make string from mouse button and modifier
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Definition MRMouseController.h:28