[Bf-blender-cvs] [0b17d171d77] master: Cleanup: Move three modifier related files to C++

Hans Goudey noreply at git.blender.org
Sat Jan 21 19:26:05 CET 2023


Commit: 0b17d171d77d5b3bcf5fc1a95fc57f89385dbf20
Author: Hans Goudey
Date:   Sat Jan 21 12:13:34 2023 -0600
Branches: master
https://developer.blender.org/rB0b17d171d77d5b3bcf5fc1a95fc57f89385dbf20

Cleanup: Move three modifier related files to C++

For continued refactoring of the Mesh data structure. See T103343.

===================================================================

M	source/blender/blenkernel/CMakeLists.txt
R090	source/blender/blenkernel/intern/cdderivedmesh.c	source/blender/blenkernel/intern/cdderivedmesh.cc
R088	source/blender/blenkernel/intern/dynamicpaint.c	source/blender/blenkernel/intern/dynamicpaint.cc
R095	source/blender/blenkernel/intern/fluid.c	source/blender/blenkernel/intern/fluid.cc
M	source/blender/editors/armature/CMakeLists.txt
R091	source/blender/editors/armature/meshlaplacian.c	source/blender/editors/armature/meshlaplacian.cc
M	source/blender/editors/armature/meshlaplacian.h
M	source/blender/editors/include/ED_armature.h
M	source/blender/editors/physics/physics_intern.h

===================================================================

diff --git a/source/blender/blenkernel/CMakeLists.txt b/source/blender/blenkernel/CMakeLists.txt
index bfef13649e3..8a714d8d911 100644
--- a/source/blender/blenkernel/CMakeLists.txt
+++ b/source/blender/blenkernel/CMakeLists.txt
@@ -89,7 +89,7 @@ set(SRC
   intern/cachefile.c
   intern/callbacks.c
   intern/camera.c
-  intern/cdderivedmesh.c
+  intern/cdderivedmesh.cc
   intern/cloth.cc
   intern/collection.c
   intern/collision.c
@@ -121,7 +121,7 @@ set(SRC
   intern/data_transfer.cc
   intern/deform.c
   intern/displist.cc
-  intern/dynamicpaint.c
+  intern/dynamicpaint.cc
   intern/editlattice.c
   intern/editmesh.cc
   intern/editmesh_bvh.c
@@ -131,7 +131,7 @@ set(SRC
   intern/fcurve.c
   intern/fcurve_cache.c
   intern/fcurve_driver.c
-  intern/fluid.c
+  intern/fluid.cc
   intern/fmodifier.c
   intern/freestyle.c
   intern/geometry_component_curves.cc
diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.cc
similarity index 90%
rename from source/blender/blenkernel/intern/cdderivedmesh.c
rename to source/blender/blenkernel/intern/cdderivedmesh.cc
index a5d179fb2cb..9cf5f7ecedf 100644
--- a/source/blender/blenkernel/intern/cdderivedmesh.c
+++ b/source/blender/blenkernel/intern/cdderivedmesh.cc
@@ -7,6 +7,10 @@
  * BKE_cdderivedmesh.h contains the function prototypes for this file.
  */
 
+#include <climits>
+#include <cmath>
+#include <cstring>
+
 #include "atomic_ops.h"
 
 #include "BLI_math.h"
@@ -29,11 +33,7 @@
 
 #include "MEM_guardedalloc.h"
 
-#include <limits.h>
-#include <math.h>
-#include <string.h>
-
-typedef struct {
+struct CDDerivedMesh {
   DerivedMesh dm;
 
   /* these point to data in the DerivedMesh custom data layers,
@@ -52,7 +52,7 @@ typedef struct {
   /* Mesh connectivity */
   MeshElemMap *pmap;
   int *pmap_mem;
-} CDDerivedMesh;
+};
 
 /**************** DerivedMesh interface functions ****************/
 static int cdDM_getNumVerts(DerivedMesh *dm)
@@ -157,11 +157,8 @@ static void cdDM_release(DerivedMesh *dm)
 /**************** CDDM interface functions ****************/
 static CDDerivedMesh *cdDM_create(const char *desc)
 {
-  CDDerivedMesh *cddm;
-  DerivedMesh *dm;
-
-  cddm = MEM_callocN(sizeof(*cddm), desc);
-  dm = &cddm->dm;
+  CDDerivedMesh *cddm = MEM_cnew<CDDerivedMesh>(desc);
+  DerivedMesh *dm = &cddm->dm;
 
   dm->getNumVerts = cdDM_getNumVerts;
   dm->getNumEdges = cdDM_getNumEdges;
@@ -221,14 +218,17 @@ static DerivedMesh *cdDM_from_mesh_ex(Mesh *mesh,
   CustomData_merge(&mesh->ldata, &dm->loopData, cddata_masks.lmask, alloctype, mesh->totloop);
   CustomData_merge(&mesh->pdata, &dm->polyData, cddata_masks.pmask, alloctype, mesh->totpoly);
 
-  cddm->vert_positions = CustomData_get_layer_named_for_write(
-      &dm->vertData, CD_PROP_FLOAT3, "position", mesh->totvert);
+  cddm->vert_positions = static_cast<float(*)[3]>(CustomData_get_layer_named_for_write(
+      &dm->vertData, CD_PROP_FLOAT3, "position", mesh->totvert));
   /* Though this may be an unnecessary calculation, simply retrieving the layer may return nothing
    * or dirty normals. */
   cddm->vert_normals = BKE_mesh_vertex_normals_ensure(mesh);
-  cddm->medge = CustomData_get_layer_for_write(&dm->edgeData, CD_MEDGE, mesh->totedge);
-  cddm->mloop = CustomData_get_layer_for_write(&dm->loopData, CD_MLOOP, mesh->totloop);
-  cddm->mpoly = CustomData_get_layer_for_write(&dm->polyData, CD_MPOLY, mesh->totpoly);
+  cddm->medge = static_cast<MEdge *>(
+      CustomData_get_layer_for_write(&dm->edgeData, CD_MEDGE, mesh->totedge));
+  cddm->mloop = static_cast<MLoop *>(
+      CustomData_get_layer_for_write(&dm->loopData, CD_MLOOP, mesh->totloop));
+  cddm->mpoly = static_cast<MPoly *>(
+      CustomData_get_layer_for_write(&dm->polyData, CD_MPOLY, mesh->totpoly));
 #if 0
   cddm->mface = CustomData_get_layer(&dm->faceData, CD_MFACE);
 #else
diff --git a/source/blender/blenkernel/intern/dynamicpaint.c b/source/blender/blenkernel/intern/dynamicpaint.cc
similarity index 88%
rename from source/blender/blenkernel/intern/dynamicpaint.c
rename to source/blender/blenkernel/intern/dynamicpaint.cc
index eff08db9f46..4c6cad1f5e6 100644
--- a/source/blender/blenkernel/intern/dynamicpaint.c
+++ b/source/blender/blenkernel/intern/dynamicpaint.cc
@@ -127,16 +127,16 @@ BLI_INLINE void value_dissolve(float *r_value,
 
 /***************************** Internal Structs ***************************/
 
-typedef struct Bounds2D {
+struct Bounds2D {
   float min[2], max[2];
-} Bounds2D;
+};
 
-typedef struct Bounds3D {
+struct Bounds3D {
   float min[3], max[3];
   bool valid;
-} Bounds3D;
+};
 
-typedef struct VolumeGrid {
+struct VolumeGrid {
   int dim[3];
   /** whole grid bounds */
   Bounds3D grid_bounds;
@@ -151,29 +151,29 @@ typedef struct VolumeGrid {
   int *t_index;
 
   int *temp_t_index;
-} VolumeGrid;
+};
 
-typedef struct Vec3f {
+struct Vec3f {
   float v[3];
-} Vec3f;
+};
 
-typedef struct BakeAdjPoint {
+struct BakeAdjPoint {
   /** vector pointing towards this neighbor */
   float dir[3];
   /** distance to */
   float dist;
-} BakeAdjPoint;
+};
 
 /** Surface data used while processing a frame */
-typedef struct PaintBakeNormal {
+struct PaintBakeNormal {
   /** current pixel world-space inverted normal */
   float invNorm[3];
   /** normal directional scale for displace mapping */
   float normal_scale;
-} PaintBakeNormal;
+};
 
 /** Temp surface data used to process a frame */
-typedef struct PaintBakeData {
+struct PaintBakeData {
   /* point space data */
   PaintBakeNormal *bNormal;
   /** index to start reading point sample realCoord */
@@ -206,10 +206,10 @@ typedef struct PaintBakeData {
   float prev_obmat[4][4];
   /** flag to check if surface was cleared/reset -> have to redo velocity etc. */
   int clear;
-} PaintBakeData;
+};
 
 /** UV Image sequence format point */
-typedef struct PaintUVPoint {
+struct PaintUVPoint {
   /* Pixel / mesh data */
   /** tri index on domain derived mesh */
   uint tri_index;
@@ -219,18 +219,18 @@ typedef struct PaintUVPoint {
 
   /** If this pixel isn't uv mapped to any face, but its neighboring pixel is. */
   uint neighbor_pixel;
-} PaintUVPoint;
+};
 
-typedef struct ImgSeqFormatData {
+struct ImgSeqFormatData {
   PaintUVPoint *uv_p;
   Vec3f *barycentricWeights; /* b-weights for all pixel samples */
-} ImgSeqFormatData;
+};
 
 /* adjacency data flags */
 #define ADJ_ON_MESH_EDGE (1 << 0)
 #define ADJ_BORDER_PIXEL (1 << 1)
 
-typedef struct PaintAdjData {
+struct PaintAdjData {
   /** Array of neighboring point indexes, for single sample use (n_index + neigh_num). */
   int *n_target;
   /** Index to start reading n_target for each point. */
@@ -245,27 +245,27 @@ typedef struct PaintAdjData {
   int *border;
   /** Size of border. */
   int total_border;
-} PaintAdjData;
+};
 
 /************************* Runtime evaluation store ***************************/
 
 void dynamicPaint_Modifier_free_runtime(DynamicPaintRuntime *runtime_data)
 {
-  if (runtime_data == NULL) {
+  if (runtime_data == nullptr) {
     return;
   }
   if (runtime_data->canvas_mesh) {
-    BKE_id_free(NULL, runtime_data->canvas_mesh);
+    BKE_id_free(nullptr, runtime_data->canvas_mesh);
   }
   if (runtime_data->brush_mesh) {
-    BKE_id_free(NULL, runtime_data->brush_mesh);
+    BKE_id_free(nullptr, runtime_data->brush_mesh);
   }
   MEM_freeN(runtime_data);
 }
 
 static DynamicPaintRuntime *dynamicPaint_Modifier_runtime_ensure(DynamicPaintModifierData *pmd)
 {
-  if (pmd->modifier.runtime == NULL) {
+  if (pmd->modifier.runtime == nullptr) {
     pmd->modifier.runtime = MEM_callocN(sizeof(DynamicPaintRuntime), "dynamic paint runtime");
   }
   return (DynamicPaintRuntime *)pmd->modifier.runtime;
@@ -273,8 +273,8 @@ static DynamicPaintRuntime *dynamicPaint_Modifier_runtime_ensure(DynamicPaintMod
 
 static Mesh *dynamicPaint_canvas_mesh_get(DynamicPaintCanvasSettings *canvas)
 {
-  if (canvas->pmd->modifier.runtime == NULL) {
-    return NULL;
+  if (canvas->pmd->modifier.runtime == nullptr) {
+    return nullptr;
   }
   DynamicPaintRuntime *runtime_data = (DynamicPaintRuntime *)canvas->pmd->modifier.runtime;
   return runtime_data->canvas_mesh;
@@ -282,8 +282,8 @@ static Mesh *dynamicPaint_canvas_mesh_get(DynamicPaintCanvasSettings *canvas)
 
 static Mesh *dynamicPaint_brush_mesh_get(DynamicPaintBrushSettings *brush)
 {
-  if (brush->pmd->modifier.runtime == NULL) {
-    return NULL;
+  if (brush->pmd->modifier.runtime == nullptr) {
+    return nullptr;
   }
   DynamicPaintRuntime *runtime_data = (DynamicPaintRuntime *)brush->pmd->modifier.runtime;
   return runtime_data->brush_mesh;
@@ -316,10 +316,10 @@ static int dynamicPaint_surfaceNumOfPoints(DynamicPaintSurface *surface)
 
 DynamicPaintSurface *get_activeSurface(DynamicPaintCanvasSettings *canvas)
 {
-  return BLI_findlink(&canvas->surfaces, canvas->active_sur);
+  return static_cast<DynamicPaintSurface *>(BLI_findlink(&canvas->surfaces, canvas->active_sur));
 }
 
-bool dynamicPaint_outputLayerExists(struct DynamicPaintSurface *surface, Object *ob, int output)
+bool dynamicPaint_outputLayerExists(DynamicPaintSurface *surface, Object *ob, int output)
 {
   const char *name;
 
@@ -335,7 +335,7 @@ bool dynamicPaint_outputLayerExists(struct DynamicPaintSurface *surface, Object
 
   if (surface->format == MOD_DPAINT_SURFACE_F_VERTEX) {
     if (surface->type == MOD_DPAINT_SURFACE_T_PAINT) {
-      Mesh *me = ob->data;
+      Mesh *me = static_cast<Mesh *>(ob->data);
       return (CustomData_get_named_layer_index(&me->ldata, CD_PROP_BYTE_COLOR, name) != -1);
     }
     if (surface->type == MOD_DPAINT_SURFACE_T_WEIGHT) {
@@ -348,8 +348,9 @@ bool dynamicPaint_outputLayerExists(struct DynamicPaintSurface *surface, Object
 
 static bool surface_duplicateOutputExists(void *arg, const char *name)
 {
-  DynamicPaintSurface *t_surface = arg;
-  DynamicPaintSurface *surface = t_surface->canvas->surfaces.first;
+  DynamicPaintSurface *t_surface = static_cast<DynamicPaintSurface *>(arg);
+  DynamicPaintSurface *surface = static_cast<DynamicPaintSurface *>(
+      t_surface->canvas->surfaces.first);
 
   for (; surface; surface = surface->next) {
     if (surface != t_surface && surface->type == t_surface->type &&
@@ -387,8 +388,9 @

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list