CubicSDR/src/util/MouseTracker.h

54 lines
1.5 KiB
C++

// Copyright (c) Charles J. Cliffe
// SPDX-License-Identifier: GPL-2.0+
#pragma once
#include "wx/window.h"
#include "cubic_math.h"
class MouseTracker {
public:
MouseTracker(wxWindow *target);
MouseTracker();
void OnMouseMoved(wxMouseEvent& event);
void OnMouseWheelMoved(wxMouseEvent& event);
void OnMouseDown(wxMouseEvent& event);
void OnMouseReleased(wxMouseEvent& event);
void OnMouseRightDown(wxMouseEvent& event);
void OnMouseRightReleased(wxMouseEvent& event);
void OnMouseEnterWindow(wxMouseEvent& event);
void OnMouseLeftWindow(wxMouseEvent& event);
float getOriginMouseX() const;
float getOriginMouseY() const;
float getOriginDeltaMouseX() const;
float getOriginDeltaMouseY() const;
float getDeltaMouseX() const;
float getDeltaMouseY() const;
float getLastMouseX() const;
float getLastMouseY() const;
CubicVR::vec2 getGLXY() const;
float getMouseX() const;
float getMouseY() const;
void setVertDragLock(bool dragLock);
void setHorizDragLock(bool dragLock);
bool getVertDragLock() const;
bool getHorizDragLock() const;
bool mouseDown() const;
bool mouseRightDown() const;
bool mouseInView() const;
void setTarget(wxWindow *target_in);
private:
float mouseX, mouseY;
float lastMouseX, lastMouseY;
float originMouseX, originMouseY;
float deltaMouseX, deltaMouseY;
bool vertDragLock, horizDragLock;
bool isMouseDown, isMouseRightDown, isMouseInView;
wxWindow *target;
};