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

PixelPaint: Implement Merge Active Layer Up

Implements 'Merge Active Layer Up' and adds it to the 'Layer' menu.
This commit is contained in:
electrikmilk 2022-02-14 23:49:20 -05:00 committed by Andreas Kling
parent db299e9804
commit 7e5b3ce26b
3 changed files with 29 additions and 0 deletions

View file

@ -369,6 +369,23 @@ void Image::merge_visible_layers()
}
}
void Image::merge_active_layer_up(Layer& layer)
{
if (m_layers.size() < 2)
return;
size_t layer_index = this->index_of(layer);
if ((layer_index + 1) == m_layers.size()) {
dbgln("Cannot merge layer up: layer is already at the top");
return; // FIXME: Notify user of error properly.
}
auto& layer_above = m_layers.at(layer_index + 1);
GUI::Painter painter(layer_above.bitmap());
painter.draw_scaled_bitmap(rect(), layer.bitmap(), layer.rect(), (float)layer.opacity_percent() / 100.0f);
remove_layer(layer);
select_layer(&layer_above);
}
void Image::merge_active_layer_down(Layer& layer)
{
if (m_layers.size() < 2)