From 96829565d81af9cd7490c1bcb21a974610536af5 Mon Sep 17 00:00:00 2001 From: Tobias Christiansen Date: Mon, 7 Mar 2022 22:36:19 +0100 Subject: [PATCH] PixelPaint: Keep track of and expose the type of the edited bitmap This can be either the content bitmap or the mask bitmap. --- Userland/Applications/PixelPaint/Layer.cpp | 21 +++++++++++++++++++++ Userland/Applications/PixelPaint/Layer.h | 12 ++++++++++++ 2 files changed, 33 insertions(+) diff --git a/Userland/Applications/PixelPaint/Layer.cpp b/Userland/Applications/PixelPaint/Layer.cpp index e5905ce9e3..bf90f60b3b 100644 --- a/Userland/Applications/PixelPaint/Layer.cpp +++ b/Userland/Applications/PixelPaint/Layer.cpp @@ -179,4 +179,25 @@ void Layer::create_mask() update_cached_bitmap(); } +Gfx::Bitmap& Layer::currently_edited_bitmap() +{ + switch (edit_mode()) { + case EditMode::Mask: + if (is_masked()) + return *mask_bitmap(); + [[fallthrough]]; + case EditMode::Content: + return content_bitmap(); + } + VERIFY_NOT_REACHED(); +} + +void Layer::set_edit_mode(Layer::EditMode mode) +{ + if (m_edit_mode == mode) + return; + + m_edit_mode = mode; +} + } diff --git a/Userland/Applications/PixelPaint/Layer.h b/Userland/Applications/PixelPaint/Layer.h index 613408ac76..74c1cdc65a 100644 --- a/Userland/Applications/PixelPaint/Layer.h +++ b/Userland/Applications/PixelPaint/Layer.h @@ -74,6 +74,16 @@ public: bool is_masked() { return !m_mask_bitmap.is_null(); } + enum class EditMode { + Content, + Mask, + }; + + EditMode edit_mode() { return m_edit_mode; } + void set_edit_mode(EditMode mode); + + Gfx::Bitmap& currently_edited_bitmap(); + private: Layer(Image&, NonnullRefPtr, String name); @@ -90,6 +100,8 @@ private: int m_opacity_percent { 100 }; + EditMode m_edit_mode { EditMode::Content }; + void update_cached_bitmap(); };