[Bf-blender-cvs] [9a0e1950eae] master: Cover DNA_gpencil_types.h with C++ structure methods
Sergey Sharybin
noreply at git.blender.org
Tue Mar 29 17:25:40 CEST 2022
Commit: 9a0e1950eae744bde5f00d4799be5448bf14122b
Author: Sergey Sharybin
Date: Tue Mar 29 11:25:13 2022 +0200
Branches: master
https://developer.blender.org/rB9a0e1950eae744bde5f00d4799be5448bf14122b
Cover DNA_gpencil_types.h with C++ structure methods
Ref T96847
Maniphest Tasks: T96847
Differential Revision: https://developer.blender.org/D14487
===================================================================
M source/blender/blenkernel/intern/gpencil_geom.cc
M source/blender/makesdna/DNA_gpencil_types.h
===================================================================
diff --git a/source/blender/blenkernel/intern/gpencil_geom.cc b/source/blender/blenkernel/intern/gpencil_geom.cc
index a0b6ab2d654..6130d71e030 100644
--- a/source/blender/blenkernel/intern/gpencil_geom.cc
+++ b/source/blender/blenkernel/intern/gpencil_geom.cc
@@ -1302,7 +1302,7 @@ void BKE_gpencil_stroke_smooth(bGPDstroke *gps,
}
/* Make a copy of the point data to avoid directionality of the smooth operation. */
- bGPDstroke gps_old = *gps;
+ bGPDstroke gps_old = blender::dna::shallow_copy(*gps);
gps_old.points = (bGPDspoint *)MEM_dupallocN(gps->points);
/* Smooth stroke. */
@@ -1930,7 +1930,7 @@ void BKE_gpencil_dissolve_points(bGPdata *gpd, bGPDframe *gpf, bGPDstroke *gps,
(gps->dvert != nullptr) ? dvert = gps->dvert : nullptr;
for (i = 0, pt = gps->points; i < gps->totpoints; i++, pt++) {
if ((pt->flag & tag) == 0) {
- *npt = *pt;
+ *npt = blender::dna::shallow_copy(*pt);
npt++;
if (gps->dvert != nullptr) {
@@ -3471,13 +3471,13 @@ void BKE_gpencil_stroke_join(bGPDstroke *gps_a,
/* don't visibly link the first and last points? */
if (leave_gaps) {
/* 1st: add one tail point to start invisible area */
- point = gps_a->points[gps_a->totpoints - 1];
+ point = blender::dna::shallow_copy(gps_a->points[gps_a->totpoints - 1]);
deltatime = point.time;
gpencil_stroke_copy_point(gps_a, nullptr, &point, delta, 0.0f, 0.0f, 0.0f);
/* 2nd: add one head point to finish invisible area */
- point = gps_b->points[0];
+ point = blender::dna::shallow_copy(gps_b->points[0]);
gpencil_stroke_copy_point(gps_a, nullptr, &point, delta, 0.0f, 0.0f, deltatime);
}
diff --git a/source/blender/makesdna/DNA_gpencil_types.h b/source/blender/makesdna/DNA_gpencil_types.h
index 8a30a7e8c99..4a1b639122a 100644
--- a/source/blender/makesdna/DNA_gpencil_types.h
+++ b/source/blender/makesdna/DNA_gpencil_types.h
@@ -48,6 +48,8 @@ typedef struct bGPDcontrolpoint {
} bGPDcontrolpoint;
typedef struct bGPDspoint_Runtime {
+ DNA_DEFINE_CXX_METHODS(bGPDspoint_Runtime)
+
/** Original point (used to dereference evaluated data) */
struct bGPDspoint *pt_orig;
/** Original index array position */
@@ -61,6 +63,8 @@ typedef struct bGPDspoint_Runtime {
* This assumes that the bottom-left corner is (0,0)
*/
typedef struct bGPDspoint {
+ DNA_DEFINE_CXX_METHODS(bGPDspoint)
+
/** Co-ordinates of point (usually 2d, but can be 3d as well). */
float x, y, z;
/** Pressure of input device (from 0 to 1) at this point. */
@@ -120,6 +124,8 @@ typedef struct bGPDtriangle {
/* color of palettes */
typedef struct bGPDpalettecolor {
+ DNA_DEFINE_CXX_METHODS(bGPDpalettecolor)
+
struct bGPDpalettecolor *next, *prev;
/** Color name. Must be unique. */
char info[64];
@@ -148,6 +154,8 @@ typedef enum eGPDpalettecolor_Flag {
/* palette of colors */
typedef struct bGPDpalette {
+ DNA_DEFINE_CXX_METHODS(bGPDpalette)
+
struct bGPDpalette *next, *prev;
/** Pointer to individual colors. */
@@ -203,6 +211,8 @@ typedef enum eGPDcurve_point_Flag {
/* Curve for Bezier Editing. */
typedef struct bGPDcurve {
+ DNA_DEFINE_CXX_METHODS(bGPDcurve)
+
/** Array of BezTriple. */
bGPDcurve_point *curve_points;
/** Total number of curve points. */
@@ -225,6 +235,8 @@ typedef enum bGPDcurve_Flag {
/* Runtime temp data for bGPDstroke */
typedef struct bGPDstroke_Runtime {
+ DNA_DEFINE_CXX_METHODS(bGPDstroke_Runtime)
+
/** temporary layer name only used during copy/paste to put the stroke in the original layer */
char tmp_layerinfo[128];
@@ -248,6 +260,8 @@ typedef struct bGPDstroke_Runtime {
* drawn by the user in one 'mouse-down'->'mouse-up' operation
*/
typedef struct bGPDstroke {
+ DNA_DEFINE_CXX_METHODS(bGPDstroke)
+
struct bGPDstroke *next, *prev;
/** Array of data-points for stroke. */
@@ -369,6 +383,8 @@ typedef enum eGPDstroke_Arrowstyle {
/* Runtime temp data for bGPDframe */
typedef struct bGPDframe_Runtime {
+ DNA_DEFINE_CXX_METHODS(bGPDframe_Runtime)
+
/** Index of this frame in the listbase of frames. */
int frameid;
/** Onion offset from active frame. 0 if not onion. INT_MAX to bypass frame. */
@@ -382,6 +398,8 @@ typedef struct bGPDframe_Runtime {
* -> Acts as storage for the 'image' formed by strokes
*/
typedef struct bGPDframe {
+ DNA_DEFINE_CXX_METHODS(bGPDframe)
+
struct bGPDframe *next, *prev;
/** List of the simplified 'strokes' that make up the frame's data. */
@@ -416,6 +434,8 @@ typedef enum eGPDframe_Flag {
/* List of masking layers. */
typedef struct bGPDlayer_Mask {
+ DNA_DEFINE_CXX_METHODS(bGPDlayer_Mask)
+
struct bGPDlayer_Mask *next, *prev;
char name[128];
short flag;
@@ -434,6 +454,8 @@ typedef enum ebGPDlayer_Mask_Flag {
/* Runtime temp data for bGPDlayer */
typedef struct bGPDlayer_Runtime {
+ DNA_DEFINE_CXX_METHODS(bGPDlayer_Runtime)
+
/** Id for dynamic icon used to show annotation color preview for layer. */
int icon_id;
char _pad[4];
@@ -443,6 +465,8 @@ typedef struct bGPDlayer_Runtime {
/* Grease-Pencil Annotations - 'Layer' */
typedef struct bGPDlayer {
+ DNA_DEFINE_CXX_METHODS(bGPDlayer)
+
struct bGPDlayer *next, *prev;
/** List of annotations to display for frames (bGPDframe list). */
@@ -580,6 +604,8 @@ typedef enum eGPLayerBlendModes {
/* Runtime temp data for bGPdata */
typedef struct bGPdata_Runtime {
+ DNA_DEFINE_CXX_METHODS(bGPdata_Runtime)
+
/** Stroke buffer. */
void *sbuffer;
/** Temp batches cleared after drawing. */
@@ -642,6 +668,8 @@ typedef struct bGPgrid {
/* Grease-Pencil Annotations - 'DataBlock' */
typedef struct bGPdata {
+ DNA_DEFINE_CXX_METHODS(bGPdata)
+
/** Grease Pencil data is a data-block. */
ID id;
/** Animation data - for animating draw settings. */
More information about the Bf-blender-cvs
mailing list