diff options
author | Tobias Christiansen <tobi@tobyase.de> | 2021-08-05 15:48:59 +0200 |
---|---|---|
committer | Ali Mohammad Pur <Ali.mpfard@gmail.com> | 2021-08-07 02:52:47 +0430 |
commit | 0ca085910ea5b7540522763d21ddec0358e49620 (patch) | |
tree | 624e416cbf41e0054921a736f12b1a183f7275ae /Userland/Applications | |
parent | 193f1e01cf718be38ce3c764613db668781b12a5 (diff) | |
download | serenity-0ca085910ea5b7540522763d21ddec0358e49620.zip |
PixelPaint: Make Guides' visibility optional
Whether Guides are drawn or not is now controlled via the menu-entry
View->Show Guides.
Diffstat (limited to 'Userland/Applications')
-rw-r--r-- | Userland/Applications/PixelPaint/ImageEditor.cpp | 16 | ||||
-rw-r--r-- | Userland/Applications/PixelPaint/ImageEditor.h | 2 | ||||
-rw-r--r-- | Userland/Applications/PixelPaint/main.cpp | 10 |
3 files changed, 21 insertions, 7 deletions
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<Guide> const& guides() const { return m_guides; } + void toggle_guide_visibility() { m_show_guides = !m_show_guides; } private: explicit ImageEditor(NonnullRefPtr<Image>); @@ -116,6 +117,7 @@ private: OwnPtr<GUI::UndoStack> m_undo_stack; NonnullRefPtrVector<Guide> 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) { |