summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Userland/Applications/PixelPaint/Layer.cpp21
-rw-r--r--Userland/Applications/PixelPaint/Layer.h12
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();
};