diff options
-rw-r--r-- | Userland/Applications/PixelPaint/Layer.cpp | 21 | ||||
-rw-r--r-- | Userland/Applications/PixelPaint/Layer.h | 12 |
2 files changed, 33 insertions, 0 deletions
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<Gfx::Bitmap>, String name); @@ -90,6 +100,8 @@ private: int m_opacity_percent { 100 }; + EditMode m_edit_mode { EditMode::Content }; + void update_cached_bitmap(); }; |