#include "pch.h" #include "log.h" #include "canvas_modes.h" #include "layout.h" #include "canvas.h" NodeCanvas* CanvasMode::node; ui::Canvas* CanvasMode::canvas; void CanvasModePen::on_MouseDownL(MouseEvent* me, glm::vec2& loc) { canvas->stroke_start(loc, 1.f, node->m_brush); m_dragging = true; node->mouse_capture(); } void CanvasModePen::on_MouseUpL(MouseEvent* me, glm::vec2& loc) { canvas->stroke_end(); m_dragging = false; node->mouse_release(); } void CanvasModePen::on_MouseDownR(MouseEvent* me, glm::vec2& loc) { m_draggingR = true; m_dragR_start = me->m_pos; m_pan_start = m_pan; node->mouse_capture(); } void CanvasModePen::on_MouseUpR(MouseEvent* me, glm::vec2& loc) { m_draggingR = false; node->mouse_release(); } void CanvasModePen::on_MouseMove(MouseEvent* me, glm::vec2& loc) { if (m_dragging) canvas->stroke_update(loc, 1.f); if (m_draggingR) m_pan = m_pan_start + (me->m_pos - m_dragR_start) * glm::vec2(-1, -1); m_cur = loc; canvas->m_cam_rot = m_pan * 0.003f; } void CanvasModePen::on_MouseScroll(MouseEvent* me, glm::vec2& loc) { m_zoom_canvas += me->m_scroll_delta * 0.1f; canvas->m_cam_fov -= me->m_scroll_delta * 20.1f; } void CanvasModePen::on_MouseCancel(MouseEvent* me, glm::vec2& loc) { m_dragging = false; node->mouse_release(); } void CanvasModePen::on_GestureStart(GestureEvent* ge) { m_pan_start = m_pan; m_zoom_start = m_zoom_canvas; m_camera_fov = canvas->m_cam_fov; } void CanvasModePen::on_GestureMove(GestureEvent* ge) { m_pan = m_pan_start + ge->m_pos_delta * glm::vec2(-1, -1) * 0.3f; canvas->m_cam_fov = m_camera_fov - ge->m_distance_delta * .05f; canvas->m_cam_rot = m_pan * 0.003f; }