handle WM_MOUSEWHEEL and WM_POINTERUPDATE for the Windows Ink stylus driver
This commit is contained in:
@@ -105,6 +105,7 @@ enum class kEventType : uint8_t
|
||||
MouseUpR,
|
||||
MouseEnter,
|
||||
MouseLeave,
|
||||
MouseScroll,
|
||||
KeyDown,
|
||||
KeyUp,
|
||||
KeyChar,
|
||||
@@ -122,6 +123,7 @@ class MouseEvent : public Event
|
||||
public:
|
||||
MouseEvent() { m_cat = kEventCategory::MouseEvent; }
|
||||
glm::vec2 m_pos;
|
||||
float m_scroll_delta;
|
||||
};
|
||||
|
||||
class KeyEvent : public Event
|
||||
@@ -1873,6 +1875,7 @@ class NodeCanvas : public Node
|
||||
bool m_draggingR = false;
|
||||
glm::vec2 m_dragR_start;
|
||||
glm::vec2 m_pan_start;
|
||||
glm::vec2 m_pan;
|
||||
public:
|
||||
std::unique_ptr<ui::Canvas> m_canvas;
|
||||
ui::Brush m_brush;
|
||||
@@ -1886,9 +1889,9 @@ public:
|
||||
m_canvas->layer_add("asd");
|
||||
m_canvas->clear();
|
||||
m_sampler.create();
|
||||
SetPositioning(YGPositionTypeAbsolute);
|
||||
SetPosition(100, 100);
|
||||
SetSize({ 512, 512 });
|
||||
// SetPositioning(YGPositionTypeAbsolute);
|
||||
// SetPosition(100, 100);
|
||||
// SetSize({ 512, 512 });
|
||||
}
|
||||
virtual void draw() override
|
||||
{
|
||||
@@ -1904,14 +1907,14 @@ public:
|
||||
glClearColor(0, 0, 0, 1);
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
float zoom = root()->m_zoom;
|
||||
auto box = m_clip_uncut * zoom;
|
||||
auto box = m_clip * zoom;
|
||||
glm::ivec4 c = (glm::ivec4)glm::vec4(box.x, (int)(vp[3] - box.y - box.w), box.z, box.w);
|
||||
glViewport(c.x, c.y, c.z, c.w);
|
||||
|
||||
glm::vec2 sz = { m_canvas->m_width, m_canvas->m_height };
|
||||
auto mvp = glm::ortho(0.f, box.z, 0.f, box.w, -1.f, 1.f) *
|
||||
//glm::translate(glm::vec3((m_size - sz) * 0.5f, 0)) * // center
|
||||
glm::translate(glm::vec3(0)) * // corner
|
||||
glm::translate(glm::vec3(m_pan, 0)) * // corner
|
||||
glm::scale(glm::vec3(sz * zoom, 1)) *
|
||||
glm::translate(glm::vec3(.5f, .5f, 0.f)); // pivot
|
||||
|
||||
@@ -1946,11 +1949,11 @@ public:
|
||||
}
|
||||
virtual void handle_resize(glm::vec2 old_size, glm::vec2 new_size) override
|
||||
{
|
||||
if (new_size.x > m_canvas->m_width)
|
||||
{
|
||||
m_canvas->resize((int)new_size.x, (int)new_size.y);
|
||||
m_canvas->clear();
|
||||
}
|
||||
// if (new_size.x > m_canvas->m_width)
|
||||
// {
|
||||
// m_canvas->resize((int)new_size.x, (int)new_size.y);
|
||||
// m_canvas->clear();
|
||||
// }
|
||||
}
|
||||
virtual kEventResult handle_event(Event* e) override
|
||||
{
|
||||
@@ -1975,7 +1978,7 @@ public:
|
||||
case kEventType::MouseDownR:
|
||||
m_draggingR = true;
|
||||
m_dragR_start = me->m_pos;
|
||||
m_pan_start = GetPosition();
|
||||
m_pan_start = m_pan;
|
||||
mouse_capture();
|
||||
break;
|
||||
case kEventType::MouseUpR:
|
||||
@@ -1986,7 +1989,7 @@ public:
|
||||
if (m_dragging)
|
||||
m_canvas->stroke_update(cur, 1.f);
|
||||
if (m_draggingR)
|
||||
SetPosition(m_pan_start + me->m_pos - m_dragR_start);
|
||||
m_pan = m_pan_start + (me->m_pos - m_dragR_start) * glm::vec2(1, -1);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user