[Bf-blender-cvs] [274eda29933] gpencil-new-data-proposal: conversion functions adds strokes and points
Amelie Fondevilla
noreply at git.blender.org
Mon Dec 12 18:19:30 CET 2022
Commit: 274eda2993316f4a5b33dedf8a4e1be7906151ab
Author: Amelie Fondevilla
Date: Mon Dec 12 16:48:54 2022 +0100
Branches: gpencil-new-data-proposal
https://developer.blender.org/rB274eda2993316f4a5b33dedf8a4e1be7906151ab
conversion functions adds strokes and points
===================================================================
M source/blender/blenkernel/intern/gpencil_new_proposal_conversion.cc
===================================================================
diff --git a/source/blender/blenkernel/intern/gpencil_new_proposal_conversion.cc b/source/blender/blenkernel/intern/gpencil_new_proposal_conversion.cc
index 267d6cf067a..9541e88106b 100644
--- a/source/blender/blenkernel/intern/gpencil_new_proposal_conversion.cc
+++ b/source/blender/blenkernel/intern/gpencil_new_proposal_conversion.cc
@@ -21,6 +21,10 @@ GPData convert_old_to_new_gpencil_data(bGPdata *old_gpd)
LISTBASE_FOREACH (bGPDframe *, old_gpf, &old_gpl->frames) {
int new_gpf_index{new_gpd.add_frame_on_layer(layer_index, old_gpf->framenum)};
GPFrame &new_gpf{new_gpd.frames_for_write(new_gpf_index)};
+
+ LISTBASE_FOREACH (const bGPDstroke *, old_gps, &old_gpf->strokes) {
+ new_gpf.add_new_stroke(old_gps->totpoints);
+ }
}
++layer_index;
@@ -36,10 +40,10 @@ bGPdata *convert_new_to_old_gpencil_data(const GPData &new_gpd)
BLI_listbase_clear(&old_gpd->layers);
old_gpd->totlayer = old_gpd->totframe = old_gpd->totstroke = 0;
- int frm_offset{0};
- for (int lay_i = 0; lay_i < new_gpd.layers_size; lay_i++) {
+ int frame_index{0};
+ for (int layer_index = 0; layer_index < new_gpd.layers_size; layer_index++) {
bGPDlayer *old_gpl = reinterpret_cast<bGPDlayer *>(MEM_mallocN(sizeof(bGPDlayer), __func__));
- const ::GPLayer *new_gpl{new_gpd.layers_array + lay_i};
+ const ::GPLayer *new_gpl{new_gpd.layers_array + layer_index};
sprintf(old_gpl->info, "%s", new_gpl->name);
@@ -49,17 +53,32 @@ bGPdata *convert_new_to_old_gpencil_data(const GPData &new_gpd)
/* Add frames of correct layer index.
Assumes that frames in new data structure are sorted by layer index.
*/
- while ((frm_offset < new_gpd.frames_size) &&
- (new_gpd.frames_array[frm_offset].layer_index == lay_i)) {
- bGPDframe *gpf = reinterpret_cast<bGPDframe *>(MEM_mallocN(sizeof(bGPDframe), __func__));
- const ::GPFrame *new_gpf{new_gpd.frames_array + frm_offset};
- gpf->framenum = new_gpf->start_time;
-
- BLI_listbase_clear(&gpf->strokes);
+ while ((frame_index < new_gpd.frames_size) &&
+ (new_gpd.frames_array[frame_index].layer_index == layer_index)) {
+ bGPDframe *old_gpf = reinterpret_cast<bGPDframe *>(MEM_mallocN(sizeof(bGPDframe), __func__));
+ const GPFrame &new_gpf{new_gpd.frames(frame_index)};
+ old_gpf->framenum = new_gpf.start_time;
+
+ BLI_listbase_clear(&old_gpf->strokes);
+ const CurvesGeometry &new_gps{new_gpf.strokes_as_curves()};
+ for (int stroke_index = 0; stroke_index < new_gpf.strokes_num(); stroke_index++) {
+ bGPDstroke *old_gps = reinterpret_cast<bGPDstroke *>(
+ MEM_mallocN(sizeof(bGPDstroke), __func__));
+
+ int point_num{new_gps.points_num_for_curve(stroke_index)};
+ old_gps->points = reinterpret_cast<bGPDspoint *>(
+ MEM_calloc_arrayN(point_num, sizeof(bGPDspoint), __func__));
+ old_gps->totpoints = point_num;
+ old_gps->triangles = nullptr;
+ old_gps->editcurve = nullptr;
+ old_gps->dvert = nullptr;
+
+ BLI_addtail(&old_gpf->strokes, old_gps);
+ }
++(old_gpd->totframe);
- BLI_addtail(&old_gpl->frames, gpf);
- ++frm_offset;
+ BLI_addtail(&old_gpl->frames, old_gpf);
+ ++frame_index;
}
++(old_gpd->totlayer);
More information about the Bf-blender-cvs
mailing list