52 new_grease_pencil->
runtime->eval_frame = src_grease_pencil.
runtime->eval_frame;
54 const int new_layers_num = layers_to_merge.size();
55 new_grease_pencil->add_layers_with_empty_drawings_for_eval(new_layers_num);
58 for (
const int new_layer_i :
IndexRange(new_layers_num)) {
59 Layer &layer = new_grease_pencil->layer(new_layer_i);
60 const Span<int> src_layer_indices = layers_to_merge[new_layer_i];
62 const int first_src_layer_i = src_layer_indices[0];
63 const Layer &first_src_layer = src_grease_pencil.layer(first_src_layer_i);
64 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;
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;
bke::GeometrySet join_geometries(Span< bke::GeometrySet > geometries, const bke::AttributeFilter &attribute_filter, const std::optional< Span< bke::GeometryComponent::Type > > &component_types_to_join=std::nullopt, bool allow_merging_instance_references=true)
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)