5#include "testing/testing.h"
43 EXPECT_EQ(grease_pencil.drawings().size(), 0);
44 EXPECT_EQ(grease_pencil.root_group().num_nodes_total(), 0);
54 grease_pencil.add_empty_drawings(3);
55 EXPECT_EQ(grease_pencil.drawings().size(), 3);
62 grease_pencil.add_empty_drawings(3);
65 drawing->wrap().strokes_for_write().resize(0, 10);
67 Layer &layer1 = grease_pencil.add_layer(
"Layer1");
68 Layer &layer2 = grease_pencil.add_layer(
"Layer2");
75 drawing->wrap().add_user();
77 grease_pencil.remove_frames(layer1, {10});
78 grease_pencil.remove_frames(layer2, {0});
79 EXPECT_EQ(grease_pencil.drawings().size(), 2);
81 static int expected_frames_size[] = {2, 0};
82 static int expected_frames_pairs_layer0[][2] = {{0, 0}, {20, 1}};
85 EXPECT_EQ(layers[0]->frames().
size(), expected_frames_size[0]);
86 EXPECT_EQ(layers[1]->frames().
size(), expected_frames_size[1]);
87 EXPECT_EQ(layers[0]->frames().lookup(expected_frames_pairs_layer0[0][0]).drawing_index,
88 expected_frames_pairs_layer0[0][1]);
89 EXPECT_EQ(layers[0]->frames().lookup(expected_frames_pairs_layer0[1][0]).drawing_index,
90 expected_frames_pairs_layer0[1][1]);
99 grease_pencil->add_empty_drawings(2);
100 reinterpret_cast<const GreasePencilDrawing *
>(grease_pencil->drawing(0))->wrap().remove_user();
101 reinterpret_cast<const GreasePencilDrawing *
>(grease_pencil->drawing(1))->wrap().remove_user();
103 Layer &layer_a = grease_pencil->add_layer(
"LayerA");
106 grease_pencil->update_drawing_users_for_layer(layer_a);
115 grease_pencil->remove_drawings_with_no_users();
116 EXPECT_EQ(grease_pencil->drawings().size(), 1);
117 EXPECT_EQ(grease_pencil->drawings()[0], used_drawing);
128 this->
root_group_ptr = MEM_new<greasepencil::LayerGroup>(__func__);
136 this->
runtime = MEM_new<GreasePencilRuntime>(__func__);
142 MEM_delete(&this->root_group());
151 EXPECT_EQ(grease_pencil.root_group().num_nodes_total(), 0);
158 LayerGroup &group = grease_pencil.add_layer_group(grease_pencil.root_group(),
"Group1");
159 grease_pencil.add_layer(group,
"Layer1");
160 grease_pencil.add_layer(group,
"Layer2");
161 EXPECT_EQ(grease_pencil.root_group().num_nodes_total(), 3);
166 const bool is_layer[7] = {
false,
true,
true,
false,
true,
true,
true};
201 const Layer &layer = *layers[
i];
203 EXPECT_STREQ(layer.name().data(),
name);
232 EXPECT_TRUE(node !=
nullptr);
234 EXPECT_TRUE(node->
as_layer().name() ==
"Layer1");
238 EXPECT_TRUE(node !=
nullptr);
240 EXPECT_TRUE(node->
as_group().name() ==
"Group2");
244 EXPECT_TRUE(node !=
nullptr);
246 EXPECT_TRUE(node->
as_group().name() ==
"Group1");
250 EXPECT_TRUE(node !=
nullptr);
252 EXPECT_TRUE(node->
as_layer().name() ==
"Layer5");
256 EXPECT_TRUE(node ==
nullptr);
271 EXPECT_TRUE(layer1.is_child_of(ex.
grease_pencil.root_group()));
272 EXPECT_TRUE(layer1.is_child_of(group1));
273 EXPECT_TRUE(layer3.is_child_of(group1));
274 EXPECT_FALSE(layer5.is_child_of(group1));
276 EXPECT_TRUE(layer3.is_child_of(group2));
277 EXPECT_FALSE(layer1.is_child_of(group2));
279 EXPECT_TRUE(layer5.is_child_of(ex.
grease_pencil.root_group()));
286 LayerGroup &group1 = grease_pencil.add_layer_group(grease_pencil.root_group(),
"Group1");
287 LayerGroup &group2 = grease_pencil.add_layer_group(group1,
"Group2");
288 LayerGroup &group3 = grease_pencil.add_layer_group(group2,
"Group3");
289 grease_pencil.add_layer(group3,
"Layer");
290 grease_pencil.add_layer(
"Layer2");
293 grease_pencil.remove_group(group1,
false);
294 EXPECT_EQ(grease_pencil.nodes().size(), 1);
295 EXPECT_EQ(grease_pencil.layers().size(), 1);
296 EXPECT_TRUE(grease_pencil.find_node_by_name(
"Layer2") !=
nullptr);
314 for (
int i = 0;
i < 5;
i++) {
315 layer.frames_for_write().add(this->sorted_keys[
i], this->sorted_values[
i]);
375 EXPECT_EQ(sorted_keys[6] - sorted_keys[5], 10);
483 grease_pencil->add_empty_drawings(3);
485 Layer &layer_a = grease_pencil->add_layer(
"LayerA");
486 Layer &layer_b = grease_pencil->add_layer(
"LayerB");
505 grease_pencil->remove_layer(layer_a);
527 grease_pencil->add_empty_drawings(5);
529 Layer &layer_a = grease_pencil->add_layer(
"LayerA");
533 Layer &layer_b = grease_pencil->add_layer(
"LayerB");
556 grease_pencil->remove_layer(layer_a);
Low-level operations for curves.
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
struct AttributeStorage attribute_storage
GreasePencilIDTestContext()
~GreasePencilIDTestContext()
const FramesMapKeyT sorted_keys[5]
GreasePencilFrame sorted_values[5]
GreasePencilLayerFramesExample()
GreasePencilHelper grease_pencil
GreasePencilLayerTreeExample()