#pragma once #include "event.h" NS_START class Canvas; NS_END class CanvasMode { public: static class NodeCanvas* node; static ui::Canvas* canvas; virtual void on_MouseDownL(MouseEvent* me, glm::vec2& loc) {} virtual void on_MouseUpL(MouseEvent* me, glm::vec2& loc) {} virtual void on_MouseDownR(MouseEvent* me, glm::vec2& loc) {} virtual void on_MouseUpR(MouseEvent* me, glm::vec2& loc) {} virtual void on_MouseMove(MouseEvent* me, glm::vec2& loc) {} virtual void on_MouseScroll(MouseEvent* me, glm::vec2& loc) {} virtual void on_MouseCancel(MouseEvent* me, glm::vec2& loc) {} virtual void on_KeyDown(KeyEvent* ke) {} virtual void on_KeyUp(KeyEvent* ke) {} virtual void on_GestureStart(GestureEvent* ge) {} virtual void on_GestureMove(GestureEvent* ge) {} }; class CanvasModePen : public CanvasMode { bool m_dragging = false; bool m_draggingR = false; glm::vec2 m_dragR_start; glm::vec2 m_pan_start; glm::vec2 m_pan; glm::vec2 m_cur; float m_camera_fov; float m_zoom_canvas = 1.f; float m_zoom_start; public: virtual void on_MouseDownL(MouseEvent* me, glm::vec2& loc) override; virtual void on_MouseUpL(MouseEvent* me, glm::vec2& loc) override; virtual void on_MouseDownR(MouseEvent* me, glm::vec2& loc) override; virtual void on_MouseUpR(MouseEvent* me, glm::vec2& loc) override; virtual void on_MouseMove(MouseEvent* me, glm::vec2& loc) override; virtual void on_MouseScroll(MouseEvent* me, glm::vec2& loc) override; virtual void on_MouseCancel(MouseEvent* me, glm::vec2& loc) override; virtual void on_GestureStart(GestureEvent* ge) override; virtual void on_GestureMove(GestureEvent* ge) override; };