From 0ca085910ea5b7540522763d21ddec0358e49620 Mon Sep 17 00:00:00 2001 From: Tobias Christiansen Date: Thu, 5 Aug 2021 15:48:59 +0200 Subject: PixelPaint: Make Guides' visibility optional Whether Guides are drawn or not is now controlled via the menu-entry View->Show Guides. --- Userland/Applications/PixelPaint/ImageEditor.cpp | 16 +++++++++------- Userland/Applications/PixelPaint/ImageEditor.h | 2 ++ Userland/Applications/PixelPaint/main.cpp | 10 ++++++++++ 3 files changed, 21 insertions(+), 7 deletions(-) (limited to 'Userland/Applications') diff --git a/Userland/Applications/PixelPaint/ImageEditor.cpp b/Userland/Applications/PixelPaint/ImageEditor.cpp index d6bb765397..080416be4e 100644 --- a/Userland/Applications/PixelPaint/ImageEditor.cpp +++ b/Userland/Applications/PixelPaint/ImageEditor.cpp @@ -83,13 +83,15 @@ void ImageEditor::paint_event(GUI::PaintEvent& event) painter.draw_rect(enclosing_int_rect(image_rect_to_editor_rect(m_active_layer->relative_rect())).inflated(2, 2), Color::Black); } - for (auto& guide : m_guides) { - if (guide.orientation() == Guide::Orientation::Horizontal) { - int y_coordinate = (int)image_position_to_editor_position({ 0.0f, guide.offset() }).y(); - painter.draw_line({ 0, y_coordinate }, { rect().width(), y_coordinate }, Color::Cyan, 1, Gfx::Painter::LineStyle::Dashed, Color::LightGray); - } else if (guide.orientation() == Guide::Orientation::Vertical) { - int x_coordinate = (int)image_position_to_editor_position({ guide.offset(), 0.0f }).x(); - painter.draw_line({ x_coordinate, 0 }, { x_coordinate, rect().height() }, Color::Cyan, 1, Gfx::Painter::LineStyle::Dashed, Color::LightGray); + if (m_show_guides) { + for (auto& guide : m_guides) { + if (guide.orientation() == Guide::Orientation::Horizontal) { + int y_coordinate = (int)image_position_to_editor_position({ 0.0f, guide.offset() }).y(); + painter.draw_line({ 0, y_coordinate }, { rect().width(), y_coordinate }, Color::Cyan, 1, Gfx::Painter::LineStyle::Dashed, Color::LightGray); + } else if (guide.orientation() == Guide::Orientation::Vertical) { + int x_coordinate = (int)image_position_to_editor_position({ guide.offset(), 0.0f }).x(); + painter.draw_line({ x_coordinate, 0 }, { x_coordinate, rect().height() }, Color::Cyan, 1, Gfx::Painter::LineStyle::Dashed, Color::LightGray); + } } } diff --git a/Userland/Applications/PixelPaint/ImageEditor.h b/Userland/Applications/PixelPaint/ImageEditor.h index 10e9fedf77..5c3f09f2fc 100644 --- a/Userland/Applications/PixelPaint/ImageEditor.h +++ b/Userland/Applications/PixelPaint/ImageEditor.h @@ -85,6 +85,7 @@ public: Gfx::FloatPoint editor_position_to_image_position(Gfx::IntPoint const&) const; NonnullRefPtrVector const& guides() const { return m_guides; } + void toggle_guide_visibility() { m_show_guides = !m_show_guides; } private: explicit ImageEditor(NonnullRefPtr); @@ -116,6 +117,7 @@ private: OwnPtr m_undo_stack; NonnullRefPtrVector m_guides; + bool m_show_guides { true }; Tool* m_active_tool { nullptr }; diff --git a/Userland/Applications/PixelPaint/main.cpp b/Userland/Applications/PixelPaint/main.cpp index 7752df39a0..ee2c9b60b8 100644 --- a/Userland/Applications/PixelPaint/main.cpp +++ b/Userland/Applications/PixelPaint/main.cpp @@ -347,11 +347,21 @@ int main(int argc, char** argv) }, window); + auto show_guides_action = GUI::Action::create_checkable( + "Show Guides", [&](auto&) { + if (auto* editor = current_image_editor()) { + editor->toggle_guide_visibility(); + } + }, + window); + show_guides_action->set_checked(true); + view_menu.add_action(zoom_in_action); view_menu.add_action(zoom_out_action); view_menu.add_action(reset_zoom_action); view_menu.add_separator(); view_menu.add_action(add_guide_action); + view_menu.add_action(show_guides_action); auto& tool_menu = window->add_menu("&Tool"); toolbox.for_each_tool([&](auto& tool) { -- cgit v1.2.3