Initial Grease Pencil 3.0 stage #106848
|
@ -67,6 +67,7 @@ static void grease_pencil_copy_data(Main * /*bmain*/,
|
||||||
grease_pencil_src->drawing_array_size, __func__);
|
grease_pencil_src->drawing_array_size, __func__);
|
||||||
for (int i = 0; i < grease_pencil_src->drawing_array_size; i++) {
|
for (int i = 0; i < grease_pencil_src->drawing_array_size; i++) {
|
||||||
const GreasePencilDrawingBase *src_drawing_base = grease_pencil_src->drawing_array[i];
|
const GreasePencilDrawingBase *src_drawing_base = grease_pencil_src->drawing_array[i];
|
||||||
|
grease_pencil_dst->drawing_array[i]->user_count = src_drawing_base->user_count;
|
||||||
switch (src_drawing_base->type) {
|
switch (src_drawing_base->type) {
|
||||||
case GP_DRAWING: {
|
case GP_DRAWING: {
|
||||||
const GreasePencilDrawing *src_drawing = reinterpret_cast<const GreasePencilDrawing *>(
|
const GreasePencilDrawing *src_drawing = reinterpret_cast<const GreasePencilDrawing *>(
|
||||||
|
@ -1082,6 +1083,7 @@ void GreasePencil::add_empty_drawings(int n)
|
||||||
for (const int i : IndexRange(new_drawings.size())) {
|
for (const int i : IndexRange(new_drawings.size())) {
|
||||||
new_drawings[i] = reinterpret_cast<GreasePencilDrawingBase *>(
|
new_drawings[i] = reinterpret_cast<GreasePencilDrawingBase *>(
|
||||||
MEM_new<GreasePencilDrawing>(__func__));
|
MEM_new<GreasePencilDrawing>(__func__));
|
||||||
|
new_drawings[i]->user_count = 0;
|
||||||
GreasePencilDrawing *drawing = reinterpret_cast<GreasePencilDrawing *>(new_drawings[i]);
|
GreasePencilDrawing *drawing = reinterpret_cast<GreasePencilDrawing *>(new_drawings[i]);
|
||||||
new (&drawing->geometry) bke::CurvesGeometry();
|
new (&drawing->geometry) bke::CurvesGeometry();
|
||||||
drawing->runtime = MEM_new<bke::GreasePencilDrawingRuntime>(__func__);
|
drawing->runtime = MEM_new<bke::GreasePencilDrawingRuntime>(__func__);
|
||||||
|
|
|
@ -248,6 +248,7 @@ void legacy_gpencil_to_grease_pencil(Main &bmain, GreasePencil &grease_pencil, b
|
||||||
new_frame.type = gpf->key_type;
|
new_frame.type = gpf->key_type;
|
||||||
SET_FLAG_FROM_TEST(new_frame.flag, (gpf->flag & GP_FRAME_SELECT), GP_FRAME_SELECTED);
|
SET_FLAG_FROM_TEST(new_frame.flag, (gpf->flag & GP_FRAME_SELECT), GP_FRAME_SELECTED);
|
||||||
new_layer.insert_frame(gpf->framenum, std::move(new_frame));
|
new_layer.insert_frame(gpf->framenum, std::move(new_frame));
|
||||||
|
drawing.base.user_count = 1;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -79,6 +79,11 @@ typedef struct GreasePencilDrawingBase {
|
||||||
* Flag. Used to set e.g. the selection status. See `GreasePencilDrawingBaseFlag`.
|
* Flag. Used to set e.g. the selection status. See `GreasePencilDrawingBaseFlag`.
|
||||||
*/
|
*/
|
||||||
uint32_t flag;
|
uint32_t flag;
|
||||||
|
/**
|
||||||
|
* Number of users of this drawing in the layer tree.
|
||||||
|
*/
|
||||||
|
int32_t user_count;
|
||||||
|
char _pad2[4];
|
||||||
} GreasePencilDrawingBase;
|
} GreasePencilDrawingBase;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue