From 642c82fbff7ebc6fbe5d4c29dec1c5d33859e5ac Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Mon, 10 Jun 2019 19:35:24 +0200 Subject: [PATCH] PaintBrush: Use draw_line() when drawing continuously. --- Applications/PaintBrush/PaintableWidget.cpp | 17 ++++++++++++++--- Applications/PaintBrush/PaintableWidget.h | 1 + 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/Applications/PaintBrush/PaintableWidget.cpp b/Applications/PaintBrush/PaintableWidget.cpp index bac84d85de..767aac222d 100644 --- a/Applications/PaintBrush/PaintableWidget.cpp +++ b/Applications/PaintBrush/PaintableWidget.cpp @@ -30,10 +30,13 @@ void PaintableWidget::mousedown_event(GMouseEvent& event) GPainter painter(*m_bitmap); painter.set_pixel(event.position(), Color::Black); update({ event.position(), { 1, 1 } }); + m_last_drawing_event_position = event.position(); } -void PaintableWidget::mouseup_event(GMouseEvent&) +void PaintableWidget::mouseup_event(GMouseEvent& event) { + if (event.button() == GMouseButton::Left) + m_last_drawing_event_position = { -1, -1 }; } void PaintableWidget::mousemove_event(GMouseEvent& event) @@ -43,7 +46,15 @@ void PaintableWidget::mousemove_event(GMouseEvent& event) if (event.buttons() & GMouseButton::Left) { GPainter painter(*m_bitmap); - painter.set_pixel(event.position(), Color::Black); - update({ event.position(), { 1, 1 } }); + + if (m_last_drawing_event_position != Point(-1, -1)) { + painter.draw_line(m_last_drawing_event_position, event.position(), Color::Black); + update(); + } else { + painter.set_pixel(event.position(), Color::Black); + update({ event.position(), { 1, 1 } }); + } + + m_last_drawing_event_position = event.position(); } } diff --git a/Applications/PaintBrush/PaintableWidget.h b/Applications/PaintBrush/PaintableWidget.h index 11d25e9a8b..3714492c6d 100644 --- a/Applications/PaintBrush/PaintableWidget.h +++ b/Applications/PaintBrush/PaintableWidget.h @@ -15,5 +15,6 @@ private: virtual void mouseup_event(GMouseEvent&) override; virtual void mousemove_event(GMouseEvent&) override; + Point m_last_drawing_event_position { -1, -1 }; RetainPtr m_bitmap; };