5#include "testing/testing.h"
39TEST(greasepencil, create_grease_pencil_id)
44 EXPECT_EQ(grease_pencil.drawings().size(), 0);
45 EXPECT_EQ(grease_pencil.root_group().num_nodes_total(), 0);
51TEST(greasepencil, add_empty_drawings)
55 grease_pencil.add_empty_drawings(3);
56 EXPECT_EQ(grease_pencil.drawings().size(), 3);
59TEST(greasepencil, remove_drawings)
63 grease_pencil.add_empty_drawings(3);
66 drawing->wrap().strokes_for_write().resize(0, 10);
68 Layer &layer1 = grease_pencil.add_layer(
"Layer1");
69 Layer &layer2 = grease_pencil.add_layer(
"Layer2");
76 drawing->wrap().add_user();
78 grease_pencil.remove_frames(layer1, {10});
79 grease_pencil.remove_frames(layer2, {0});
80 EXPECT_EQ(grease_pencil.drawings().size(), 2);
82 static int expected_frames_size[] = {2, 0};
83 static int expected_frames_pairs_layer0[][2] = {{0, 0}, {20, 1}};
86 EXPECT_EQ(layers[0]->frames().
size(), expected_frames_size[0]);
87 EXPECT_EQ(layers[1]->frames().
size(), expected_frames_size[1]);
88 EXPECT_EQ(layers[0]->frames().lookup(expected_frames_pairs_layer0[0][0]).drawing_index,
89 expected_frames_pairs_layer0[0][1]);
90 EXPECT_EQ(layers[0]->frames().lookup(expected_frames_pairs_layer0[1][0]).drawing_index,
91 expected_frames_pairs_layer0[1][1]);
94TEST(greasepencil, remove_drawings_last_unused)
100 grease_pencil->add_empty_drawings(2);
104 Layer &layer_a = grease_pencil->add_layer(
"LayerA");
107 grease_pencil->update_drawing_users_for_layer(layer_a);
116 grease_pencil->remove_drawings_with_no_users();
117 EXPECT_EQ(grease_pencil->drawings().size(), 1);
118 EXPECT_EQ(grease_pencil->drawings()[0], used_drawing);
129 this->
root_group_ptr = MEM_new<greasepencil::LayerGroup>(__func__);
137 this->
runtime = MEM_new<GreasePencilRuntime>(__func__);
143 MEM_delete(&this->root_group());
149TEST(greasepencil, layer_tree_empty)
152 EXPECT_EQ(grease_pencil.root_group().num_nodes_total(), 0);
155TEST(greasepencil, layer_tree_build_simple)
159 LayerGroup &group = grease_pencil.add_layer_group(grease_pencil.root_group(),
"Group1");
160 grease_pencil.add_layer(group,
"Layer1");
161 grease_pencil.add_layer(group,
"Layer2");
162 EXPECT_EQ(grease_pencil.root_group().num_nodes_total(), 3);
167 const bool is_layer[7] = {
false,
true,
true,
false,
true,
true,
true};
184TEST(greasepencil, layer_tree_pre_order_iteration)
190 const TreeNode &child = *children[i];
195TEST(greasepencil, layer_tree_pre_order_iteration2)
202 const Layer &layer = *layers[i];
204 EXPECT_STREQ(layer.name().data(),
name);
208TEST(greasepencil, layer_tree_total_size)
214TEST(greasepencil, layer_tree_node_types)
219 const TreeNode &child = *children[i];
225TEST(greasepencil, layer_tree_remove_active_node)
233 EXPECT_TRUE(
node !=
nullptr);
234 EXPECT_TRUE(
node->is_layer());
235 EXPECT_TRUE(
node->as_layer().name() ==
"Layer1");
239 EXPECT_TRUE(
node !=
nullptr);
240 EXPECT_TRUE(
node->is_group());
241 EXPECT_TRUE(
node->as_group().name() ==
"Group2");
245 EXPECT_TRUE(
node !=
nullptr);
246 EXPECT_TRUE(
node->is_group());
247 EXPECT_TRUE(
node->as_group().name() ==
"Group1");
251 EXPECT_TRUE(
node !=
nullptr);
252 EXPECT_TRUE(
node->is_layer());
253 EXPECT_TRUE(
node->as_layer().name() ==
"Layer5");
257 EXPECT_TRUE(
node ==
nullptr);
260TEST(greasepencil, layer_tree_is_child_of)
272 EXPECT_TRUE(layer1.is_child_of(ex.
grease_pencil.root_group()));
273 EXPECT_TRUE(layer1.is_child_of(group1));
274 EXPECT_TRUE(layer3.is_child_of(group1));
275 EXPECT_FALSE(layer5.is_child_of(group1));
277 EXPECT_TRUE(layer3.is_child_of(group2));
278 EXPECT_FALSE(layer1.is_child_of(group2));
280 EXPECT_TRUE(layer5.is_child_of(ex.
grease_pencil.root_group()));
283TEST(greasepencil, layer_tree_remove_group)
287 LayerGroup &group1 = grease_pencil.add_layer_group(grease_pencil.root_group(),
"Group1");
288 LayerGroup &group2 = grease_pencil.add_layer_group(group1,
"Group2");
289 LayerGroup &group3 = grease_pencil.add_layer_group(group2,
"Group3");
290 grease_pencil.add_layer(group3,
"Layer");
291 grease_pencil.add_layer(
"Layer2");
294 grease_pencil.remove_group(group1,
false);
295 EXPECT_EQ(grease_pencil.nodes().size(), 1);
296 EXPECT_EQ(grease_pencil.layers().size(), 1);
297 EXPECT_TRUE(grease_pencil.find_node_by_name(
"Layer2") !=
nullptr);
315 for (
int i = 0; i < 5; i++) {
323TEST(greasepencil, frame_is_end)
329TEST(greasepencil, frame_is_implicit_hold)
335TEST(greasepencil, drawing_index_at)
355TEST(greasepencil, add_frame_duration_fail)
361TEST(greasepencil, add_frame_duration_override_start_null_frame)
370TEST(greasepencil, add_frame_duration_check_duration)
376 EXPECT_EQ(sorted_keys[6] - sorted_keys[5], 10);
379TEST(greasepencil, get_frame_duration_at)
401TEST(greasepencil, add_frame_duration_override_null_frames)
420TEST(greasepencil, remove_frame_single)
428TEST(greasepencil, remove_frame_first)
438TEST(greasepencil, remove_frame_last)
448TEST(greasepencil, remove_frame_implicit_hold)
459TEST(greasepencil, remove_frame_fixed_duration_end)
469TEST(greasepencil, remove_frame_fixed_duration_overwrite_end)
480TEST(greasepencil, remove_drawings_no_change)
484 grease_pencil->add_empty_drawings(3);
486 Layer &layer_a = grease_pencil->add_layer(
"LayerA");
487 Layer &layer_b = grease_pencil->add_layer(
"LayerB");
506 grease_pencil->remove_layer(layer_a);
521TEST(greasepencil, remove_drawings_with_no_users)
528 grease_pencil->add_empty_drawings(5);
530 Layer &layer_a = grease_pencil->add_layer(
"LayerA");
534 Layer &layer_b = grease_pencil->add_layer(
"LayerB");
557 grease_pencil->remove_layer(layer_a);
Low-level operations for curves.
CustomData interface, see also DNA_customdata_types.h.
void CustomData_reset(CustomData *data)
void CustomData_free(CustomData *data)
Low-level operations for grease pencil.
void BKE_id_free(Main *bmain, void *idv)
void * BKE_id_new(Main *bmain, short type, const char *name)
void * BKE_id_new_nomain(short type, const char *name)
void BKE_main_free(Main *bmain)
EXPECT_EQ(BLI_expr_pylike_eval(expr, nullptr, 0, &result), EXPR_PYLIKE_INVALID)
#define SNPRINTF(dst, format,...)
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
bool add(const Key &key, const Value &value)
const Value & lookup(const Key &key) const
constexpr int64_t size() const
constexpr IndexRange index_range() const
constexpr const char * data() const
bool remove_frame(FramesMapKeyT key)
const Map< FramesMapKeyT, GreasePencilFrame > & frames() const
GreasePencilFrame * add_frame(FramesMapKeyT key, int duration=0)
const GreasePencilFrame * frame_at(const int frame_number) const
int drawing_index_at(const int frame_number) const
int get_frame_duration_at(const int frame_number) const
Span< FramesMapKeyT > sorted_keys() const
void prepare_for_dna_write()
Map< FramesMapKeyT, GreasePencilFrame > & frames_for_write()
TEST(greasepencil, create_grease_pencil_id)
float wrap(float value, float max, float min)
GreasePencilFrame * values
GreasePencilLayerFramesMapStorage frames_storage
GreasePencilLayerTreeNode * active_node
GreasePencilLayerTreeGroup * root_group_ptr
GreasePencilRuntimeHandle * runtime
GreasePencilDrawingBase ** drawing_array
GreasePencilIDTestContext()
~GreasePencilIDTestContext()
const FramesMapKeyT sorted_keys[5]
GreasePencilFrame sorted_values[5]
GreasePencilLayerFramesExample()
GreasePencilHelper grease_pencil
GreasePencilLayerTreeExample()