rename engine to src
This commit is contained in:
139
src/canvas_modes.h
Normal file
139
src/canvas_modes.h
Normal file
@@ -0,0 +1,139 @@
|
||||
#pragma once
|
||||
#include "event.h"
|
||||
#include "shape.h"
|
||||
#include "brush.h"
|
||||
#include <poly2tri.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) {}
|
||||
virtual void on_Draw(const glm::mat4& ortho, const glm::mat4& proj, const glm::mat4& camera) {}
|
||||
virtual void init() {}
|
||||
virtual void enter() {}
|
||||
virtual void leave() {}
|
||||
};
|
||||
|
||||
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;
|
||||
glm::vec2 m_pan_start;
|
||||
glm::vec2 m_cur_pos;
|
||||
glm::vec2 m_size_pos_start;
|
||||
float m_size_value_start;
|
||||
float m_camera_fov;
|
||||
float m_zoom_canvas = 1.f;
|
||||
float m_zoom_start;
|
||||
bool m_valid_brush = false;
|
||||
ui::Brush m_brush;
|
||||
// resizing the tip
|
||||
bool m_resizing = false;
|
||||
public:
|
||||
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 leave() override;
|
||||
bool m_picking = false;
|
||||
};
|
||||
|
||||
class CanvasModeLine : public CanvasMode
|
||||
{
|
||||
ui::LineSegment m_line;
|
||||
bool m_dragging = false;
|
||||
glm::vec2 m_drag_start;
|
||||
glm::vec2 m_drag_pos;
|
||||
public:
|
||||
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;
|
||||
};
|
||||
|
||||
class CanvasModeGrid : public CanvasMode
|
||||
{
|
||||
ui::LineSegment m_line;
|
||||
glm::vec3 origin;
|
||||
glm::vec3 dir;
|
||||
int m_plane_id;
|
||||
bool m_dragging = false;
|
||||
struct ray_t { glm::vec3 o, d; };
|
||||
std::vector<ray_t> m_lines;
|
||||
public:
|
||||
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;
|
||||
void commit();
|
||||
void clear();
|
||||
};
|
||||
|
||||
class CanvasModeCamera : public CanvasMode
|
||||
{
|
||||
bool m_dragging = false;
|
||||
glm::vec2 m_drag_start;
|
||||
glm::vec2 m_pos_start;
|
||||
public:
|
||||
virtual void on_MouseEvent(MouseEvent* me, glm::vec2& loc) override;
|
||||
};
|
||||
|
||||
class CanvasModeFill : public CanvasMode
|
||||
{
|
||||
ui::DynamicShape m_shape;
|
||||
bool m_dragging = false;
|
||||
std::vector<ui::Shape::vertex_t> m_points;
|
||||
std::map<int, int> m_dirty_planes;
|
||||
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 leave() override;
|
||||
};
|
||||
|
||||
class CanvasModeMaskFree : public CanvasMode
|
||||
{
|
||||
ui::DynamicShape m_shape;
|
||||
bool m_dragging = false;
|
||||
std::vector<ui::Shape::vertex_t> m_points;
|
||||
std::vector<glm::vec2> m_points2d;
|
||||
std::map<int, int> m_dirty_planes;
|
||||
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 leave() override;
|
||||
};
|
||||
|
||||
class CanvasModeMaskLine : public CanvasMode
|
||||
{
|
||||
ui::DynamicShape m_shape;
|
||||
bool m_dragging = false;
|
||||
std::vector<ui::Shape::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 leave() override;
|
||||
};
|
||||
Reference in New Issue
Block a user