implement pen and erase as strategy pattern introducing the CanvasMode classes
This commit is contained in:
47
engine/canvas_modes.h
Normal file
47
engine/canvas_modes.h
Normal file
@@ -0,0 +1,47 @@
|
||||
#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;
|
||||
};
|
||||
Reference in New Issue
Block a user