5#include "testing/testing.h"
44 EXPECT_EQ(grease_pencil.drawings().size(), 0);
45 EXPECT_EQ(grease_pencil.root_group().num_nodes_total(), 0);
55 grease_pencil.add_empty_drawings(3);
56 EXPECT_EQ(grease_pencil.drawings().size(), 3);
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]);
100 grease_pencil->add_empty_drawings(2);
101 reinterpret_cast<const GreasePencilDrawing *
>(grease_pencil->drawing(0))->wrap().remove_user();
102 reinterpret_cast<const GreasePencilDrawing *
>(grease_pencil->drawing(1))->wrap().remove_user();
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());
152 EXPECT_EQ(grease_pencil.root_group().num_nodes_total(), 0);
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};
202 const Layer &layer = *layers[
i];
204 EXPECT_STREQ(layer.name().data(), name);
233 EXPECT_TRUE(node !=
nullptr);
235 EXPECT_TRUE(node->
as_layer().name() ==
"Layer1");
239 EXPECT_TRUE(node !=
nullptr);
241 EXPECT_TRUE(node->
as_group().name() ==
"Group2");
245 EXPECT_TRUE(node !=
nullptr);
247 EXPECT_TRUE(node->
as_group().name() ==
"Group1");
251 EXPECT_TRUE(node !=
nullptr);
253 EXPECT_TRUE(node->
as_layer().name() ==
"Layer5");
257 EXPECT_TRUE(node ==
nullptr);
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()));
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++) {
316 layer.frames_for_write().add(this->sorted_keys[
i], this->sorted_values[
i]);
376 EXPECT_EQ(sorted_keys[6] - sorted_keys[5], 10);
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);
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)
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()
const LayerGroup & as_group() const
const Layer & as_layer() const
TEST(greasepencil, create_grease_pencil_id)
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()