add flood fill mode with custom cursor

This commit is contained in:
2019-06-22 10:44:36 +02:00
parent 3f13c8a61e
commit 228263c70f
8 changed files with 1999 additions and 1707 deletions

View File

@@ -19,6 +19,7 @@ enum class kCanvasMode
Fill,
MaskFree,
MaskLine,
FloodFill,
COUNT,
};
@@ -37,6 +38,8 @@ class CanvasMode
{
public:
static class NodeCanvas* node;
bool hide_curor = false;
bool m_draw_tip = false;
//static Canvas* canvas;
virtual void on_MouseEvent(MouseEvent* me, glm::vec2& loc) {}
virtual void on_KeyEvent(KeyEvent* ke) {}
@@ -78,7 +81,7 @@ class CanvasModePen : public CanvasMode
// resizing the tip
bool m_resizing = false;
public:
CanvasModePen() = default;
CanvasModePen() { hide_curor = true; }
virtual void on_GestureEvent(GestureEvent* ge) override;
virtual void on_MouseEvent(MouseEvent* me, glm::vec2& loc) override;
@@ -87,7 +90,6 @@ public:
virtual void leave(kCanvasMode next) override;
bool m_picking = false;
glm::vec2 m_cur_pos;
bool m_draw_tip = false;
bool m_draw_outline = true;
};
@@ -99,7 +101,6 @@ class CanvasModeLine : public CanvasMode
glm::vec2 m_drag_pos;
public:
glm::vec2 m_cur_pos;
bool m_draw_tip = false;
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 init() override;
@@ -107,6 +108,19 @@ public:
virtual void leave(kCanvasMode next) override;
};
class CanvasModeFloodFill : public CanvasMode
{
const std::string m_cursor_path = "data/cursor/bucket-fill.png";
const uint16_t m_cursor_id = const_hash(m_cursor_path.c_str());
public:
CanvasModeFloodFill() { hide_curor = true; }
glm::vec2 m_cur_pos;
virtual void init() 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;
};
struct ray_t { glm::vec3 o, d; };
class CanvasModeGrid : public CanvasMode
{