46 using namespace bke::greasepencil;
50 new_grease_pencil->
runtime->eval_frame = src_grease_pencil.
runtime->eval_frame;
55 const int new_layers_num = layers_to_merge.size();
56 new_grease_pencil->add_layers_with_empty_drawings_for_eval(new_layers_num);
59 for (
const int new_layer_i :
IndexRange(new_layers_num)) {
60 Layer &layer = new_grease_pencil->layer(new_layer_i);
61 const Span<int> src_layer_indices = layers_to_merge[new_layer_i];
63 const int first_src_layer_i = src_layer_indices[0];
64 const Layer &first_src_layer = src_grease_pencil.layer(first_src_layer_i);
65 layer.set_name(first_src_layer.name());
66 Drawing *drawing = new_grease_pencil->get_eval_drawing(layer);
72 for (
const int new_layer_i : new_layers_range) {
73 Layer &new_layer = new_grease_pencil->layer(new_layer_i);
75 const Span<int> src_layer_indices = layers_to_merge[new_layer_i];
76 const int first_src_layer_i = src_layer_indices[0];
77 const Layer &first_src_layer = src_grease_pencil.layer(first_src_layer_i);
84 if (src_layer_indices.
size() == 1) {
86 if (
const Drawing *src_drawing = src_grease_pencil.get_eval_drawing(first_src_layer)) {
88 new_curves = src_curves;
98 for (
const int i : src_layer_indices.
index_range()) {
99 const int src_layer_i = src_layer_indices[i];
100 const Layer &src_layer = src_grease_pencil.layer(src_layer_i);
101 if (
const Drawing *src_drawing = src_grease_pencil.get_eval_drawing(src_layer)) {
103 all_src_curves.
append(&src_curves);
108 src_grease_pencil, all_src_curves, transforms_to_apply, attribute_filter);
128 using T =
decltype(type);
133 for (
const int new_layer_i :
IndexRange(new_layers_num)) {
134 const Span<int> src_layer_indices = layers_to_merge[new_layer_i];
135 for (
const int src_layer_i : src_layer_indices) {
136 const T &src_value = src_span[src_layer_i];
137 mixer.mix_in(new_layer_i, src_value);
147 return new_grease_pencil;
static bke::CurvesGeometry join_curves(const GreasePencil &src_grease_pencil, const Span< const bke::CurvesGeometry * > all_src_curves, const Span< float4x4 > transforms_to_apply, const bke::AttributeFilter &attribute_filter)