add duplicate layer

This commit is contained in:
2019-01-18 22:39:15 +01:00
parent e0bb60980a
commit d019c2467e
4 changed files with 45 additions and 13 deletions

View File

@@ -170,6 +170,25 @@ void App::init_sidebar()
title_update();
};
layers->on_layer_duplicate = [this](Node*, int source_index) {
Canvas::I->layer_add(layers->m_layers.back()->m_label_text.c_str());
auto& dst = Canvas::I->m_layers.back();
auto& src = Canvas::I->m_layers[Canvas::I->m_order[source_index]];
for (int i = 0; i < 6; i++)
{
if (!src.m_dirty_face[i])
continue;
dst.m_rtt[i].copy(src.m_rtt[i]);
dst.m_dirty_face[i] = src.m_dirty_face[i];
dst.m_dirty_box[i] = src.m_dirty_box[i];
dst.m_opacity = src.m_opacity;
dst.m_blend_mode = src.m_blend_mode;
dst.m_alpha_locked = src.m_alpha_locked;
}
Canvas::I->m_unsaved = true;
title_update();
};
layers->on_layer_change = [this](Node*, int old_idx, int new_idx) {
canvas->m_canvas->m_current_layer_idx = canvas->m_canvas->m_order[new_idx];
};