Code Cleanup:
- use 'oflag' for operator flag arguments. - use TRUE/FALSE for some bool args
This commit is contained in:
@@ -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 */
|
||||
|
||||
@@ -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.
|
||||
*
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user