PixelPaint: Make Guides' visibility optional
Whether Guides are drawn or not is now controlled via the menu-entry View->Show Guides.
This commit is contained in:
parent
193f1e01cf
commit
0ca085910e
Notes:
sideshowbarker
2024-07-18 07:21:32 +09:00
Author: https://github.com/TobyAsE Commit: https://github.com/SerenityOS/serenity/commit/0ca085910ea Pull-request: https://github.com/SerenityOS/serenity/pull/9155 Reviewed-by: https://github.com/alimpfard
3 changed files with 21 additions and 7 deletions
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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 };
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Add table
Reference in a new issue