[Bf-blender-cvs] [95cce6f6b0b] master: Cleanup: Move object_modifier.c to C++
Hans Goudey
noreply at git.blender.org
Mon Apr 18 19:40:36 CEST 2022
Commit: 95cce6f6b0b4c9090313ac5e4f4c041acbba38ca
Author: Hans Goudey
Date: Mon Apr 18 12:40:23 2022 -0500
Branches: master
https://developer.blender.org/rB95cce6f6b0b4c9090313ac5e4f4c041acbba38ca
Cleanup: Move object_modifier.c to C++
This allows using C++ only APIs/data structures, and potentially
simplifies adding support to apply modifiers for the Curves object.
===================================================================
M source/blender/editors/object/CMakeLists.txt
R092 source/blender/editors/object/object_modifier.c source/blender/editors/object/object_modifier.cc
===================================================================
diff --git a/source/blender/editors/object/CMakeLists.txt b/source/blender/editors/object/CMakeLists.txt
index 02feccc211a..97376a495c1 100644
--- a/source/blender/editors/object/CMakeLists.txt
+++ b/source/blender/editors/object/CMakeLists.txt
@@ -43,7 +43,7 @@ set(SRC
object_gpencil_modifier.c
object_hook.c
object_modes.c
- object_modifier.c
+ object_modifier.cc
object_ops.c
object_random.c
object_relations.c
diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.cc
similarity index 92%
rename from source/blender/editors/object/object_modifier.c
rename to source/blender/editors/object/object_modifier.cc
index 51b9b11e6f1..f7543c97903 100644
--- a/source/blender/editors/object/object_modifier.c
+++ b/source/blender/editors/object/object_modifier.cc
@@ -5,9 +5,9 @@
* \ingroup edobj
*/
-#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
+#include <cmath>
+#include <cstdio>
+#include <cstdlib>
#include "MEM_guardedalloc.h"
@@ -142,19 +142,19 @@ static void object_force_modifier_bind_simple_options(Depsgraph *depsgraph,
ModifierData *ED_object_modifier_add(
ReportList *reports, Main *bmain, Scene *scene, Object *ob, const char *name, int type)
{
- ModifierData *md = NULL, *new_md = NULL;
- const ModifierTypeInfo *mti = BKE_modifier_get_info(type);
+ ModifierData *md = nullptr, *new_md = nullptr;
+ const ModifierTypeInfo *mti = BKE_modifier_get_info((ModifierType)type);
/* Check compatibility of modifier [T25291, T50373]. */
if (!BKE_object_support_modifier_type_check(ob, type)) {
BKE_reportf(reports, RPT_WARNING, "Modifiers cannot be added to object '%s'", ob->id.name + 2);
- return NULL;
+ return nullptr;
}
if (mti->flags & eModifierTypeFlag_Single) {
- if (BKE_modifiers_findby_type(ob, type)) {
+ if (BKE_modifiers_findby_type(ob, (ModifierType)type)) {
BKE_report(reports, RPT_WARNING, "Only one modifier of this type is allowed");
- return NULL;
+ return nullptr;
}
}
@@ -169,9 +169,10 @@ ModifierData *ED_object_modifier_add(
new_md = BKE_modifier_new(type);
if (mti->flags & eModifierTypeFlag_RequiresOriginalData) {
- md = ob->modifiers.first;
+ md = static_cast<ModifierData *>(ob->modifiers.first);
- while (md && BKE_modifier_get_info(md->type)->type == eModifierTypeType_OnlyDeform) {
+ while (md &&
+ BKE_modifier_get_info((ModifierType)md->type)->type == eModifierTypeType_OnlyDeform) {
md = md->next;
}
@@ -217,7 +218,7 @@ ModifierData *ED_object_modifier_add(
}
else if (type == eModifierType_Skin) {
/* ensure skin-node customdata exists */
- BKE_mesh_ensure_skin_customdata(ob->data);
+ BKE_mesh_ensure_skin_customdata(static_cast<Mesh *>(ob->data));
}
}
@@ -248,7 +249,7 @@ bool ED_object_iter_other(Main *bmain,
bool (*callback)(Object *ob, void *callback_data),
void *callback_data)
{
- ID *ob_data_id = orig_ob->data;
+ ID *ob_data_id = static_cast<ID *>(orig_ob->data);
int users = ob_data_id->us;
if (ob_data_id->flag & LIB_FAKEUSER) {
@@ -260,7 +261,8 @@ bool ED_object_iter_other(Main *bmain,
Object *ob;
int totfound = include_orig ? 0 : 1;
- for (ob = bmain->objects.first; ob && totfound < users; ob = ob->id.next) {
+ for (ob = static_cast<Object *>(bmain->objects.first); ob && totfound < users;
+ ob = reinterpret_cast<Object *>(ob->id.next)) {
if (((ob != orig_ob) || include_orig) && (ob->data == orig_ob->data)) {
if (callback(ob, callback_data)) {
return true;
@@ -281,7 +283,7 @@ static bool object_has_modifier_cb(Object *ob, void *data)
{
ModifierType type = *((ModifierType *)data);
- return object_has_modifier(ob, NULL, type);
+ return object_has_modifier(ob, nullptr, type);
}
bool ED_object_multires_update_totlevels_cb(Object *ob, void *totlevel_v)
@@ -342,7 +344,7 @@ static bool object_modifier_remove(
else if (md->type == eModifierType_Multires) {
/* Delete MDisps layer if not used by another multires modifier */
if (object_modifier_safe_to_delete(bmain, ob, md, eModifierType_Multires)) {
- multires_customdata_delete(ob->data);
+ multires_customdata_delete(static_cast<Mesh *>(ob->data));
}
}
else if (md->type == eModifierType_Skin) {
@@ -384,7 +386,7 @@ bool ED_object_modifier_remove(
void ED_object_modifier_clear(Main *bmain, Scene *scene, Object *ob)
{
- ModifierData *md = ob->modifiers.first;
+ ModifierData *md = static_cast<ModifierData *>(ob->modifiers.first);
bool sort_depsgraph = false;
if (!md) {
@@ -406,10 +408,10 @@ void ED_object_modifier_clear(Main *bmain, Scene *scene, Object *ob)
bool ED_object_modifier_move_up(ReportList *reports, Object *ob, ModifierData *md)
{
if (md->prev) {
- const ModifierTypeInfo *mti = BKE_modifier_get_info(md->type);
+ const ModifierTypeInfo *mti = BKE_modifier_get_info((ModifierType)md->type);
if (mti->type != eModifierTypeType_OnlyDeform) {
- const ModifierTypeInfo *nmti = BKE_modifier_get_info(md->prev->type);
+ const ModifierTypeInfo *nmti = BKE_modifier_get_info((ModifierType)md->prev->type);
if (nmti->flags & eModifierTypeFlag_RequiresOriginalData) {
BKE_report(reports, RPT_WARNING, "Cannot move above a modifier requiring original data");
@@ -430,10 +432,10 @@ bool ED_object_modifier_move_up(ReportList *reports, Object *ob, ModifierData *m
bool ED_object_modifier_move_down(ReportList *reports, Object *ob, ModifierData *md)
{
if (md->next) {
- const ModifierTypeInfo *mti = BKE_modifier_get_info(md->type);
+ const ModifierTypeInfo *mti = BKE_modifier_get_info((ModifierType)md->type);
if (mti->flags & eModifierTypeFlag_RequiresOriginalData) {
- const ModifierTypeInfo *nmti = BKE_modifier_get_info(md->next->type);
+ const ModifierTypeInfo *nmti = BKE_modifier_get_info((ModifierType)md->next->type);
if (nmti->type != eModifierTypeType_OnlyDeform) {
BKE_report(reports, RPT_WARNING, "Cannot move beyond a non-deforming modifier");
@@ -456,7 +458,7 @@ bool ED_object_modifier_move_to_index(ReportList *reports,
ModifierData *md,
const int index)
{
- BLI_assert(md != NULL);
+ BLI_assert(md != nullptr);
BLI_assert(index >= 0);
if (index >= BLI_listbase_count(&ob->modifiers)) {
BKE_report(reports, RPT_WARNING, "Cannot move modifier beyond the end of the stack");
@@ -534,7 +536,7 @@ bool ED_object_modifier_convert(ReportList *UNUSED(reports),
return false;
}
ParticleSystem *psys_eval = psys_eval_get(depsgraph, ob, psys_orig);
- if (psys_eval->pathcache == NULL) {
+ if (psys_eval->pathcache == nullptr) {
return false;
}
@@ -572,15 +574,15 @@ bool ED_object_modifier_convert(ReportList *UNUSED(reports),
}
/* add new mesh */
- Object *obn = BKE_object_add(bmain, view_layer, OB_MESH, NULL);
- Mesh *me = obn->data;
+ Object *obn = BKE_object_add(bmain, view_layer, OB_MESH, nullptr);
+ Mesh *me = static_cast<Mesh *>(obn->data);
me->totvert = verts_num;
me->totedge = edges_num;
- me->mvert = CustomData_add_layer(&me->vdata, CD_MVERT, CD_CALLOC, NULL, verts_num);
- me->medge = CustomData_add_layer(&me->edata, CD_MEDGE, CD_CALLOC, NULL, edges_num);
- me->mface = CustomData_add_layer(&me->fdata, CD_MFACE, CD_CALLOC, NULL, 0);
+ me->mvert = (MVert *)CustomData_add_layer(&me->vdata, CD_MVERT, CD_CALLOC, nullptr, verts_num);
+ me->medge = (MEdge *)CustomData_add_layer(&me->edata, CD_MEDGE, CD_CALLOC, nullptr, edges_num);
+ me->mface = (MFace *)CustomData_add_layer(&me->fdata, CD_MFACE, CD_CALLOC, nullptr, 0);
MVert *mvert = me->mvert;
MEdge *medge = me->medge;
@@ -650,9 +652,9 @@ static bool modifier_apply_shape(Main *bmain,
Object *ob,
ModifierData *md_eval)
{
- const ModifierTypeInfo *mti = BKE_modifier_get_info(md_eval->type);
+ const ModifierTypeInfo *mti = BKE_modifier_get_info((ModifierType)md_eval->type);
- if (mti->isDisabled && mti->isDisabled(scene, md_eval, 0)) {
+ if (mti->isDisabled && mti->isDisabled(scene, md_eval, false)) {
BKE_report(reports, RPT_ERROR, "Modifier is disabled, skipping apply");
return false;
}
@@ -668,7 +670,7 @@ static bool modifier_apply_shape(Main *bmain,
* we can look into supporting them. */
if (ob->type == OB_MESH) {
- Mesh *me = ob->data;
+ Mesh *me = static_cast<Mesh *>(ob->data);
Key *key = me->key;
if (!BKE_modifier_is_same_topology(md_eval) || mti->type == eModifierTypeType_NonGeometrical) {
@@ -683,19 +685,19 @@ static bool modifier_apply_shape(Main *bmain,
return false;
}
- if (key == NULL) {
+ if (key == nullptr) {
key = me->key = BKE_key_add(bmain, (ID *)me);
key->type = KEY_RELATIVE;
/* if that was the first key block added, then it was the basis.
* Initialize it with the mesh, and add another for the modifier */
- KeyBlock *kb = BKE_keyblock_add(key, NULL);
+ KeyBlock *kb = BKE_keyblock_add(key, nullptr);
BKE_keyblock_convert_from_mesh(me, key, kb);
}
KeyBlock *kb = BKE_keyblock_add(key, md_eval->name);
BKE_mesh_nomain_to_meshkey(mesh_applied, me, kb);
- BKE_id_free(NULL, mesh_applied);
+ BKE_id_free(nullptr, mesh_applied);
}
else {
/* TODO: implement for curves, point clouds and volumes. */
@@ -708,15 +710,15 @@ static bool modifier_apply_shape(Main *bmain,
static bool modifier_apply_obdata(
ReportList *reports, Depsgraph *depsgraph, Scene *scene, Object *ob, ModifierData *md_eval)
{
- const ModifierTypeInfo *mti = BKE_modifier_get_info(md_eval->type);
+ const ModifierTypeInfo *mti = BKE_modifier_get_info((ModifierType)md_eval->type);
- if (mti->isDisabled && mti->isDisabled(scene, md_eval, 0)) {
+ if (mti->isDisabled && mti->isDisabled(scene, md_eval, false)) {
BKE_report(reports, RPT_ERROR, "Modifier is disabled, skipping apply");
return false;
}
if (ob-
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list