Commit: e82e67584db452fd7c087f40001f6923bba2c8d6
Author: Bastien Montagne
Date:   Mon Nov 17 10:46:31 2014 +0100
Branches: master
https://developer.blender.org/rBe82e67584db452fd7c087f40001f6923bba2c8d6

ShapeKey: Cleanup of BKE_keyblock_convert/update code.

Mainly:
    * Use 'for' loops instead of 'while' ones (saves many lines and regroup 
most loop handling on one line).
    * Use float[3] pointers where possible.

===================================================================

M       source/blender/blenkernel/intern/key.c

===================================================================

diff --git a/source/blender/blenkernel/intern/key.c 
b/source/blender/blenkernel/intern/key.c
index 98fdac6..3ba0c6e 100644
--- a/source/blender/blenkernel/intern/key.c
+++ b/source/blender/blenkernel/intern/key.c
@@ -1672,7 +1672,7 @@ char *BKE_keyblock_curval_rnapath_get(Key *key, KeyBlock 
*kb)
 void BKE_keyblock_update_from_lattice(Lattice *lt, KeyBlock *kb)
 {
        BPoint *bp;
-       float *fp;
+       float (*fp)[3];
        int a, tot;
 
        BLI_assert(kb->totelem == lt->pntsu * lt->pntsv * lt->pntsw);
@@ -1682,8 +1682,8 @@ void BKE_keyblock_update_from_lattice(Lattice *lt, 
KeyBlock *kb)
 
        bp = lt->def;
        fp = kb->data;
-       for (a = 0; a < kb->totelem; a++, fp += 3, bp++) {
-               copy_v3_v3(fp, bp->vec);
+       for (a = 0; a < kb->totelem; a++, fp++, bp++) {
+               copy_v3_v3(*fp, bp->vec);
        }
 }
 
@@ -1705,7 +1705,7 @@ void BKE_keyblock_convert_from_lattice(Lattice *lt, 
KeyBlock *kb)
 void BKE_keyblock_convert_to_lattice(KeyBlock *kb, Lattice *lt)
 {
        BPoint *bp;
-       const float *fp;
+       const float (*fp)[3];
        int a, tot;
 
        bp = lt->def;
@@ -1714,8 +1714,8 @@ void BKE_keyblock_convert_to_lattice(KeyBlock *kb, 
Lattice *lt)
        tot = lt->pntsu * lt->pntsv * lt->pntsw;
        tot = min_ii(kb->totelem, tot);
 
-       for (a = 0; a < tot; a++, fp += 3, bp++) {
-               copy_v3_v3(bp->vec, fp);
+       for (a = 0; a < tot; a++, fp++, bp++) {
+               copy_v3_v3(bp->vec, *fp);
        }
 }
 
@@ -1734,36 +1734,27 @@ void BKE_keyblock_update_from_curve(Curve *UNUSED(cu), 
KeyBlock *kb, ListBase *n
        tot = kb->totelem;
        if (tot == 0) return;
 
-       nu = nurb->first;
        fp = kb->data;
-       while (nu) {
+       for (nu = nurb->first; nu; nu = nu->next) {
                if (nu->bezt) {
-                       bezt = nu->bezt;
-                       a = nu->pntsu;
-                       while (a--) {
-                               copy_v3_v3(fp, bezt->vec[0]);
-                               fp += 3;
-                               copy_v3_v3(fp, bezt->vec[1]);
-                               fp += 3;
-                               copy_v3_v3(fp, bezt->vec[2]);
-                               fp += 3;
+                       for (a = nu->pntsu, bezt = nu->bezt; a; a--, bezt++) {
+                               int i;
+
+                               for (i = 0; i < 3; i++, fp += 3) {
+                                       copy_v3_v3(fp, bezt->vec[i]);
+                               }
                                fp[0] = bezt->alfa;
                                fp += 3; /* alphas */
-                               bezt++;
                        }
                }
                else {
-                       bp = nu->bp;
-                       a = nu->pntsu * nu->pntsv;
-                       while (a--) {
+                       
+                       ;
+                       for (a = nu->pntsu * nu->pntsv, bp = nu->bp; a; a--, fp 
+= 4, bp++) {
                                copy_v3_v3(fp, bp->vec);
                                fp[3] = bp->alfa;
-
-                               fp += 4;
-                               bp++;
                        }
                }
-               nu = nu->next;
        }
 }
 
@@ -1791,45 +1782,28 @@ void BKE_keyblock_convert_to_curve(KeyBlock *kb, Curve 
*UNUSED(cu), ListBase *nu
        const float *fp;
        int a, tot;
 
-       nu = nurb->first;
-       fp = kb->data;
-
        tot = BKE_nurbList_verts_count(nurb);
-
        tot = min_ii(kb->totelem, tot);
 
-       while (nu && tot > 0) {
-
+       fp = kb->data;
+       for (nu = nurb->first; nu && tot > 0; nu = nu->next) {
                if (nu->bezt) {
-                       bezt = nu->bezt;
-                       a = nu->pntsu;
-                       while (a-- && tot > 0) {
-                               copy_v3_v3(bezt->vec[0], fp);
-                               fp += 3;
-                               copy_v3_v3(bezt->vec[1], fp);
-                               fp += 3;
-                               copy_v3_v3(bezt->vec[2], fp);
-                               fp += 3;
+                       for (a = nu->pntsu, bezt = nu->bezt; a && tot > 0; a--, 
tot -= 3, bezt++) {
+                               int i;
+
+                               for (i = 0; i < 3; i++, fp += 3) {
+                                       copy_v3_v3(bezt->vec[i], fp);
+                               }
                                bezt->alfa = fp[0];
                                fp += 3; /* alphas */
-
-                               tot -= 3;
-                               bezt++;
                        }
                }
                else {
-                       bp = nu->bp;
-                       a = nu->pntsu * nu->pntsv;
-                       while (a-- && tot > 0) {
+                       for (a = nu->pntsu * nu->pntsv, bp = nu->bp; a && tot; 
a--, tot--, fp += 4, bp++) {
                                copy_v3_v3(bp->vec, fp);
                                bp->alfa = fp[3];
-
-                               fp += 4;
-                               tot--;
-                               bp++;
                        }
                }
-               nu = nu->next;
        }
 }
 
@@ -1837,7 +1811,7 @@ void BKE_keyblock_convert_to_curve(KeyBlock *kb, Curve 
*UNUSED(cu), ListBase *nu
 void BKE_keyblock_update_from_mesh(Mesh *me, KeyBlock *kb)
 {
        MVert *mvert;
-       float *fp;
+       float (*fp)[3];
        int a, tot;
 
        BLI_assert(me->totvert == kb->totelem);
@@ -1847,9 +1821,8 @@ void BKE_keyblock_update_from_mesh(Mesh *me, KeyBlock *kb)
 
        mvert = me->mvert;
        fp = kb->data;
-       for (a = 0; a < tot; a++, fp += 3, mvert++) {
-               copy_v3_v3(fp, mvert->co);
-
+       for (a = 0; a < tot; a++, fp++, mvert++) {
+               copy_v3_v3(*fp, mvert->co);
        }
 }
 
@@ -1870,7 +1843,7 @@ void BKE_keyblock_convert_from_mesh(Mesh *me, KeyBlock 
*kb)
 void BKE_keyblock_convert_to_mesh(KeyBlock *kb, Mesh *me)
 {
        MVert *mvert;
-       const float *fp;
+       const float (*fp)[3];
        int a, tot;
 
        mvert = me->mvert;
@@ -1878,15 +1851,15 @@ void BKE_keyblock_convert_to_mesh(KeyBlock *kb, Mesh 
*me)
 
        tot = min_ii(kb->totelem, me->totvert);
 
-       for (a = 0; a < tot; a++, fp += 3, mvert++) {
-               copy_v3_v3(mvert->co, fp);
+       for (a = 0; a < tot; a++, fp++, mvert++) {
+               copy_v3_v3(mvert->co, *fp);
        }
 }
 
 /************************* raw coords ************************/
 void BKE_keyblock_update_from_vertcos(Object *ob, KeyBlock *kb, float 
(*vertCos)[3])
 {
-       float *co = (float *)vertCos;
+       float (*co)[3] = vertCos;
        float *fp = kb->data;
        int tot, a;
 
@@ -1913,48 +1886,32 @@ void BKE_keyblock_update_from_vertcos(Object *ob, 
KeyBlock *kb, float (*vertCos)
 
        /* Copy coords to keyblock */
        if (ELEM(ob->type, OB_MESH, OB_LATTICE)) {
-               for (a = 0; a < tot; a++, fp += 3, co += 3) {
-                       copy_v3_v3(fp, co);
+               for (a = 0; a < tot; a++, fp += 3, co++) {
+                       copy_v3_v3(fp, *co);
                }
        }
        else if (ELEM(ob->type, OB_CURVE, OB_SURF)) {
                Curve *cu = (Curve *)ob->data;
-               Nurb *nu = cu->nurb.first;
+               Nurb *nu;
                BezTriple *bezt;
                BPoint *bp;
 
-               while (nu) {
+               for (nu = cu->nurb.first; nu; nu = nu->next) {
                        if (nu->bezt) {
-                               int i;
-                               bezt = nu->bezt;
-                               a = nu->pntsu;
+                               for (a = nu->pntsu, bezt = nu->bezt; a; a--, 
bezt++) {
+                                       int i;
 
-                               while (a--) {
-                                       for (i = 0; i < 3; i++) {
-                                               copy_v3_v3(fp, co);
-                                               fp += 3; co += 3;
+                                       for (i = 0; i < 3; i++, fp += 3, co++) {
+                                               copy_v3_v3(fp, *co);
                                        }
-
                                        fp += 3; /* skip alphas */
-
-                                       bezt++;
                                }
                        }
                        else {
-                               bp = nu->bp;
-                               a = nu->pntsu * nu->pntsv;
-
-                               while (a--) {
-                                       copy_v3_v3(fp, co);
-
-                                       fp += 4;
-                                       co += 3;
-
-                                       bp++;
+                               for (a = nu->pntsu * nu->pntsv, bp = nu->bp; a; 
a--, bp++, fp += 4, co++) {
+                                       copy_v3_v3(fp, *co);
                                }
                        }
-
-                       nu = nu->next;
                }
        }
 }
@@ -1992,7 +1949,7 @@ void BKE_keyblock_convert_from_vertcos(Object *ob, 
KeyBlock *kb, float (*vertCos
 
 float (*BKE_keyblock_convert_to_vertcos(Object *ob, KeyBlock *kb))[3]
 {
-       float (*vertCos)[3], *co;
+       float (*vertCos)[3], (*co)[3];
        const float *fp = kb->data;
        int tot = 0, a;
 
@@ -2012,54 +1969,36 @@ float (*BKE_keyblock_convert_to_vertcos(Object *ob, 
KeyBlock *kb))[3]
 
        if (tot == 0) return NULL;
 
-       vertCos = MEM_mallocN(tot * sizeof(*vertCos), __func__);
+       co = vertCos = MEM_mallocN(tot * sizeof(*vertCos), __func__);
 
        /* Copy coords to array */
-       co = (float *)vertCos;
-
        if (ELEM(ob->type, OB_MESH, OB_LATTICE)) {
-               for (a = 0; a < tot; a++, fp += 3, co += 3) {
-                       copy_v3_v3(co, fp);
+               for (a = 0; a < tot; a++, fp += 3, co++) {
+                       copy_v3_v3(*co, fp);
                }
        }
        else if (ELEM(ob->type, OB_CURVE, OB_SURF)) {
                Curve *cu = (Curve *)ob->data;
-               Nurb *nu = cu->nurb.first;
+               Nurb *nu;
                BezTriple *bezt;
                BPoint *bp;
 
-               while (nu) {
+               for (nu = cu->nurb.first; nu; nu = nu->next) {
                        if (nu->bezt) {
-                               int i;
-                               bezt = nu->bezt;
-                               a = nu->pntsu;
+                               for (a = nu->pntsu, bezt = nu->bezt; a; a--, 
bezt++) {
+                                       int i;
 
-                               while (a--) {
-                                       for (i = 0; i < 3; i++) {
-                                               copy_v3_v3(co, fp);
-                                               fp += 3; co += 3;
+                                       for (i = 0; i < 3; i++, fp += 3, co++) {
+                                               copy_v3_v3(*co, fp);
                                        }
-
                                        fp += 3; /* skip alphas */
-
-                                       bezt++;
                                }
                        }
                        else {
-                               bp = nu->bp;
-                               a = nu->pntsu * nu->pntsv;
-
-                               while (a--) {
-                                       copy_v3_v3(co, fp);
-
-                                       fp += 4;
-                                       co += 3;
-
-                                       bp++;
+                               for (a = nu->pntsu * nu->pntsv, bp = nu->bp; a; 
a--, bp++, fp += 4, co++) {
+                                       copy_v3_v3(*co, fp);
                                }
                        }
-
-                       nu = nu->next;
                }
        }
 
@@ -2070,51 +2009,35 @@ float (*BKE_keyblock_convert_to_vertcos(Object *ob, 
KeyBlock *kb))[3]
 void BKE_keyblock_update_from_offset(Object *ob, KeyBlock *kb, float (*ofs)[3])
 {
        int a;
-       float *co = (float *)ofs, *fp = kb->data;
+       float *fp = kb->data;
 
        if (ELEM(ob->type, OB_MESH, OB_LATTICE)) {
-               for (a = 0; a < kb->totelem; a++, fp += 3, co += 3) {
-                       add_v3_v3(fp, co);
+               for (a = 0; a < kb->totelem; a++, fp += 3, ofs++) {
+                       add_v3_v3(fp, *ofs);
                }
        }
        else if (ELEM(ob->type, OB_CURVE, OB_SURF)) {
                Curve *cu = (Curve *)ob->data;
-               Nurb *nu = cu->nurb.first;
+               Nurb *nu;
                BezTriple *bezt;
                BPoint *bp;
 
-               while (nu) {
+               for (nu = cu->nurb.first; nu; nu = nu->next) {
                        if (nu->bezt) {
-                               int i;
-                               bezt = nu->bezt;
-                               a = nu->pntsu;
+                               for (a = nu->pntsu, bezt = nu->bezt; a; a--, 
bezt++) {
+                                       int i;
 
-                               while (a--) {
-                                       for (i = 0; i < 3; i++) {
-                                               add_v3_v3(fp, co);
-                                               fp += 3; co += 3;
+                                       for (i = 0; i < 3; i++, fp += 3, ofs++) 
{
+                                               add_v3_v3(fp, *ofs);
                                        }
-
                                        fp += 3; /* skip alphas */
-
-                                       bezt++;
                                }
                        }
                        else {
-                               bp = nu->bp;
-                               a = nu->pntsu * nu->pntsv;
-
-                               while (a--) {
-                                       add_v3_v3(fp, co);
-
-                                       fp += 4;
-                                       co += 3;
-
-                                       bp++;
+                               for (a = nu->pntsu * nu->pntsv, bp = nu->bp; a; 
a--, bp++, fp += 4, ofs++) {
+                                       add_v3_v3(fp, *ofs);
                                }
                        }
-
-                       nu = nu->next;
                }
        }
 }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to