Skip to content

Commit

Permalink
PixelPaint: Add action to invert selection
Browse files Browse the repository at this point in the history
  • Loading branch information
snooze6214 authored and linusg committed Oct 18, 2022
1 parent 295fcd6 commit d3353ee
Show file tree
Hide file tree
Showing 6 changed files with 16 additions and 0 deletions.
Binary file added Base/res/icons/pixelpaint/invert-selection.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions Userland/Applications/PixelPaint/IconBag.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ ErrorOr<IconBag> IconBag::try_create()
icon_bag.close_image = TRY(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/close-tab.png"sv));
icon_bag.edit_copy = TRY(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/edit-copy.png"sv));
icon_bag.clear_selection = TRY(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/clear-selection.png"sv));
icon_bag.invert_selection = TRY(Gfx::Bitmap::try_load_from_file("/res/icons/pixelpaint/invert-selection.png"sv));
icon_bag.swap_colors = TRY(Gfx::Bitmap::try_load_from_file("/res/icons/pixelpaint/swap-colors.png"sv));
icon_bag.default_colors = TRY(Gfx::Bitmap::try_load_from_file("/res/icons/pixelpaint/default-colors.png"sv));
icon_bag.load_color_palette = TRY(Gfx::Bitmap::try_load_from_file("/res/icons/pixelpaint/load-color-palette.png"sv));
Expand Down
1 change: 1 addition & 0 deletions Userland/Applications/PixelPaint/IconBag.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ struct IconBag final {
RefPtr<Gfx::Bitmap> close_image { nullptr };
RefPtr<Gfx::Bitmap> edit_copy { nullptr };
RefPtr<Gfx::Bitmap> clear_selection { nullptr };
RefPtr<Gfx::Bitmap> invert_selection { nullptr };
RefPtr<Gfx::Bitmap> swap_colors { nullptr };
RefPtr<Gfx::Bitmap> default_colors { nullptr };
RefPtr<Gfx::Bitmap> load_color_palette { nullptr };
Expand Down
6 changes: 6 additions & 0 deletions Userland/Applications/PixelPaint/MainWidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -365,6 +365,12 @@ void MainWidget::initialize_menubar(GUI::Window& window)
VERIFY(editor);
editor->image().selection().clear();
}));
m_edit_menu->add_action(GUI::Action::create(
"&Invert Selection", g_icon_bag.invert_selection, [&](auto&) {
auto* editor = current_image_editor();
VERIFY(editor);
editor->image().selection().invert();
}));

m_edit_menu->add_separator();
m_edit_menu->add_action(GUI::Action::create(
Expand Down
7 changes: 7 additions & 0 deletions Userland/Applications/PixelPaint/Selection.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,13 @@ void Selection::clear()
client->selection_did_change();
}

void Selection::invert()
{
auto new_mask = Mask::full(m_image.rect());
new_mask.subtract(m_mask);
m_mask = new_mask;
}

void Selection::merge(Mask const& mask, MergeMode mode)
{
switch (mode) {
Expand Down
1 change: 1 addition & 0 deletions Userland/Applications/PixelPaint/Selection.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ class Selection {

bool is_empty() const { return m_mask.is_null(); }
void clear();
void invert();
void merge(Mask const&, MergeMode);
void merge(Gfx::IntRect const& rect, MergeMode mode) { merge(Mask::full(rect), mode); }
Gfx::IntRect bounding_rect() const { return m_mask.bounding_rect(); }
Expand Down

0 comments on commit d3353ee

Please sign in to comment.