refactor canvas modes
This commit is contained in:
@@ -5,7 +5,21 @@
|
||||
#include "texture.h"
|
||||
#include <poly2tri.h>
|
||||
|
||||
class Canvas;
|
||||
enum class kCanvasMode
|
||||
{
|
||||
Draw,
|
||||
Erase,
|
||||
Line,
|
||||
Camera,
|
||||
Grid,
|
||||
Import,
|
||||
Cut,
|
||||
Copy,
|
||||
Fill,
|
||||
MaskFree,
|
||||
MaskLine,
|
||||
COUNT,
|
||||
};
|
||||
|
||||
struct CameraData
|
||||
{
|
||||
@@ -22,13 +36,13 @@ class CanvasMode
|
||||
{
|
||||
public:
|
||||
static class NodeCanvas* node;
|
||||
static Canvas* canvas;
|
||||
//static Canvas* canvas;
|
||||
virtual void on_MouseEvent(MouseEvent* me, glm::vec2& loc) {}
|
||||
virtual void on_KeyEvent(KeyEvent* ke) {}
|
||||
virtual void on_GestureEvent(GestureEvent* ge) {}
|
||||
virtual void on_Draw(const glm::mat4& ortho, const glm::mat4& proj, const glm::mat4& camera) {}
|
||||
virtual void init() {}
|
||||
virtual void enter() {}
|
||||
virtual void enter(kCanvasMode prev) {}
|
||||
virtual void leave() {}
|
||||
CanvasMode() = default;
|
||||
virtual ~CanvasMode() = default;
|
||||
@@ -71,7 +85,7 @@ public:
|
||||
virtual void on_GestureEvent(GestureEvent* ge) override;
|
||||
virtual void on_MouseEvent(MouseEvent* me, glm::vec2& loc) override;
|
||||
virtual void on_Draw(const glm::mat4& ortho, const glm::mat4& proj, const glm::mat4& camera) override;
|
||||
virtual void enter() override;
|
||||
virtual void enter(kCanvasMode prev) override;
|
||||
virtual void leave() override;
|
||||
bool m_picking = false;
|
||||
};
|
||||
@@ -127,14 +141,20 @@ public:
|
||||
virtual void leave() override;
|
||||
};
|
||||
|
||||
class CanvasModeMaskFree : public CanvasMode
|
||||
class CanvasModeMaskBase : public CanvasMode
|
||||
{
|
||||
protected:
|
||||
friend class CanvasModeTransform;
|
||||
DynamicShape m_shape;
|
||||
bool m_dragging = false;
|
||||
std::vector<vertex_t> m_points;
|
||||
std::vector<glm::vec2> m_points2d;
|
||||
CameraData m_selection_cam;
|
||||
public:
|
||||
};
|
||||
|
||||
class CanvasModeMaskFree : public CanvasModeMaskBase
|
||||
{
|
||||
public:
|
||||
virtual void on_Draw(const glm::mat4& ortho, const glm::mat4& proj, const glm::mat4& camera) override;
|
||||
virtual void on_MouseEvent(MouseEvent* me, glm::vec2& loc) override;
|
||||
@@ -143,19 +163,15 @@ public:
|
||||
void clear();
|
||||
};
|
||||
|
||||
class CanvasModeMaskLine : public CanvasMode
|
||||
class CanvasModeMaskLine : public CanvasModeMaskBase
|
||||
{
|
||||
DynamicShape m_shape;
|
||||
bool m_dragging = false;
|
||||
std::vector<vertex_t> m_points;
|
||||
std::vector<glm::vec2> m_points2d;
|
||||
std::map<int, int> m_dirty_planes;
|
||||
bool m_active_tool = false;
|
||||
public:
|
||||
virtual void on_Draw(const glm::mat4& ortho, const glm::mat4& proj, const glm::mat4& camera) override;
|
||||
virtual void on_MouseEvent(MouseEvent* me, glm::vec2& loc) override;
|
||||
virtual void init() override;
|
||||
virtual void enter() override;
|
||||
virtual void enter(kCanvasMode prev) override;
|
||||
virtual void leave() override;
|
||||
};
|
||||
|
||||
@@ -186,6 +202,7 @@ class CanvasModeTransform : public CanvasMode
|
||||
std::vector<vertex_t> m_points_face[6];
|
||||
std::map<int, int> m_dirty_planes{};
|
||||
bool m_active_tool = false;
|
||||
bool m_commit_on_leave = false;
|
||||
public:
|
||||
enum class ActionType : uint8_t { Copy, Cut, Import };
|
||||
ActionType m_action;
|
||||
@@ -194,6 +211,6 @@ public:
|
||||
virtual void on_Draw(const glm::mat4& ortho, const glm::mat4& proj, const glm::mat4& camera) override;
|
||||
virtual void on_MouseEvent(MouseEvent* me, glm::vec2& loc) override;
|
||||
virtual void init() override;;
|
||||
virtual void enter() override;
|
||||
virtual void enter(kCanvasMode prev) override;
|
||||
virtual void leave() override;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user