1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 15:07:45 +00:00

PixelPaint: Make merge up and down actions work with disjoint layers

The "Merge Active Layer Up" and "Merge Active Layer Down" actions now
work with layers of different sizes. These actions now expand the
bounding rect of the newly merged layer to contain all layers being
merged. Layers which are not visible are now ignored by these actions.
This commit is contained in:
Tim Ledbetter 2023-02-11 15:04:39 +00:00 committed by Sam Atkins
parent 74dff6250c
commit e294c96aef
3 changed files with 79 additions and 29 deletions

View file

@ -85,8 +85,8 @@ public:
void select_layer(Layer*);
ErrorOr<void> flatten_all_layers();
ErrorOr<void> merge_visible_layers();
void merge_active_layer_up(Layer& layer);
void merge_active_layer_down(Layer& layer);
ErrorOr<void> merge_active_layer_up(Layer& layer);
ErrorOr<void> merge_active_layer_down(Layer& layer);
void add_client(ImageClient&);
void remove_client(ImageClient&);
@ -111,6 +111,11 @@ private:
VisibleOnly
};
enum class LayerMergeDirection {
Up,
Down
};
explicit Image(Gfx::IntSize);
void did_change(Gfx::IntRect const& modified_rect = {});
@ -118,6 +123,7 @@ private:
void did_modify_layer_stack();
ErrorOr<void> merge_layers(LayerMergeMode);
ErrorOr<void> merge_active_layer(NonnullRefPtr<Layer> const&, LayerMergeDirection);
Gfx::IntSize m_size;
NonnullRefPtrVector<Layer> m_layers;