code cleanup: use vector math function minmax_v3v3_v3() and other minor vector function edits.

This commit is contained in:
Campbell Barton 2012-05-13 11:05:52 +00:00
parent 13bbf1cc7b
commit 305d341ec2
36 changed files with 186 additions and 198 deletions

@ -2541,14 +2541,14 @@ int get_selected_defgroups(Object *ob, char *dg_selection, int defbase_tot)
} }
/************** Bounding box ********************/ /************** Bounding box ********************/
static int minmax_armature(Object *ob, float min[3], float max[3]) static int minmax_armature(Object *ob, float r_min[3], float r_max[3])
{ {
bPoseChannel *pchan; bPoseChannel *pchan;
/* For now, we assume BKE_pose_where_is has already been called (hence we have valid data in pachan). */ /* For now, we assume BKE_pose_where_is has already been called (hence we have valid data in pachan). */
for (pchan = ob->pose->chanbase.first; pchan; pchan = pchan->next) { for (pchan = ob->pose->chanbase.first; pchan; pchan = pchan->next) {
DO_MINMAX(pchan->pose_head, min, max); minmax_v3v3_v3(r_min, r_max, pchan->pose_head);
DO_MINMAX(pchan->pose_tail, min, max); minmax_v3v3_v3(r_min, r_max, pchan->pose_tail);
} }
return (ob->pose->chanbase.first != NULL); return (ob->pose->chanbase.first != NULL);

@ -177,7 +177,7 @@ static void cdDM_getMinMax(DerivedMesh *dm, float min_r[3], float max_r[3])
if (dm->numVertData) { if (dm->numVertData) {
for (i = 0; i < dm->numVertData; i++) { for (i = 0; i < dm->numVertData; i++) {
DO_MINMAX(cddm->mvert[i].co, min_r, max_r); minmax_v3v3_v3(min_r, max_r, cddm->mvert[i].co);
} }
} }
else { else {

@ -393,7 +393,7 @@ void BKE_curve_texspace_calc(Curve *cu)
if (tot) doit = 1; if (tot) doit = 1;
fp = dl->verts; fp = dl->verts;
while (tot--) { while (tot--) {
DO_MINMAX(fp, min, max); minmax_v3v3_v3(min, max, fp);
fp += 3; fp += 3;
} }
dl = dl->next; dl = dl->next;
@ -598,9 +598,9 @@ void BKE_nurb_minmax(Nurb *nu, float min[3], float max[3])
a = nu->pntsu; a = nu->pntsu;
bezt = nu->bezt; bezt = nu->bezt;
while (a--) { while (a--) {
DO_MINMAX(bezt->vec[0], min, max); minmax_v3v3_v3(min, max, bezt->vec[0]);
DO_MINMAX(bezt->vec[1], min, max); minmax_v3v3_v3(min, max, bezt->vec[1]);
DO_MINMAX(bezt->vec[2], min, max); minmax_v3v3_v3(min, max, bezt->vec[2]);
bezt++; bezt++;
} }
} }
@ -608,7 +608,7 @@ void BKE_nurb_minmax(Nurb *nu, float min[3], float max[3])
a = nu->pntsu * nu->pntsv; a = nu->pntsu * nu->pntsv;
bp = nu->bp; bp = nu->bp;
while (a--) { while (a--) {
DO_MINMAX(bp->vec, min, max); minmax_v3v3_v3(min, max, bp->vec);
bp++; bp++;
} }
} }

@ -1606,19 +1606,13 @@ static void boundbox_displist(Object *ob)
if (cu->bb == NULL) cu->bb = MEM_callocN(sizeof(BoundBox), "boundbox"); if (cu->bb == NULL) cu->bb = MEM_callocN(sizeof(BoundBox), "boundbox");
bb = cu->bb; bb = cu->bb;
dl = ob->disp.first; for (dl = ob->disp.first; dl; dl = dl->next) {
tot = (dl->type == DL_INDEX3) ? dl->nr : dl->nr * dl->parts;
while (dl) {
if (dl->type == DL_INDEX3) tot = dl->nr;
else tot = dl->nr * dl->parts;
vert = dl->verts; vert = dl->verts;
for (a = 0; a < tot; a++, vert += 3) { for (a = 0; a < tot; a++, vert += 3) {
doit = 1; minmax_v3v3_v3(min, max, vert);
DO_MINMAX(vert, min, max);
} }
doit = (tot != 0);
dl = dl->next;
} }
if (!doit) { if (!doit) {

@ -1229,12 +1229,12 @@ static void emDM_getMinMax(DerivedMesh *dm, float min_r[3], float max_r[3])
if (bmdm->tc->bm->totvert) { if (bmdm->tc->bm->totvert) {
if (bmdm->vertexCos) { if (bmdm->vertexCos) {
BM_ITER_MESH_INDEX (eve, &iter, bmdm->tc->bm, BM_VERTS_OF_MESH, i) { BM_ITER_MESH_INDEX (eve, &iter, bmdm->tc->bm, BM_VERTS_OF_MESH, i) {
DO_MINMAX(bmdm->vertexCos[i], min_r, max_r); minmax_v3v3_v3(min_r, max_r, bmdm->vertexCos[i]);
} }
} }
else { else {
BM_ITER_MESH (eve, &iter, bmdm->tc->bm, BM_VERTS_OF_MESH) { BM_ITER_MESH (eve, &iter, bmdm->tc->bm, BM_VERTS_OF_MESH) {
DO_MINMAX(eve->co, min_r, max_r); minmax_v3v3_v3(min_r, max_r, eve->co);
} }
} }
} }

@ -701,7 +701,7 @@ void curve_deform_verts(Scene *scene, Object *cuOb, Object *target,
if (defvert_find_weight(dvert, index) > 0.0f) { if (defvert_find_weight(dvert, index) > 0.0f) {
mul_m4_v3(cd.curvespace, vertexCos[a]); mul_m4_v3(cd.curvespace, vertexCos[a]);
DO_MINMAX(vertexCos[a], cd.dmin, cd.dmax); minmax_v3v3_v3(cd.dmin, cd.dmax, vertexCos[a]);
} }
} }
@ -736,7 +736,7 @@ void curve_deform_verts(Scene *scene, Object *cuOb, Object *target,
for (a = 0; a < numVerts; a++) { for (a = 0; a < numVerts; a++) {
mul_m4_v3(cd.curvespace, vertexCos[a]); mul_m4_v3(cd.curvespace, vertexCos[a]);
DO_MINMAX(vertexCos[a], cd.dmin, cd.dmax); minmax_v3v3_v3(cd.dmin, cd.dmax, vertexCos[a]);
} }
for (a = 0; a < numVerts; a++) { for (a = 0; a < numVerts; a++) {

@ -368,7 +368,7 @@ void BKE_mball_texspace_calc(Object *ob)
data = dl->verts; data = dl->verts;
while (tot--) { while (tot--) {
/* Also weird... but longer. From utildefines. */ /* Also weird... but longer. From utildefines. */
DO_MINMAX(data, min, max); minmax_v3v3_v3(min, max, data);
data += 3; data += 3;
} }
dl = dl->next; dl = dl->next;
@ -2397,7 +2397,7 @@ int BKE_mball_minmax(MetaBall *mb, float min[3], float max[3])
INIT_MINMAX(min, max); INIT_MINMAX(min, max);
for (ml = mb->elems.first; ml; ml = ml->next) { for (ml = mb->elems.first; ml; ml = ml->next) {
DO_MINMAX(&ml->x, min, max); minmax_v3v3_v3(min, max, &ml->x);
} }
return (mb->elems.first != NULL); return (mb->elems.first != NULL);

@ -3017,7 +3017,7 @@ int BKE_mesh_minmax(Mesh *me, float r_min[3], float r_max[3])
int i = me->totvert; int i = me->totvert;
MVert *mvert; MVert *mvert;
for (mvert = me->mvert; i--; mvert++) { for (mvert = me->mvert; i--; mvert++) {
DO_MINMAX(mvert->co, r_min, r_max); minmax_v3v3_v3(r_min, r_max, mvert->co);
} }
return (me->totvert != 0); return (me->totvert != 0);

@ -2259,7 +2259,7 @@ void BKE_object_minmax(Object *ob, float min_r[3], float max_r[3])
for (a = 0; a < 8; a++) { for (a = 0; a < 8; a++) {
mul_m4_v3(ob->obmat, bb.vec[a]); mul_m4_v3(ob->obmat, bb.vec[a]);
DO_MINMAX(bb.vec[a], min_r, max_r); minmax_v3v3_v3(min_r, max_r, bb.vec[a]);
} }
change = TRUE; change = TRUE;
} }
@ -2274,7 +2274,7 @@ void BKE_object_minmax(Object *ob, float min_r[3], float max_r[3])
for (v = 0; v < lt->pntsv; v++) { for (v = 0; v < lt->pntsv; v++) {
for (u = 0; u < lt->pntsu; u++, bp++) { for (u = 0; u < lt->pntsu; u++, bp++) {
mul_v3_m4v3(vec, ob->obmat, bp->vec); mul_v3_m4v3(vec, ob->obmat, bp->vec);
DO_MINMAX(vec, min_r, max_r); minmax_v3v3_v3(min_r, max_r, vec);
} }
} }
} }
@ -2286,9 +2286,9 @@ void BKE_object_minmax(Object *ob, float min_r[3], float max_r[3])
bPoseChannel *pchan; bPoseChannel *pchan;
for (pchan = ob->pose->chanbase.first; pchan; pchan = pchan->next) { for (pchan = ob->pose->chanbase.first; pchan; pchan = pchan->next) {
mul_v3_m4v3(vec, ob->obmat, pchan->pose_head); mul_v3_m4v3(vec, ob->obmat, pchan->pose_head);
DO_MINMAX(vec, min_r, max_r); minmax_v3v3_v3(min_r, max_r, vec);
mul_v3_m4v3(vec, ob->obmat, pchan->pose_tail); mul_v3_m4v3(vec, ob->obmat, pchan->pose_tail);
DO_MINMAX(vec, min_r, max_r); minmax_v3v3_v3(min_r, max_r, vec);
} }
change = TRUE; change = TRUE;
} }
@ -2302,7 +2302,7 @@ void BKE_object_minmax(Object *ob, float min_r[3], float max_r[3])
for (a = 0; a < 8; a++) { for (a = 0; a < 8; a++) {
mul_m4_v3(ob->obmat, bb.vec[a]); mul_m4_v3(ob->obmat, bb.vec[a]);
DO_MINMAX(bb.vec[a], min_r, max_r); minmax_v3v3_v3(min_r, max_r, bb.vec[a]);
} }
change = TRUE; change = TRUE;
} }
@ -2311,15 +2311,15 @@ void BKE_object_minmax(Object *ob, float min_r[3], float max_r[3])
} }
if (change == FALSE) { if (change == FALSE) {
DO_MINMAX(ob->obmat[3], min_r, max_r); minmax_v3v3_v3(min_r, max_r, ob->obmat[3]);
copy_v3_v3(vec, ob->obmat[3]); copy_v3_v3(vec, ob->obmat[3]);
add_v3_v3(vec, ob->size); add_v3_v3(vec, ob->size);
DO_MINMAX(vec, min_r, max_r); minmax_v3v3_v3(min_r, max_r, vec);
copy_v3_v3(vec, ob->obmat[3]); copy_v3_v3(vec, ob->obmat[3]);
sub_v3_v3(vec, ob->size); sub_v3_v3(vec, ob->size);
DO_MINMAX(vec, min_r, max_r); minmax_v3v3_v3(min_r, max_r, vec);
} }
} }
@ -2343,7 +2343,7 @@ int BKE_object_minmax_dupli(Scene *scene, Object *ob, float r_min[3], float r_ma
for (i = 0; i < 8; i++) { for (i = 0; i < 8; i++) {
float vec[3]; float vec[3];
mul_v3_m4v3(vec, dob->mat, bb->vec[i]); mul_v3_m4v3(vec, dob->mat, bb->vec[i]);
DO_MINMAX(vec, r_min, r_max); minmax_v3v3_v3(r_min, r_max, vec);
} }
ok = 1; ok = 1;

@ -414,9 +414,7 @@ static void set_subsurf_uv(CCGSubSurf *ss, DerivedMesh *dm, DerivedMesh *result,
/* make a map from original faces to CCGFaces */ /* make a map from original faces to CCGFaces */
faceMap = MEM_mallocN(totface * sizeof(*faceMap), "facemapuv"); faceMap = MEM_mallocN(totface * sizeof(*faceMap), "facemapuv");
for (fi = ccgSubSurf_getFaceIterator(uvss); !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) {
fi = ccgSubSurf_getFaceIterator(uvss);
for (; !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) {
CCGFace *f = ccgFaceIterator_getCurrent(fi); CCGFace *f = ccgFaceIterator_getCurrent(fi);
faceMap[GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(f))] = f; faceMap[GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(f))] = f;
} }
@ -664,9 +662,9 @@ static void ccgDM_getMinMax(DerivedMesh *dm, float min_r[3], float max_r[3])
{ {
CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm;
CCGSubSurf *ss = ccgdm->ss; CCGSubSurf *ss = ccgdm->ss;
CCGVertIterator *vi = ccgSubSurf_getVertIterator(ss); CCGVertIterator *vi;
CCGEdgeIterator *ei = ccgSubSurf_getEdgeIterator(ss); CCGEdgeIterator *ei;
CCGFaceIterator *fi = ccgSubSurf_getFaceIterator(ss); CCGFaceIterator *fi;
CCGKey key; CCGKey key;
int i, edgeSize = ccgSubSurf_getEdgeSize(ss); int i, edgeSize = ccgSubSurf_getEdgeSize(ss);
int gridSize = ccgSubSurf_getGridSize(ss); int gridSize = ccgSubSurf_getGridSize(ss);
@ -676,22 +674,24 @@ static void ccgDM_getMinMax(DerivedMesh *dm, float min_r[3], float max_r[3])
if (!ccgSubSurf_getNumVerts(ss)) if (!ccgSubSurf_getNumVerts(ss))
min_r[0] = min_r[1] = min_r[2] = max_r[0] = max_r[1] = max_r[2] = 0.0; min_r[0] = min_r[1] = min_r[2] = max_r[0] = max_r[1] = max_r[2] = 0.0;
for (; !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) { for (vi = ccgSubSurf_getVertIterator(ss); !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) {
CCGVert *v = ccgVertIterator_getCurrent(vi); CCGVert *v = ccgVertIterator_getCurrent(vi);
float *co = ccgSubSurf_getVertData(ss, v); float *co = ccgSubSurf_getVertData(ss, v);
minmax_v3_v3v3(co, min_r, max_r); minmax_v3_v3v3(co, min_r, max_r);
} }
ccgVertIterator_free(vi);
for (; !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) { for (ei = ccgSubSurf_getEdgeIterator(ss); !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) {
CCGEdge *e = ccgEdgeIterator_getCurrent(ei); CCGEdge *e = ccgEdgeIterator_getCurrent(ei);
CCGElem *edgeData = ccgSubSurf_getEdgeDataArray(ss, e); CCGElem *edgeData = ccgSubSurf_getEdgeDataArray(ss, e);
for (i = 0; i < edgeSize; i++) for (i = 0; i < edgeSize; i++)
minmax_v3_v3v3(CCG_elem_offset_co(&key, edgeData, i), min_r, max_r); minmax_v3_v3v3(CCG_elem_offset_co(&key, edgeData, i), min_r, max_r);
} }
ccgEdgeIterator_free(ei);
for (; !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) { for (fi = ccgSubSurf_getFaceIterator(ss); !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) {
CCGFace *f = ccgFaceIterator_getCurrent(fi); CCGFace *f = ccgFaceIterator_getCurrent(fi);
int S, x, y, numVerts = ccgSubSurf_getFaceNumVerts(f); int S, x, y, numVerts = ccgSubSurf_getFaceNumVerts(f);
@ -703,10 +703,7 @@ static void ccgDM_getMinMax(DerivedMesh *dm, float min_r[3], float max_r[3])
minmax_v3_v3v3(CCG_grid_elem_co(&key, faceGridData, x, y), min_r, max_r); minmax_v3_v3v3(CCG_grid_elem_co(&key, faceGridData, x, y), min_r, max_r);
} }
} }
ccgFaceIterator_free(fi); ccgFaceIterator_free(fi);
ccgEdgeIterator_free(ei);
ccgVertIterator_free(vi);
} }
static int ccgDM_getNumVerts(DerivedMesh *dm) static int ccgDM_getNumVerts(DerivedMesh *dm)
@ -1399,8 +1396,7 @@ static void ccgdm_getVertCos(DerivedMesh *dm, float (*cos)[3])
totvert = ccgSubSurf_getNumVerts(ss); totvert = ccgSubSurf_getNumVerts(ss);
vertMap2 = MEM_mallocN(totvert * sizeof(*vertMap2), "vertmap"); vertMap2 = MEM_mallocN(totvert * sizeof(*vertMap2), "vertmap");
vi = ccgSubSurf_getVertIterator(ss); for (vi = ccgSubSurf_getVertIterator(ss); !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) {
for (; !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) {
CCGVert *v = ccgVertIterator_getCurrent(vi); CCGVert *v = ccgVertIterator_getCurrent(vi);
vertMap2[GET_INT_FROM_POINTER(ccgSubSurf_getVertVertHandle(v))] = v; vertMap2[GET_INT_FROM_POINTER(ccgSubSurf_getVertVertHandle(v))] = v;
@ -1409,8 +1405,7 @@ static void ccgdm_getVertCos(DerivedMesh *dm, float (*cos)[3])
totedge = ccgSubSurf_getNumEdges(ss); totedge = ccgSubSurf_getNumEdges(ss);
edgeMap2 = MEM_mallocN(totedge * sizeof(*edgeMap2), "edgemap"); edgeMap2 = MEM_mallocN(totedge * sizeof(*edgeMap2), "edgemap");
ei = ccgSubSurf_getEdgeIterator(ss); for (ei = ccgSubSurf_getEdgeIterator(ss), i = 0; !ccgEdgeIterator_isStopped(ei); i++, ccgEdgeIterator_next(ei)) {
for (i = 0; !ccgEdgeIterator_isStopped(ei); i++, ccgEdgeIterator_next(ei)) {
CCGEdge *e = ccgEdgeIterator_getCurrent(ei); CCGEdge *e = ccgEdgeIterator_getCurrent(ei);
edgeMap2[GET_INT_FROM_POINTER(ccgSubSurf_getEdgeEdgeHandle(e))] = e; edgeMap2[GET_INT_FROM_POINTER(ccgSubSurf_getEdgeEdgeHandle(e))] = e;
@ -1418,8 +1413,7 @@ static void ccgdm_getVertCos(DerivedMesh *dm, float (*cos)[3])
totface = ccgSubSurf_getNumFaces(ss); totface = ccgSubSurf_getNumFaces(ss);
faceMap2 = MEM_mallocN(totface * sizeof(*faceMap2), "facemap"); faceMap2 = MEM_mallocN(totface * sizeof(*faceMap2), "facemap");
fi = ccgSubSurf_getFaceIterator(ss); for (fi = ccgSubSurf_getFaceIterator(ss); !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) {
for (; !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) {
CCGFace *f = ccgFaceIterator_getCurrent(fi); CCGFace *f = ccgFaceIterator_getCurrent(fi);
faceMap2[GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(f))] = f; faceMap2[GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(f))] = f;
@ -1473,11 +1467,11 @@ static void ccgDM_foreachMappedVert(
void *userData) void *userData)
{ {
CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm;
CCGVertIterator *vi = ccgSubSurf_getVertIterator(ccgdm->ss); CCGVertIterator *vi;
CCGKey key; CCGKey key;
CCG_key_top_level(&key, ccgdm->ss); CCG_key_top_level(&key, ccgdm->ss);
for (; !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) { for (vi = ccgSubSurf_getVertIterator(ccgdm->ss); !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) {
CCGVert *v = ccgVertIterator_getCurrent(vi); CCGVert *v = ccgVertIterator_getCurrent(vi);
CCGElem *vd = ccgSubSurf_getVertData(ccgdm->ss, v); CCGElem *vd = ccgSubSurf_getVertData(ccgdm->ss, v);
int index = ccgDM_getVertMapIndex(ccgdm->ss, v); int index = ccgDM_getVertMapIndex(ccgdm->ss, v);
@ -1496,13 +1490,13 @@ static void ccgDM_foreachMappedEdge(
{ {
CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm;
CCGSubSurf *ss = ccgdm->ss; CCGSubSurf *ss = ccgdm->ss;
CCGEdgeIterator *ei = ccgSubSurf_getEdgeIterator(ss); CCGEdgeIterator *ei;
CCGKey key; CCGKey key;
int i, edgeSize = ccgSubSurf_getEdgeSize(ss); int i, edgeSize = ccgSubSurf_getEdgeSize(ss);
CCG_key_top_level(&key, ss); CCG_key_top_level(&key, ss);
for (; !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) { for (ei = ccgSubSurf_getEdgeIterator(ss); !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) {
CCGEdge *e = ccgEdgeIterator_getCurrent(ei); CCGEdge *e = ccgEdgeIterator_getCurrent(ei);
CCGElem *edgeData = ccgSubSurf_getEdgeDataArray(ss, e); CCGElem *edgeData = ccgSubSurf_getEdgeDataArray(ss, e);
int index = ccgDM_getEdgeMapIndex(ss, e); int index = ccgDM_getEdgeMapIndex(ss, e);
@ -1527,15 +1521,13 @@ static void ccgDM_drawVerts(DerivedMesh *dm)
CCGFaceIterator *fi; CCGFaceIterator *fi;
glBegin(GL_POINTS); glBegin(GL_POINTS);
vi = ccgSubSurf_getVertIterator(ss); for (vi = ccgSubSurf_getVertIterator(ss); !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) {
for (; !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) {
CCGVert *v = ccgVertIterator_getCurrent(vi); CCGVert *v = ccgVertIterator_getCurrent(vi);
glVertex3fv(ccgSubSurf_getVertData(ss, v)); glVertex3fv(ccgSubSurf_getVertData(ss, v));
} }
ccgVertIterator_free(vi); ccgVertIterator_free(vi);
ei = ccgSubSurf_getEdgeIterator(ss); for (ei = ccgSubSurf_getEdgeIterator(ss); !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) {
for (; !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) {
CCGEdge *e = ccgEdgeIterator_getCurrent(ei); CCGEdge *e = ccgEdgeIterator_getCurrent(ei);
int x; int x;
@ -1544,8 +1536,7 @@ static void ccgDM_drawVerts(DerivedMesh *dm)
} }
ccgEdgeIterator_free(ei); ccgEdgeIterator_free(ei);
fi = ccgSubSurf_getFaceIterator(ss); for (fi = ccgSubSurf_getFaceIterator(ss); !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) {
for (; !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) {
CCGFace *f = ccgFaceIterator_getCurrent(fi); CCGFace *f = ccgFaceIterator_getCurrent(fi);
int x, y, S, numVerts = ccgSubSurf_getFaceNumVerts(f); int x, y, S, numVerts = ccgSubSurf_getFaceNumVerts(f);
@ -1808,7 +1799,8 @@ static void ccgDM_drawMappedFacesGLSL(DerivedMesh *dm,
#define PASSATTRIB(dx, dy, vert) { \ #define PASSATTRIB(dx, dy, vert) { \
if (attribs.totorco) { \ if (attribs.totorco) { \
index = getFaceIndex(ss, f, S, x + dx, y + dy, edgeSize, gridSize); \ index = getFaceIndex(ss, f, S, x + dx, y + dy, edgeSize, gridSize); \
glVertexAttrib3fvARB(attribs.orco.gl_index, attribs.orco.array[index]); \ glVertexAttrib3fvARB(attribs.orco.gl_index, \
attribs.orco.array[index]); \
} \ } \
for (b = 0; b < attribs.tottface; b++) { \ for (b = 0; b < attribs.tottface; b++) { \
MTFace *tf = &attribs.tface[b].array[a]; \ MTFace *tf = &attribs.tface[b].array[a]; \
@ -1934,7 +1926,9 @@ static void ccgDM_drawFacesGLSL(DerivedMesh *dm, DMSetMaterial setMaterial)
} }
/* Only used by non-editmesh types */ /* Only used by non-editmesh types */
static void ccgDM_drawMappedFacesMat(DerivedMesh *dm, void (*setMaterial)(void *userData, int, void *attribs), int (*setFace)(void *userData, int index), void *userData) static void ccgDM_drawMappedFacesMat(DerivedMesh *dm,
void (*setMaterial)(void *userData, int, void *attribs),
int (*setFace)(void *userData, int index), void *userData)
{ {
CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm;
CCGSubSurf *ss = ccgdm->ss; CCGSubSurf *ss = ccgdm->ss;
@ -1958,7 +1952,8 @@ static void ccgDM_drawMappedFacesMat(DerivedMesh *dm, void (*setMaterial)(void *
if (attribs.orco.gl_texco) \ if (attribs.orco.gl_texco) \
glTexCoord3fv(attribs.orco.array[index]); \ glTexCoord3fv(attribs.orco.array[index]); \
else \ else \
glVertexAttrib3fvARB(attribs.orco.gl_index, attribs.orco.array[index]); \ glVertexAttrib3fvARB(attribs.orco.gl_index, \
attribs.orco.array[index]); \
} \ } \
for (b = 0; b < attribs.tottface; b++) { \ for (b = 0; b < attribs.tottface; b++) { \
MTFace *tf = &attribs.tface[b].array[a]; \ MTFace *tf = &attribs.tface[b].array[a]; \
@ -2422,14 +2417,14 @@ static void ccgDM_drawMappedEdges(DerivedMesh *dm,
{ {
CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm;
CCGSubSurf *ss = ccgdm->ss; CCGSubSurf *ss = ccgdm->ss;
CCGEdgeIterator *ei = ccgSubSurf_getEdgeIterator(ss); CCGEdgeIterator *ei;
CCGKey key; CCGKey key;
int i, useAging, edgeSize = ccgSubSurf_getEdgeSize(ss); int i, useAging, edgeSize = ccgSubSurf_getEdgeSize(ss);
CCG_key_top_level(&key, ss); CCG_key_top_level(&key, ss);
ccgSubSurf_getUseAgeCounts(ss, &useAging, NULL, NULL, NULL); ccgSubSurf_getUseAgeCounts(ss, &useAging, NULL, NULL, NULL);
for (; !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) { for (ei = ccgSubSurf_getEdgeIterator(ss); !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) {
CCGEdge *e = ccgEdgeIterator_getCurrent(ei); CCGEdge *e = ccgEdgeIterator_getCurrent(ei);
CCGElem *edgeData = ccgSubSurf_getEdgeDataArray(ss, e); CCGElem *edgeData = ccgSubSurf_getEdgeDataArray(ss, e);
int index = ccgDM_getEdgeMapIndex(ss, e); int index = ccgDM_getEdgeMapIndex(ss, e);
@ -2460,13 +2455,13 @@ static void ccgDM_drawMappedEdgesInterp(DerivedMesh *dm,
CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm;
CCGSubSurf *ss = ccgdm->ss; CCGSubSurf *ss = ccgdm->ss;
CCGKey key; CCGKey key;
CCGEdgeIterator *ei = ccgSubSurf_getEdgeIterator(ss); CCGEdgeIterator *ei;
int i, useAging, edgeSize = ccgSubSurf_getEdgeSize(ss); int i, useAging, edgeSize = ccgSubSurf_getEdgeSize(ss);
CCG_key_top_level(&key, ss); CCG_key_top_level(&key, ss);
ccgSubSurf_getUseAgeCounts(ss, &useAging, NULL, NULL, NULL); ccgSubSurf_getUseAgeCounts(ss, &useAging, NULL, NULL, NULL);
for (; !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) { for (ei = ccgSubSurf_getEdgeIterator(ss); !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) {
CCGEdge *e = ccgEdgeIterator_getCurrent(ei); CCGEdge *e = ccgEdgeIterator_getCurrent(ei);
CCGElem *edgeData = ccgSubSurf_getEdgeDataArray(ss, e); CCGElem *edgeData = ccgSubSurf_getEdgeDataArray(ss, e);
int index = ccgDM_getEdgeMapIndex(ss, e); int index = ccgDM_getEdgeMapIndex(ss, e);
@ -2498,11 +2493,11 @@ static void ccgDM_foreachMappedFaceCenter(
CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm;
CCGSubSurf *ss = ccgdm->ss; CCGSubSurf *ss = ccgdm->ss;
CCGKey key; CCGKey key;
CCGFaceIterator *fi = ccgSubSurf_getFaceIterator(ss); CCGFaceIterator *fi;
CCG_key_top_level(&key, ss); CCG_key_top_level(&key, ss);
for (; !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) { for (fi = ccgSubSurf_getFaceIterator(ss); !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) {
CCGFace *f = ccgFaceIterator_getCurrent(fi); CCGFace *f = ccgFaceIterator_getCurrent(fi);
int index = ccgDM_getFaceMapIndex(ss, f); int index = ccgDM_getFaceMapIndex(ss, f);
@ -3168,8 +3163,7 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss,
totvert = ccgSubSurf_getNumVerts(ss); totvert = ccgSubSurf_getNumVerts(ss);
ccgdm->vertMap = MEM_mallocN(totvert * sizeof(*ccgdm->vertMap), "vertMap"); ccgdm->vertMap = MEM_mallocN(totvert * sizeof(*ccgdm->vertMap), "vertMap");
vi = ccgSubSurf_getVertIterator(ss); for (vi = ccgSubSurf_getVertIterator(ss); !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) {
for (; !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) {
CCGVert *v = ccgVertIterator_getCurrent(vi); CCGVert *v = ccgVertIterator_getCurrent(vi);
ccgdm->vertMap[GET_INT_FROM_POINTER(ccgSubSurf_getVertVertHandle(v))].vert = v; ccgdm->vertMap[GET_INT_FROM_POINTER(ccgSubSurf_getVertVertHandle(v))].vert = v;
@ -3178,8 +3172,7 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss,
totedge = ccgSubSurf_getNumEdges(ss); totedge = ccgSubSurf_getNumEdges(ss);
ccgdm->edgeMap = MEM_mallocN(totedge * sizeof(*ccgdm->edgeMap), "edgeMap"); ccgdm->edgeMap = MEM_mallocN(totedge * sizeof(*ccgdm->edgeMap), "edgeMap");
ei = ccgSubSurf_getEdgeIterator(ss); for (ei = ccgSubSurf_getEdgeIterator(ss); !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) {
for (; !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) {
CCGEdge *e = ccgEdgeIterator_getCurrent(ei); CCGEdge *e = ccgEdgeIterator_getCurrent(ei);
ccgdm->edgeMap[GET_INT_FROM_POINTER(ccgSubSurf_getEdgeEdgeHandle(e))].edge = e; ccgdm->edgeMap[GET_INT_FROM_POINTER(ccgSubSurf_getEdgeEdgeHandle(e))].edge = e;
@ -3187,8 +3180,7 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss,
totface = ccgSubSurf_getNumFaces(ss); totface = ccgSubSurf_getNumFaces(ss);
ccgdm->faceMap = MEM_mallocN(totface * sizeof(*ccgdm->faceMap), "faceMap"); ccgdm->faceMap = MEM_mallocN(totface * sizeof(*ccgdm->faceMap), "faceMap");
fi = ccgSubSurf_getFaceIterator(ss); for (fi = ccgSubSurf_getFaceIterator(ss); !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) {
for (; !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) {
CCGFace *f = ccgFaceIterator_getCurrent(fi); CCGFace *f = ccgFaceIterator_getCurrent(fi);
ccgdm->faceMap[GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(f))].face = f; ccgdm->faceMap[GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(f))].face = f;
@ -3237,7 +3229,7 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss,
has_edge_origindex = CustomData_has_layer(&ccgdm->dm.edgeData, CD_ORIGINDEX); has_edge_origindex = CustomData_has_layer(&ccgdm->dm.edgeData, CD_ORIGINDEX);
loopindex = loopindex2 = 0; //current loop index loopindex = loopindex2 = 0; /* current loop index */
for (index = 0; index < totface; index++) { for (index = 0; index < totface; index++) {
CCGFace *f = ccgdm->faceMap[index].face; CCGFace *f = ccgdm->faceMap[index].face;
int numVerts = ccgSubSurf_getFaceNumVerts(f); int numVerts = ccgSubSurf_getFaceNumVerts(f);
@ -3587,8 +3579,7 @@ void subsurf_calculate_limit_positions(Mesh *me, float (*positions_r)[3])
ss_sync_from_derivedmesh(ss, dm, NULL, 0); ss_sync_from_derivedmesh(ss, dm, NULL, 0);
vi = ccgSubSurf_getVertIterator(ss); for (vi = ccgSubSurf_getVertIterator(ss); !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) {
for (; !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) {
CCGVert *v = ccgVertIterator_getCurrent(vi); CCGVert *v = ccgVertIterator_getCurrent(vi);
int idx = GET_INT_FROM_POINTER(ccgSubSurf_getVertVertHandle(v)); int idx = GET_INT_FROM_POINTER(ccgSubSurf_getVertVertHandle(v));
int N = ccgSubSurf_getVertNumEdges(v); int N = ccgSubSurf_getVertNumEdges(v);
@ -3596,8 +3587,8 @@ void subsurf_calculate_limit_positions(Mesh *me, float (*positions_r)[3])
float *co; float *co;
int i; int i;
edge_sum[0] = edge_sum[1] = edge_sum[2] = 0.0; zero_v3(edge_sum);
face_sum[0] = face_sum[1] = face_sum[2] = 0.0; zero_v3(face_sum);
for (i = 0; i < N; i++) { for (i = 0; i < N; i++) {
CCGEdge *e = ccgSubSurf_getVertEdge(v, i); CCGEdge *e = ccgSubSurf_getVertEdge(v, i);

@ -118,6 +118,8 @@ MINLINE void negate_v3_v3(float r[3], const float a[3]);
MINLINE void negate_v4(float r[4]); MINLINE void negate_v4(float r[4]);
MINLINE void negate_v4_v4(float r[4], const float a[3]); MINLINE void negate_v4_v4(float r[4], const float a[3]);
MINLINE void negate_v3_short(short r[3]);
MINLINE float dot_v2v2(const float a[2], const float b[2]); MINLINE float dot_v2v2(const float a[2], const float b[2]);
MINLINE float dot_v3v3(const float a[3], const float b[3]); MINLINE float dot_v3v3(const float a[3], const float b[3]);

@ -2323,7 +2323,7 @@ void box_minmax_bounds_m4(float min[3], float max[3], float boundbox[2][3], floa
vec[2] = (a & 4) ? boundbox[0][2] : boundbox[1][2]; vec[2] = (a & 4) ? boundbox[0][2] : boundbox[1][2];
mul_m4_v3(mat, vec); mul_m4_v3(mat, vec);
DO_MINMAX(vec, mn, mx); minmax_v3v3_v3(mn, mx, vec);
} }
copy_v3_v3(min, mn); copy_v3_v3(min, mn);

@ -458,6 +458,14 @@ MINLINE void negate_v4_v4(float r[4], const float a[4])
r[3] = -a[3]; r[3] = -a[3];
} }
/* could add more... */
MINLINE void negate_v3_short(short r[3])
{
r[0] = -r[0];
r[1] = -r[1];
r[2] = -r[2];
}
MINLINE float dot_v2v2(const float a[2], const float b[2]) MINLINE float dot_v2v2(const float a[2], const float b[2])
{ {
return a[0] * b[0] + a[1] * b[1]; return a[0] * b[0] + a[1] * b[1];

@ -1090,10 +1090,7 @@ static void pbvh_update_normals(PBVH *bvh, PBVHNode **nodes,
copy_v3_v3(no, vnor[v]); copy_v3_v3(no, vnor[v]);
normalize_v3(no); normalize_v3(no);
normal_float_to_short_v3(mvert->no, no);
mvert->no[0] = (short)(no[0] * 32767.0f);
mvert->no[1] = (short)(no[1] * 32767.0f);
mvert->no[2] = (short)(no[2] * 32767.0f);
mvert->flag &= ~ME_VERT_PBVH_UPDATE; mvert->flag &= ~ME_VERT_PBVH_UPDATE;
} }

@ -213,7 +213,7 @@ void BM_face_calc_center_bounds(BMFace *f, float r_cent[3])
l_iter = l_first = BM_FACE_FIRST_LOOP(f); l_iter = l_first = BM_FACE_FIRST_LOOP(f);
do { do {
DO_MINMAX(l_iter->v->co, min, max); minmax_v3v3_v3(min, max, l_iter->v->co);
} while ((l_iter = l_iter->next) != l_first); } while ((l_iter = l_iter->next) != l_first);
mid_v3_v3v3(r_cent, min, max); mid_v3_v3v3(r_cent, min, max);

@ -396,8 +396,8 @@ void bmo_collapse_exec(BMesh *bm, BMOperator *op)
BLI_array_grow_one(edges); BLI_array_grow_one(edges);
edges[tot] = e; edges[tot] = e;
DO_MINMAX(e->v1->co, min, max); minmax_v3v3_v3(min, max, e->v1->co);
DO_MINMAX(e->v2->co, min, max); minmax_v3v3_v3(min, max, e->v2->co);
} }
add_v3_v3v3(min, min, max); add_v3_v3v3(min, min, max);

@ -569,8 +569,8 @@ void docenter_armature(Scene *scene, Object *ob, float cursor[3], int centermode
float min[3], max[3]; float min[3], max[3];
INIT_MINMAX(min, max); INIT_MINMAX(min, max);
for (ebone = arm->edbo->first; ebone; ebone = ebone->next) { for (ebone = arm->edbo->first; ebone; ebone = ebone->next) {
DO_MINMAX(ebone->head, min, max); minmax_v3v3_v3(min, max, ebone->head);
DO_MINMAX(ebone->tail, min, max); minmax_v3v3_v3(min, max, ebone->tail);
} }
mid_v3_v3v3(cent, min, max); mid_v3_v3v3(cent, min, max);
} }

@ -451,11 +451,11 @@ static void heat_ray_tree_create(LaplacianSystem *sys)
float bb[6]; float bb[6];
INIT_MINMAX(bb, bb + 3); INIT_MINMAX(bb, bb + 3);
DO_MINMAX(verts[mf->v1], bb, bb + 3); minmax_v3v3_v3(bb, bb + 3, verts[mf->v1]);
DO_MINMAX(verts[mf->v2], bb, bb + 3); minmax_v3v3_v3(bb, bb + 3, verts[mf->v2]);
DO_MINMAX(verts[mf->v3], bb, bb + 3); minmax_v3v3_v3(bb, bb + 3, verts[mf->v3]);
if (mf->v4) { if (mf->v4) {
DO_MINMAX(verts[mf->v4], bb, bb + 3); minmax_v3v3_v3(bb, bb + 3, verts[mf->v4]);
} }
BLI_bvhtree_insert(sys->heat.bvhtree, a, bb, 2); BLI_bvhtree_insert(sys->heat.bvhtree, a, bb, 2);
@ -1753,7 +1753,7 @@ static void harmonic_coordinates_bind(Scene *UNUSED(scene), MeshDeformModifierDa
INIT_MINMAX(mdb->min, mdb->max); INIT_MINMAX(mdb->min, mdb->max);
for (a = 0; a < mdb->totcagevert; a++) for (a = 0; a < mdb->totcagevert; a++)
DO_MINMAX(mdb->cagecos[a], mdb->min, mdb->max); minmax_v3v3_v3(mdb->min, mdb->max, mdb->cagecos[a]);
/* allocate memory */ /* allocate memory */
mdb->size = (2 << (mmd->gridsize - 1)) + 2; mdb->size = (2 << (mmd->gridsize - 1)) + 2;

@ -427,7 +427,7 @@ int paintface_minmax(Object *ob, float r_min[3], float r_max[3])
copy_v3_v3(vec, (mvert[ml->v].co)); copy_v3_v3(vec, (mvert[ml->v].co));
mul_m3_v3(bmat, vec); mul_m3_v3(bmat, vec);
add_v3_v3v3(vec, vec, ob->obmat[3]); add_v3_v3v3(vec, vec, ob->obmat[3]);
DO_MINMAX(vec, r_min, r_max); minmax_v3v3_v3(r_min, r_max, vec);
} }
ok = TRUE; ok = TRUE;

@ -734,7 +734,7 @@ static int edbm_dupli_extrude_cursor_invoke(bContext *C, wmOperator *op, wmEvent
BM_ITER_MESH (v1, &iter, vc.em->bm, BM_VERTS_OF_MESH) { BM_ITER_MESH (v1, &iter, vc.em->bm, BM_VERTS_OF_MESH) {
if (BM_elem_flag_test(v1, BM_ELEM_SELECT)) { if (BM_elem_flag_test(v1, BM_ELEM_SELECT)) {
DO_MINMAX(v1->co, min, max); minmax_v3v3_v3(min, max, v1->co);
done = 1; done = 1;
} }
} }

@ -806,7 +806,7 @@ intptr_t mesh_octree_table(Object *ob, BMEditMesh *em, const float co[3], char m
BMVert *eve; BMVert *eve;
BM_ITER_MESH (eve, &iter, em->bm, BM_VERTS_OF_MESH) { BM_ITER_MESH (eve, &iter, em->bm, BM_VERTS_OF_MESH) {
DO_MINMAX(eve->co, min, max); minmax_v3v3_v3(min, max, eve->co);
} }
} }
else { else {
@ -814,19 +814,17 @@ intptr_t mesh_octree_table(Object *ob, BMEditMesh *em, const float co[3], char m
int a; int a;
for (a = 0, mvert = me->mvert; a < me->totvert; a++, mvert++) for (a = 0, mvert = me->mvert; a < me->totvert; a++, mvert++)
DO_MINMAX(mvert->co, min, max); minmax_v3v3_v3(min, max, mvert->co);
} }
/* for quick unit coordinate calculus */ /* for quick unit coordinate calculus */
copy_v3_v3(MeshOctree.offs, min); copy_v3_v3(MeshOctree.offs, min);
MeshOctree.offs[0] -= MOC_THRESH; /* we offset it 1 threshold unit extra */ /* we offset it 1 threshold unit extra */
MeshOctree.offs[1] -= MOC_THRESH; add_v3_fl(MeshOctree.offs, -MOC_THRESH);
MeshOctree.offs[2] -= MOC_THRESH;
sub_v3_v3v3(MeshOctree.div, max, min); sub_v3_v3v3(MeshOctree.div, max, min);
MeshOctree.div[0] += 2 * MOC_THRESH; /* and divide with 2 threshold unit more extra (try 8x8 unit grid on paint) */ /* and divide with 2 threshold unit more extra (try 8x8 unit grid on paint) */
MeshOctree.div[1] += 2 * MOC_THRESH; add_v3_fl(MeshOctree.div, 2.0f * MOC_THRESH);
MeshOctree.div[2] += 2 * MOC_THRESH;
mul_v3_fl(MeshOctree.div, 1.0f / MOC_RES); mul_v3_fl(MeshOctree.div, 1.0f / MOC_RES);
if (MeshOctree.div[0] == 0.0f) MeshOctree.div[0] = 1.0f; if (MeshOctree.div[0] == 0.0f) MeshOctree.div[0] = 1.0f;

@ -697,7 +697,7 @@ static int object_origin_set_exec(bContext *C, wmOperator *op)
mul_v3_fl(cent, 1.0f / (float)total); mul_v3_fl(cent, 1.0f / (float)total);
} }
else { else {
DO_MINMAX(eve->co, min, max); minmax_v3v3_v3(min, max, eve->co);
mid_v3_v3v3(cent, min, max); mid_v3_v3v3(cent, min, max);
} }
} }

@ -3100,8 +3100,8 @@ static int particle_intersect_dm(Scene *scene, Object *ob, DerivedMesh *dm,
if (pa_minmax==0) { if (pa_minmax==0) {
INIT_MINMAX(p_min, p_max); INIT_MINMAX(p_min, p_max);
DO_MINMAX(co1, p_min, p_max); minmax_v3v3_v3(p_min, p_max, co1);
DO_MINMAX(co2, p_min, p_max); minmax_v3v3_v3(p_min, p_max, co2);
} }
else { else {
copy_v3_v3(p_min, pa_minmax); copy_v3_v3(p_min, pa_minmax);

@ -2189,9 +2189,9 @@ static int viewselected_exec(bContext *C, wmOperator *UNUSED(op))
bPoseChannel *pchan_tx = pchan->custom_tx ? pchan->custom_tx : pchan; bPoseChannel *pchan_tx = pchan->custom_tx ? pchan->custom_tx : pchan;
ok = 1; ok = 1;
mul_v3_m4v3(vec, ob->obmat, pchan_tx->pose_head); mul_v3_m4v3(vec, ob->obmat, pchan_tx->pose_head);
DO_MINMAX(vec, min, max); minmax_v3v3_v3(min, max, vec);
mul_v3_m4v3(vec, ob->obmat, pchan_tx->pose_tail); mul_v3_m4v3(vec, ob->obmat, pchan_tx->pose_tail);
DO_MINMAX(vec, min, max); minmax_v3v3_v3(min, max, vec);
} }
} }
} }

@ -501,7 +501,7 @@ static void make_trans_verts(Object *obedit, float min[3], float max[3], int mod
if (tv->flag & SELECT) { if (tv->flag & SELECT) {
add_v3_v3(centroid, tv->oldloc); add_v3_v3(centroid, tv->oldloc);
total += 1.0f; total += 1.0f;
DO_MINMAX(tv->oldloc, min, max); minmax_v3v3_v3(min, max, tv->oldloc);
} }
} }
if (total != 0.0f) { if (total != 0.0f) {
@ -856,7 +856,7 @@ static void bundle_midpoint(Scene *scene, Object *ob, float vec[3])
if ((track->flag & TRACK_HAS_BUNDLE) && TRACK_SELECTED(track)) { if ((track->flag & TRACK_HAS_BUNDLE) && TRACK_SELECTED(track)) {
ok = 1; ok = 1;
mul_v3_m4v3(pos, obmat, track->bundle_pos); mul_v3_m4v3(pos, obmat, track->bundle_pos);
DO_MINMAX(pos, min, max); minmax_v3v3_v3(min, max, pos);
} }
track = track->next; track = track->next;
@ -898,7 +898,7 @@ static int snap_curs_to_sel(bContext *C, wmOperator *UNUSED(op))
mul_m3_v3(bmat, vec); mul_m3_v3(bmat, vec);
add_v3_v3(vec, obedit->obmat[3]); add_v3_v3(vec, obedit->obmat[3]);
add_v3_v3(centroid, vec); add_v3_v3(centroid, vec);
DO_MINMAX(vec, min, max); minmax_v3v3_v3(min, max, vec);
} }
if (v3d->around == V3D_CENTROID) { if (v3d->around == V3D_CENTROID) {
@ -923,7 +923,7 @@ static int snap_curs_to_sel(bContext *C, wmOperator *UNUSED(op))
copy_v3_v3(vec, pchan->pose_head); copy_v3_v3(vec, pchan->pose_head);
mul_m4_v3(obact->obmat, vec); mul_m4_v3(obact->obmat, vec);
add_v3_v3(centroid, vec); add_v3_v3(centroid, vec);
DO_MINMAX(vec, min, max); minmax_v3v3_v3(min, max, vec);
count++; count++;
} }
} }
@ -943,7 +943,7 @@ static int snap_curs_to_sel(bContext *C, wmOperator *UNUSED(op))
} }
add_v3_v3(centroid, vec); add_v3_v3(centroid, vec);
DO_MINMAX(vec, min, max); minmax_v3v3_v3(min, max, vec);
count++; count++;
} }
CTX_DATA_END; CTX_DATA_END;
@ -1082,7 +1082,7 @@ int ED_view3d_minmax_verts(Object *obedit, float min[3], float max[3])
mul_m3_v3(bmat, vec); mul_m3_v3(bmat, vec);
add_v3_v3(vec, obedit->obmat[3]); add_v3_v3(vec, obedit->obmat[3]);
add_v3_v3(centroid, vec); add_v3_v3(centroid, vec);
DO_MINMAX(vec, min, max); minmax_v3v3_v3(min, max, vec);
} }
MEM_freeN(transvmain); MEM_freeN(transvmain);

@ -114,7 +114,7 @@ static void calc_tw_center(Scene *scene, float *co)
float *min= scene->twmin; float *min= scene->twmin;
float *max= scene->twmax; float *max= scene->twmax;
DO_MINMAX(co, min, max); minmax_v3v3_v3(min, max, co);
add_v3_v3(twcent, co); add_v3_v3(twcent, co);
} }

@ -870,13 +870,12 @@ static void uv_map_transform_center(Scene *scene, View3D *v3d, float *result,
switch (around) { switch (around) {
case V3D_CENTER: /* bounding box center */ case V3D_CENTER: /* bounding box center */
min[0] = min[1] = min[2] = 1e20f; INIT_MINMAX(min, max);
max[0] = max[1] = max[2] = -1e20f;
BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
if (BM_elem_flag_test(efa, BM_ELEM_SELECT)) { if (BM_elem_flag_test(efa, BM_ELEM_SELECT)) {
BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
DO_MINMAX(l->v->co, min, max); minmax_v3v3_v3(min, max, l->v->co);
} }
} }
} }
@ -886,9 +885,7 @@ static void uv_map_transform_center(Scene *scene, View3D *v3d, float *result,
case V3D_CURSOR: /*cursor center*/ case V3D_CURSOR: /*cursor center*/
cursx = give_cursor(scene, v3d); cursx = give_cursor(scene, v3d);
/* shift to objects world */ /* shift to objects world */
result[0] = cursx[0] - ob->obmat[3][0]; sub_v3_v3v3(result, cursx, ob->obmat[3]);
result[1] = cursx[1] - ob->obmat[3][1];
result[2] = cursx[2] - ob->obmat[3][2];
break; break;
case V3D_LOCAL: /*object center*/ case V3D_LOCAL: /*object center*/

@ -367,16 +367,16 @@ static void cuboid_do(
float vec[3]; float vec[3];
/* let the center of the ctrl_ob be part of the bound box: */ /* let the center of the ctrl_ob be part of the bound box: */
DO_MINMAX(center, min, max); minmax_v3v3_v3(min, max, center);
for (i = 0; i < numVerts; i++) { for (i = 0; i < numVerts; i++) {
sub_v3_v3v3(vec, vertexCos[i], center); sub_v3_v3v3(vec, vertexCos[i], center);
DO_MINMAX(vec, min, max); minmax_v3v3_v3(min, max, vec);
} }
} }
else { else {
for (i = 0; i < numVerts; i++) { for (i = 0; i < numVerts; i++) {
DO_MINMAX(vertexCos[i], min, max); minmax_v3v3_v3(min, max, vertexCos[i]);
} }
} }

@ -558,9 +558,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
/* flip vertex normals for copied verts */ /* flip vertex normals for copied verts */
mv = mvert + numVerts; mv = mvert + numVerts;
for (i = 0; i < numVerts; i++, mv++) { for (i = 0; i < numVerts; i++, mv++) {
mv->no[0] = -mv->no[0]; negate_v3_short(mv->no);
mv->no[1] = -mv->no[1];
mv->no[2] = -mv->no[2];
} }
if (smd->flag & MOD_SOLIDIFY_RIM) { if (smd->flag & MOD_SOLIDIFY_RIM) {
@ -692,7 +690,8 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
} }
#ifdef SOLIDIFY_SIDE_NORMALS #ifdef SOLIDIFY_SIDE_NORMALS
normal_quad_v3(nor, mvert[ml[j - 4].v].co, normal_quad_v3(nor,
mvert[ml[j - 4].v].co,
mvert[ml[j - 3].v].co, mvert[ml[j - 3].v].co,
mvert[ml[j - 2].v].co, mvert[ml[j - 2].v].co,
mvert[ml[j - 1].v].co); mvert[ml[j - 1].v].co);

@ -4331,7 +4331,7 @@ static void finalize_render_object(Render *re, ObjectRen *obr, int timeoffset)
if ((a & 255)==0) ver= obr->vertnodes[a>>8].vert; if ((a & 255)==0) ver= obr->vertnodes[a>>8].vert;
else ver++; else ver++;
DO_MINMAX(ver->co, min, max); minmax_v3v3_v3(min, max, ver->co);
} }
if (obr->strandbuf) { if (obr->strandbuf) {
@ -4357,8 +4357,8 @@ static void finalize_render_object(Render *re, ObjectRen *obr, int timeoffset)
copy_v3_v3(sbound->boundbox[0], smin); copy_v3_v3(sbound->boundbox[0], smin);
copy_v3_v3(sbound->boundbox[1], smax); copy_v3_v3(sbound->boundbox[1], smax);
DO_MINMAX(smin, min, max); minmax_v3v3_v3(min, max, smin);
DO_MINMAX(smax, min, max); minmax_v3v3_v3(min, max, smax);
} }
} }

@ -402,7 +402,7 @@ static int occ_find_bbox_axis(OcclusionTree *tree, int begin, int end, float *mi
INIT_MINMAX(min, max); INIT_MINMAX(min, max);
for (a = begin; a < end; a++) { for (a = begin; a < end; a++) {
DO_MINMAX(tree->co[a], min, max); minmax_v3v3_v3(min, max, tree->co[a]);
} }
for (a=0; a<3; a++) { for (a=0; a<3; a++) {

@ -2235,7 +2235,7 @@ static void ray_shadow_qmc(ShadeInput *shi, LampRen *lar, const float lampco[3],
INIT_MINMAX(min, max); INIT_MINMAX(min, max);
for (i = 0; i < totjitco; i++) { for (i = 0; i < totjitco; i++) {
DO_MINMAX(jitco[i], min, max); minmax_v3v3_v3(min, max, jitco[i]);
} }
RE_rayobject_hint_bb(R.raytree, &bb_hint, min, max); RE_rayobject_hint_bb(R.raytree, &bb_hint, min, max);

@ -763,7 +763,7 @@ ScatterTree *scatter_tree_new(ScatterSettings *ss[3], float scale, float error,
points[i].back= (area[i] < 0.0f); points[i].back= (area[i] < 0.0f);
mul_v3_fl(points[i].co, 1.0f / tree->scale); mul_v3_fl(points[i].co, 1.0f / tree->scale);
DO_MINMAX(points[i].co, tree->min, tree->max); minmax_v3v3_v3(tree->min, tree->max, points[i].co);
refpoints[i]= points + i; refpoints[i]= points + i;
} }

@ -1063,18 +1063,19 @@ void free_strand_surface(Render *re)
void strand_minmax(StrandRen *strand, float min[3], float max[3], const float width) void strand_minmax(StrandRen *strand, float min[3], float max[3], const float width)
{ {
StrandVert *svert; StrandVert *svert;
float vec[3], width2= 2.0f*width; const float width2 = width * 2.0f;
float vec[3];
int a; int a;
for (a=0, svert=strand->vert; a<strand->totvert; a++, svert++) { for (a=0, svert=strand->vert; a<strand->totvert; a++, svert++) {
copy_v3_v3(vec, svert->co); copy_v3_v3(vec, svert->co);
DO_MINMAX(vec, min, max); minmax_v3v3_v3(min, max, vec);
if (width!=0.0f) { if (width!=0.0f) {
vec[0]+= width; vec[1]+= width; vec[2]+= width; add_v3_fl(vec, width);
DO_MINMAX(vec, min, max); minmax_v3v3_v3(min, max, vec);
vec[0]-= width2; vec[1]-= width2; vec[2]-= width2; add_v3_fl(vec, -width2);
DO_MINMAX(vec, min, max); minmax_v3v3_v3(min, max, vec);
} }
} }
} }

@ -150,7 +150,7 @@ void global_bounds_obi(Render *re, ObjectInstanceRen *obi, float *bbmin, float *
/* convert to global space */ /* convert to global space */
mul_m4_v3(re->viewinv, co); mul_m4_v3(re->viewinv, co);
DO_MINMAX(co, vp->bbmin, vp->bbmax); minmax_v3v3_v3(vp->bbmin, vp->bbmax, co);
} }
copy_v3_v3(bbmin, vp->bbmin); copy_v3_v3(bbmin, vp->bbmin);

@ -1379,10 +1379,11 @@ static float my_boundbox_mesh(Mesh *me, float *loc, float *size)
co = mvert->co; co = mvert->co;
/* bounds */ /* bounds */
DO_MINMAX(co, min, max); minmax_v3v3_v3(min, max, co);
/* radius */ /* radius */
vert_radius= co[0]*co[0] + co[1]*co[1] + co[2]*co[2];
vert_radius = len_squared_v3(co);
if (vert_radius > radius) if (vert_radius > radius)
radius = vert_radius; radius = vert_radius;
} }
@ -1433,7 +1434,7 @@ static void my_tex_space_mesh(Mesh *me)
fp= (float *)kb->data; fp= (float *)kb->data;
for (a=0; a<kb->totelem; a++, fp += 3) { for (a=0; a<kb->totelem; a++, fp += 3) {
DO_MINMAX(fp, min, max); minmax_v3v3_v3(min, max, fp);
} }
if (kb->totelem) { if (kb->totelem) {
loc[0]= (min[0]+max[0])/2.0f; loc[1]= (min[1]+max[1])/2.0f; loc[2]= (min[2]+max[2])/2.0f; loc[0]= (min[0]+max[0])/2.0f; loc[1]= (min[1]+max[1])/2.0f; loc[2]= (min[2]+max[2])/2.0f;