MouseButtons.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #ifndef MOUSEBUTTONS_H
  2. #define MOUSEBUTTONS_H
  3. #include <iostream>
  4. #include <array>
  5. class MouseButtons final {
  6. public:
  7. class MouseButton final {
  8. public:
  9. friend class MouseButtons;
  10. bool isDown() const;
  11. bool isReleased() const;
  12. int getDownTime() const;
  13. private:
  14. MouseButton();
  15. MouseButton(const MouseButton&) = delete;
  16. MouseButton(MouseButton&&) = delete;
  17. MouseButton& operator=(const MouseButton&) = delete;
  18. MouseButton& operator=(MouseButton&&) = delete;
  19. int glfwButton;
  20. bool down;
  21. bool shouldRelease;
  22. int downTime;
  23. };
  24. private:
  25. MouseButton buttons[3];
  26. public:
  27. MouseButtons();
  28. double getLastX() const;
  29. double getLastY() const;
  30. double getX() const;
  31. double getY() const;
  32. const MouseButton& primary;
  33. const MouseButton& secondary;
  34. const MouseButton& middle;
  35. void release(int button);
  36. void press(int button);
  37. void move(double x, double y);
  38. void tick();
  39. private:
  40. MouseButtons(const MouseButtons&) = delete;
  41. MouseButtons& operator=(const MouseButtons&) = delete;
  42. MouseButtons(MouseButtons&&) = delete;
  43. MouseButtons& operator=(MouseButtons&&) = delete;
  44. double lastX;
  45. double lastY;
  46. double x;
  47. double y;
  48. bool updateLast;
  49. };
  50. std::ostream& operator<<(std::ostream& os, const MouseButtons::MouseButton& m);
  51. #endif