diff options
author | Hans Goudey <h.goudey@me.com> | 2022-10-02 06:12:55 +0300 |
---|---|---|
committer | Hans Goudey <h.goudey@me.com> | 2022-10-02 06:13:19 +0300 |
commit | e0a261c653cb158d940569c830f81a0c064da40e (patch) | |
tree | 66c943531b01c7cf563f5ad2c52557c978830ade /source/blender | |
parent | b14ad9114f1d8fb5e1f9a0ef392d49b559a5388e (diff) |
Cleanup: Move more files using mesh runtime data to C++
In preparation for moving mesh runtime data out of DNA.
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/blenkernel/CMakeLists.txt | 2 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/mball_tessellate.cc (renamed from source/blender/blenkernel/intern/mball_tessellate.c) | 79 | ||||
-rw-r--r-- | source/blender/editors/include/ED_mesh.h | 2 | ||||
-rw-r--r-- | source/blender/editors/include/ED_view3d.h | 3 | ||||
-rw-r--r-- | source/blender/editors/mesh/CMakeLists.txt | 2 | ||||
-rw-r--r-- | source/blender/editors/mesh/editmesh_loopcut.c | 2 | ||||
-rw-r--r-- | source/blender/editors/mesh/editmesh_select.cc (renamed from source/blender/editors/mesh/editmesh_select.c) | 471 | ||||
-rw-r--r-- | source/blender/editors/mesh/mesh_intern.h | 2 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/CMakeLists.txt | 2 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/view3d_iterators.cc (renamed from source/blender/editors/space_view3d/view3d_iterators.c) | 127 |
10 files changed, 360 insertions, 332 deletions
diff --git a/source/blender/blenkernel/CMakeLists.txt b/source/blender/blenkernel/CMakeLists.txt index 627e34be424..d0e2d945c2f 100644 --- a/source/blender/blenkernel/CMakeLists.txt +++ b/source/blender/blenkernel/CMakeLists.txt @@ -191,7 +191,7 @@ set(SRC intern/mask_rasterize.c intern/material.c intern/mball.cc - intern/mball_tessellate.c + intern/mball_tessellate.cc intern/mesh.cc intern/mesh_boolean_convert.cc intern/mesh_calc_edges.cc diff --git a/source/blender/blenkernel/intern/mball_tessellate.c b/source/blender/blenkernel/intern/mball_tessellate.cc index 1bb50c2c97f..5df924c1bbf 100644 --- a/source/blender/blenkernel/intern/mball_tessellate.c +++ b/source/blender/blenkernel/intern/mball_tessellate.cc @@ -220,7 +220,8 @@ static void build_bvh_spatial( make_box_union(process->mainb[j]->bb, &node->bb[0], &node->bb[0]); } - node->child[0] = BLI_memarena_alloc(process->pgn_elements, sizeof(MetaballBVHNode)); + node->child[0] = static_cast<MetaballBVHNode *>( + BLI_memarena_alloc(process->pgn_elements, sizeof(MetaballBVHNode))); build_bvh_spatial(process, node->child[0], start, part, &node->bb[0]); } @@ -233,7 +234,8 @@ static void build_bvh_spatial( make_box_union(process->mainb[j]->bb, &node->bb[1], &node->bb[1]); } - node->child[1] = BLI_memarena_alloc(process->pgn_elements, sizeof(MetaballBVHNode)); + node->child[1] = static_cast<MetaballBVHNode *>( + BLI_memarena_alloc(process->pgn_elements, sizeof(MetaballBVHNode))); build_bvh_spatial(process, node->child[1], part, end, &node->bb[1]); } } @@ -432,7 +434,8 @@ static void make_face(PROCESS *process, int i1, int i2, int i3, int i4) if (UNLIKELY(process->totindex == process->curindex)) { process->totindex = process->totindex ? (process->totindex * 2) : MBALL_ARRAY_LEN_INIT; - process->indices = MEM_reallocN(process->indices, sizeof(int[4]) * process->totindex); + process->indices = static_cast<int(*)[4]>( + MEM_reallocN(process->indices, sizeof(int[4]) * process->totindex)); } int *cur = process->indices[process->curindex++]; @@ -671,7 +674,7 @@ static CORNER *setcorner(PROCESS *process, int i, int j, int k) } } - c = BLI_memarena_alloc(process->pgn_elements, sizeof(CORNER)); + c = static_cast<CORNER *>(BLI_memarena_alloc(process->pgn_elements, sizeof(CORNER))); c->i = i; c->co[0] = ((float)i - 0.5f) * process->size; @@ -754,7 +757,7 @@ static void makecubetable(void) for (e = 0; e < 12; e++) { if (!done[e] && (pos[corner1[e]] != pos[corner2[e]])) { INTLIST *ints = NULL; - INTLISTS *lists = MEM_callocN(sizeof(INTLISTS), "mball_intlist"); + INTLISTS *lists = static_cast<INTLISTS *>(MEM_callocN(sizeof(INTLISTS), "mball_intlist")); int start = e, edge = e; /* get face that is to right of edge from pos to neg corner: */ @@ -766,7 +769,7 @@ static void makecubetable(void) if (pos[corner1[edge]] != pos[corner2[edge]]) { INTLIST *tmp = ints; - ints = MEM_callocN(sizeof(INTLIST), "mball_intlist"); + ints = static_cast<INTLIST *>(MEM_callocN(sizeof(INTLIST), "mball_intlist")); ints->i = edge; ints->next = tmp; /* add edge to head of list */ @@ -853,7 +856,7 @@ static int setcenter(PROCESS *process, CENTERLIST *table[], const int i, const i } } - newc = BLI_memarena_alloc(process->pgn_elements, sizeof(CENTERLIST)); + newc = static_cast<CENTERLIST *>(BLI_memarena_alloc(process->pgn_elements, sizeof(CENTERLIST))); newc->i = i; newc->j = j; newc->k = k; @@ -883,7 +886,7 @@ static void setedge(PROCESS *process, int i1, int j1, int k1, int i2, int j2, in k2 = t; } index = HASH(i1, j1, k1) + HASH(i2, j2, k2); - newe = BLI_memarena_alloc(process->pgn_elements, sizeof(EDGELIST)); + newe = static_cast<EDGELIST *>(BLI_memarena_alloc(process->pgn_elements, sizeof(EDGELIST))); newe->i1 = i1; newe->j1 = j1; @@ -930,8 +933,10 @@ static void addtovertices(PROCESS *process, const float v[3], const float no[3]) { if (UNLIKELY(process->curvertex == process->totvertex)) { process->totvertex = process->totvertex ? process->totvertex * 2 : MBALL_ARRAY_LEN_INIT; - process->co = MEM_reallocN(process->co, process->totvertex * sizeof(float[3])); - process->no = MEM_reallocN(process->no, process->totvertex * sizeof(float[3])); + process->co = static_cast<float(*)[3]>( + MEM_reallocN(process->co, process->totvertex * sizeof(float[3]))); + process->no = static_cast<float(*)[3]>( + MEM_reallocN(process->no, process->totvertex * sizeof(float[3]))); } copy_v3_v3(process->co[process->curvertex], v); @@ -1037,7 +1042,7 @@ static void add_cube(PROCESS *process, int i, int j, int k) /* test if cube has been found before */ if (setcenter(process, process->centers, i, j, k) == 0) { /* push cube on stack: */ - ncube = BLI_memarena_alloc(process->pgn_elements, sizeof(CUBES)); + ncube = static_cast<CUBES *>(BLI_memarena_alloc(process->pgn_elements, sizeof(CUBES))); ncube->next = process->cubes; process->cubes = ncube; @@ -1131,11 +1136,14 @@ static void polygonize(PROCESS *process) { CUBE c; - process->centers = MEM_callocN(HASHSIZE * sizeof(CENTERLIST *), "mbproc->centers"); - process->corners = MEM_callocN(HASHSIZE * sizeof(CORNER *), "mbproc->corners"); - process->edges = MEM_callocN(2 * HASHSIZE * sizeof(EDGELIST *), "mbproc->edges"); - process->bvh_queue = MEM_callocN(sizeof(MetaballBVHNode *) * process->bvh_queue_size, - "Metaball BVH Queue"); + process->centers = static_cast<CENTERLIST **>( + MEM_callocN(HASHSIZE * sizeof(CENTERLIST *), "mbproc->centers")); + process->corners = static_cast<CORNER **>( + MEM_callocN(HASHSIZE * sizeof(CORNER *), "mbproc->corners")); + process->edges = static_cast<EDGELIST **>( + MEM_callocN(2 * HASHSIZE * sizeof(EDGELIST *), "mbproc->edges")); + process->bvh_queue = static_cast<MetaballBVHNode **>( + MEM_callocN(sizeof(MetaballBVHNode *) * process->bvh_queue_size, "Metaball BVH Queue")); makecubetable(); @@ -1192,13 +1200,13 @@ static void init_meta(Depsgraph *depsgraph, PROCESS *process, Scene *scene, Obje } if (bob == ob && (base->flag_legacy & OB_FROMDUPLI) == 0) { - mb = ob->data; + mb = static_cast<MetaBall *>(ob->data); if (mb->editelems) { - ml = mb->editelems->first; + ml = static_cast<const MetaElem *>(mb->editelems->first); } else { - ml = mb->elems.first; + ml = static_cast<const MetaElem *>(mb->elems.first); } } else { @@ -1207,13 +1215,13 @@ static void init_meta(Depsgraph *depsgraph, PROCESS *process, Scene *scene, Obje BLI_split_name_num(name, &nr, bob->id.name + 2, '.'); if (STREQ(obname, name)) { - mb = bob->data; + mb = static_cast<MetaBall *>(bob->data); if (mb->editelems) { - ml = mb->editelems->first; + ml = static_cast<const MetaElem *>(mb->editelems->first); } else { - ml = mb->elems.first; + ml = static_cast<const MetaElem *>(mb->elems.first); } } } @@ -1249,11 +1257,15 @@ static void init_meta(Depsgraph *depsgraph, PROCESS *process, Scene *scene, Obje MetaElem *new_ml; /* make a copy because of duplicates */ - new_ml = BLI_memarena_alloc(process->pgn_elements, sizeof(MetaElem)); + new_ml = static_cast<MetaElem *>( + BLI_memarena_alloc(process->pgn_elements, sizeof(MetaElem))); *(new_ml) = *ml; - new_ml->bb = BLI_memarena_alloc(process->pgn_elements, sizeof(BoundBox)); - new_ml->mat = BLI_memarena_alloc(process->pgn_elements, sizeof(float[4][4])); - new_ml->imat = BLI_memarena_alloc(process->pgn_elements, sizeof(float[4][4])); + new_ml->bb = static_cast<BoundBox *>( + BLI_memarena_alloc(process->pgn_elements, sizeof(BoundBox))); + new_ml->mat = static_cast<float *>( + BLI_memarena_alloc(process->pgn_elements, sizeof(float[4][4]))); + new_ml->imat = static_cast<float *>( + BLI_memarena_alloc(process->pgn_elements, sizeof(float[4][4]))); /* too big stiffness seems only ugly due to linear interpolation * no need to have possibility for too big stiffness */ @@ -1347,7 +1359,8 @@ static void init_meta(Depsgraph *depsgraph, PROCESS *process, Scene *scene, Obje /* add new_ml to mainb[] */ if (UNLIKELY(process->totelem == process->mem)) { process->mem = process->mem * 2 + 10; - process->mainb = MEM_reallocN(process->mainb, sizeof(MetaElem *) * process->mem); + process->mainb = static_cast<MetaElem **>( + MEM_reallocN(process->mainb, sizeof(MetaElem *) * process->mem)); } process->mainb[process->totelem++] = new_ml; } @@ -1372,7 +1385,7 @@ Mesh *BKE_mball_polygonize(Depsgraph *depsgraph, Scene *scene, Object *ob) PROCESS process = {0}; const bool is_render = DEG_get_mode(depsgraph) == DAG_EVAL_RENDER; - MetaBall *mb = ob->data; + MetaBall *mb = static_cast<MetaBall *>(ob->data); process.thresh = mb->thresh; @@ -1440,16 +1453,18 @@ Mesh *BKE_mball_polygonize(Depsgraph *depsgraph, Scene *scene, Object *ob) Mesh *mesh = (Mesh *)BKE_id_new_nomain(ID_ME, ((ID *)ob->data)->name + 2); mesh->totvert = (int)process.curvertex; - MVert *mvert = CustomData_add_layer(&mesh->vdata, CD_MVERT, CD_CONSTRUCT, NULL, mesh->totvert); + MVert *mvert = static_cast<MVert *>( + CustomData_add_layer(&mesh->vdata, CD_MVERT, CD_CONSTRUCT, NULL, mesh->totvert)); for (int i = 0; i < mesh->totvert; i++) { copy_v3_v3(mvert[i].co, process.co[i]); } MEM_freeN(process.co); mesh->totpoly = (int)process.curindex; - MPoly *mpoly = CustomData_add_layer(&mesh->pdata, CD_MPOLY, CD_CONSTRUCT, NULL, mesh->totpoly); - MLoop *mloop = CustomData_add_layer( - &mesh->ldata, CD_MLOOP, CD_CONSTRUCT, NULL, mesh->totpoly * 4); + MPoly *mpoly = static_cast<MPoly *>( + CustomData_add_layer(&mesh->pdata, CD_MPOLY, CD_CONSTRUCT, NULL, mesh->totpoly)); + MLoop *mloop = static_cast<MLoop *>( + CustomData_add_layer(&mesh->ldata, CD_MLOOP, CD_CONSTRUCT, NULL, mesh->totpoly * 4)); int loop_offset = 0; for (int i = 0; i < mesh->totpoly; i++) { diff --git a/source/blender/editors/include/ED_mesh.h b/source/blender/editors/include/ED_mesh.h index 26743a2bd08..a47ffe0b99a 100644 --- a/source/blender/editors/include/ED_mesh.h +++ b/source/blender/editors/include/ED_mesh.h @@ -197,7 +197,7 @@ void EDBM_automerge_and_split(struct Object *obedit, /** Export for ED_undo_sys. */ void ED_mesh_undosys_type(struct UndoType *ut); -/* editmesh_select.c */ +/* editmesh_select.cc */ void EDBM_select_mirrored(struct BMEditMesh *em, const struct Mesh *me, diff --git a/source/blender/editors/include/ED_view3d.h b/source/blender/editors/include/ED_view3d.h index 7c7b5771a04..9eceb5260ed 100644 --- a/source/blender/editors/include/ED_view3d.h +++ b/source/blender/editors/include/ED_view3d.h @@ -228,6 +228,7 @@ typedef enum { /** outside range (mainly for short), (can't avoid) */ V3D_PROJ_RET_OVERFLOW = 6, } eV3DProjStatus; +ENUM_OPERATORS(eV3DProjStatus, V3D_PROJ_RET_OVERFLOW); /* some clipping tests are optional */ typedef enum { @@ -350,7 +351,7 @@ void ED_view3d_cursor_snap_draw_util(struct RegionView3D *rv3d, const uchar color_point[4], eSnapMode snap_elem_type); -/* view3d_iterators.c */ +/* view3d_iterators.cc */ /* foreach iterators */ diff --git a/source/blender/editors/mesh/CMakeLists.txt b/source/blender/editors/mesh/CMakeLists.txt index 218564eaf30..c1049e32d4c 100644 --- a/source/blender/editors/mesh/CMakeLists.txt +++ b/source/blender/editors/mesh/CMakeLists.txt @@ -45,7 +45,7 @@ set(SRC editmesh_preselect_elem.c editmesh_rip.c editmesh_rip_edge.c - editmesh_select.c + editmesh_select.cc editmesh_select_similar.c editmesh_tools.c editmesh_undo.c diff --git a/source/blender/editors/mesh/editmesh_loopcut.c b/source/blender/editors/mesh/editmesh_loopcut.c index 591e06be80c..46d6cb4d006 100644 --- a/source/blender/editors/mesh/editmesh_loopcut.c +++ b/source/blender/editors/mesh/editmesh_loopcut.c @@ -226,7 +226,7 @@ static void ringsel_finish(bContext *C, wmOperator *op) } else { /* XXX Is this piece of code ever used now? Simple loop select is now - * in editmesh_select.c (around line 1000)... */ + * in editmesh_select.cc (around line 1000)... */ /* sets as active, useful for other tools */ if (em->selectmode & SCE_SELECT_VERTEX) { /* low priority TODO: get vertrex close to mouse. */ diff --git a/source/blender/editors/mesh/editmesh_select.c b/source/blender/editors/mesh/editmesh_select.cc index 34f7301c4b1..d5392c7984d 100644 --- a/source/blender/editors/mesh/editmesh_select.c +++ b/source/blender/editors/mesh/editmesh_select.cc @@ -7,17 +7,16 @@ #include "MEM_guardedalloc.h" -#include "BLI_array.h" #include "BLI_bitmap.h" #include "BLI_heap.h" #include "BLI_linklist.h" -#include "BLI_linklist_stack.h" #include "BLI_listbase.h" #include "BLI_math.h" #include "BLI_math_bits.h" #include "BLI_rand.h" #include "BLI_string.h" #include "BLI_utildefines_stack.h" +#include "BLI_vector.hh" #include "BKE_context.h" #include "BKE_customdata.h" @@ -182,11 +181,11 @@ static BMElem *edbm_select_id_bm_elem_get(Base **bases, const uint sel_id, uint return (BMElem *)BM_vert_at_index_find_or_table(em->bm, elem_id); default: BLI_assert(0); - return NULL; + return nullptr; } } - return NULL; + return nullptr; } /** \} */ @@ -218,8 +217,8 @@ struct NearestVertUserData { bool use_cycle; int cycle_index_prev; - struct NearestVertUserData_Hit hit; - struct NearestVertUserData_Hit hit_cycle; + NearestVertUserData_Hit hit; + NearestVertUserData_Hit hit_cycle; }; static void findnearestvert__doClosest(void *userData, @@ -227,7 +226,7 @@ static void findnearestvert__doClosest(void *userData, const float screen_co[2], int index) { - struct NearestVertUserData *data = userData; + NearestVertUserData *data = static_cast<NearestVertUserData *>(userData); float dist_test, dist_test_bias; dist_test = dist_test_bias = len_manhattan_v2v2(data->mval_fl, screen_co); @@ -244,7 +243,7 @@ static void findnearestvert__doClosest(void *userData, } if (data->use_cycle) { - if ((data->hit_cycle.vert == NULL) && (index > data->cycle_index_prev) && + if ((data->hit_cycle.vert == nullptr) && (index > data->cycle_index_prev) && (dist_test_bias < FIND_NEAR_CYCLE_THRESHOLD_MIN)) { data->hit_cycle.dist_bias = dist_test_bias; data->hit_cycle.dist = dist_test; @@ -281,7 +280,7 @@ BMVert *EDBM_vert_find_nearest_ex(ViewContext *vc, eve = (BMVert *)edbm_select_id_bm_elem_get(bases, index, &base_index); } else { - eve = NULL; + eve = nullptr; } } @@ -294,15 +293,15 @@ BMVert *EDBM_vert_find_nearest_ex(ViewContext *vc, return eve; } } - return NULL; + return nullptr; } - struct NearestVertUserData data = {{0}}; - const struct NearestVertUserData_Hit *hit = NULL; + NearestVertUserData data = {{0}}; + const NearestVertUserData_Hit *hit = nullptr; const eV3DProjTest clip_flag = RV3D_CLIPPING_ENABLED(vc->v3d, vc->rv3d) ? V3D_PROJ_TEST_CLIP_DEFAULT : V3D_PROJ_TEST_CLIP_DEFAULT & ~V3D_PROJ_TEST_CLIP_BB; - BMesh *prev_select_bm = NULL; + BMesh *prev_select_bm = nullptr; static struct { int index; @@ -345,8 +344,8 @@ BMVert *EDBM_vert_find_nearest_ex(ViewContext *vc, } } - if (hit == NULL) { - return NULL; + if (hit == nullptr) { + return nullptr; } prev_select.index = hit->index; @@ -360,7 +359,7 @@ BMVert *EDBM_vert_find_nearest(ViewContext *vc, float *dist_px_manhattan_p) { BKE_view_layer_synced_ensure(vc->scene, vc->view_layer); Base *base = BKE_view_layer_base_find(vc->view_layer, vc->obact); - return EDBM_vert_find_nearest_ex(vc, dist_px_manhattan_p, false, false, &base, 1, NULL); + return EDBM_vert_find_nearest_ex(vc, dist_px_manhattan_p, false, false, &base, 1, nullptr); } /* find the distance to the edge we already have */ @@ -376,7 +375,7 @@ static void find_nearest_edge_center__doZBuf(void *userData, const float screen_co_b[2], int UNUSED(index)) { - struct NearestEdgeUserData_ZBuf *data = userData; + NearestEdgeUserData_ZBuf *data = static_cast<NearestEdgeUserData_ZBuf *>(userData); if (eed == data->edge_test) { float dist_test; @@ -409,15 +408,15 @@ struct NearestEdgeUserData { bool use_cycle; int cycle_index_prev; - struct NearestEdgeUserData_Hit hit; - struct NearestEdgeUserData_Hit hit_cycle; + NearestEdgeUserData_Hit hit; + NearestEdgeUserData_Hit hit_cycle; }; /* NOTE: uses v3d, so needs active 3d window. */ static void find_nearest_edge__doClosest( void *userData, BMEdge *eed, const float screen_co_a[2], const float screen_co_b[2], int index) { - struct NearestEdgeUserData *data = userData; + NearestEdgeUserData *data = static_cast<NearestEdgeUserData *>(userData); float dist_test, dist_test_bias; float fac = line_point_factor_v2(data->mval_fl, screen_co_a, screen_co_b); @@ -463,7 +462,7 @@ static void find_nearest_edge__doClosest( } if (data->use_cycle) { - if ((data->hit_cycle.edge == NULL) && (index > data->cycle_index_prev) && + if ((data->hit_cycle.edge == nullptr) && (index > data->cycle_index_prev) && (dist_test_bias < FIND_NEAR_CYCLE_THRESHOLD_MIN)) { float screen_co_mid[2]; @@ -507,7 +506,7 @@ BMEdge *EDBM_edge_find_nearest_ex(ViewContext *vc, eed = (BMEdge *)edbm_select_id_bm_elem_get(bases, index, &base_index); } else { - eed = NULL; + eed = nullptr; } } @@ -517,7 +516,7 @@ BMEdge *EDBM_edge_find_nearest_ex(ViewContext *vc, /* exception for faces (verts don't need this) */ if (r_dist_center_px_manhattan && eed) { - struct NearestEdgeUserData_ZBuf data; + NearestEdgeUserData_ZBuf data; data.mval_fl[0] = vc->mval[0]; data.mval_fl[1] = vc->mval[1]; @@ -544,14 +543,14 @@ BMEdge *EDBM_edge_find_nearest_ex(ViewContext *vc, return eed; } } - return NULL; + return nullptr; } - struct NearestEdgeUserData data = {{0}}; - const struct NearestEdgeUserData_Hit *hit = NULL; + NearestEdgeUserData data = {{0}}; + const NearestEdgeUserData_Hit *hit = nullptr; /* interpolate along the edge before doing a clipping plane test */ const eV3DProjTest clip_flag = V3D_PROJ_TEST_CLIP_DEFAULT & ~V3D_PROJ_TEST_CLIP_BB; - BMesh *prev_select_bm = NULL; + BMesh *prev_select_bm = nullptr; static struct { int index; @@ -596,8 +595,8 @@ BMEdge *EDBM_edge_find_nearest_ex(ViewContext *vc, } } - if (hit == NULL) { - return NULL; + if (hit == nullptr) { + return nullptr; } if (r_dist_center_px_manhattan) { @@ -616,7 +615,7 @@ BMEdge *EDBM_edge_find_nearest(ViewContext *vc, float *dist_px_manhattan_p) BKE_view_layer_synced_ensure(vc->scene, vc->view_layer); Base *base = BKE_view_layer_base_find(vc->view_layer, vc->obact); return EDBM_edge_find_nearest_ex( - vc, dist_px_manhattan_p, NULL, false, false, NULL, &base, 1, NULL); + vc, dist_px_manhattan_p, nullptr, false, false, nullptr, &base, 1, nullptr); } /* find the distance to the face we already have */ @@ -631,7 +630,7 @@ static void find_nearest_face_center__doZBuf(void *userData, const float screen_co[2], int UNUSED(index)) { - struct NearestFaceUserData_ZBuf *data = userData; + NearestFaceUserData_ZBuf *data = static_cast<NearestFaceUserData_ZBuf *>(userData); if (efa == data->face_test) { const float dist_test = len_manhattan_v2v2(data->mval_fl, screen_co); @@ -655,8 +654,8 @@ struct NearestFaceUserData { bool use_cycle; int cycle_index_prev; - struct NearestFaceUserData_Hit hit; - struct NearestFaceUserData_Hit hit_cycle; + NearestFaceUserData_Hit hit; + NearestFaceUserData_Hit hit_cycle; }; static void findnearestface__doClosest(void *userData, @@ -664,7 +663,7 @@ static void findnearestface__doClosest(void *userData, const float screen_co[2], int index) { - struct NearestFaceUserData *data = userData; + NearestFaceUserData *data = static_cast<NearestFaceUserData *>(userData); float dist_test, dist_test_bias; dist_test = dist_test_bias = len_manhattan_v2v2(data->mval_fl, screen_co); @@ -681,7 +680,7 @@ static void findnearestface__doClosest(void *userData, } if (data->use_cycle) { - if ((data->hit_cycle.face == NULL) && (index > data->cycle_index_prev) && + if ((data->hit_cycle.face == nullptr) && (index > data->cycle_index_prev) && (dist_test_bias < FIND_NEAR_CYCLE_THRESHOLD_MIN)) { data->hit_cycle.dist_bias = dist_test_bias; data->hit_cycle.dist = dist_test; @@ -732,7 +731,7 @@ BMFace *EDBM_face_find_nearest_ex(ViewContext *vc, efa = (BMFace *)edbm_select_id_bm_elem_get(bases, index, &base_index); } else { - efa = NULL; + efa = nullptr; } } @@ -742,7 +741,7 @@ BMFace *EDBM_face_find_nearest_ex(ViewContext *vc, /* exception for faces (verts don't need this) */ if (r_dist_center && efa) { - struct NearestFaceUserData_ZBuf data; + NearestFaceUserData_ZBuf data; data.mval_fl[0] = vc->mval[0]; data.mval_fl[1] = vc->mval[1]; @@ -767,13 +766,13 @@ BMFace *EDBM_face_find_nearest_ex(ViewContext *vc, return efa; } } - return NULL; + return nullptr; } - struct NearestFaceUserData data = {{0}}; - const struct NearestFaceUserData_Hit *hit = NULL; + NearestFaceUserData data = {{0}}; + const NearestFaceUserData_Hit *hit = nullptr; const eV3DProjTest clip_flag = V3D_PROJ_TEST_CLIP_DEFAULT; - BMesh *prev_select_bm = NULL; + BMesh *prev_select_bm = nullptr; static struct { int index; @@ -816,8 +815,8 @@ BMFace *EDBM_face_find_nearest_ex(ViewContext *vc, } } - if (hit == NULL) { - return NULL; + if (hit == nullptr) { + return nullptr; } if (r_dist_center) { @@ -836,7 +835,7 @@ BMFace *EDBM_face_find_nearest(ViewContext *vc, float *dist_px_manhattan_p) BKE_view_layer_synced_ensure(vc->scene, vc->view_layer); Base *base = BKE_view_layer_base_find(vc->view_layer, vc->obact); return EDBM_face_find_nearest_ex( - vc, dist_px_manhattan_p, NULL, false, false, false, NULL, &base, 1, NULL); + vc, dist_px_manhattan_p, nullptr, false, false, false, nullptr, &base, 1, nullptr); } #undef FIND_NEAR_SELECT_BIAS @@ -876,7 +875,7 @@ static bool unified_findnearest(ViewContext *vc, BMFace *ele; int base_index; } f, f_zbuf; - } hit = {{NULL}}; + } hit = {{nullptr}}; /* no afterqueue (yet), so we check it now, otherwise the em_xxxofs indices are bad */ @@ -884,10 +883,10 @@ static bool unified_findnearest(ViewContext *vc, float dist_center = 0.0f; float *dist_center_p = (em->selectmode & (SCE_SELECT_EDGE | SCE_SELECT_VERTEX)) ? &dist_center : - NULL; + nullptr; uint base_index = 0; - BMFace *efa_zbuf = NULL; + BMFace *efa_zbuf = nullptr; BMFace *efa_test = EDBM_face_find_nearest_ex( vc, &dist, dist_center_p, true, true, use_cycle, &efa_zbuf, bases, bases_len, &base_index); @@ -906,10 +905,10 @@ static bool unified_findnearest(ViewContext *vc, if ((dist > 0.0f) && (em->selectmode & SCE_SELECT_EDGE)) { float dist_center = 0.0f; - float *dist_center_p = (em->selectmode & SCE_SELECT_VERTEX) ? &dist_center : NULL; + float *dist_center_p = (em->selectmode & SCE_SELECT_VERTEX) ? &dist_center : nullptr; uint base_index = 0; - BMEdge *eed_zbuf = NULL; + BMEdge *eed_zbuf = nullptr; BMEdge *eed_test = EDBM_edge_find_nearest_ex( vc, &dist, dist_center_p, true, use_cycle, &eed_zbuf, bases, bases_len, &base_index); @@ -939,11 +938,11 @@ static bool unified_findnearest(ViewContext *vc, /* Return only one of 3 pointers, for front-buffer redraws. */ if (hit.v.ele) { - hit.f.ele = NULL; - hit.e.ele = NULL; + hit.f.ele = nullptr; + hit.e.ele = nullptr; } else if (hit.e.ele) { - hit.f.ele = NULL; + hit.f.ele = nullptr; } /* there may be a face under the cursor, who's center if too far away @@ -960,7 +959,7 @@ static bool unified_findnearest(ViewContext *vc, } /* Only one element type will be non-null. */ - BLI_assert(((hit.v.ele != NULL) + (hit.e.ele != NULL) + (hit.f.ele != NULL)) <= 1); + BLI_assert(((hit.v.ele != nullptr) + (hit.e.ele != nullptr) + (hit.f.ele != nullptr)) <= 1); if (hit.v.ele) { *r_base_index = hit.v.base_index; @@ -1010,35 +1009,34 @@ bool EDBM_unified_findnearest_from_raycast(ViewContext *vc, int *r_base_index_vert, int *r_base_index_edge, int *r_base_index_face, - struct BMVert **r_eve, - struct BMEdge **r_eed, - struct BMFace **r_efa) + BMVert **r_eve, + BMEdge **r_eed, + BMFace **r_efa) { - - const float mval_fl[2] = {UNPACK2(vc->mval)}; + const float mval_fl[2] = {float(vc->mval[0]), float(vc->mval[1])}; float ray_origin[3], ray_direction[3]; struct { uint base_index; BMElem *ele; - } best = {0, NULL}; + } best = {0, nullptr}; /* Currently unused, keep since we may want to pick the best. */ UNUSED_VARS(best); struct { uint base_index; BMElem *ele; - } best_vert = {0, NULL}; + } best_vert = {0, nullptr}; struct { uint base_index; BMElem *ele; - } best_edge = {0, NULL}; + } best_edge = {0, nullptr}; struct { uint base_index; BMElem *ele; - } best_face = {0, NULL}; + } best_face = {0, nullptr}; if (ED_view3d_win_to_ray_clipped( vc->depsgraph, vc->region, vc->v3d, mval_fl, ray_origin, ray_direction, true)) { @@ -1047,9 +1045,9 @@ bool EDBM_unified_findnearest_from_raycast(ViewContext *vc, float dist_sq_best_edge = FLT_MAX; float dist_sq_best_face = FLT_MAX; - const bool use_vert = (r_eve != NULL); - const bool use_edge = (r_eed != NULL); - const bool use_face = (r_efa != NULL); + const bool use_vert = (r_eve != nullptr); + const bool use_edge = (r_eed != nullptr); + const bool use_face = (r_efa != nullptr); for (uint base_index = 0; base_index < bases_len; base_index++) { Base *base_iter = bases[base_index]; @@ -1063,15 +1061,16 @@ bool EDBM_unified_findnearest_from_raycast(ViewContext *vc, copy_m3_m4(imat3, obedit->obmat); invert_m3(imat3); - const float(*coords)[3] = NULL; + const float(*coords)[3] = nullptr; { - Mesh *me_eval = (Mesh *)DEG_get_evaluated_id(vc->depsgraph, obedit->data); + Mesh *me_eval = (Mesh *)DEG_get_evaluated_id(vc->depsgraph, + static_cast<ID *>(obedit->data)); if (me_eval->runtime.edit_data) { coords = me_eval->runtime.edit_data->vertexCos; } } - if (coords != NULL) { + if (coords != nullptr) { BM_mesh_elem_index_ensure(bm, BM_VERT); } @@ -1221,13 +1220,13 @@ bool EDBM_unified_findnearest_from_raycast(ViewContext *vc, *r_base_index_face = best_face.base_index; if (r_eve) { - *r_eve = NULL; + *r_eve = nullptr; } if (r_eed) { - *r_eed = NULL; + *r_eed = nullptr; } if (r_efa) { - *r_efa = NULL; + *r_efa = nullptr; } if (best_vert.ele) { @@ -1240,7 +1239,7 @@ bool EDBM_unified_findnearest_from_raycast(ViewContext *vc, *r_efa = (BMFace *)best_face.ele; } - return (best_vert.ele != NULL || best_edge.ele != NULL || best_face.ele != NULL); + return (best_vert.ele != nullptr || best_edge.ele != nullptr || best_face.ele != nullptr); } /** \} */ @@ -1257,7 +1256,6 @@ static int edbm_select_similar_region_exec(bContext *C, wmOperator *op) bool changed = false; /* group vars */ - int *groups_array; int(*group_index)[2]; int group_tot; int i; @@ -1267,9 +1265,10 @@ static int edbm_select_similar_region_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; } - groups_array = MEM_mallocN(sizeof(*groups_array) * bm->totfacesel, __func__); + int *groups_array = static_cast<int *>( + MEM_mallocN(sizeof(*groups_array) * bm->totfacesel, __func__)); group_tot = BM_mesh_calc_face_groups( - bm, groups_array, &group_index, NULL, NULL, NULL, BM_ELEM_SELECT, BM_VERT); + bm, groups_array, &group_index, nullptr, nullptr, nullptr, BM_ELEM_SELECT, BM_VERT); BM_mesh_elem_table_ensure(bm, BM_FACE); @@ -1280,7 +1279,7 @@ static int edbm_select_similar_region_exec(bContext *C, wmOperator *op) const int fg_sta = group_index[i][0]; const int fg_len = group_index[i][1]; int j; - BMFace **fg = MEM_mallocN(sizeof(*fg) * fg_len, __func__); + BMFace **fg = static_cast<BMFace **>(MEM_mallocN(sizeof(*fg) * fg_len, __func__)); for (j = 0; j < fg_len; j++) { fg[j] = BM_face_at_index(bm, groups_array[fg_sta + j]); @@ -1292,8 +1291,8 @@ static int edbm_select_similar_region_exec(bContext *C, wmOperator *op) if (tot) { LinkData *link; - while ((link = BLI_pophead(&faces_regions))) { - BMFace *f, **faces = link->data; + while ((link = static_cast<LinkData *>(BLI_pophead(&faces_regions)))) { + BMFace *f, **faces = static_cast<BMFace **>(link->data); while ((f = *(faces++))) { BM_face_select_set(bm, f, true); } @@ -1309,7 +1308,7 @@ static int edbm_select_similar_region_exec(bContext *C, wmOperator *op) MEM_freeN(group_index); if (changed) { - DEG_id_tag_update(obedit->data, ID_RECALC_SELECT); + DEG_id_tag_update(static_cast<ID *>(obedit->data), ID_RECALC_SELECT); WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data); } else { @@ -1379,9 +1378,9 @@ static int edbm_select_mode_invoke(bContext *C, wmOperator *op, const wmEvent *e return edbm_select_mode_exec(C, op); } -static char *edbm_select_mode_get_description(struct bContext *UNUSED(C), - struct wmOperatorType *UNUSED(op), - struct PointerRNA *values) +static char *edbm_select_mode_get_description(bContext *UNUSED(C), + wmOperatorType *UNUSED(op), + PointerRNA *values) { const int type = RNA_enum_get(values, "type"); @@ -1407,7 +1406,7 @@ static char *edbm_select_mode_get_description(struct bContext *UNUSED(C), } } - return NULL; + return nullptr; } void MESH_OT_select_mode(wmOperatorType *ot) @@ -1418,7 +1417,7 @@ void MESH_OT_select_mode(wmOperatorType *ot) {0, "DISABLE", 0, "Disable", "Disable selected markers"}, {1, "ENABLE", 0, "Enable", "Enable selected markers"}, {2, "TOGGLE", 0, "Toggle", "Toggle disabled flag for selected markers"}, - {0, NULL, 0, NULL, NULL}, + {0, nullptr, 0, nullptr, nullptr}, }; /* identifiers */ @@ -1438,11 +1437,11 @@ void MESH_OT_select_mode(wmOperatorType *ot) /* properties */ /* Hide all, not to show redo panel. */ prop = RNA_def_boolean(ot->srna, "use_extend", false, "Extend", ""); - RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); + RNA_def_property_flag(prop, PropertyFlag(PROP_HIDDEN | PROP_SKIP_SAVE)); prop = RNA_def_boolean(ot->srna, "use_expand", false, "Expand", ""); - RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); + RNA_def_property_flag(prop, PropertyFlag(PROP_HIDDEN | PROP_SKIP_SAVE)); ot->prop = prop = RNA_def_enum(ot->srna, "type", rna_enum_mesh_select_mode_items, 0, "Type", ""); - RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); + RNA_def_property_flag(prop, PropertyFlag(PROP_HIDDEN | PROP_SKIP_SAVE)); prop = RNA_def_enum( ot->srna, "action", actions_items, 2, "Action", "Selection action to execute"); @@ -1475,7 +1474,8 @@ static void walker_select_count(BMEditMesh *em, BMW_FLAG_TEST_HIDDEN, BMW_NIL_LAY); - for (ele = BMW_begin(&walker, start); ele; ele = BMW_step(&walker)) { + for (ele = static_cast<BMElem *>(BMW_begin(&walker, start)); ele; + ele = static_cast<BMElem *>(BMW_step(&walker))) { r_count_by_select[BM_elem_flag_test(ele, BM_ELEM_SELECT) ? 1 : 0] += 1; /* Early exit when mixed (could be optional if needed. */ @@ -1503,7 +1503,8 @@ static void walker_select(BMEditMesh *em, int walkercode, void *start, const boo BMW_FLAG_TEST_HIDDEN, BMW_NIL_LAY); - for (ele = BMW_begin(&walker, start); ele; ele = BMW_step(&walker)) { + for (ele = static_cast<BMElem *>(BMW_begin(&walker, start)); ele; + ele = static_cast<BMElem *>(BMW_step(&walker))) { if (!select) { BM_select_history_remove(bm, ele); } @@ -1529,7 +1530,6 @@ static int edbm_loop_multiselect_exec(bContext *C, wmOperator *op) } BMEdge *eed; - BMEdge **edarray; int edindex; BMIter iter; int totedgesel = 0; @@ -1540,7 +1540,8 @@ static int edbm_loop_multiselect_exec(bContext *C, wmOperator *op) } } - edarray = MEM_mallocN(sizeof(BMEdge *) * totedgesel, "edge array"); + BMEdge **edarray = static_cast<BMEdge **>( + MEM_mallocN(sizeof(BMEdge *) * totedgesel, "edge array")); edindex = 0; BM_ITER_MESH (eed, &iter, em->bm, BM_EDGES_OF_MESH) { @@ -1573,7 +1574,7 @@ static int edbm_loop_multiselect_exec(bContext *C, wmOperator *op) MEM_freeN(edarray); // if (EM_texFaceCheck()) - DEG_id_tag_update(obedit->data, ID_RECALC_SELECT); + DEG_id_tag_update(static_cast<ID *>(obedit->data), ID_RECALC_SELECT); WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data); } MEM_freeN(objects); @@ -1664,10 +1665,10 @@ static void mouse_mesh_loop_edge( static bool mouse_mesh_loop( bContext *C, const int mval[2], bool extend, bool deselect, bool toggle, bool ring) { - Base *basact = NULL; - BMVert *eve = NULL; - BMEdge *eed = NULL; - BMFace *efa = NULL; + Base *basact = nullptr; + BMVert *eve = nullptr; + BMEdge *eed = nullptr; + BMFace *efa = nullptr; ViewContext vc; BMEditMesh *em; @@ -1696,13 +1697,13 @@ static bool mouse_mesh_loop( em = vc.em; } else { - em = NULL; + em = nullptr; } } em_original->selectmode = selectmode; - if (em == NULL || eed == NULL) { + if (em == nullptr || eed == nullptr) { MEM_freeN(bases); return false; } @@ -1740,7 +1741,7 @@ static bool mouse_mesh_loop( } EDBM_flag_disable_all(em_iter, BM_ELEM_SELECT); - DEG_id_tag_update(ob_iter->data, ID_RECALC_SELECT); + DEG_id_tag_update(static_cast<ID *>(ob_iter->data), ID_RECALC_SELECT); } } @@ -1794,7 +1795,7 @@ static bool mouse_mesh_loop( BMFace *f; BMIter iterf; float best_dist = FLT_MAX; - efa = NULL; + efa = nullptr; /* We can't be sure this has already been set... */ ED_view3d_init_mats_rv3d(vc.obedit, vc.rv3d); @@ -1825,7 +1826,7 @@ static bool mouse_mesh_loop( MEM_freeN(bases); - DEG_id_tag_update(vc.obedit->data, ID_RECALC_SELECT); + DEG_id_tag_update(static_cast<ID *>(vc.obedit->data), ID_RECALC_SELECT); WM_event_add_notifier(C, NC_GEOM | ND_SELECT, vc.obedit->data); return true; @@ -1943,7 +1944,7 @@ static int edbm_select_all_exec(bContext *C, wmOperator *op) EDBM_selectmode_flush(em); break; } - DEG_id_tag_update(obedit->data, ID_RECALC_SELECT); + DEG_id_tag_update(static_cast<ID *>(obedit->data), ID_RECALC_SELECT); WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data); } @@ -1991,7 +1992,7 @@ static int edbm_faces_select_interior_exec(bContext *C, wmOperator *UNUSED(op)) continue; } - DEG_id_tag_update(obedit->data, ID_RECALC_SELECT); + DEG_id_tag_update(static_cast<ID *>(obedit->data), ID_RECALC_SELECT); WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data); } MEM_freeN(objects); @@ -2023,14 +2024,14 @@ void MESH_OT_select_interior_faces(wmOperatorType *ot) * Gets called via generic mouse select operator. * \{ */ -bool EDBM_select_pick(bContext *C, const int mval[2], const struct SelectPick_Params *params) +bool EDBM_select_pick(bContext *C, const int mval[2], const SelectPick_Params *params) { ViewContext vc; int base_index_active = -1; - BMVert *eve = NULL; - BMEdge *eed = NULL; - BMFace *efa = NULL; + BMVert *eve = nullptr; + BMEdge *eed = nullptr; + BMFace *efa = nullptr; /* setup view context for argument to callbacks */ em_setup_viewcontext(C, &vc); @@ -2055,7 +2056,7 @@ bool EDBM_select_pick(bContext *C, const int mval[2], const struct SelectPick_Pa Base *base_iter = bases[base_index]; Object *ob_iter = base_iter->object; EDBM_flag_disable_all(BKE_editmesh_from_object(ob_iter), BM_ELEM_SELECT); - DEG_id_tag_update(ob_iter->data, ID_RECALC_SELECT); + DEG_id_tag_update(static_cast<ID *>(ob_iter->data), ID_RECALC_SELECT); WM_event_add_notifier(C, NC_GEOM | ND_SELECT, ob_iter->data); } changed = true; @@ -2199,7 +2200,7 @@ bool EDBM_select_pick(bContext *C, const int mval[2], const struct SelectPick_Pa if (efa->mat_nr != vc.obedit->actcol - 1) { vc.obedit->actcol = efa->mat_nr + 1; vc.em->mat_nr = efa->mat_nr; - WM_event_add_notifier(C, NC_MATERIAL | ND_SHADING_LINKS, NULL); + WM_event_add_notifier(C, NC_MATERIAL | ND_SHADING_LINKS, nullptr); } /* Change active face-map on object. */ @@ -2227,7 +2228,7 @@ bool EDBM_select_pick(bContext *C, const int mval[2], const struct SelectPick_Pa ED_object_base_activate(C, basact); } - DEG_id_tag_update(vc.obedit->data, ID_RECALC_SELECT); + DEG_id_tag_update(static_cast<ID *>(vc.obedit->data), ID_RECALC_SELECT); WM_event_add_notifier(C, NC_GEOM | ND_SELECT, vc.obedit->data); changed = true; @@ -2249,7 +2250,7 @@ static void edbm_strip_selections(BMEditMesh *em) BMEditSelection *ese, *nextese; if (!(em->selectmode & SCE_SELECT_VERTEX)) { - ese = em->bm->selected.first; + ese = static_cast<BMEditSelection *>(em->bm->selected.first); while (ese) { nextese = ese->next; if (ese->htype == BM_VERT) { @@ -2259,7 +2260,7 @@ static void edbm_strip_selections(BMEditMesh *em) } } if (!(em->selectmode & SCE_SELECT_EDGE)) { - ese = em->bm->selected.first; + ese = static_cast<BMEditSelection *>(em->bm->selected.first); while (ese) { nextese = ese->next; if (ese->htype == BM_EDGE) { @@ -2269,7 +2270,7 @@ static void edbm_strip_selections(BMEditMesh *em) } } if (!(em->selectmode & SCE_SELECT_FACE)) { - ese = em->bm->selected.first; + ese = static_cast<BMEditSelection *>(em->bm->selected.first); while (ese) { nextese = ese->next; if (ese->htype == BM_FACE) { @@ -2450,14 +2451,14 @@ bool EDBM_selectmode_toggle_multi(bContext *C, ViewLayer *view_layer = CTX_data_view_layer(C); ToolSettings *ts = CTX_data_tool_settings(C); Object *obedit = CTX_data_edit_object(C); - BMEditMesh *em = NULL; + BMEditMesh *em = nullptr; bool ret = false; if (obedit && obedit->type == OB_MESH) { em = BKE_editmesh_from_object(obedit); } - if (em == NULL) { + if (em == nullptr) { return ret; } @@ -2549,16 +2550,17 @@ bool EDBM_selectmode_toggle_multi(bContext *C, if (ret == true) { ts->selectmode = em->selectmode; - em = NULL; + em = nullptr; for (uint ob_index = 0; ob_index < objects_len; ob_index++) { Object *ob_iter = objects[ob_index]; BMEditMesh *em_iter = BKE_editmesh_from_object(ob_iter); em_iter->selectmode = ts->selectmode; EDBM_selectmode_set(em_iter); - DEG_id_tag_update(ob_iter->data, ID_RECALC_COPY_ON_WRITE | ID_RECALC_SELECT); + DEG_id_tag_update(static_cast<ID *>(ob_iter->data), + ID_RECALC_COPY_ON_WRITE | ID_RECALC_SELECT); WM_event_add_notifier(C, NC_GEOM | ND_SELECT, ob_iter->data); } - WM_main_add_notifier(NC_SCENE | ND_TOOLSETTINGS, NULL); + WM_main_add_notifier(NC_SCENE | ND_TOOLSETTINGS, nullptr); DEG_id_tag_update(&scene->id, ID_RECALC_COPY_ON_WRITE); } @@ -2573,11 +2575,11 @@ bool EDBM_selectmode_set_multi(bContext *C, const short selectmode) { Object *obedit = CTX_data_edit_object(C); - BMEditMesh *em = NULL; + BMEditMesh *em = nullptr; if (obedit && obedit->type == OB_MESH) { em = BKE_editmesh_from_object(obedit); } - if (em == NULL) { + if (em == nullptr) { return changed; } } @@ -2601,7 +2603,8 @@ bool EDBM_selectmode_set_multi(bContext *C, const short selectmode) if (em_iter->selectmode != ts->selectmode) { em_iter->selectmode = ts->selectmode; EDBM_selectmode_set(em_iter); - DEG_id_tag_update(ob_iter->data, ID_RECALC_COPY_ON_WRITE | ID_RECALC_SELECT); + DEG_id_tag_update(static_cast<ID *>(ob_iter->data), + ID_RECALC_COPY_ON_WRITE | ID_RECALC_SELECT); WM_event_add_notifier(C, NC_GEOM | ND_SELECT, ob_iter->data); changed = true; } @@ -2609,7 +2612,7 @@ bool EDBM_selectmode_set_multi(bContext *C, const short selectmode) MEM_freeN(objects); if (changed) { - WM_main_add_notifier(NC_SCENE | ND_TOOLSETTINGS, NULL); + WM_main_add_notifier(NC_SCENE | ND_TOOLSETTINGS, nullptr); DEG_id_tag_update(&scene->id, ID_RECALC_COPY_ON_WRITE); } return changed; @@ -2706,7 +2709,7 @@ void EDBM_select_swap(BMEditMesh *em) /* exported for UV */ } } -bool EDBM_mesh_deselect_all_multi_ex(struct Base **bases, const uint bases_len) +bool EDBM_mesh_deselect_all_multi_ex(Base **bases, const uint bases_len) { bool changed_multi = false; for (uint base_index = 0; base_index < bases_len; base_index++) { @@ -2719,13 +2722,13 @@ bool EDBM_mesh_deselect_all_multi_ex(struct Base **bases, const uint bases_len) } EDBM_flag_disable_all(em_iter, BM_ELEM_SELECT); - DEG_id_tag_update(ob_iter->data, ID_RECALC_SELECT); + DEG_id_tag_update(static_cast<ID *>(ob_iter->data), ID_RECALC_SELECT); changed_multi = true; } return changed_multi; } -bool EDBM_mesh_deselect_all_multi(struct bContext *C) +bool EDBM_mesh_deselect_all_multi(bContext *C) { Depsgraph *depsgraph = CTX_data_ensure_evaluated_depsgraph(C); ViewContext vc; @@ -2739,7 +2742,7 @@ bool EDBM_mesh_deselect_all_multi(struct bContext *C) } bool EDBM_selectmode_disable_multi_ex(Scene *scene, - struct Base **bases, + Base **bases, const uint bases_len, const short selectmode_disable, const short selectmode_fallback) @@ -2757,7 +2760,7 @@ bool EDBM_selectmode_disable_multi_ex(Scene *scene, return changed_multi; } -bool EDBM_selectmode_disable_multi(struct bContext *C, +bool EDBM_selectmode_disable_multi(bContext *C, const short selectmode_disable, const short selectmode_fallback) { @@ -2767,7 +2770,7 @@ bool EDBM_selectmode_disable_multi(struct bContext *C, ED_view3d_viewcontext_init(C, &vc, depsgraph); uint bases_len = 0; Base **bases = BKE_view_layer_array_from_bases_in_edit_mode_unique_data( - vc.scene, vc.view_layer, NULL, &bases_len); + vc.scene, vc.view_layer, nullptr, &bases_len); bool changed_multi = EDBM_selectmode_disable_multi_ex( scene, bases, bases_len, selectmode_disable, selectmode_fallback); MEM_freeN(bases); @@ -2832,7 +2835,7 @@ static float bm_interior_face_group_calc_cost(ListBase *ls, const float *edge_le float area = 0.0f; float cost = 0.0f; bool found = false; - LISTBASE_FOREACH (struct BMFaceLink *, f_link, ls) { + LISTBASE_FOREACH (BMFaceLink *, f_link, ls) { BMFace *f = f_link->face; area += f_link->area; int i = BM_elem_index_get(f); @@ -2881,7 +2884,8 @@ bool EDBM_select_interior_faces(BMEditMesh *em) BMIter iter; bool changed = false; - float *edge_lengths = MEM_mallocN(sizeof(*edge_lengths) * bm->totedge, __func__); + float *edge_lengths = static_cast<float *>( + MEM_mallocN(sizeof(*edge_lengths) * bm->totedge, __func__)); { bool has_nonmanifold = false; @@ -2910,15 +2914,16 @@ bool EDBM_select_interior_faces(BMEditMesh *em) } /* group vars */ - int *fgroup_array; int(*fgroup_index)[2]; int fgroup_len; - fgroup_array = MEM_mallocN(sizeof(*fgroup_array) * bm->totface, __func__); + int *fgroup_array = static_cast<int *>( + MEM_mallocN(sizeof(*fgroup_array) * bm->totface, __func__)); fgroup_len = BM_mesh_calc_face_groups( - bm, fgroup_array, &fgroup_index, bm_interior_loop_filter_fn, NULL, NULL, 0, BM_EDGE); + bm, fgroup_array, &fgroup_index, bm_interior_loop_filter_fn, nullptr, nullptr, 0, BM_EDGE); - int *fgroup_recalc_stack = MEM_mallocN(sizeof(*fgroup_recalc_stack) * fgroup_len, __func__); + int *fgroup_recalc_stack = static_cast<int *>( + MEM_mallocN(sizeof(*fgroup_recalc_stack) * fgroup_len, __func__)); STACK_DECLARE(fgroup_recalc_stack); STACK_INIT(fgroup_recalc_stack, fgroup_len); @@ -2932,8 +2937,10 @@ bool EDBM_select_interior_faces(BMEditMesh *em) } bm->elem_index_dirty |= BM_FACE; - ListBase *fgroup_listbase = MEM_callocN(sizeof(*fgroup_listbase) * fgroup_len, __func__); - struct BMFaceLink *f_link_array = MEM_callocN(sizeof(*f_link_array) * bm->totface, __func__); + ListBase *fgroup_listbase = static_cast<ListBase *>( + MEM_callocN(sizeof(*fgroup_listbase) * fgroup_len, __func__)); + BMFaceLink *f_link_array = static_cast<BMFaceLink *>( + MEM_callocN(sizeof(*f_link_array) * bm->totface, __func__)); for (int i = 0; i < fgroup_len; i++) { const int fg_sta = fgroup_index[i][0]; @@ -2943,7 +2950,7 @@ bool EDBM_select_interior_faces(BMEditMesh *em) BMFace *f = BM_face_at_index(bm, face_index); BM_elem_index_set(f, i); - struct BMFaceLink *f_link = &f_link_array[face_index]; + BMFaceLink *f_link = &f_link_array[face_index]; f_link->face = f; f_link->area = BM_face_calc_area(f); BLI_addtail(&fgroup_listbase[i], f_link); @@ -2954,8 +2961,10 @@ bool EDBM_select_interior_faces(BMEditMesh *em) MEM_freeN(fgroup_index); Heap *fgroup_heap = BLI_heap_new_ex(fgroup_len); - HeapNode **fgroup_table = MEM_mallocN(sizeof(*fgroup_table) * fgroup_len, __func__); - bool *fgroup_dirty = MEM_callocN(sizeof(*fgroup_dirty) * fgroup_len, __func__); + HeapNode **fgroup_table = static_cast<HeapNode **>( + MEM_mallocN(sizeof(*fgroup_table) * fgroup_len, __func__)); + bool *fgroup_dirty = static_cast<bool *>( + MEM_callocN(sizeof(*fgroup_dirty) * fgroup_len, __func__)); for (int i = 0; i < fgroup_len; i++) { const float cost = bm_interior_face_group_calc_cost(&fgroup_listbase[i], edge_lengths); @@ -2963,7 +2972,7 @@ bool EDBM_select_interior_faces(BMEditMesh *em) fgroup_table[i] = BLI_heap_insert(fgroup_heap, -cost, POINTER_FROM_INT(i)); } else { - fgroup_table[i] = NULL; + fgroup_table[i] = nullptr; } } @@ -2993,7 +3002,7 @@ bool EDBM_select_interior_faces(BMEditMesh *em) } else { BLI_heap_remove(fgroup_heap, fgroup_table[i]); - fgroup_table[i] = NULL; + fgroup_table[i] = nullptr; } fgroup_dirty[i] = false; } @@ -3008,13 +3017,13 @@ bool EDBM_select_interior_faces(BMEditMesh *em) } const int i_min = POINTER_AS_INT(BLI_heap_pop_min(fgroup_heap)); - BLI_assert(fgroup_table[i_min] != NULL); + BLI_assert(fgroup_table[i_min] != nullptr); BLI_assert(fgroup_dirty[i_min] == false); - fgroup_table[i_min] = NULL; + fgroup_table[i_min] = nullptr; changed = true; - struct BMFaceLink *f_link; - while ((f_link = BLI_pophead(&fgroup_listbase[i_min]))) { + BMFaceLink *f_link; + while ((f_link = static_cast<BMFaceLink *>(BLI_pophead(&fgroup_listbase[i_min])))) { BMFace *f = f_link->face; BM_face_select_set(bm, f, true); BM_elem_index_set(f, -1); /* set-dirty */ @@ -3040,21 +3049,21 @@ bool EDBM_select_interior_faces(BMEditMesh *em) /* Merge the groups. */ LISTBASE_FOREACH (LinkData *, n, &fgroup_listbase[i_b]) { - BMFace *f_iter = n->data; + BMFace *f_iter = static_cast<BMFace *>(n->data); BM_elem_index_set(f_iter, i_a); } BLI_movelisttolist(&fgroup_listbase[i_a], &fgroup_listbase[i_b]); /* This may have been added to 'fgroup_recalc_stack', instead of removing it, - * just check the heap node isn't NULL before recalculating. */ + * just check the heap node isn't nullptr before recalculating. */ BLI_heap_remove(fgroup_heap, fgroup_table[i_b]); - fgroup_table[i_b] = NULL; + fgroup_table[i_b] = nullptr; /* Keep the dirty flag as-is for 'i_b', because it may be in the 'fgroup_recalc_stack' * and we don't want to add it again. - * Instead rely on the 'fgroup_table[i_b]' being NULL as a secondary check. */ + * Instead rely on the 'fgroup_table[i_b]' being nullptr as a secondary check. */ if (fgroup_dirty[i_a] == false) { - BLI_assert(fgroup_table[i_a] != NULL); + BLI_assert(fgroup_table[i_a] != nullptr); STACK_PUSH(fgroup_recalc_stack, i_a); fgroup_dirty[i_a] = true; } @@ -3067,7 +3076,7 @@ bool EDBM_select_interior_faces(BMEditMesh *em) do { int i_other = BM_elem_index_get(l_radial_iter->f); if (!ELEM(i_other, -1, i_min)) { - if ((fgroup_table[i_other] != NULL) && (fgroup_dirty[i_other] == false)) { + if ((fgroup_table[i_other] != nullptr) && (fgroup_dirty[i_other] == false)) { #if !defined(USE_DELAY_FACE_GROUP_COST_CALC) STACK_PUSH(fgroup_recalc_stack, i_other); #endif @@ -3082,7 +3091,7 @@ bool EDBM_select_interior_faces(BMEditMesh *em) for (int index = 0; index < STACK_SIZE(fgroup_recalc_stack); index++) { const int i = fgroup_recalc_stack[index]; - if (fgroup_table[i] != NULL && fgroup_dirty[i] == true) { + if (fgroup_table[i] != nullptr && fgroup_dirty[i] == true) { /* First update edge tags. */ const float cost = bm_interior_face_group_calc_cost(&fgroup_listbase[i], edge_lengths); if (cost != FLT_MAX) { @@ -3090,7 +3099,7 @@ bool EDBM_select_interior_faces(BMEditMesh *em) } else { BLI_heap_remove(fgroup_heap, fgroup_table[i]); - fgroup_table[i] = NULL; + fgroup_table[i] = nullptr; } } fgroup_dirty[i] = false; @@ -3105,7 +3114,7 @@ bool EDBM_select_interior_faces(BMEditMesh *em) MEM_freeN(fgroup_table); MEM_freeN(fgroup_dirty); - BLI_heap_free(fgroup_heap, NULL); + BLI_heap_free(fgroup_heap, nullptr); return changed; } @@ -3126,9 +3135,7 @@ struct DelimitData { int cd_loop_offset; }; -static bool select_linked_delimit_test(BMEdge *e, - int delimit, - const struct DelimitData *delimit_data) +static bool select_linked_delimit_test(BMEdge *e, int delimit, const DelimitData *delimit_data) { BLI_assert(delimit); @@ -3208,7 +3215,7 @@ static void select_linked_delimit_validate(BMesh *bm, int *delimit) static void select_linked_delimit_begin(BMesh *bm, int delimit) { - struct DelimitData delimit_data = {0}; + DelimitData delimit_data = {0}; if (delimit & BMO_DELIM_UV) { delimit_data.cd_loop_type = CD_MLOOPUV; @@ -3439,7 +3446,7 @@ static int edbm_select_linked_exec(bContext *C, wmOperator *op) select_linked_delimit_end(em); } - DEG_id_tag_update(obedit->data, ID_RECALC_SELECT); + DEG_id_tag_update(static_cast<ID *>(obedit->data), ID_RECALC_SELECT); WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data); } @@ -3603,7 +3610,7 @@ static void edbm_select_linked_pick_ex(BMEditMesh *em, BMElem *ele, bool sel, in static int edbm_select_linked_pick_invoke(bContext *C, wmOperator *op, const wmEvent *event) { ViewContext vc; - Base *basact = NULL; + Base *basact = nullptr; BMVert *eve; BMEdge *eed; BMFace *efa; @@ -3679,7 +3686,7 @@ static int edbm_select_linked_pick_invoke(bContext *C, wmOperator *op, const wmE RNA_int_set(op->ptr, "index", index); } - DEG_id_tag_update(basact->object->data, ID_RECALC_SELECT); + DEG_id_tag_update(static_cast<ID *>(basact->object->data), ID_RECALC_SELECT); WM_event_add_notifier(C, NC_GEOM | ND_SELECT, basact->object->data); MEM_freeN(bases); @@ -3688,7 +3695,7 @@ static int edbm_select_linked_pick_invoke(bContext *C, wmOperator *op, const wmE static int edbm_select_linked_pick_exec(bContext *C, wmOperator *op) { - Object *obedit = NULL; + Object *obedit = nullptr; BMElem *ele; { @@ -3700,7 +3707,7 @@ static int edbm_select_linked_pick_exec(bContext *C, wmOperator *op) ele = EDBM_elem_from_index_any_multi(scene, view_layer, object_index, index, &obedit); } - if (ele == NULL) { + if (ele == nullptr) { return OPERATOR_CANCELLED; } @@ -3715,7 +3722,7 @@ static int edbm_select_linked_pick_exec(bContext *C, wmOperator *op) edbm_select_linked_pick_ex(em, ele, sel, delimit); - DEG_id_tag_update(obedit->data, ID_RECALC_SELECT); + DEG_id_tag_update(static_cast<ID *>(obedit->data), ID_RECALC_SELECT); WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data); return OPERATOR_FINISHED; @@ -3751,9 +3758,9 @@ void MESH_OT_select_linked_pick(wmOperatorType *ot) /* use for redo */ prop = RNA_def_int(ot->srna, "object_index", -1, -1, INT_MAX, "", "", 0, INT_MAX); - RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); + RNA_def_property_flag(prop, PropertyFlag(PROP_HIDDEN | PROP_SKIP_SAVE)); prop = RNA_def_int(ot->srna, "index", -1, -1, INT_MAX, "", "", 0, INT_MAX); - RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); + RNA_def_property_flag(prop, PropertyFlag(PROP_HIDDEN | PROP_SKIP_SAVE)); } /** \} */ @@ -3812,7 +3819,7 @@ static int edbm_select_face_by_sides_exec(bContext *C, wmOperator *op) EDBM_selectmode_flush(em); - DEG_id_tag_update(obedit->data, ID_RECALC_SELECT); + DEG_id_tag_update(static_cast<ID *>(obedit->data), ID_RECALC_SELECT); WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data); } @@ -3827,7 +3834,7 @@ void MESH_OT_select_face_by_sides(wmOperatorType *ot) {1, "EQUAL", 0, "Equal To", ""}, {2, "GREATER", 0, "Greater Than", ""}, {3, "NOTEQUAL", 0, "Not Equal To", ""}, - {0, NULL, 0, NULL, NULL}, + {0, nullptr, 0, nullptr, nullptr}, }; /* identifiers */ @@ -3912,7 +3919,7 @@ static int edbm_select_loose_exec(bContext *C, wmOperator *op) EDBM_selectmode_flush(em); - DEG_id_tag_update(obedit->data, ID_RECALC_SELECT); + DEG_id_tag_update(static_cast<ID *>(obedit->data), ID_RECALC_SELECT); WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data); } @@ -3972,14 +3979,19 @@ static int edbm_select_mirror_exec(bContext *C, wmOperator *op) for (int axis = 0; axis < 3; axis++) { if ((1 << axis) & axis_flag) { - EDBM_select_mirrored(em, obedit->data, axis, extend, &tot_mirr_iter, &tot_fail_iter); + EDBM_select_mirrored(em, + static_cast<const Mesh *>(obedit->data), + axis, + extend, + &tot_mirr_iter, + &tot_fail_iter); } } if (tot_mirr_iter) { EDBM_selectmode_flush(em); - DEG_id_tag_update(obedit->data, ID_RECALC_SELECT); + DEG_id_tag_update(static_cast<ID *>(obedit->data), ID_RECALC_SELECT); WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data); } @@ -4039,7 +4051,7 @@ static int edbm_select_more_exec(bContext *C, wmOperator *op) } EDBM_select_more(em, use_face_step); - DEG_id_tag_update(obedit->data, ID_RECALC_SELECT); + DEG_id_tag_update(static_cast<ID *>(obedit->data), ID_RECALC_SELECT); WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data); } @@ -4090,7 +4102,7 @@ static int edbm_select_less_exec(bContext *C, wmOperator *op) } EDBM_select_less(em, use_face_step); - DEG_id_tag_update(obedit->data, ID_RECALC_SELECT); + DEG_id_tag_update(static_cast<ID *>(obedit->data), ID_RECALC_SELECT); WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data); } @@ -4147,7 +4159,7 @@ static bool bm_edge_is_select_isolated(BMEdge *e) * order, starting from h_act. Deselects elements if the depth when they * are reached is not a multiple of "nth". */ static void walker_deselect_nth(BMEditMesh *em, - const struct CheckerIntervalParams *op_params, + const CheckerIntervalParams *op_params, BMHeader *h_act) { BMElem *ele; @@ -4158,7 +4170,7 @@ static void walker_deselect_nth(BMEditMesh *em, short mask_vert = 0, mask_edge = 0, mask_face = 0; /* No active element from which to start - nothing to do */ - if (h_act == NULL) { + if (h_act == nullptr) { return; } @@ -4192,7 +4204,7 @@ static void walker_deselect_nth(BMEditMesh *em, /* Walker restrictions uses BMO flags, not header flags, * so transfer BM_ELEM_SELECT from HFlags onto a BMO flag layer. */ - BMO_push(bm, NULL); + BMO_push(bm, nullptr); BM_ITER_MESH (ele, &iter, bm, itertype) { if (BM_elem_flag_test(ele, BM_ELEM_SELECT)) { BMO_elem_flag_enable(bm, (BMElemF *)ele, BMO_ELE_TAG); @@ -4215,7 +4227,8 @@ static void walker_deselect_nth(BMEditMesh *em, } BLI_assert(walker.order == BMW_BREADTH_FIRST); - for (ele = BMW_begin(&walker, h_act); ele != NULL; ele = BMW_step(&walker)) { + for (ele = static_cast<BMElem *>(BMW_begin(&walker, h_act)); ele != nullptr; + ele = static_cast<BMElem *>(BMW_step(&walker))) { if (!BM_elem_flag_test(ele, BM_ELEM_TAG)) { /* Deselect elements that aren't at "nth" depth from active */ const int depth = BMW_current_depth(&walker) - 1; @@ -4238,9 +4251,9 @@ static void deselect_nth_active(BMEditMesh *em, BMVert **r_eve, BMEdge **r_eed, BMIter iter; BMElem *ele; - *r_eve = NULL; - *r_eed = NULL; - *r_efa = NULL; + *r_eve = nullptr; + *r_eed = nullptr; + *r_efa = nullptr; EDBM_selectmode_flush(em); ele = BM_mesh_active_elem_get(em->bm); @@ -4286,7 +4299,7 @@ static void deselect_nth_active(BMEditMesh *em, BMVert **r_eve, BMEdge **r_eed, } } -static bool edbm_deselect_nth(BMEditMesh *em, const struct CheckerIntervalParams *op_params) +static bool edbm_deselect_nth(BMEditMesh *em, const CheckerIntervalParams *op_params) { BMVert *v; BMEdge *e; @@ -4314,7 +4327,7 @@ static int edbm_select_nth_exec(bContext *C, wmOperator *op) { const Scene *scene = CTX_data_scene(C); ViewLayer *view_layer = CTX_data_view_layer(C); - struct CheckerIntervalParams op_params; + CheckerIntervalParams op_params; WM_operator_properties_checker_interval_from_op(op, &op_params); bool found_active_elt = false; @@ -4332,12 +4345,11 @@ static int edbm_select_nth_exec(bContext *C, wmOperator *op) if (edbm_deselect_nth(em, &op_params) == true) { found_active_elt = true; - EDBM_update(obedit->data, - &(const struct EDBMUpdate_Params){ - .calc_looptri = false, - .calc_normals = false, - .is_destructive = false, - }); + EDBMUpdate_Params params{}; + params.calc_looptri = false; + params.calc_normals = false; + params.is_destructive = false; + EDBM_update(static_cast<Mesh *>(obedit->data), ¶ms); } } MEM_freeN(objects); @@ -4422,7 +4434,7 @@ static int edbm_select_sharp_edges_exec(bContext *C, wmOperator *op) else { EDBM_selectmode_flush(em); } - DEG_id_tag_update(obedit->data, ID_RECALC_SELECT); + DEG_id_tag_update(static_cast<ID *>(obedit->data), ID_RECALC_SELECT); WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data); } MEM_freeN(objects); @@ -4450,7 +4462,7 @@ void MESH_OT_edges_select_sharp(wmOperatorType *ot) prop = RNA_def_float_rotation(ot->srna, "sharpness", 0, - NULL, + nullptr, DEG2RADF(0.01f), DEG2RADF(180.0f), "Sharpness", @@ -4484,7 +4496,7 @@ static int edbm_select_linked_flat_faces_exec(bContext *C, wmOperator *op) continue; } - BLI_LINKSTACK_DECLARE(stack, BMFace *); + blender::Vector<BMFace *> stack; BMIter iter, liter, liter2; BMFace *f; @@ -4492,8 +4504,6 @@ static int edbm_select_linked_flat_faces_exec(bContext *C, wmOperator *op) BM_mesh_elem_hflag_disable_all(bm, BM_FACE, BM_ELEM_TAG, false); - BLI_LINKSTACK_INIT(stack); - BM_ITER_MESH (f, &iter, bm, BM_FACES_OF_MESH) { if ((BM_elem_flag_test(f, BM_ELEM_HIDDEN) != 0) || (BM_elem_flag_test(f, BM_ELEM_TAG) != 0) || @@ -4501,7 +4511,7 @@ static int edbm_select_linked_flat_faces_exec(bContext *C, wmOperator *op) continue; } - BLI_assert(BLI_LINKSTACK_SIZE(stack) == 0); + BLI_assert(stack.is_empty()); do { BM_face_select_set(bm, f, true); @@ -4520,16 +4530,14 @@ static int edbm_select_linked_flat_faces_exec(bContext *C, wmOperator *op) angle_cos = dot_v3v3(f->no, l2->f->no); if (angle_cos > angle_limit_cos) { - BLI_LINKSTACK_PUSH(stack, l2->f); + stack.append(l2->f); } } } - } while ((f = BLI_LINKSTACK_POP(stack))); + } while (!stack.is_empty() && (f = stack.pop_last())); } - BLI_LINKSTACK_FREE(stack); - - DEG_id_tag_update(obedit->data, ID_RECALC_SELECT); + DEG_id_tag_update(static_cast<ID *>(obedit->data), ID_RECALC_SELECT); WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data); } MEM_freeN(objects); @@ -4557,7 +4565,7 @@ void MESH_OT_faces_select_linked_flat(wmOperatorType *ot) prop = RNA_def_float_rotation(ot->srna, "sharpness", 0, - NULL, + nullptr, DEG2RADF(0.01f), DEG2RADF(180.0f), "Sharpness", @@ -4634,7 +4642,7 @@ static int edbm_select_non_manifold_exec(bContext *C, wmOperator *op) } } - DEG_id_tag_update(obedit->data, ID_RECALC_SELECT); + DEG_id_tag_update(static_cast<ID *>(obedit->data), ID_RECALC_SELECT); WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data); EDBM_selectmode_flush(em); @@ -4706,7 +4714,8 @@ static int edbm_select_random_exec(bContext *C, wmOperator *op) if (em->selectmode & SCE_SELECT_VERTEX) { int elem_map_len = 0; - BMVert **elem_map = MEM_mallocN(sizeof(*elem_map) * em->bm->totvert, __func__); + BMVert **elem_map = static_cast<BMVert **>( + MEM_mallocN(sizeof(*elem_map) * em->bm->totvert, __func__)); BMVert *eve; BM_ITER_MESH (eve, &iter, em->bm, BM_VERTS_OF_MESH) { if (!BM_elem_flag_test(eve, BM_ELEM_HIDDEN)) { @@ -4723,7 +4732,8 @@ static int edbm_select_random_exec(bContext *C, wmOperator *op) } else if (em->selectmode & SCE_SELECT_EDGE) { int elem_map_len = 0; - BMEdge **elem_map = MEM_mallocN(sizeof(*elem_map) * em->bm->totedge, __func__); + BMEdge **elem_map = static_cast<BMEdge **>( + MEM_mallocN(sizeof(*elem_map) * em->bm->totedge, __func__)); BMEdge *eed; BM_ITER_MESH (eed, &iter, em->bm, BM_EDGES_OF_MESH) { if (!BM_elem_flag_test(eed, BM_ELEM_HIDDEN)) { @@ -4739,7 +4749,8 @@ static int edbm_select_random_exec(bContext *C, wmOperator *op) } else { int elem_map_len = 0; - BMFace **elem_map = MEM_mallocN(sizeof(*elem_map) * em->bm->totface, __func__); + BMFace **elem_map = static_cast<BMFace **>( + MEM_mallocN(sizeof(*elem_map) * em->bm->totface, __func__)); BMFace *efa; BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { if (!BM_elem_flag_test(efa, BM_ELEM_HIDDEN)) { @@ -4762,7 +4773,7 @@ static int edbm_select_random_exec(bContext *C, wmOperator *op) EDBM_deselect_flush(em); } - DEG_id_tag_update(obedit->data, ID_RECALC_SELECT); + DEG_id_tag_update(static_cast<ID *>(obedit->data), ID_RECALC_SELECT); WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data); } @@ -4849,9 +4860,9 @@ static int edbm_select_ungrouped_exec(bContext *C, wmOperator *op) BM_ITER_MESH (eve, &iter, em->bm, BM_VERTS_OF_MESH) { if (!BM_elem_flag_test(eve, BM_ELEM_HIDDEN)) { - MDeformVert *dv = BM_ELEM_CD_GET_VOID_P(eve, cd_dvert_offset); + MDeformVert *dv = static_cast<MDeformVert *>(BM_ELEM_CD_GET_VOID_P(eve, cd_dvert_offset)); /* no dv or dv set with no weight */ - if (ELEM(NULL, dv, dv->dw)) { + if (ELEM(nullptr, dv, dv->dw)) { BM_vert_select_set(em->bm, eve, true); changed = true; } @@ -4860,7 +4871,7 @@ static int edbm_select_ungrouped_exec(bContext *C, wmOperator *op) if (changed) { EDBM_selectmode_flush(em); - DEG_id_tag_update(obedit->data, ID_RECALC_SELECT); + DEG_id_tag_update(static_cast<ID *>(obedit->data), ID_RECALC_SELECT); WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data); } } @@ -4908,7 +4919,7 @@ static int edbm_select_axis_exec(bContext *C, wmOperator *op) const int axis = RNA_enum_get(op->ptr, "axis"); const int sign = RNA_enum_get(op->ptr, "sign"); - if (v_act == NULL) { + if (v_act == nullptr) { BKE_report( op->reports, RPT_WARNING, "This operator requires an active vertex (last selected)"); return OPERATOR_CANCELLED; @@ -4919,7 +4930,7 @@ static int edbm_select_axis_exec(bContext *C, wmOperator *op) float value; float axis_mat[3][3]; - /* 3D view variables may be NULL, (no need to check in poll function). */ + /* 3D view variables may be nullptr, (no need to check in poll function). */ ED_transform_calc_orientation_from_type_ex(scene, view_layer, CTX_wm_view3d(C), @@ -4991,7 +5002,7 @@ static int edbm_select_axis_exec(bContext *C, wmOperator *op) if (changed) { EDBM_selectmode_flush(em_iter); WM_event_add_notifier(C, NC_GEOM | ND_DATA, obedit_iter->data); - DEG_id_tag_update(obedit_iter->data, ID_RECALC_SELECT); + DEG_id_tag_update(static_cast<ID *>(obedit_iter->data), ID_RECALC_SELECT); } } MEM_freeN(objects); @@ -5004,7 +5015,7 @@ void MESH_OT_select_axis(wmOperatorType *ot) {SELECT_AXIS_POS, "POS", 0, "Positive Axis", ""}, {SELECT_AXIS_NEG, "NEG", 0, "Negative Axis", ""}, {SELECT_AXIS_ALIGN, "ALIGN", 0, "Aligned Axis", ""}, - {0, NULL, 0, NULL, NULL}, + {0, nullptr, 0, nullptr, nullptr}, }; /* identifiers */ @@ -5128,21 +5139,18 @@ void MESH_OT_region_to_loop(wmOperatorType *ot) static int loop_find_region(BMLoop *l, int flag, GSet *visit_face_set, BMFace ***region_out) { - BMFace **region = NULL; - BMFace **stack = NULL; - BLI_array_declare(region); - BLI_array_declare(stack); - BMFace *f; + blender::Vector<BMFace *> stack; + blender::Vector<BMFace *> region; - BLI_array_append(stack, l->f); + stack.append(l->f); BLI_gset_insert(visit_face_set, l->f); - while (BLI_array_len(stack) > 0) { + while (!stack.is_empty()) { BMIter liter1, liter2; BMLoop *l1, *l2; - f = BLI_array_pop(stack); - BLI_array_append(region, f); + BMFace *f = stack.pop_last(); + region.append(f); BM_ITER_ELEM (l1, &liter1, f, BM_LOOPS_OF_FACE) { if (BM_elem_flag_test(l1->e, flag)) { @@ -5157,16 +5165,17 @@ static int loop_find_region(BMLoop *l, int flag, GSet *visit_face_set, BMFace ** } if (BLI_gset_add(visit_face_set, l2->f)) { - BLI_array_append(stack, l2->f); + stack.append(l2->f); } } } } - BLI_array_free(stack); - - *region_out = region; - return BLI_array_len(region); + BMFace **region_alloc = static_cast<BMFace **>( + MEM_malloc_arrayN(region.size(), sizeof(BMFace *), __func__)); + memcpy(region_alloc, region.data(), region.as_span().size_in_bytes()); + *region_out = region_alloc; + return region.size(); } static int verg_radial(const void *va, const void *vb) @@ -5197,11 +5206,11 @@ static int loop_find_regions(BMEditMesh *em, const bool selbigger) GSet *visit_face_set; BMIter iter; const int edges_len = em->bm->totedgesel; - BMEdge *e, **edges; + BMEdge *e; int count = 0, i; visit_face_set = BLI_gset_ptr_new_ex(__func__, edges_len); - edges = MEM_mallocN(sizeof(*edges) * edges_len, __func__); + BMEdge **edges = static_cast<BMEdge **>(MEM_mallocN(sizeof(*edges) * edges_len, __func__)); i = 0; BM_ITER_MESH (e, &iter, em->bm, BM_EDGES_OF_MESH) { @@ -5220,7 +5229,7 @@ static int loop_find_regions(BMEditMesh *em, const bool selbigger) for (i = 0; i < edges_len; i++) { BMIter liter; BMLoop *l; - BMFace **region = NULL, **region_out; + BMFace **region = nullptr, **region_out; int c, tot = 0; e = edges[i]; @@ -5269,7 +5278,7 @@ static int loop_find_regions(BMEditMesh *em, const bool selbigger) } MEM_freeN(edges); - BLI_gset_free(visit_face_set, NULL); + BLI_gset_free(visit_face_set, nullptr); return count; } @@ -5312,7 +5321,7 @@ static int edbm_loop_to_region_exec(bContext *C, wmOperator *op) EDBM_selectmode_flush(em); - DEG_id_tag_update(obedit->data, ID_RECALC_SELECT); + DEG_id_tag_update(static_cast<ID *>(obedit->data), ID_RECALC_SELECT); WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data); } MEM_freeN(objects); diff --git a/source/blender/editors/mesh/mesh_intern.h b/source/blender/editors/mesh/mesh_intern.h index 9f90ccc30ab..e6505715324 100644 --- a/source/blender/editors/mesh/mesh_intern.h +++ b/source/blender/editors/mesh/mesh_intern.h @@ -192,7 +192,7 @@ void MESH_OT_loopcut(struct wmOperatorType *ot); void MESH_OT_rip(struct wmOperatorType *ot); void MESH_OT_rip_edge(struct wmOperatorType *ot); -/* *** editmesh_select.c *** */ +/* *** editmesh_select.cc *** */ void MESH_OT_select_similar(struct wmOperatorType *ot); void MESH_OT_select_similar_region(struct wmOperatorType *ot); diff --git a/source/blender/editors/space_view3d/CMakeLists.txt b/source/blender/editors/space_view3d/CMakeLists.txt index 97e39c00c48..579e27b9259 100644 --- a/source/blender/editors/space_view3d/CMakeLists.txt +++ b/source/blender/editors/space_view3d/CMakeLists.txt @@ -46,7 +46,7 @@ set(SRC view3d_gizmo_ruler.c view3d_gizmo_tool_generic.c view3d_header.c - view3d_iterators.c + view3d_iterators.cc view3d_navigate.c view3d_navigate_dolly.c view3d_navigate_fly.c diff --git a/source/blender/editors/space_view3d/view3d_iterators.c b/source/blender/editors/space_view3d/view3d_iterators.cc index 34f68e87880..139ac9de6e4 100644 --- a/source/blender/editors/space_view3d/view3d_iterators.c +++ b/source/blender/editors/space_view3d/view3d_iterators.cc @@ -57,9 +57,9 @@ static int content_planes_from_clip_flag(const ARegion *region, { BLI_assert(clip_flag & V3D_PROJ_TEST_CLIP_CONTENT); - float *clip_xmin = NULL, *clip_xmax = NULL; - float *clip_ymin = NULL, *clip_ymax = NULL; - float *clip_zmin = NULL, *clip_zmax = NULL; + float *clip_xmin = nullptr, *clip_xmax = nullptr; + float *clip_ymin = nullptr, *clip_ymax = nullptr; + float *clip_zmin = nullptr, *clip_zmax = nullptr; int planes_len = 0; @@ -84,7 +84,7 @@ static int content_planes_from_clip_flag(const ARegion *region, BLI_assert(planes_len <= 6); if (planes_len != 0) { - RegionView3D *rv3d = region->regiondata; + RegionView3D *rv3d = static_cast<RegionView3D *>(region->regiondata); float projmat[4][4]; ED_view3d_ob_project_mat_get(rv3d, ob, projmat); planes_from_projmat(projmat, clip_xmin, clip_xmax, clip_ymin, clip_ymax, clip_zmin, clip_zmax); @@ -202,24 +202,24 @@ static bool view3d_project_segment_to_screen_with_clip_tag(const ARegion *region /** \name Private User Data Structures * \{ */ -typedef struct foreachScreenObjectVert_userData { +struct foreachScreenObjectVert_userData { void (*func)(void *userData, MVert *mv, const float screen_co[2], int index); void *userData; ViewContext vc; MVert *verts; const bool *hide_vert; eV3DProjTest clip_flag; -} foreachScreenObjectVert_userData; +}; -typedef struct foreachScreenVert_userData { +struct foreachScreenVert_userData { void (*func)(void *userData, BMVert *eve, const float screen_co[2], int index); void *userData; ViewContext vc; eV3DProjTest clip_flag; -} foreachScreenVert_userData; +}; /* user data structures for derived mesh callbacks */ -typedef struct foreachScreenEdge_userData { +struct foreachScreenEdge_userData { void (*func)(void *userData, BMEdge *eed, const float screen_co_a[2], @@ -237,14 +237,14 @@ typedef struct foreachScreenEdge_userData { */ float content_planes[6][4]; int content_planes_len; -} foreachScreenEdge_userData; +}; -typedef struct foreachScreenFace_userData { +struct foreachScreenFace_userData { void (*func)(void *userData, BMFace *efa, const float screen_co_b[2], int index); void *userData; ViewContext vc; eV3DProjTest clip_flag; -} foreachScreenFace_userData; +}; /** * \note foreach functions should be called while drawing or directly after @@ -264,7 +264,8 @@ static void meshobject_foreachScreenVert__mapFunc(void *userData, const float co[3], const float UNUSED(no[3])) { - foreachScreenObjectVert_userData *data = userData; + foreachScreenObjectVert_userData *data = static_cast<foreachScreenObjectVert_userData *>( + userData); if (data->hide_vert && data->hide_vert[index]) { return; } @@ -317,7 +318,7 @@ static void mesh_foreachScreenVert__mapFunc(void *userData, const float co[3], const float UNUSED(no[3])) { - foreachScreenVert_userData *data = userData; + foreachScreenVert_userData *data = static_cast<foreachScreenVert_userData *>(userData); BMVert *eve = BM_vert_at_index(data->vc.em->bm, index); if (UNLIKELY(BM_elem_flag_test(eve, BM_ELEM_HIDDEN))) { return; @@ -370,7 +371,7 @@ static void mesh_foreachScreenEdge__mapFunc(void *userData, const float v_a[3], const float v_b[3]) { - foreachScreenEdge_userData *data = userData; + foreachScreenEdge_userData *data = static_cast<foreachScreenEdge_userData *>(userData); BMEdge *eed = BM_edge_at_index(data->vc.em->bm, index); if (UNLIKELY(BM_elem_flag_test(eed, BM_ELEM_HIDDEN))) { return; @@ -451,7 +452,7 @@ static void mesh_foreachScreenEdge_clip_bb_segment__mapFunc(void *userData, const float v_a[3], const float v_b[3]) { - foreachScreenEdge_userData *data = userData; + foreachScreenEdge_userData *data = static_cast<foreachScreenEdge_userData *>(userData); BMEdge *eed = BM_edge_at_index(data->vc.em->bm, index); if (UNLIKELY(BM_elem_flag_test(eed, BM_ELEM_HIDDEN))) { return; @@ -518,7 +519,7 @@ void mesh_foreachScreenEdge_clip_bb_segment(ViewContext *vc, BM_mesh_elem_table_ensure(vc->em->bm, BM_EDGE); - if ((clip_flag & V3D_PROJ_TEST_CLIP_BB) && (vc->rv3d->clipbb != NULL)) { + if ((clip_flag & V3D_PROJ_TEST_CLIP_BB) && (vc->rv3d->clipbb != nullptr)) { ED_view3d_clipping_local(vc->rv3d, vc->obedit->obmat); /* for local clipping lookups. */ BKE_mesh_foreach_mapped_edge( me, vc->em->bm->totedge, mesh_foreachScreenEdge_clip_bb_segment__mapFunc, &data); @@ -539,7 +540,7 @@ static void mesh_foreachScreenFace__mapFunc(void *userData, const float cent[3], const float UNUSED(no[3])) { - foreachScreenFace_userData *data = userData; + foreachScreenFace_userData *data = static_cast<foreachScreenFace_userData *>(userData); BMFace *efa = BM_face_at_index(data->vc.em->bm, index); if (UNLIKELY(BM_elem_flag_test(efa, BM_ELEM_HIDDEN))) { return; @@ -575,7 +576,7 @@ void mesh_foreachScreenFace( BM_mesh_elem_table_ensure(vc->em->bm, BM_FACE); - if (me->runtime.subsurf_face_dot_tags != NULL) { + if (me->runtime.subsurf_face_dot_tags != nullptr) { BKE_mesh_foreach_mapped_subdiv_face_center( me, mesh_foreachScreenFace__mapFunc, &data, MESH_FOREACH_NOP); } @@ -602,8 +603,7 @@ void nurbs_foreachScreenVert(ViewContext *vc, void *userData, const eV3DProjTest clip_flag) { - Curve *cu = vc->obedit->data; - Nurb *nu; + Curve *cu = static_cast<Curve *>(vc->obedit->data); int i; ListBase *nurbs = BKE_curve_editNurbs_get(cu); /* If no point in the triple is selected, the handles are invisible. */ @@ -615,7 +615,7 @@ void nurbs_foreachScreenVert(ViewContext *vc, ED_view3d_clipping_local(vc->rv3d, vc->obedit->obmat); /* for local clipping lookups */ } - for (nu = nurbs->first; nu; nu = nu->next) { + LISTBASE_FOREACH (Nurb *, nu, nurbs) { if (nu->type == CU_BEZIER) { for (i = 0; i < nu->pntsu; i++) { BezTriple *bezt = &nu->bezt[i]; @@ -626,35 +626,39 @@ void nurbs_foreachScreenVert(ViewContext *vc, float screen_co[2]; if (!handles_visible) { - if (ED_view3d_project_float_object(vc->region, - bezt->vec[1], - screen_co, - V3D_PROJ_RET_CLIP_BB | V3D_PROJ_RET_CLIP_WIN) == + if (ED_view3d_project_float_object( + vc->region, + bezt->vec[1], + screen_co, + eV3DProjTest(V3D_PROJ_RET_CLIP_BB | V3D_PROJ_RET_CLIP_WIN)) == V3D_PROJ_RET_OK) { - func(userData, nu, NULL, bezt, 1, false, screen_co); + func(userData, nu, nullptr, bezt, 1, false, screen_co); } } else { - if (ED_view3d_project_float_object(vc->region, - bezt->vec[0], - screen_co, - V3D_PROJ_RET_CLIP_BB | V3D_PROJ_RET_CLIP_WIN) == + if (ED_view3d_project_float_object( + vc->region, + bezt->vec[0], + screen_co, + eV3DProjTest(V3D_PROJ_RET_CLIP_BB | V3D_PROJ_RET_CLIP_WIN)) == V3D_PROJ_RET_OK) { - func(userData, nu, NULL, bezt, 0, true, screen_co); + func(userData, nu, nullptr, bezt, 0, true, screen_co); } - if (ED_view3d_project_float_object(vc->region, - bezt->vec[1], - screen_co, - V3D_PROJ_RET_CLIP_BB | V3D_PROJ_RET_CLIP_WIN) == + if (ED_view3d_project_float_object( + vc->region, + bezt->vec[1], + screen_co, + eV3DProjTest(V3D_PROJ_RET_CLIP_BB | V3D_PROJ_RET_CLIP_WIN)) == V3D_PROJ_RET_OK) { - func(userData, nu, NULL, bezt, 1, true, screen_co); + func(userData, nu, nullptr, bezt, 1, true, screen_co); } - if (ED_view3d_project_float_object(vc->region, - bezt->vec[2], - screen_co, - V3D_PROJ_RET_CLIP_BB | V3D_PROJ_RET_CLIP_WIN) == + if (ED_view3d_project_float_object( + vc->region, + bezt->vec[2], + screen_co, + eV3DProjTest(V3D_PROJ_RET_CLIP_BB | V3D_PROJ_RET_CLIP_WIN)) == V3D_PROJ_RET_OK) { - func(userData, nu, NULL, bezt, 2, true, screen_co); + func(userData, nu, nullptr, bezt, 2, true, screen_co); } } } @@ -667,9 +671,11 @@ void nurbs_foreachScreenVert(ViewContext *vc, if (bp->hide == 0) { float screen_co[2]; if (ED_view3d_project_float_object( - vc->region, bp->vec, screen_co, V3D_PROJ_RET_CLIP_BB | V3D_PROJ_RET_CLIP_WIN) == - V3D_PROJ_RET_OK) { - func(userData, nu, bp, NULL, -1, false, screen_co); + vc->region, + bp->vec, + screen_co, + eV3DProjTest(V3D_PROJ_RET_CLIP_BB | V3D_PROJ_RET_CLIP_WIN)) == V3D_PROJ_RET_OK) { + func(userData, nu, bp, nullptr, -1, false, screen_co); } } } @@ -683,19 +689,18 @@ void nurbs_foreachScreenVert(ViewContext *vc, /** \name Edit-Meta: For Each Screen Meta-Element * \{ */ -void mball_foreachScreenElem(struct ViewContext *vc, +void mball_foreachScreenElem(ViewContext *vc, void (*func)(void *userData, - struct MetaElem *ml, + MetaElem *ml, const float screen_co_b[2]), void *userData, const eV3DProjTest clip_flag) { MetaBall *mb = (MetaBall *)vc->obedit->data; - MetaElem *ml; ED_view3d_check_mats_rv3d(vc->rv3d); - for (ml = mb->editelems->first; ml; ml = ml->next) { + LISTBASE_FOREACH (MetaElem *, ml, mb->editelems) { float screen_co[2]; if (ED_view3d_project_float_object(vc->region, &ml->x, screen_co, clip_flag) == V3D_PROJ_RET_OK) { @@ -716,12 +721,12 @@ void lattice_foreachScreenVert(ViewContext *vc, const eV3DProjTest clip_flag) { Object *obedit = vc->obedit; - Lattice *lt = obedit->data; + Lattice *lt = static_cast<Lattice *>(obedit->data); BPoint *bp = lt->editlatt->latt->def; DispList *dl = obedit->runtime.curve_cache ? BKE_displist_find(&obedit->runtime.curve_cache->disp, DL_VERTS) : - NULL; - const float *co = dl ? dl->verts : NULL; + nullptr; + const float *co = dl ? dl->verts : nullptr; int i, N = lt->editlatt->latt->pntsu * lt->editlatt->latt->pntsv * lt->editlatt->latt->pntsw; ED_view3d_check_mats_rv3d(vc->rv3d); @@ -747,16 +752,15 @@ void lattice_foreachScreenVert(ViewContext *vc, /** \name Edit-Armature: For Each Screen Bone * \{ */ -void armature_foreachScreenBone(struct ViewContext *vc, +void armature_foreachScreenBone(ViewContext *vc, void (*func)(void *userData, - struct EditBone *ebone, + EditBone *ebone, const float screen_co_a[2], const float screen_co_b[2]), void *userData, const eV3DProjTest clip_flag) { - bArmature *arm = vc->obedit->data; - EditBone *ebone; + bArmature *arm = static_cast<bArmature *>(vc->obedit->data); ED_view3d_check_mats_rv3d(vc->rv3d); @@ -776,7 +780,7 @@ void armature_foreachScreenBone(struct ViewContext *vc, content_planes_len = 0; } - for (ebone = arm->edbo->first; ebone; ebone = ebone->next) { + LISTBASE_FOREACH (EditBone *, ebone, arm->edbo) { if (!EBONE_VISIBLE(arm, ebone)) { continue; } @@ -814,9 +818,9 @@ void armature_foreachScreenBone(struct ViewContext *vc, /** \name Pose: For Each Screen Bone * \{ */ -void pose_foreachScreenBone(struct ViewContext *vc, +void pose_foreachScreenBone(ViewContext *vc, void (*func)(void *userData, - struct bPoseChannel *pchan, + bPoseChannel *pchan, const float screen_co_a[2], const float screen_co_b[2]), void *userData, @@ -825,9 +829,8 @@ void pose_foreachScreenBone(struct ViewContext *vc, /* Almost _exact_ copy of #armature_foreachScreenBone */ const Object *ob_eval = DEG_get_evaluated_object(vc->depsgraph, vc->obact); - const bArmature *arm_eval = ob_eval->data; + const bArmature *arm_eval = static_cast<const bArmature *>(ob_eval->data); bPose *pose = vc->obact->pose; - bPoseChannel *pchan; ED_view3d_check_mats_rv3d(vc->rv3d); @@ -847,7 +850,7 @@ void pose_foreachScreenBone(struct ViewContext *vc, content_planes_len = 0; } - for (pchan = pose->chanbase.first; pchan; pchan = pchan->next) { + LISTBASE_FOREACH (bPoseChannel *, pchan, &pose->chanbase) { if (!PBONE_VISIBLE(arm_eval, pchan->bone)) { continue; } |