38TEST(grease_pencil_merge, merge_simple)
44 Layer &layer1 = grease_pencil.add_layer(
"Layer1");
45 Layer &layer2 = grease_pencil.add_layer(
"Layer2");
47 grease_pencil.insert_frame(layer1, 0);
49 grease_pencil.insert_frame(layer2, 0);
50 grease_pencil.insert_frame(layer2, 2);
57 grease_pencil, src_layer_indices_by_dst_layer, *merged_grease_pencil);
59 EXPECT_EQ(merged_grease_pencil->layers().size(), 1);
60 EXPECT_EQ(merged_grease_pencil->layer(0).frames().size(), 2);
61 EXPECT_STREQ(merged_grease_pencil->layer(0).name().c_str(),
"Layer1");
66TEST(grease_pencil_merge, merge_in_same_group)
72 LayerGroup &group1 = grease_pencil.add_layer_group(grease_pencil.root_group(),
"Group1");
73 LayerGroup &group2 = grease_pencil.add_layer_group(group1,
"Group2");
74 LayerGroup &group3 = grease_pencil.add_layer_group(grease_pencil.root_group(),
"Group3");
76 Layer &layer1 = grease_pencil.add_layer(
"Layer1");
77 Layer &layer2 = grease_pencil.add_layer(group1,
"Layer2");
78 Layer &layer3 = grease_pencil.add_layer(group2,
"Layer3");
79 Layer &layer4 = grease_pencil.add_layer(group2,
"Layer4");
80 grease_pencil.add_layer(group3,
"Layer5");
82 grease_pencil.insert_frame(layer1, 0);
84 grease_pencil.insert_frame(layer2, 0);
85 grease_pencil.insert_frame(layer2, 2);
87 grease_pencil.insert_frame(layer3, 0);
88 grease_pencil.insert_frame(layer3, 3);
90 grease_pencil.insert_frame(layer4, 1);
91 grease_pencil.insert_frame(layer4, 3);
99 grease_pencil, src_layer_indices_by_dst_layer, *merged_grease_pencil);
101 EXPECT_EQ(merged_grease_pencil->layers().size(), 4);
104 for (
const int i : merged_grease_pencil->layers().index_range()) {
105 const Layer &layer = merged_grease_pencil->layer(
i);
106 EXPECT_STREQ(layer.name().c_str(), expected_layer_names[
i].c_str());
109 Array<int> expected_layer3_keyframes({0, 1, 3});
110 for (
const int i : merged_grease_pencil->layer(0).sorted_keys().index_range()) {
111 const int key = merged_grease_pencil->layer(0).sorted_keys()[
i];
118TEST(grease_pencil_merge, merge_in_different_group)
124 LayerGroup &group1 = grease_pencil.add_layer_group(grease_pencil.root_group(),
"Group1");
125 LayerGroup &group2 = grease_pencil.add_layer_group(group1,
"Group2");
126 LayerGroup &group3 = grease_pencil.add_layer_group(grease_pencil.root_group(),
"Group3");
127 LayerGroup &group4 = grease_pencil.add_layer_group(group2,
"Group4");
128 LayerGroup &group5 = grease_pencil.add_layer_group(group4,
"Group5");
129 LayerGroup &group6 = grease_pencil.add_layer_group(group1,
"Group6");
131 Layer &layer1 = grease_pencil.add_layer(
"Layer1");
132 Layer &layer2 = grease_pencil.add_layer(group6,
"Layer2");
133 Layer &layer3 = grease_pencil.add_layer(group5,
"Layer3");
134 Layer &layer4 = grease_pencil.add_layer(group2,
"Layer4");
135 grease_pencil.add_layer(group3,
"Layer5");
137 grease_pencil.insert_frame(layer1, 0);
139 grease_pencil.insert_frame(layer2, 0);
140 grease_pencil.insert_frame(layer2, 2);
142 grease_pencil.insert_frame(layer3, 0);
143 grease_pencil.insert_frame(layer3, 3);
145 grease_pencil.insert_frame(layer4, 1);
146 grease_pencil.insert_frame(layer4, 3);
153 grease_pencil, src_layer_indices_by_dst_layer, *merged_grease_pencil);
155 EXPECT_EQ(merged_grease_pencil->layers().size(), 4);
157 TreeNode *node = merged_grease_pencil->find_node_by_name(
"Layer3");
158 EXPECT_TRUE(node !=
nullptr);
164 Array<int> expected_layer3_keyframes({0, 2, 3});
171 for (
const int i : merged_grease_pencil->layers().index_range()) {
172 const Layer &layer = merged_grease_pencil->layer(
i);
173 EXPECT_STREQ(layer.name().c_str(), expected_layer_names[
i].c_str());
179TEST(grease_pencil_merge, merge_keyframes)
185 Layer &layer1 = grease_pencil.add_layer(
"Layer1");
186 Layer &layer2 = grease_pencil.add_layer(
"Layer2");
187 Layer &layer3 = grease_pencil.add_layer(
"Layer3");
188 Layer &layer4 = grease_pencil.add_layer(
"Layer4");
189 grease_pencil.add_layer(
"Layer5");
191 Drawing *drawing = grease_pencil.insert_frame(layer1, 0);
195 drawing = grease_pencil.insert_frame(layer2, 0);
198 drawing = grease_pencil.insert_frame(layer2, 2);
202 drawing = grease_pencil.insert_frame(layer3, 0);
205 drawing = grease_pencil.insert_frame(layer3, 3);
209 drawing = grease_pencil.insert_frame(layer4, 1);
212 drawing = grease_pencil.insert_frame(layer4, 3);
221 grease_pencil, src_layer_indices_by_dst_layer, *merged_grease_pencil);
223 EXPECT_EQ(merged_grease_pencil->layers().size(), 4);
225 Layer &expected_layer_1 = merged_grease_pencil->find_node_by_name(
"Layer1")->as_layer();
226 EXPECT_EQ(merged_grease_pencil->get_drawing_at(expected_layer_1, 0)->strokes().points_num(), 10);
228 Layer &expected_layer_2 = merged_grease_pencil->find_node_by_name(
"Layer2")->as_layer();
229 EXPECT_EQ(merged_grease_pencil->get_drawing_at(expected_layer_2, 0)->strokes().points_num(), 60);
231 Layer &expected_layer_4 = merged_grease_pencil->find_node_by_name(
"Layer4")->as_layer();
232 EXPECT_EQ(merged_grease_pencil->get_drawing_at(expected_layer_4, 3)->strokes().points_num(), 70);
237TEST(grease_pencil_merge, merge_layer_attributes)
244 grease_pencil.add_layer(
"Layer1");
245 grease_pencil.add_layer(
"Layer2");
246 grease_pencil.add_layer(
"Layer3");
249 SpanAttributeWriter<float> test_attribute =
250 grease_pencil.attributes_for_write().lookup_or_add_for_write_only_span<
float>(
251 "test", AttrDomain::Layer);
252 EXPECT_TRUE(test_attribute);
253 test_attribute.span.copy_from(test_float_values);
254 test_attribute.finish();
261 grease_pencil, src_layer_indices_by_dst_layer, *merged_grease_pencil);
263 EXPECT_EQ(merged_grease_pencil->layers().size(), 2);
265 VArray<float> merged_values = *merged_grease_pencil->attributes().lookup<
float>(
"test");
267 for (
const int i : merged_grease_pencil->layers().index_range()) {
268 EXPECT_FLOAT_EQ(merged_values[
i], expected_float_values[
i]);