[Bf-blender-cvs] [6f6cc269a4e] master: Cleanup: Move sculpt_dyntopo.c to C++
Hans Goudey
noreply at git.blender.org
Mon Jan 16 21:41:50 CET 2023
Commit: 6f6cc269a4e04d7ce254499ca1982dcec5247bf9
Author: Hans Goudey
Date: Mon Jan 16 14:41:28 2023 -0600
Branches: master
https://developer.blender.org/rB6f6cc269a4e04d7ce254499ca1982dcec5247bf9
Cleanup: Move sculpt_dyntopo.c to C++
See T103343
===================================================================
M source/blender/editors/sculpt_paint/CMakeLists.txt
R086 source/blender/editors/sculpt_paint/sculpt_dyntopo.c source/blender/editors/sculpt_paint/sculpt_dyntopo.cc
M source/blender/editors/sculpt_paint/sculpt_intern.h
===================================================================
diff --git a/source/blender/editors/sculpt_paint/CMakeLists.txt b/source/blender/editors/sculpt_paint/CMakeLists.txt
index d1a80e3e068..62a07310106 100644
--- a/source/blender/editors/sculpt_paint/CMakeLists.txt
+++ b/source/blender/editors/sculpt_paint/CMakeLists.txt
@@ -66,7 +66,7 @@ set(SRC
sculpt_brush_types.c
sculpt_cloth.c
sculpt_detail.c
- sculpt_dyntopo.c
+ sculpt_dyntopo.cc
sculpt_expand.c
sculpt_face_set.cc
sculpt_filter_color.c
diff --git a/source/blender/editors/sculpt_paint/sculpt_dyntopo.c b/source/blender/editors/sculpt_paint/sculpt_dyntopo.cc
similarity index 86%
rename from source/blender/editors/sculpt_paint/sculpt_dyntopo.c
rename to source/blender/editors/sculpt_paint/sculpt_dyntopo.cc
index 56ae10ef791..a77b73ebaae 100644
--- a/source/blender/editors/sculpt_paint/sculpt_dyntopo.c
+++ b/source/blender/editors/sculpt_paint/sculpt_dyntopo.cc
@@ -5,9 +5,10 @@
* \ingroup edsculpt
*/
-#include "MEM_guardedalloc.h"
+#include <cmath>
+#include <cstdlib>
-#include "BLI_task.h"
+#include "MEM_guardedalloc.h"
#include "BLT_translation.h"
@@ -41,14 +42,17 @@
#include "bmesh.h"
#include "bmesh_tools.h"
-#include <math.h>
-#include <stdlib.h>
-
void SCULPT_dynamic_topology_triangulate(BMesh *bm)
{
if (bm->totloop != bm->totface * 3) {
- BM_mesh_triangulate(
- bm, MOD_TRIANGULATE_QUAD_BEAUTY, MOD_TRIANGULATE_NGON_EARCLIP, 4, false, NULL, NULL, NULL);
+ BM_mesh_triangulate(bm,
+ MOD_TRIANGULATE_QUAD_BEAUTY,
+ MOD_TRIANGULATE_NGON_EARCLIP,
+ 4,
+ false,
+ nullptr,
+ nullptr,
+ nullptr);
}
}
@@ -59,7 +63,7 @@ void SCULPT_pbvh_clear(Object *ob)
/* Clear out any existing DM and PBVH. */
if (ss->pbvh) {
BKE_pbvh_free(ss->pbvh);
- ss->pbvh = NULL;
+ ss->pbvh = nullptr;
}
MEM_SAFE_FREE(ss->pmap);
@@ -75,7 +79,7 @@ void SCULPT_pbvh_clear(Object *ob)
void SCULPT_dynamic_topology_enable_ex(Main *bmain, Depsgraph *depsgraph, Scene *scene, Object *ob)
{
SculptSession *ss = ob->sculpt;
- Mesh *me = ob->data;
+ Mesh *me = static_cast<Mesh *>(ob->data);
const BMAllocTemplate allocsize = BMALLOC_TEMPLATE_FROM_ME(me);
SCULPT_pbvh_clear(ob);
@@ -87,19 +91,16 @@ void SCULPT_dynamic_topology_enable_ex(Main *bmain, Depsgraph *depsgraph, Scene
BKE_mesh_mselect_clear(me);
/* Create triangles-only BMesh. */
- ss->bm = BM_mesh_create(&allocsize,
- &((struct BMeshCreateParams){
- .use_toolflags = false,
- }));
-
- BM_mesh_bm_from_me(ss->bm,
- me,
- (&(struct BMeshFromMeshParams){
- .calc_face_normal = true,
- .calc_vert_normal = true,
- .use_shapekey = true,
- .active_shapekey = ob->shapenr,
- }));
+ BMeshCreateParams create_params{};
+ create_params.use_toolflags = false;
+ ss->bm = BM_mesh_create(&allocsize, &create_params);
+
+ BMeshFromMeshParams convert_params{};
+ convert_params.calc_face_normal = true;
+ convert_params.calc_vert_normal = true;
+ convert_params.use_shapekey = true;
+ convert_params.active_shapekey = ob->shapenr;
+ BM_mesh_bm_from_me(ss->bm, me, &convert_params);
SCULPT_dynamic_topology_triangulate(ss->bm);
BM_data_layer_add(ss->bm, &ss->bm->vdata, CD_PAINT_MASK);
@@ -129,7 +130,7 @@ static void SCULPT_dynamic_topology_disable_ex(
Main *bmain, Depsgraph *depsgraph, Scene *scene, Object *ob, SculptUndoNode *unode)
{
SculptSession *ss = ob->sculpt;
- Mesh *me = ob->data;
+ Mesh *me = static_cast<Mesh *>(ob->data);
if (ss->attrs.dyntopo_node_id_vertex) {
BKE_sculpt_attribute_destroy(ob, ss->attrs.dyntopo_node_id_vertex);
@@ -175,7 +176,7 @@ static void SCULPT_dynamic_topology_disable_ex(
/* Sync the visibility to vertices manually as the pmap is still not initialized. */
bool *hide_vert = (bool *)CustomData_get_layer_named_for_write(
&me->vdata, CD_PROP_BOOL, ".hide_vert", me->totvert);
- if (hide_vert != NULL) {
+ if (hide_vert != nullptr) {
memset(hide_vert, 0, sizeof(bool) * me->totvert);
}
}
@@ -183,14 +184,14 @@ static void SCULPT_dynamic_topology_disable_ex(
/* Clear data. */
me->flag &= ~ME_SCULPT_DYNAMIC_TOPOLOGY;
- /* Typically valid but with global-undo they can be NULL, see: T36234. */
+ /* Typically valid but with global-undo they can be nullptr, see: T36234. */
if (ss->bm) {
BM_mesh_free(ss->bm);
- ss->bm = NULL;
+ ss->bm = nullptr;
}
if (ss->bm_log) {
BM_log_free(ss->bm_log);
- ss->bm_log = NULL;
+ ss->bm_log = nullptr;
}
BKE_particlesystem_reset_all(ob);
@@ -217,14 +218,14 @@ void sculpt_dynamic_topology_disable_with_undo(Main *bmain,
Object *ob)
{
SculptSession *ss = ob->sculpt;
- if (ss->bm != NULL) {
+ if (ss->bm != nullptr) {
/* May be false in background mode. */
- const bool use_undo = G.background ? (ED_undo_stack_get() != NULL) : true;
+ const bool use_undo = G.background ? (ED_undo_stack_get() != nullptr) : true;
if (use_undo) {
SCULPT_undo_push_begin_ex(ob, "Dynamic topology disable");
- SCULPT_undo_push_node(ob, NULL, SCULPT_UNDO_DYNTOPO_END);
+ SCULPT_undo_push_node(ob, nullptr, SCULPT_UNDO_DYNTOPO_END);
}
- SCULPT_dynamic_topology_disable_ex(bmain, depsgraph, scene, ob, NULL);
+ SCULPT_dynamic_topology_disable_ex(bmain, depsgraph, scene, ob, nullptr);
if (use_undo) {
SCULPT_undo_push_end(ob);
}
@@ -237,21 +238,21 @@ static void sculpt_dynamic_topology_enable_with_undo(Main *bmain,
Object *ob)
{
SculptSession *ss = ob->sculpt;
- if (ss->bm == NULL) {
+ if (ss->bm == nullptr) {
/* May be false in background mode. */
- const bool use_undo = G.background ? (ED_undo_stack_get() != NULL) : true;
+ const bool use_undo = G.background ? (ED_undo_stack_get() != nullptr) : true;
if (use_undo) {
SCULPT_undo_push_begin_ex(ob, "Dynamic topology enable");
}
SCULPT_dynamic_topology_enable_ex(bmain, depsgraph, scene, ob);
if (use_undo) {
- SCULPT_undo_push_node(ob, NULL, SCULPT_UNDO_DYNTOPO_BEGIN);
+ SCULPT_undo_push_node(ob, nullptr, SCULPT_UNDO_DYNTOPO_BEGIN);
SCULPT_undo_push_end(ob);
}
}
}
-static int sculpt_dynamic_topology_toggle_exec(bContext *C, wmOperator *UNUSED(op))
+static int sculpt_dynamic_topology_toggle_exec(bContext *C, wmOperator * /*op*/)
{
Main *bmain = CTX_data_main(C);
Depsgraph *depsgraph = CTX_data_ensure_evaluated_depsgraph(C);
@@ -269,7 +270,7 @@ static int sculpt_dynamic_topology_toggle_exec(bContext *C, wmOperator *UNUSED(o
}
WM_cursor_wait(false);
- WM_main_add_notifier(NC_SCENE | ND_TOOLSETTINGS, NULL);
+ WM_main_add_notifier(NC_SCENE | ND_TOOLSETTINGS, nullptr);
return OPERATOR_FINISHED;
}
@@ -297,7 +298,7 @@ static int dyntopo_warning_popup(bContext *C, wmOperatorType *ot, enum eDynTopoW
uiItemS(layout);
}
- uiItemFullO_ptr(layout, ot, IFACE_("OK"), ICON_NONE, NULL, WM_OP_EXEC_DEFAULT, 0, NULL);
+ uiItemFullO_ptr(layout, ot, IFACE_("OK"), ICON_NONE, nullptr, WM_OP_EXEC_DEFAULT, 0, nullptr);
UI_popup_menu_end(C, pup);
@@ -306,12 +307,12 @@ static int dyntopo_warning_popup(bContext *C, wmOperatorType *ot, enum eDynTopoW
enum eDynTopoWarnFlag SCULPT_dynamic_topology_check(Scene *scene, Object *ob)
{
- Mesh *me = ob->data;
+ Mesh *me = static_cast<Mesh *>(ob->data);
SculptSession *ss = ob->sculpt;
- enum eDynTopoWarnFlag flag = 0;
+ enum eDynTopoWarnFlag flag = eDynTopoWarnFlag(0);
- BLI_assert(ss->bm == NULL);
+ BLI_assert(ss->bm == nullptr);
UNUSED_VARS_NDEBUG(ss);
for (int i = 0; i < CD_NUMTYPES; i++) {
@@ -334,7 +335,7 @@ enum eDynTopoWarnFlag SCULPT_dynamic_topology_check(Scene *scene, Object *ob)
/* Exception for shape keys because we can edit those. */
for (; md; md = md->next) {
- const ModifierTypeInfo *mti = BKE_modifier_get_info(md->type);
+ const ModifierTypeInfo *mti = BKE_modifier_get_info(ModifierType(md->type));
if (!BKE_modifier_is_enabled(scene, md, eModifierMode_Realtime)) {
continue;
}
@@ -351,7 +352,7 @@ enum eDynTopoWarnFlag SCULPT_dynamic_topology_check(Scene *scene, Object *ob)
static int sculpt_dynamic_topology_toggle_invoke(bContext *C,
wmOperator *op,
- const wmEvent *UNUSED(event))
+ const wmEvent * /*event*/)
{
Object *ob = CTX_data_active_object(C);
SculptSession *ss = ob->sculpt;
diff --git a/source/blender/editors/sculpt_paint/sculpt_intern.h b/source/blender/editors/sculpt_paint/sculpt_intern.h
index 700fba4cd40..dc487aeeb9f 100644
--- a/source/blender/editors/sculpt_paint/sculpt_intern.h
+++ b/source/blender/editors/sculpt_paint/sculpt_intern.h
@@ -1303,6 +1303,7 @@ enum eDynTopoWarnFlag {
DYNTOPO_WARN_LDATA = (1 << 2),
DYNTOPO_WARN_MODIFIER = (1 << 3),
};
+ENUM_OPERATORS(eDynTopoWarnFlag, DYNTOPO_WARN_MODIFIER);
/** Enable dynamic topology; mesh will be triangulated */
void SCULPT_dynamic_topology_enable_ex(struct Main *bmain,
More information about the Bf-blender-cvs
mailing list