50 lines
1.1 KiB
C++
50 lines
1.1 KiB
C++
#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_MouseEvent(MouseEvent* me, glm::vec2& loc) {}
|
|
virtual void on_KeyEvent(KeyEvent* ke) {}
|
|
virtual void on_GestureEvent(GestureEvent* ge) {}
|
|
};
|
|
|
|
class CanvasModeBasicCamera : public CanvasMode
|
|
{
|
|
bool m_draggingR = false;
|
|
glm::vec2 m_dragR_start;
|
|
glm::vec2 m_pan_start;
|
|
float m_camera_fov;
|
|
float m_zoom_canvas = 1.f;
|
|
float m_zoom_start;
|
|
public:
|
|
virtual void on_MouseEvent(MouseEvent* me, glm::vec2& loc) override;
|
|
virtual void on_GestureEvent(GestureEvent* ge) override;
|
|
};
|
|
|
|
class CanvasModePen : public CanvasMode
|
|
{
|
|
bool m_dragging = false;
|
|
bool m_draggingR = false;
|
|
glm::vec2 m_dragR_start;
|
|
glm::vec2 m_pan_start;
|
|
float m_camera_fov;
|
|
float m_zoom_canvas = 1.f;
|
|
float m_zoom_start;
|
|
public:
|
|
virtual void on_MouseEvent(MouseEvent* me, glm::vec2& loc) override;
|
|
};
|
|
|
|
class CanvasModeLine : public CanvasMode
|
|
{
|
|
int m_stage{0};
|
|
public:
|
|
virtual void on_MouseEvent(MouseEvent* me, glm::vec2& loc) override;
|
|
};
|