[Bf-blender-cvs] [0f224ceedba] master: Cleanup: Move multires.c to C++
Hans Goudey
noreply at git.blender.org
Thu Oct 6 18:00:52 CEST 2022
Commit: 0f224ceedba8575a7373938987c7ed18f3e565de
Author: Hans Goudey
Date: Wed Oct 5 20:51:05 2022 -0500
Branches: master
https://developer.blender.org/rB0f224ceedba8575a7373938987c7ed18f3e565de
Cleanup: Move multires.c to C++
===================================================================
M source/blender/blenkernel/BKE_modifier.h
M source/blender/blenkernel/BKE_multires.h
M source/blender/blenkernel/BKE_subsurf.h
M source/blender/blenkernel/CMakeLists.txt
R085 source/blender/blenkernel/intern/multires.c source/blender/blenkernel/intern/multires.cc
===================================================================
diff --git a/source/blender/blenkernel/BKE_modifier.h b/source/blender/blenkernel/BKE_modifier.h
index f46672a5033..ce2f9e878f8 100644
--- a/source/blender/blenkernel/BKE_modifier.h
+++ b/source/blender/blenkernel/BKE_modifier.h
@@ -127,6 +127,7 @@ typedef enum ModifierApplyFlag {
* See `OBJECT_OT_modifier_apply` operator. */
MOD_APPLY_TO_BASE_MESH = 1 << 4,
} ModifierApplyFlag;
+ENUM_OPERATORS(ModifierApplyFlag, MOD_APPLY_TO_BASE_MESH);
typedef struct ModifierUpdateDepsgraphContext {
struct Scene *scene;
diff --git a/source/blender/blenkernel/BKE_multires.h b/source/blender/blenkernel/BKE_multires.h
index dfa330ff508..53dfaf953ea 100644
--- a/source/blender/blenkernel/BKE_multires.h
+++ b/source/blender/blenkernel/BKE_multires.h
@@ -8,7 +8,7 @@
*/
#include "BKE_subsurf.h"
-#include "BLI_compiler_compat.h"
+#include "BLI_utildefines.h"
#ifdef __cplusplus
extern "C" {
@@ -53,12 +53,13 @@ void multires_modifier_update_hidden(struct DerivedMesh *dm);
*/
void multiresModifier_set_levels_from_disps(struct MultiresModifierData *mmd, struct Object *ob);
-typedef enum {
+typedef enum MultiresFlags {
MULTIRES_USE_LOCAL_MMD = 1,
MULTIRES_USE_RENDER_PARAMS = 2,
MULTIRES_ALLOC_PAINT_MASK = 4,
MULTIRES_IGNORE_SIMPLIFY = 8,
} MultiresFlags;
+ENUM_OPERATORS(MultiresFlags, MULTIRES_IGNORE_SIMPLIFY);
struct DerivedMesh *multires_make_derived_from_derived(struct DerivedMesh *dm,
struct MultiresModifierData *mmd,
diff --git a/source/blender/blenkernel/BKE_subsurf.h b/source/blender/blenkernel/BKE_subsurf.h
index f32a78c3015..557a71fd06b 100644
--- a/source/blender/blenkernel/BKE_subsurf.h
+++ b/source/blender/blenkernel/BKE_subsurf.h
@@ -11,6 +11,7 @@
/* Thread sync primitives used directly. */
#include "BLI_threads.h"
+#include "BLI_utildefines.h"
#ifdef __cplusplus
extern "C" {
@@ -32,7 +33,7 @@ struct SubsurfModifierData;
/**************************** External *****************************/
-typedef enum {
+typedef enum SubsurfFlags {
SUBSURF_USE_RENDER_PARAMS = 1,
SUBSURF_IS_FINAL_CALC = 2,
SUBSURF_FOR_EDIT_MODE = 4,
@@ -41,6 +42,7 @@ typedef enum {
SUBSURF_USE_GPU_BACKEND = 32,
SUBSURF_IGNORE_SIMPLIFY = 64,
} SubsurfFlags;
+ENUM_OPERATORS(SubsurfFlags, SUBSURF_IGNORE_SIMPLIFY);
struct DerivedMesh *subsurf_make_derived_from_derived(struct DerivedMesh *dm,
struct SubsurfModifierData *smd,
diff --git a/source/blender/blenkernel/CMakeLists.txt b/source/blender/blenkernel/CMakeLists.txt
index d0e2d945c2f..192acbf8338 100644
--- a/source/blender/blenkernel/CMakeLists.txt
+++ b/source/blender/blenkernel/CMakeLists.txt
@@ -216,7 +216,7 @@ set(SRC
intern/mesh_wrapper.cc
intern/modifier.cc
intern/movieclip.c
- intern/multires.c
+ intern/multires.cc
intern/multires_reshape.c
intern/multires_reshape_apply_base.c
intern/multires_reshape_ccg.c
diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.cc
similarity index 85%
rename from source/blender/blenkernel/intern/multires.c
rename to source/blender/blenkernel/intern/multires.cc
index ce61ca483e9..83189adfcdb 100644
--- a/source/blender/blenkernel/intern/multires.c
+++ b/source/blender/blenkernel/intern/multires.cc
@@ -43,8 +43,8 @@
#include "multires_reshape.h"
-#include <math.h>
-#include <string.h>
+#include <cmath>
+#include <cstring>
/* MULTIRES MODIFIER */
static const int multires_grid_tot[] = {
@@ -53,11 +53,11 @@ static const int multires_side_tot[] = {
0, 2, 3, 5, 9, 17, 33, 65, 129, 257, 513, 1025, 2049, 4097};
/* See multiresModifier_disp_run for description of each operation */
-typedef enum {
+enum DispOp {
APPLY_DISPLACEMENTS,
CALC_DISPLACEMENTS,
ADD_DISPLACEMENTS,
-} DispOp;
+};
static void multiresModifier_disp_run(
DerivedMesh *dm, Mesh *me, DerivedMesh *dm2, DispOp op, CCGElem **oldGridData, int totlvl);
@@ -107,7 +107,7 @@ static BLI_bitmap *multires_mdisps_upsample_hidden(BLI_bitmap *lo_hidden,
/* fast case */
if (lo_level == hi_level) {
- return MEM_dupallocN(lo_hidden);
+ return static_cast<BLI_bitmap *>(MEM_dupallocN(lo_hidden));
}
subd = BLI_BITMAP_NEW(square_i(hi_gridsize), "MDisps.hidden upsample");
@@ -184,7 +184,7 @@ static BLI_bitmap *multires_mdisps_downsample_hidden(const BLI_bitmap *old_hidde
static void multires_output_hidden_to_ccgdm(CCGDerivedMesh *ccgdm, Mesh *me, int level)
{
const MPoly *polys = BKE_mesh_polys(me);
- const MDisps *mdisps = CustomData_get_layer(&me->ldata, CD_MDISPS);
+ const MDisps *mdisps = static_cast<const MDisps *>(CustomData_get_layer(&me->ldata, CD_MDISPS));
BLI_bitmap **grid_hidden = ccgdm->gridHidden;
int *gridOffset;
int i, j;
@@ -217,7 +217,7 @@ static void multires_mdisps_subdivide_hidden(MDisps *md, int new_level)
return;
}
- subd = multires_mdisps_upsample_hidden(md->hidden, md->level, new_level, NULL);
+ subd = multires_mdisps_upsample_hidden(md->hidden, md->level, new_level, nullptr);
/* swap in the subdivided data */
MEM_freeN(md->hidden);
@@ -232,13 +232,12 @@ Mesh *BKE_multires_create_mesh(struct Depsgraph *depsgraph,
Scene *scene_eval = DEG_get_evaluated_scene(depsgraph);
Mesh *deformed_mesh = mesh_get_eval_deform(
depsgraph, scene_eval, object_eval, &CD_MASK_BAREMESH);
- ModifierEvalContext modifier_ctx = {
- .depsgraph = depsgraph,
- .object = object_eval,
- .flag = MOD_APPLY_USECACHE | MOD_APPLY_IGNORE_SIMPLIFY,
- };
+ ModifierEvalContext modifier_ctx{};
+ modifier_ctx.depsgraph = depsgraph;
+ modifier_ctx.object = object_eval;
+ modifier_ctx.flag = MOD_APPLY_USECACHE | MOD_APPLY_IGNORE_SIMPLIFY;
- const ModifierTypeInfo *mti = BKE_modifier_get_info(mmd->modifier.type);
+ const ModifierTypeInfo *mti = BKE_modifier_get_info(ModifierType(mmd->modifier.type));
Mesh *result = mti->modifyMesh(&mmd->modifier, &modifier_ctx, deformed_mesh);
if (result == deformed_mesh) {
@@ -255,12 +254,12 @@ float (*BKE_multires_create_deformed_base_mesh_vert_coords(struct Depsgraph *dep
Scene *scene_eval = DEG_get_evaluated_scene(depsgraph);
Object *object_eval = DEG_get_evaluated_object(depsgraph, object);
- Object object_for_eval = *object_eval;
+ Object object_for_eval = blender::dna::shallow_copy(*object_eval);
object_for_eval.data = object->data;
- object_for_eval.sculpt = NULL;
+ object_for_eval.sculpt = nullptr;
const bool use_render = (DEG_get_mode(depsgraph) == DAG_EVAL_RENDER);
- ModifierEvalContext mesh_eval_context = {depsgraph, &object_for_eval, 0};
+ ModifierEvalContext mesh_eval_context = {depsgraph, &object_for_eval, ModifierApplyFlag(0)};
if (use_render) {
mesh_eval_context.flag |= MOD_APPLY_RENDER;
}
@@ -270,13 +269,13 @@ float (*BKE_multires_create_deformed_base_mesh_vert_coords(struct Depsgraph *dep
ModifierData *first_md = BKE_modifiers_get_virtual_modifierlist(&object_for_eval,
&virtual_modifier_data);
- Mesh *base_mesh = object->data;
+ Mesh *base_mesh = static_cast<Mesh *>(object->data);
int num_deformed_verts;
float(*deformed_verts)[3] = BKE_mesh_vert_coords_alloc(base_mesh, &num_deformed_verts);
- for (ModifierData *md = first_md; md != NULL; md = md->next) {
- const ModifierTypeInfo *mti = BKE_modifier_get_info(md->type);
+ for (ModifierData *md = first_md; md != nullptr; md = md->next) {
+ const ModifierTypeInfo *mti = BKE_modifier_get_info(ModifierType(md->type));
if (md == &mmd->modifier) {
break;
@@ -294,7 +293,7 @@ float (*BKE_multires_create_deformed_base_mesh_vert_coords(struct Depsgraph *dep
md, &mesh_eval_context, base_mesh, deformed_verts, num_deformed_verts);
}
- if (r_num_deformed_verts != NULL) {
+ if (r_num_deformed_verts != nullptr) {
*r_num_deformed_verts = num_deformed_verts;
}
return deformed_verts;
@@ -312,16 +311,15 @@ MultiresModifierData *find_multires_modifier_before(Scene *scene, ModifierData *
}
}
- return NULL;
+ return nullptr;
}
MultiresModifierData *get_multires_modifier(Scene *scene, Object *ob, bool use_first)
{
- ModifierData *md;
- MultiresModifierData *mmd = NULL, *firstmmd = NULL;
+ MultiresModifierData *mmd = nullptr, *firstmmd = nullptr;
/* find first active multires modifier */
- for (md = ob->modifiers.first; md; md = md->next) {
+ LISTBASE_FOREACH (ModifierData *, md, &ob->modifiers) {
if (md->type == eModifierType_Multires) {
if (!firstmmd) {
firstmmd = (MultiresModifierData *)md;
@@ -350,8 +348,8 @@ int multires_get_level(const Scene *scene,
bool ignore_simplify)
{
if (render) {
- return (scene != NULL) ? get_render_subsurf_level(&scene->r, mmd->renderlvl, true) :
- mmd->renderlvl;
+ return (scene != nullptr) ? get_render_subsurf_level(&scene->r, mmd->renderlvl, true) :
+ mmd->renderlvl;
}
if (ob->mode == OB_MODE_SCULPT) {
return mmd->sculptlvl;
@@ -360,7 +358,7 @@ int multires_get_level(const Scene *scene,
return mmd->lvl;
}
- return (scene != NULL) ? get_render_subsurf_level(&scene->r, mmd->lvl, false) : mmd->lvl;
+ return (scene != nullptr) ? get_render_subsurf_level(&scene->r, mmd->lvl, false) : mmd->lvl;
}
void multires_set_tot_level(Object *ob, MultiresModifierData *mmd, int lvl)
@@ -387,7 +385,7 @@ static void multires_ccg_mark_as_modified(SubdivCCG *subdiv_ccg, MultiresModifie
void multires_mark_as_modified(Depsgraph *depsgraph, Object *object, MultiresModifiedFlags flags)
{
- if (object == NULL) {
+ if (object == nullptr) {
return;
}
/* NOTE: CCG live inside of evaluated object.
@@ -398,9 +396,9 @@ void multires_mark_as_modified(Depsgraph *depsgraph, Object *object, MultiresMod
*
* In a longer term maybe special dependency graph tag can help sanitizing this a bit. */
Object *object_eval = DEG_get_evaluated_object(depsgraph, object);
- Mesh *mesh = object_eval->data;
+ Mesh *mesh = static_cast<Mesh *>(object_eval->data);
SubdivCCG *subdiv_ccg = me
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list