MouseButtons.h 1.5 KB

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