diff --git a/source/blender/blenkernel/intern/editderivedmesh.c b/source/blender/blenkernel/intern/editderivedmesh.c index 5ab97549618..063b31c5b87 100644 --- a/source/blender/blenkernel/intern/editderivedmesh.c +++ b/source/blender/blenkernel/intern/editderivedmesh.c @@ -349,18 +349,17 @@ typedef struct EditDerivedBMesh { /* BMESH_TODO, since this is not called get functions fail! */ static void UNUSED_FUNCTION(bmdm_recalc_lookups)(EditDerivedBMesh *bmdm) { + const char iter_types[3] = {BM_VERTS_OF_MESH, + BM_EDGES_OF_MESH, + BM_FACES_OF_MESH}; + + BMHeader **iters_table[3] = {(BMHeader **)bmdm->vtable, + (BMHeader **)bmdm->etable, + (BMHeader **)bmdm->ftable}; + BMIter iter; int a, i; - int iters[3] = {BM_VERTS_OF_MESH, - BM_EDGES_OF_MESH, - BM_FACES_OF_MESH}; - - BMHeader **iters_table[3] = { - (BMHeader **)bmdm->vtable, - (BMHeader **)bmdm->etable, - (BMHeader **)bmdm->ftable}; - bmdm->tv = bmdm->tc->bm->totvert; bmdm->te = bmdm->tc->bm->totedge; bmdm->tf = bmdm->tc->bm->totface; @@ -385,7 +384,7 @@ static void UNUSED_FUNCTION(bmdm_recalc_lookups)(EditDerivedBMesh *bmdm) BMHeader **table = iters_table[a]; BMHeader *ele; - ele = BMIter_New(&iter, bmdm->tc->bm, iters[a], NULL); + ele = BMIter_New(&iter, bmdm->tc->bm, iter_types[a], NULL); for (i=0; ele; ele=BMIter_Step(&iter), i++) { table[i] = ele; BM_SetIndex(ele, i); /* set_ok */ diff --git a/source/blender/bmesh/bmesh_operator_api.h b/source/blender/bmesh/bmesh_operator_api.h index 153731d0040..9bd73873606 100644 --- a/source/blender/bmesh/bmesh_operator_api.h +++ b/source/blender/bmesh/bmesh_operator_api.h @@ -175,19 +175,19 @@ void BMO_Finish_Op(struct BMesh *bm, struct BMOperator *op); * ghash or a mapping slot to do it. */ /* flags 15 and 16 (1<<14 and 1<<15) are reserved for bmesh api use */ -#define BMO_TestFlag(bm, element, flag) (((BMHeader*)(element))->flags[bm->stackdepth-1].f & (flag)) -#define BMO_SetFlag(bm, element, flag) (((BMHeader*)(element))->flags[bm->stackdepth-1].f |= (flag)) -#define BMO_ClearFlag(bm, element, flag) (((BMHeader*)(element))->flags[bm->stackdepth-1].f &= ~(flag)) -#define BMO_ToggleFlag(bm, element, flag) (((BMHeader*)(element))->flags[bm->stackdepth-1].f ^= (flag)) +#define BMO_TestFlag(bm, element, oflag) (((BMHeader*)(element))->flags[bm->stackdepth-1].f & (oflag)) +#define BMO_SetFlag(bm, element, oflag) (((BMHeader*)(element))->flags[bm->stackdepth-1].f |= (oflag)) +#define BMO_ClearFlag(bm, element, oflag) (((BMHeader*)(element))->flags[bm->stackdepth-1].f &= ~(oflag)) +#define BMO_ToggleFlag(bm, element, oflag) (((BMHeader*)(element))->flags[bm->stackdepth-1].f ^= (oflag)) /*profiling showed a significant amount of time spent in BMO_TestFlag -void BMO_SetFlag(struct BMesh *bm, void *element, int flag); -void BMO_ClearFlag(struct BMesh *bm, void *element, int flag); -int BMO_TestFlag(struct BMesh *bm, void *element, int flag);*/ +void BMO_SetFlag(struct BMesh *bm, void *element, int oflag); +void BMO_ClearFlag(struct BMesh *bm, void *element, int oflag); +int BMO_TestFlag(struct BMesh *bm, void *element, int oflag);*/ /* count the number of elements with a specific flag. * type can be a bitmask of BM_FACE, BM_EDGE, or BM_FACE. */ -int BMO_CountFlag(struct BMesh *bm, int flag, const char htype); +int BMO_CountFlag(struct BMesh *bm, const int oflag, const char htype); /*---------formatted operator initialization/execution-----------*/ /* @@ -252,12 +252,12 @@ void BMO_CopySlot(struct BMOperator *source_op, struct BMOperator *dest_op, const char *src, const char *dst); /*remove tool flagged elements*/ -void BM_remove_tagged_faces(struct BMesh *bm, int flag); -void BM_remove_tagged_edges(struct BMesh *bm, int flag); -void BM_remove_tagged_verts(struct BMesh *bm, int flag); +void BM_remove_tagged_faces(struct BMesh *bm, const int oflag); +void BM_remove_tagged_edges(struct BMesh *bm, const int oflag); +void BM_remove_tagged_verts(struct BMesh *bm, const int oflag); -void BMO_Set_OpFlag(struct BMesh *bm, struct BMOperator *op, int flag); -void BMO_Clear_OpFlag(struct BMesh *bm, struct BMOperator *op, int flag); +void BMO_Set_OpFlag(struct BMesh *bm, struct BMOperator *op, const int oflag); +void BMO_Clear_OpFlag(struct BMesh *bm, struct BMOperator *op, const int oflag); void BMO_Set_Float(struct BMOperator *op, const char *slotname, float f); float BMO_Get_Float(BMOperator *op, const char *slotname); @@ -282,19 +282,19 @@ void BMO_Set_Mat(struct BMOperator *op, const char *slotname, float *mat, int si void BMO_Get_Mat4(struct BMOperator *op, const char *slotname, float mat[4][4]); void BMO_Get_Mat3(struct BMOperator *op, const char *slotname, float mat[3][3]); -void BMO_Clear_Flag_All(BMesh *bm, BMOperator *op, const char htype, int flag); +void BMO_Clear_Flag_All(BMesh *bm, BMOperator *op, const char htype, const int oflag); /* puts every element of type type (which is a bitmask) with tool flag flag, * into a slot. */ void BMO_Flag_To_Slot(struct BMesh *bm, struct BMOperator *op, const char *slotname, - const int flag, const char htype); + const int oflag, const char htype); /* tool-flags all elements inside an element slot array with flag flag. */ void BMO_Flag_Buffer(struct BMesh *bm, struct BMOperator *op, const char *slotname, - const int hflag, const char htype); + const int oflag, const char htype); /* clears tool-flag flag from all elements inside a slot array. */ void BMO_Unflag_Buffer(struct BMesh *bm, struct BMOperator *op, const char *slotname, - const int flag, const char htype); + const int oflag, const char htype); /* tool-flags all elements inside an element slot array with flag flag. */ void BMO_HeaderFlag_Buffer(struct BMesh *bm, struct BMOperator *op, const char *slotname, @@ -315,7 +315,7 @@ int BMO_CountSlotMap(struct BMesh *bm, struct BMOperator *op, const char *slotna /* Counts the number of edges with tool flag toolflag around */ -int BMO_Vert_CountEdgeFlags(BMesh *bm, BMVert *v, int toolflag); +int BMO_Vert_CountEdgeFlags(BMesh *bm, BMVert *v, const int oflag); /* inserts a key/value mapping into a mapping slot. note that it copies the * value, it doesn't store a reference to it. */ @@ -339,7 +339,7 @@ int BMO_Vert_CountEdgeFlags(BMesh *bm, BMVert *v, int toolflag); /* flags all elements in a mapping. note that the mapping must only have * bmesh elements in it.*/ void BMO_Mapping_To_Flag(struct BMesh *bm, struct BMOperator *op, - const char *slotname, int flag); + const char *slotname, const int oflag); /* pointer versoins of BMO_Get_MapFloat and BMO_Insert_MapFloat. * diff --git a/source/blender/bmesh/intern/bmesh_construct.c b/source/blender/bmesh/intern/bmesh_construct.c index f7d4a149534..910be3f92aa 100644 --- a/source/blender/bmesh/intern/bmesh_construct.c +++ b/source/blender/bmesh/intern/bmesh_construct.c @@ -368,33 +368,39 @@ err: * */ -void BM_remove_tagged_faces(BMesh *bm, int flag) +void BM_remove_tagged_faces(BMesh *bm, const int oflag) { BMFace *f; BMIter iter; BM_ITER(f, &iter, bm, BM_FACES_OF_MESH, NULL) { - if (BMO_TestFlag(bm, f, flag)) BM_Kill_Face(bm, f); + if (BMO_TestFlag(bm, f, oflag)) { + BM_Kill_Face(bm, f); + } } } -void BM_remove_tagged_edges(BMesh *bm, int flag) +void BM_remove_tagged_edges(BMesh *bm, const int oflag) { BMEdge *e; BMIter iter; BM_ITER(e, &iter, bm, BM_EDGES_OF_MESH, NULL) { - if (BMO_TestFlag(bm, e, flag)) BM_Kill_Edge(bm, e); + if (BMO_TestFlag(bm, e, oflag)) { + BM_Kill_Edge(bm, e); + } } } -void BM_remove_tagged_verts(BMesh *bm, int flag) +void BM_remove_tagged_verts(BMesh *bm, const int oflag) { BMVert *v; BMIter iter; BM_ITER(v, &iter, bm, BM_VERTS_OF_MESH, NULL) { - if (BMO_TestFlag(bm, v, flag)) BM_Kill_Vert(bm, v); + if (BMO_TestFlag(bm, v, oflag)) { + BM_Kill_Vert(bm, v); + } } } diff --git a/source/blender/bmesh/intern/bmesh_marking.c b/source/blender/bmesh/intern/bmesh_marking.c index 11f2217c79e..e6e6f244731 100644 --- a/source/blender/bmesh/intern/bmesh_marking.c +++ b/source/blender/bmesh/intern/bmesh_marking.c @@ -58,7 +58,9 @@ static void recount_totsels(BMesh *bm) { BMIter iter; BMHeader *ele; - const char itypes[3] = {BM_VERTS_OF_MESH, BM_EDGES_OF_MESH, BM_FACES_OF_MESH}; + const char iter_types[3] = {BM_VERTS_OF_MESH, + BM_EDGES_OF_MESH, + BM_FACES_OF_MESH}; int *tots[3]; int i; @@ -69,7 +71,7 @@ static void recount_totsels(BMesh *bm) tots[2] = &bm->totfacesel; for (i = 0; i < 3; i++) { - ele = BMIter_New(&iter, bm, itypes[i], NULL); + ele = BMIter_New(&iter, bm, iter_types[i], NULL); for ( ; ele; ele = BMIter_Step(&iter)) { if (BM_TestHFlag(ele, BM_SELECT)) *tots[i] += 1; } @@ -647,7 +649,9 @@ void BM_validate_selections(BMesh *bm) void BM_clear_flag_all(BMesh *bm, const char hflag) { - const char itypes[3] = {BM_VERTS_OF_MESH, BM_EDGES_OF_MESH, BM_FACES_OF_MESH}; + const char iter_types[3] = {BM_VERTS_OF_MESH, + BM_EDGES_OF_MESH, + BM_FACES_OF_MESH}; BMIter iter; BMHeader *ele; int i; @@ -657,7 +661,7 @@ void BM_clear_flag_all(BMesh *bm, const char hflag) } for (i = 0; i < 3; i++) { - ele = BMIter_New(&iter, bm, itypes[i], NULL); + ele = BMIter_New(&iter, bm, iter_types[i], NULL); for ( ; ele; ele = BMIter_Step(&iter)) { if (hflag & BM_SELECT) BM_Select(bm, ele, FALSE); BM_ClearHFlag(ele, hflag); diff --git a/source/blender/bmesh/intern/bmesh_mesh.c b/source/blender/bmesh/intern/bmesh_mesh.c index b917aa1ad4f..cddc5d8d1f2 100644 --- a/source/blender/bmesh/intern/bmesh_mesh.c +++ b/source/blender/bmesh/intern/bmesh_mesh.c @@ -555,22 +555,26 @@ void BM_ElemIndex_Ensure(BMesh *bm, const char hflag) void BM_ElemIndex_Validate(BMesh *bm, const char *location, const char *func, const char *msg_a, const char *msg_b) { + const char iter_types[3] = {BM_VERTS_OF_MESH, + BM_EDGES_OF_MESH, + BM_FACES_OF_MESH}; + + const char flag_types[3] = {BM_VERT, BM_EDGE, BM_FACE}; + const char *type_names[3] = {"vert", "edge", "face"}; + BMIter iter; BMHeader *ele; - int types[3] = {BM_VERTS_OF_MESH, BM_EDGES_OF_MESH, BM_FACES_OF_MESH}; - const char *type_names[3] = {"vert", "edge", "face"}; - const char type_flags[3] = {BM_VERT, BM_EDGE, BM_FACE}; int i; int is_any_error = 0; for (i = 0; i < 3; i++) { - const int is_dirty = (type_flags[i] & bm->elem_index_dirty); + const int is_dirty = (flag_types[i] & bm->elem_index_dirty); int index = 0; int is_error = FALSE; int err_val = 0; int err_idx = 0; - BM_ITER(ele, &iter, bm, types[i], NULL) { + BM_ITER(ele, &iter, bm, iter_types[i], NULL) { if (!is_dirty) { if (BM_GetIndex(ele) != index) { err_val = BM_GetIndex(ele); diff --git a/source/blender/bmesh/intern/bmesh_operators.c b/source/blender/bmesh/intern/bmesh_operators.c index 841addc46cc..a88ac28e52a 100644 --- a/source/blender/bmesh/intern/bmesh_operators.c +++ b/source/blender/bmesh/intern/bmesh_operators.c @@ -79,14 +79,14 @@ const int BMOP_OPSLOT_TYPEINFO[] = { }; /* Dummy slot so there is something to return when slot name lookup fails */ -static BMOpSlot BMOpEmptySlot = { 0 }; +static BMOpSlot BMOpEmptySlot = {0}; -void BMO_Set_OpFlag(BMesh *UNUSED(bm), BMOperator *op, int flag) +void BMO_Set_OpFlag(BMesh *UNUSED(bm), BMOperator *op, const int flag) { op->flag |= flag; } -void BMO_Clear_OpFlag(BMesh *UNUSED(bm), BMOperator *op, int flag) +void BMO_Clear_OpFlag(BMesh *UNUSED(bm), BMOperator *op, const int flag) { op->flag &= ~flag; } @@ -433,7 +433,7 @@ void BMO_Get_Vec(BMOperator *op, const char *slotname, float r_vec[3]) * */ -int BMO_CountFlag(BMesh *bm, int flag, const char htype) +int BMO_CountFlag(BMesh *bm, const int oflag, const char htype) { BMIter elements; BMHeader *e; @@ -441,19 +441,19 @@ int BMO_CountFlag(BMesh *bm, int flag, const char htype) if (htype & BM_VERT) { for (e = BMIter_New(&elements, bm, BM_VERTS_OF_MESH, bm); e; e = BMIter_Step(&elements)) { - if (BMO_TestFlag(bm, e, flag)) + if (BMO_TestFlag(bm, e, oflag)) count++; } } if (htype & BM_EDGE) { for (e = BMIter_New(&elements, bm, BM_EDGES_OF_MESH, bm); e; e = BMIter_Step(&elements)) { - if (BMO_TestFlag(bm, e, flag)) + if (BMO_TestFlag(bm, e, oflag)) count++; } } if (htype & BM_FACE) { for (e = BMIter_New(&elements, bm, BM_FACES_OF_MESH, bm); e; e = BMIter_Step(&elements)) { - if (BMO_TestFlag(bm, e, flag)) + if (BMO_TestFlag(bm, e, oflag)) count++; } } @@ -461,18 +461,22 @@ int BMO_CountFlag(BMesh *bm, int flag, const char htype) return count; } -void BMO_Clear_Flag_All(BMesh *bm, BMOperator *UNUSED(op), const char htype, int flag) +void BMO_Clear_Flag_All(BMesh *bm, BMOperator *UNUSED(op), const char htype, const int oflag) { + const char iter_types[3] = {BM_VERTS_OF_MESH, + BM_EDGES_OF_MESH, + BM_FACES_OF_MESH}; + + const char flag_types[3] = {BM_VERT, BM_EDGE, BM_FACE}; + BMIter iter; BMHeader *ele; - int types[3] = {BM_VERTS_OF_MESH, BM_EDGES_OF_MESH, BM_FACES_OF_MESH}; - int flags[3] = {BM_VERT, BM_EDGE, BM_FACE}; int i; for (i = 0; i < 3; i++) { - if (htype & flags[i]) { - BM_ITER(ele, &iter, bm, types[i], NULL) { - BMO_ClearFlag(bm, ele, flag); + if (htype & flag_types[i]) { + BM_ITER(ele, &iter, bm, iter_types[i], NULL) { + BMO_ClearFlag(bm, ele, oflag); } } } @@ -536,7 +540,7 @@ void *BMO_Grow_Array(BMesh *bm, BMOperator *op, int slotcode, int totadd) #endif void BMO_Mapping_To_Flag(struct BMesh *bm, struct BMOperator *op, - const char *slotname, int flag) + const char *slotname, const int oflag) { GHashIterator it; BMOpSlot *slot = BMO_GetSlot(op, slotname); @@ -548,7 +552,7 @@ void BMO_Mapping_To_Flag(struct BMesh *bm, struct BMOperator *op, BLI_ghashIterator_init(&it, slot->data.ghash); for ( ; (ele = BLI_ghashIterator_getKey(&it)); BLI_ghashIterator_step(&it)) { - BMO_SetFlag(bm, ele, flag); + BMO_SetFlag(bm, ele, oflag); } } @@ -663,26 +667,25 @@ void BMO_HeaderFlag_To_Slot(BMesh *bm, BMOperator *op, const char *slotname, } /* - * * BMO_FLAG_TO_SLOT * * Copies elements of a certain type, which have a certain flag set * into an output slot for an operator. */ void BMO_Flag_To_Slot(BMesh *bm, BMOperator *op, const char *slotname, - const int flag, const char htype) + const int oflag, const char htype) { BMIter elements; BMHeader *e; BMOpSlot *output = BMO_GetSlot(op, slotname); - int totelement = BMO_CountFlag(bm, flag, htype), i = 0; + int totelement = BMO_CountFlag(bm, oflag, htype), i = 0; if (totelement) { alloc_slot_buffer(op, slotname, totelement); if (htype & BM_VERT) { for (e = BMIter_New(&elements, bm, BM_VERTS_OF_MESH, bm); e; e = BMIter_Step(&elements)) { - if (BMO_TestFlag(bm, e, flag)) { + if (BMO_TestFlag(bm, e, oflag)) { ((BMHeader **)output->data.p)[i] = e; i++; } @@ -691,7 +694,7 @@ void BMO_Flag_To_Slot(BMesh *bm, BMOperator *op, const char *slotname, if (htype & BM_EDGE) { for (e = BMIter_New(&elements, bm, BM_EDGES_OF_MESH, bm); e; e = BMIter_Step(&elements)) { - if (BMO_TestFlag(bm, e, flag)) { + if (BMO_TestFlag(bm, e, oflag)) { ((BMHeader **)output->data.p)[i] = e; i++; } @@ -700,7 +703,7 @@ void BMO_Flag_To_Slot(BMesh *bm, BMOperator *op, const char *slotname, if (htype & BM_FACE) { for (e = BMIter_New(&elements, bm, BM_FACES_OF_MESH, bm); e; e = BMIter_Step(&elements)) { - if (BMO_TestFlag(bm, e, flag)) { + if (BMO_TestFlag(bm, e, oflag)) { ((BMHeader **)output->data.p)[i] = e; i++; } @@ -762,7 +765,7 @@ void BMO_UnHeaderFlag_Buffer(BMesh *bm, BMOperator *op, const char *slotname, BM_ClearHFlag(data[i], hflag); } } -int BMO_Vert_CountEdgeFlags(BMesh *bm, BMVert *v, int toolflag) +int BMO_Vert_CountEdgeFlags(BMesh *bm, BMVert *v, const int oflag) { int count = 0; @@ -772,7 +775,7 @@ int BMO_Vert_CountEdgeFlags(BMesh *bm, BMVert *v, int toolflag) int i; for (i = 0, curedge = v->e; i < len; i++) { - if (BMO_TestFlag(bm, curedge, toolflag)) + if (BMO_TestFlag(bm, curedge, oflag)) count++; curedge = bmesh_disk_nextedge(curedge, v); } @@ -788,7 +791,7 @@ int BMO_Vert_CountEdgeFlags(BMesh *bm, BMVert *v, int toolflag) * Flags elements in a slots buffer */ void BMO_Flag_Buffer(BMesh *bm, BMOperator *op, const char *slotname, - const int hflag, const char htype) + const int oflag, const char htype) { BMOpSlot *slot = BMO_GetSlot(op, slotname); BMHeader **data = slot->data.p; @@ -798,7 +801,7 @@ void BMO_Flag_Buffer(BMesh *bm, BMOperator *op, const char *slotname, if (!(htype & data[i]->htype)) continue; - BMO_SetFlag(bm, data[i], hflag); + BMO_SetFlag(bm, data[i], oflag); } } @@ -809,7 +812,7 @@ void BMO_Flag_Buffer(BMesh *bm, BMOperator *op, const char *slotname, * Removes flags from elements in a slots buffer */ void BMO_Unflag_Buffer(BMesh *bm, BMOperator *op, const char *slotname, - const int flag, const char htype) + const int oflag, const char htype) { BMOpSlot *slot = BMO_GetSlot(op, slotname); BMHeader **data = slot->data.p; @@ -819,7 +822,7 @@ void BMO_Unflag_Buffer(BMesh *bm, BMOperator *op, const char *slotname, if (!(htype & data[i]->htype)) continue; - BMO_ClearFlag(bm, data[i], flag); + BMO_ClearFlag(bm, data[i], oflag); } } @@ -1404,10 +1407,10 @@ int BMO_CallOpf(BMesh *bm, const char *fmt, ...) #ifdef BMO_ToggleFlag #undef BMO_ToggleFlag #endif -static void BMO_ToggleFlag(BMesh *bm, void *element, int flag) +static void BMO_ToggleFlag(BMesh *bm, void *element, int oflag) { BMHeader *head = element; - head->flags[bm->stackdepth - 1].f ^= flag; + head->flags[bm->stackdepth - 1].f ^= oflag; } /* @@ -1418,10 +1421,10 @@ static void BMO_ToggleFlag(BMesh *bm, void *element, int flag) #ifdef BMO_SetFlag #undef BMO_SetFlag #endif -static void BMO_SetFlag(BMesh *bm, void *element, const int flag) +static void BMO_SetFlag(BMesh *bm, void *element, const int oflag) { BMHeader *head = element; - head->flags[bm->stackdepth - 1].f |= flag; + head->flags[bm->stackdepth - 1].f |= oflag; } /* @@ -1432,10 +1435,10 @@ static void BMO_SetFlag(BMesh *bm, void *element, const int flag) #ifdef BMO_ClearFlag #undef BMO_ClearFlag #endif -static void BMO_ClearFlag(BMesh *bm, void *element, const int flag) +static void BMO_ClearFlag(BMesh *bm, void *element, const int oflag) { BMHeader *head = element; - head->flags[bm->stackdepth - 1].f &= ~flag; + head->flags[bm->stackdepth - 1].f &= ~oflag; } /* @@ -1447,10 +1450,10 @@ static void BMO_ClearFlag(BMesh *bm, void *element, const int flag) #ifdef BMO_TestFlag #undef BMO_TestFlag #endif -static int BMO_TestFlag(BMesh *bm, void *element, int flag) +static int BMO_TestFlag(BMesh *bm, void *element, const int oflag) { BMHeader *head = element; - if (head->flags[bm->stackdepth - 1].f & flag) + if (head->flags[bm->stackdepth - 1].f & oflag) return TRUE; return FALSE; } diff --git a/source/blender/bmesh/intern/bmesh_polygon.c b/source/blender/bmesh/intern/bmesh_polygon.c index b73a352f8f2..8af4fe2fba1 100644 --- a/source/blender/bmesh/intern/bmesh_polygon.c +++ b/source/blender/bmesh/intern/bmesh_polygon.c @@ -851,7 +851,7 @@ static BMLoop *find_ear(BMesh *UNUSED(bm), BMFace *f, float (*verts)[3], const i * triangles, and will be NULL-terminated. */ void BM_Triangulate_Face(BMesh *bm, BMFace *f, float (*projectverts)[3], - int newedgeflag, int newfaceflag, BMFace **newfaces) + const int newedge_oflag, const int newface_oflag, BMFace **newfaces) { int i, done, nvert, nf_i = 0; BMLoop *newl, *nextloop; @@ -899,8 +899,8 @@ void BM_Triangulate_Face(BMesh *bm, BMFace *f, float (*projectverts)[3], break; } - BMO_SetFlag(bm, newl->e, newedgeflag); - BMO_SetFlag(bm, f, newfaceflag); + BMO_SetFlag(bm, newl->e, newedge_oflag); + BMO_SetFlag(bm, f, newface_oflag); if (newfaces) newfaces[nf_i++] = f; @@ -931,8 +931,8 @@ void BM_Triangulate_Face(BMesh *bm, BMFace *f, float (*projectverts)[3], if (newfaces) newfaces[nf_i++] = f; - BMO_SetFlag(bm, newl->e, newedgeflag); - BMO_SetFlag(bm, f, newfaceflag); + BMO_SetFlag(bm, newl->e, newedge_oflag); + BMO_SetFlag(bm, f, newface_oflag); l_iter = nextloop; } } diff --git a/source/blender/bmesh/operators/removedoubles.c b/source/blender/bmesh/operators/removedoubles.c index 55ada9bf161..0e0080d0a72 100644 --- a/source/blender/bmesh/operators/removedoubles.c +++ b/source/blender/bmesh/operators/removedoubles.c @@ -429,7 +429,8 @@ static void bmesh_collapsecon_do_layer(BMesh *bm, BMOperator *op, int layer) CDBlockBytes min, max; int i, tot, type = bm->ldata.layers[layer].type; - BMO_Clear_Flag_All(bm, op, BM_ALL, 65535); + /* clear all short flags */ + BMO_Clear_Flag_All(bm, op, BM_ALL, (1 << 16) - 1); BMO_Flag_Buffer(bm, op, "edges", EDGE_MARK, BM_EDGE); diff --git a/source/blender/editors/mesh/bmesh_select.c b/source/blender/editors/mesh/bmesh_select.c index 2cfabdb69cc..30f3319ef38 100644 --- a/source/blender/editors/mesh/bmesh_select.c +++ b/source/blender/editors/mesh/bmesh_select.c @@ -727,8 +727,9 @@ static int similar_face_select_exec(bContext *C, wmOperator *op) BMO_HeaderFlag_Buffer(em->bm, &bmop, "faceout", BM_SELECT, BM_ALL); /* finish the operator */ - if ( !EDBM_FinishOp(em, &bmop, op, 1) ) + if (!EDBM_FinishOp(em, &bmop, op, TRUE)) { return OPERATOR_CANCELLED; + } /* dependencies graph and notification stuff */ DAG_id_tag_update(ob->data, OB_RECALC_DATA); @@ -768,8 +769,9 @@ static int similar_edge_select_exec(bContext *C, wmOperator *op) EDBM_selectmode_flush(em); /* finish the operator */ - if ( !EDBM_FinishOp(em, &bmop, op, 1) ) + if (!EDBM_FinishOp(em, &bmop, op, TRUE)) { return OPERATOR_CANCELLED; + } /* dependencies graph and notification stuff */ DAG_id_tag_update(ob->data, OB_RECALC_DATA); @@ -811,8 +813,9 @@ static int similar_vert_select_exec(bContext *C, wmOperator *op) BMO_HeaderFlag_Buffer(em->bm, &bmop, "vertout", BM_SELECT, BM_ALL); /* finish the operator */ - if ( !EDBM_FinishOp(em, &bmop, op, 1) ) + if (!EDBM_FinishOp(em, &bmop, op, TRUE)) { return OPERATOR_CANCELLED; + } EDBM_selectmode_flush(em); @@ -2002,7 +2005,7 @@ static void walker_deselect_nth(BMEditMesh *em, int nth, int offset, BMHeader *h } /* Walker restrictions uses BMO flags, not header flags, - so transfer BM_SELECT from HFlags onto a BMO flag layer. */ + * so transfer BM_SELECT from HFlags onto a BMO flag layer. */ BMO_push(bm, NULL); BM_ITER(h, &iter, bm, itertype, NULL) { if (BM_TestHFlag(h, BM_SELECT)) { diff --git a/source/blender/editors/mesh/bmesh_tools.c b/source/blender/editors/mesh/bmesh_tools.c index a03e25cc1f9..a60f9f9ee6a 100644 --- a/source/blender/editors/mesh/bmesh_tools.c +++ b/source/blender/editors/mesh/bmesh_tools.c @@ -222,7 +222,9 @@ static short EDBM_Extrude_face_indiv(BMEditMesh *em, wmOperator *op, const char } } - if (!EDBM_FinishOp(em, &bmop, op, 1)) return 0; + if (!EDBM_FinishOp(em, &bmop, op, TRUE)) { + return 0; + } return 's'; // s is shrink/fatten } @@ -240,7 +242,9 @@ static short EDBM_Extrude_edges_indiv(BMEditMesh *em, wmOperator *op, const char BMO_Exec_Op(em->bm, &bmop); BMO_HeaderFlag_Buffer(em->bm, &bmop, "geomout", BM_SELECT, BM_VERT|BM_EDGE); - if (!EDBM_FinishOp(em, &bmop, op, 1)) return 0; + if (!EDBM_FinishOp(em, &bmop, op, TRUE)) { + return 0; + } return 'n'; // n is normal grab } @@ -258,7 +262,9 @@ static short EDBM_Extrude_verts_indiv(BMEditMesh *em, wmOperator *op, const char BMO_Exec_Op(em->bm, &bmop); BMO_HeaderFlag_Buffer(em->bm, &bmop, "vertout", BM_SELECT, BM_VERT); - if (!EDBM_FinishOp(em, &bmop, op, 1)) return 0; + if (!EDBM_FinishOp(em, &bmop, op, TRUE)) { + return 0; + } return 'g'; // g is grab } @@ -854,8 +860,9 @@ static int dupli_extrude_cursor(bContext *C, wmOperator *op, wmEvent *event) BM_Select(vc.em->bm, v1, TRUE); } - if (!EDBM_FinishOp(vc.em, &bmop, op, 1)) + if (!EDBM_FinishOp(vc.em, &bmop, op, TRUE)) { return OPERATOR_CANCELLED; + } } if (use_proj) @@ -1019,8 +1026,9 @@ static int addedgeface_mesh_exec(bContext *C, wmOperator *op) BMO_Exec_Op(em->bm, &bmop); BMO_HeaderFlag_Buffer(em->bm, &bmop, "faceout", BM_SELECT, BM_FACE); - if (!EDBM_FinishOp(em, &bmop, op, 1)) + if (!EDBM_FinishOp(em, &bmop, op, TRUE)) { return OPERATOR_CANCELLED; + } WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit); DAG_id_tag_update(obedit->data, OB_RECALC_DATA); @@ -1169,7 +1177,7 @@ static int editbmesh_vert_connect(bContext *C, wmOperator *op) } BMO_Exec_Op(bm, &bmop); len = BMO_GetSlot(&bmop, "edgeout")->len; - if (!EDBM_FinishOp(em, &bmop, op, 1)) { + if (!EDBM_FinishOp(em, &bmop, op, TRUE)) { return OPERATOR_CANCELLED; } @@ -1207,7 +1215,7 @@ static int editbmesh_edge_split(bContext *C, wmOperator *op) } BMO_Exec_Op(bm, &bmop); len = BMO_GetSlot(&bmop, "outsplit")->len; - if (!EDBM_FinishOp(em, &bmop, op, 1)) { + if (!EDBM_FinishOp(em, &bmop, op, TRUE)) { return OPERATOR_CANCELLED; } @@ -1248,8 +1256,9 @@ static int mesh_duplicate_exec(bContext *C, wmOperator *op) BMO_HeaderFlag_Buffer(em->bm, &bmop, "newout", BM_SELECT, BM_ALL); - if (!EDBM_FinishOp(em, &bmop, op, 1)) + if (!EDBM_FinishOp(em, &bmop, op, TRUE)) { return OPERATOR_CANCELLED; + } DAG_id_tag_update(ob->data, OB_RECALC_DATA); WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob->data); @@ -1382,8 +1391,9 @@ static int edge_rotate_selected(bContext *C, wmOperator *op) BMO_Exec_Op(em->bm, &bmop); BMO_HeaderFlag_Buffer(em->bm, &bmop, "edgeout", BM_SELECT, BM_EDGE); - if (!EDBM_FinishOp(em, &bmop, op, 1)) + if (!EDBM_FinishOp(em, &bmop, op, TRUE)) { return OPERATOR_CANCELLED; + } DAG_id_tag_update(obedit->data, OB_RECALC_DATA); WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data); @@ -1476,18 +1486,22 @@ void MESH_OT_hide(wmOperatorType *ot) void EDBM_reveal_mesh(BMEditMesh *em) { + const char iter_types[3] = {BM_VERTS_OF_MESH, + BM_EDGES_OF_MESH, + BM_FACES_OF_MESH}; + + int sels[3] = {(em->selectmode & SCE_SELECT_VERTEX), + (em->selectmode & SCE_SELECT_EDGE), + (em->selectmode & SCE_SELECT_FACE), + }; + BMIter iter; - BMHeader *ele; - int i, types[3] = {BM_VERTS_OF_MESH, BM_EDGES_OF_MESH, BM_FACES_OF_MESH}; - int sels[3] = { - (em->selectmode & SCE_SELECT_VERTEX), - (em->selectmode & SCE_SELECT_EDGE), - (em->selectmode & SCE_SELECT_FACE), - }; + BMHeader *ele; + int i; /* Use index field to remember what was hidden before all is revealed. */ - for (i=0; i<3; i++) { - BM_ITER(ele, &iter, em->bm, types[i], NULL) { + for (i = 0; i < 3; i++) { + BM_ITER(ele, &iter, em->bm, iter_types[i], NULL) { if (BM_TestHFlag(ele, BM_HIDDEN)) { BM_SetHFlag(ele, BM_TMP_TAG); } @@ -1501,12 +1515,12 @@ void EDBM_reveal_mesh(BMEditMesh *em) EDBM_clear_flag_all(em, BM_HIDDEN); /* Select relevant just-revealed elements */ - for (i=0; i<3; i++) { + for (i = 0; i < 3; i++) { if (!sels[i]) { continue; } - BM_ITER(ele, &iter, em->bm, types[i], NULL) { + BM_ITER(ele, &iter, em->bm, iter_types[i], NULL) { if (BM_TestHFlag(ele, BM_TMP_TAG)) { BM_Select(em->bm, ele, TRUE); } @@ -1829,9 +1843,9 @@ static int mesh_rotate_uvs(bContext *C, wmOperator *op) BMO_Exec_Op(em->bm, &bmop); /* finish the operator */ - if ( !EDBM_FinishOp(em, &bmop, op, 1) ) + if (!EDBM_FinishOp(em, &bmop, op, TRUE)) { return OPERATOR_CANCELLED; - + } /* dependencies graph and notification stuff */ DAG_id_tag_update(ob->data, OB_RECALC_DATA); @@ -1854,8 +1868,9 @@ static int mesh_reverse_uvs(bContext *C, wmOperator *op) BMO_Exec_Op(em->bm, &bmop); /* finish the operator */ - if ( !EDBM_FinishOp(em, &bmop, op, 1) ) + if (!EDBM_FinishOp(em, &bmop, op, TRUE)) { return OPERATOR_CANCELLED; + } /* dependencies graph and notification stuff */ DAG_id_tag_update(ob->data, OB_RECALC_DATA); @@ -1881,9 +1896,9 @@ static int mesh_rotate_colors(bContext *C, wmOperator *op) BMO_Exec_Op(em->bm, &bmop); /* finish the operator */ - if ( !EDBM_FinishOp(em, &bmop, op, 1) ) + if (!EDBM_FinishOp(em, &bmop, op, TRUE)) { return OPERATOR_CANCELLED; - + } /* dependencies graph and notification stuff */ DAG_id_tag_update(ob->data, OB_RECALC_DATA); @@ -1909,8 +1924,9 @@ static int mesh_reverse_colors(bContext *C, wmOperator *op) BMO_Exec_Op(em->bm, &bmop); /* finish the operator */ - if ( !EDBM_FinishOp(em, &bmop, op, 1) ) + if (!EDBM_FinishOp(em, &bmop, op, TRUE)) { return OPERATOR_CANCELLED; + } DAG_id_tag_update(ob->data, OB_RECALC_DATA); WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob->data); @@ -2185,8 +2201,9 @@ static int removedoublesflag_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; } - if (!EDBM_FinishOp(em, &bmop, op, 1)) + if (!EDBM_FinishOp(em, &bmop, op, TRUE)) { return OPERATOR_CANCELLED; + } /*we need a better way of reporting this, since this doesn't work with the last operator panel correctly. @@ -2270,8 +2287,9 @@ static int select_vertex_path_exec(bContext *C, wmOperator *op) BMO_HeaderFlag_Buffer(em->bm, &bmop, "vertout", BM_SELECT, BM_ALL); /* finish the operator */ - if ( !EDBM_FinishOp(em, &bmop, op, 1) ) + if (!EDBM_FinishOp(em, &bmop, op, TRUE)) { return OPERATOR_CANCELLED; + } EDBM_selectmode_flush(em); @@ -2522,7 +2540,7 @@ static int mesh_rip_invoke(bContext *C, wmOperator *op, wmEvent *event) BLI_assert(singlesel ? (bm->totvertsel > 0) : (bm->totedgesel > 0)); - if (!EDBM_FinishOp(em, &bmop, op, 1)) { + if (!EDBM_FinishOp(em, &bmop, op, TRUE)) { return OPERATOR_CANCELLED; } @@ -2827,7 +2845,7 @@ static int solidify_exec(bContext *C, wmOperator *op) /* select the newly generated faces */ BMO_HeaderFlag_Buffer(bm, &bmop, "geomout", BM_SELECT, BM_FACE); - if (!EDBM_FinishOp(em, &bmop, op, 1)) { + if (!EDBM_FinishOp(em, &bmop, op, TRUE)) { return OPERATOR_CANCELLED; } @@ -3149,7 +3167,7 @@ static int knife_cut_exec(bContext *C, wmOperator *op) BMO_Set_Float(&bmop, "radius", 0); BMO_Exec_Op(bm, &bmop); - if (!EDBM_FinishOp(em, &bmop, op, 1)) { + if (!EDBM_FinishOp(em, &bmop, op, TRUE)) { return OPERATOR_CANCELLED; } @@ -3398,8 +3416,9 @@ static int fill_mesh_exec(bContext *C, wmOperator *op) /*select new geometry*/ BMO_HeaderFlag_Buffer(em->bm, &bmop, "geomout", BM_SELECT, BM_FACE|BM_EDGE); - if (!EDBM_FinishOp(em, &bmop, op, 1)) + if (!EDBM_FinishOp(em, &bmop, op, TRUE)) { return OPERATOR_CANCELLED; + } DAG_id_tag_update(obedit->data, OB_RECALC_DATA); WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data); @@ -3570,7 +3589,7 @@ static int split_mesh_exec(bContext *C, wmOperator *op) BMO_Exec_Op(em->bm, &bmop); BM_clear_flag_all(em->bm, BM_SELECT); BMO_HeaderFlag_Buffer(em->bm, &bmop, "geomout", BM_SELECT, BM_ALL); - if (!EDBM_FinishOp(em, &bmop, op, 1)) { + if (!EDBM_FinishOp(em, &bmop, op, TRUE)) { return OPERATOR_CANCELLED; } @@ -3632,7 +3651,7 @@ static int spin_mesh_exec(bContext *C, wmOperator *op) BMO_Exec_Op(bm, &spinop); EDBM_clear_flag_all(em, BM_SELECT); BMO_HeaderFlag_Buffer(bm, &spinop, "lastout", BM_SELECT, BM_ALL); - if (!EDBM_FinishOp(em, &spinop, op, 1)) { + if (!EDBM_FinishOp(em, &spinop, op, TRUE)) { return OPERATOR_CANCELLED; } @@ -3753,7 +3772,7 @@ static int screw_mesh_exec(bContext *C, wmOperator *op) BMO_Exec_Op(bm, &spinop); EDBM_clear_flag_all(em, BM_SELECT); BMO_HeaderFlag_Buffer(bm, &spinop, "lastout", BM_SELECT, BM_ALL); - if (!EDBM_FinishOp(em, &spinop, op, 1)) { + if (!EDBM_FinishOp(em, &spinop, op, TRUE)) { return OPERATOR_CANCELLED; } @@ -4441,7 +4460,7 @@ static int mesh_bevel_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; BMO_Exec_Op(em->bm, &bmop); - if (!EDBM_FinishOp(em, &bmop, op, 1)) + if (!EDBM_FinishOp(em, &bmop, op, TRUE)) return OPERATOR_CANCELLED; } diff --git a/source/blender/editors/mesh/bmeshutils.c b/source/blender/editors/mesh/bmeshutils.c index d295011b6b5..10e82d7bbcb 100644 --- a/source/blender/editors/mesh/bmeshutils.c +++ b/source/blender/editors/mesh/bmeshutils.c @@ -119,9 +119,12 @@ void EDBM_ClearMesh(BMEditMesh *em) void EDBM_stats_update(BMEditMesh *em) { + const char iter_types[3] = {BM_VERTS_OF_MESH, + BM_EDGES_OF_MESH, + BM_FACES_OF_MESH}; + BMIter iter; BMHeader *ele; - const char itypes[3] = {BM_VERTS_OF_MESH, BM_EDGES_OF_MESH, BM_FACES_OF_MESH}; int *tots[3]; int i; @@ -132,7 +135,7 @@ void EDBM_stats_update(BMEditMesh *em) em->bm->totvertsel = em->bm->totedgesel = em->bm->totfacesel = 0; for (i=0; i<3; i++) { - ele = BMIter_New(&iter, em->bm, itypes[i], NULL); + ele = BMIter_New(&iter, em->bm, iter_types[i], NULL); for ( ; ele; ele=BMIter_Step(&iter)) { if (BM_TestHFlag(ele, BM_SELECT)) { (*tots[i])++; @@ -166,7 +169,7 @@ int EDBM_InitOpf(BMEditMesh *em, BMOperator *bmop, wmOperator *op, const char *f /*returns 0 on error, 1 on success. executes and finishes a bmesh operator*/ -int EDBM_FinishOp(BMEditMesh *em, BMOperator *bmop, wmOperator *op, int report) +int EDBM_FinishOp(BMEditMesh *em, BMOperator *bmop, wmOperator *op, const int report) { const char *errmsg; @@ -224,7 +227,7 @@ int EDBM_CallOpf(BMEditMesh *em, wmOperator *op, const char *fmt, ...) BMO_Exec_Op(bm, &bmop); va_end(list); - return EDBM_FinishOp(em, &bmop, op, 1); + return EDBM_FinishOp(em, &bmop, op, TRUE); } int EDBM_CallAndSelectOpf(BMEditMesh *em, wmOperator *op, const char *selectslot, const char *fmt, ...) @@ -250,7 +253,7 @@ int EDBM_CallAndSelectOpf(BMEditMesh *em, wmOperator *op, const char *selectslot BMO_HeaderFlag_Buffer(em->bm, &bmop, selectslot, BM_SELECT, BM_ALL); va_end(list); - return EDBM_FinishOp(em, &bmop, op, 1); + return EDBM_FinishOp(em, &bmop, op, TRUE); } int EDBM_CallOpfSilent(BMEditMesh *em, const char *fmt, ...) @@ -273,7 +276,7 @@ int EDBM_CallOpfSilent(BMEditMesh *em, const char *fmt, ...) BMO_Exec_Op(bm, &bmop); va_end(list); - return EDBM_FinishOp(em, &bmop, NULL, 0); + return EDBM_FinishOp(em, &bmop, NULL, FALSE); } void EDBM_selectmode_to_scene(bContext *C) @@ -499,7 +502,9 @@ int EDBM_get_actSelection(BMEditMesh *em, BMEditSelection *ese) void EDBM_clear_flag_all(BMEditMesh *em, const char hflag) { - int types[3] = {BM_VERTS_OF_MESH, BM_EDGES_OF_MESH, BM_FACES_OF_MESH}; + const char iter_types[3] = {BM_VERTS_OF_MESH, + BM_EDGES_OF_MESH, + BM_FACES_OF_MESH}; BMIter iter; BMHeader *ele; int i; @@ -508,7 +513,7 @@ void EDBM_clear_flag_all(BMEditMesh *em, const char hflag) BM_clear_selection_history(em->bm); for (i=0; i<3; i++) { - BM_ITER(ele, &iter, em->bm, types[i], NULL) { + BM_ITER(ele, &iter, em->bm, iter_types[i], NULL) { if (hflag & BM_SELECT) BM_Select(em->bm, ele, FALSE); BM_ClearHFlag(ele, hflag); } @@ -517,13 +522,15 @@ void EDBM_clear_flag_all(BMEditMesh *em, const char hflag) void EDBM_set_flag_all(BMEditMesh *em, const char hflag) { - const char itypes[3] = {BM_VERTS_OF_MESH, BM_EDGES_OF_MESH, BM_FACES_OF_MESH}; + const char iter_types[3] = {BM_VERTS_OF_MESH, + BM_EDGES_OF_MESH, + BM_FACES_OF_MESH}; BMIter iter; BMHeader *ele; int i; for (i=0; i<3; i++) { - ele= BMIter_New(&iter, em->bm, itypes[i], NULL); + ele= BMIter_New(&iter, em->bm, iter_types[i], NULL); for ( ; ele; ele=BMIter_Step(&iter)) { if (hflag & BM_SELECT) { BM_Select(em->bm, ele, TRUE); diff --git a/source/blender/editors/mesh/mesh_intern.h b/source/blender/editors/mesh/mesh_intern.h index c6ed64e8dae..59e9ffe54b6 100644 --- a/source/blender/editors/mesh/mesh_intern.h +++ b/source/blender/editors/mesh/mesh_intern.h @@ -82,10 +82,10 @@ int EDBM_CallOpfSilent(struct BMEditMesh *em, const char *fmt, ...); execute the operator with BM_Exec_Op*/ int EDBM_InitOpf(struct BMEditMesh *em, struct BMOperator *bmop, - struct wmOperator *op, const char *fmt, ...); + struct wmOperator *op, const char *fmt, ...); /*cleans up after a bmesh operator*/ int EDBM_FinishOp(struct BMEditMesh *em, struct BMOperator *bmop, - struct wmOperator *op, int report); + struct wmOperator *op, const int report); void EDBM_clear_flag_all(struct BMEditMesh *em, const char hflag); void EDBM_store_selection(struct BMEditMesh *em, void *data);