Commit: 7c7b7302d33b9a43f5436589a726bc733be91a33
Author: Campbell Barton
Date:   Sun Jul 20 14:01:42 2014 +1000
https://developer.blender.org/rB7c7b7302d33b9a43f5436589a726bc733be91a33

Math Lib: use variable length args for mul_serie_m3,m4 (instead of trailing 
NULL's)

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

M       source/blender/blenkernel/intern/armature.c
M       source/blender/blenkernel/intern/constraint.c
M       source/blender/blenkernel/intern/mask.c
M       source/blender/blenkernel/intern/texture.c
M       source/blender/blenkernel/intern/tracking_stabilize.c
M       source/blender/blenlib/BLI_math_matrix.h
M       source/blender/blenlib/intern/math_matrix.c
M       source/blender/blenlib/intern/math_rotation.c
M       source/blender/bmesh/operators/bmo_utils.c
M       source/blender/collada/AnimationImporter.cpp
M       source/blender/collada/TransformWriter.cpp
M       source/blender/editors/object/object_hook.c
M       source/blender/editors/space_clip/clip_draw.c
M       source/blender/editors/space_clip/tracking_ops.c
M       source/blender/editors/transform/transform.c
M       source/blender/editors/transform/transform_conversions.c
M       source/blender/editors/uvedit/uvedit_unwrap_ops.c
M       source/blender/ikplugin/intern/iksolver_plugin.c
M       source/blender/ikplugin/intern/itasc_plugin.cpp
M       source/blender/modifiers/intern/MOD_array.c
M       source/blender/modifiers/intern/MOD_hook.c
M       source/blender/render/intern/source/convertblender.c

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

diff --git a/source/blender/blenkernel/intern/armature.c 
b/source/blender/blenkernel/intern/armature.c
index 7a16cff..98b25e4 100644
--- a/source/blender/blenkernel/intern/armature.c
+++ b/source/blender/blenkernel/intern/armature.c
@@ -574,7 +574,7 @@ void b_bone_spline_setup(bPoseChannel *pchan, int rest, 
Mat4 result_array[MAX_BB
 
                if (do_scale) {
                        /* correct for scaling when this matrix is used in 
scaled space */
-                       mul_serie_m4(result_array[a].mat, iscalemat, 
result_array[a].mat, scalemat, NULL, NULL, NULL, NULL, NULL);
+                       mul_serie_m4(result_array[a].mat, iscalemat, 
result_array[a].mat, scalemat);
                }
        }
 }
@@ -622,8 +622,7 @@ static void pchan_b_bone_defmats(bPoseChannel *pchan, 
bPoseChanDeform *pdef_info
 
                invert_m4_m4(tmat, b_bone_rest[a].mat);
 
-               mul_serie_m4(b_bone_mats[a + 1].mat, pchan->chan_mat, 
bone->arm_mat, b_bone[a].mat, tmat, b_bone_mats[0].mat,
-                            NULL, NULL, NULL);
+               mul_serie_m4(b_bone_mats[a + 1].mat, pchan->chan_mat, 
bone->arm_mat, b_bone[a].mat, tmat, b_bone_mats[0].mat);
 
                if (use_quaternion)
                        mat4_to_dquat(&b_bone_dual_quats[a], bone->arm_mat, 
b_bone_mats[a + 1].mat);
@@ -1042,7 +1041,7 @@ void armature_deform_verts(Object *armOb, Object *target, 
DerivedMesh *dm, float
                                if (!use_quaternion) /* quaternion already is 
scale corrected */
                                        mul_m3_fl(smat, armature_weight / 
contrib);
 
-                               mul_serie_m3(defMats[i], tmpmat, pre, smat, 
post, NULL, NULL, NULL, NULL);
+                               mul_serie_m3(defMats[i], tmpmat, pre, smat, 
post);
                        }
                }
 
diff --git a/source/blender/blenkernel/intern/constraint.c 
b/source/blender/blenkernel/intern/constraint.c
index b27655c..4af8b1c 100644
--- a/source/blender/blenkernel/intern/constraint.c
+++ b/source/blender/blenkernel/intern/constraint.c
@@ -3909,7 +3909,7 @@ static void followtrack_evaluate(bConstraint *con, 
bConstraintOb *cob, ListBase
                                
BKE_tracking_camera_get_reconstructed_interpolate(tracking, tracking_object, 
framenr, imat);
                                invert_m4(imat);
 
-                               mul_serie_m4(cob->matrix, obmat, mat, imat, 
NULL, NULL, NULL, NULL, NULL);
+                               mul_serie_m4(cob->matrix, obmat, mat, imat);
                                translate_m4(cob->matrix, track->bundle_pos[0], 
track->bundle_pos[1], track->bundle_pos[2]);
                        }
                        else {
@@ -4187,7 +4187,7 @@ static void objectsolver_evaluate(bConstraint *con, 
bConstraintOb *cob, ListBase
 
                        invert_m4_m4(imat, mat);
 
-                       mul_serie_m4(cob->matrix, cammat, imat, camimat, 
parmat, obmat, NULL, NULL, NULL);
+                       mul_serie_m4(cob->matrix, cammat, imat, camimat, 
parmat, obmat);
                }
        }
 }
diff --git a/source/blender/blenkernel/intern/mask.c 
b/source/blender/blenkernel/intern/mask.c
index 4147750..e737edb 100644
--- a/source/blender/blenkernel/intern/mask.c
+++ b/source/blender/blenkernel/intern/mask.c
@@ -1212,7 +1212,7 @@ void BKE_mask_point_parent_matrix_get(MaskSplinePoint 
*point, float ctime, float
                                                }
 
                                                
invert_m3_m3(mask_to_clip_matrix, mask_from_clip_matrix);
-                                               mul_serie_m3(parent_matrix, 
mask_to_clip_matrix, H, mask_from_clip_matrix, NULL, NULL, NULL, NULL, NULL);
+                                               mul_serie_m3(parent_matrix, 
mask_to_clip_matrix, H, mask_from_clip_matrix);
                                        }
                                }
                        }
diff --git a/source/blender/blenkernel/intern/texture.c 
b/source/blender/blenkernel/intern/texture.c
index bb956cb..84da03c 100644
--- a/source/blender/blenkernel/intern/texture.c
+++ b/source/blender/blenkernel/intern/texture.c
@@ -145,12 +145,12 @@ void init_tex_mapping(TexMapping *texmap)
                if (texmap->type == TEXMAP_TYPE_TEXTURE) {
                        /* to transform a texture, the inverse transform needs
                         * to be applied to the texture coordinate */
-                       mul_serie_m4(texmap->mat, tmat, rmat, smat, 0, 0, 0, 0, 
0);
+                       mul_serie_m4(texmap->mat, tmat, rmat, smat);
                        invert_m4(texmap->mat);
                }
                else if (texmap->type == TEXMAP_TYPE_POINT) {
                        /* forward transform */
-                       mul_serie_m4(texmap->mat, tmat, rmat, smat, 0, 0, 0, 0, 
0);
+                       mul_serie_m4(texmap->mat, tmat, rmat, smat);
                }
                else if (texmap->type == TEXMAP_TYPE_VECTOR) {
                        /* no translation for vectors */
diff --git a/source/blender/blenkernel/intern/tracking_stabilize.c 
b/source/blender/blenkernel/intern/tracking_stabilize.c
index 9ede39f..ec8a5ca 100644
--- a/source/blender/blenkernel/intern/tracking_stabilize.c
+++ b/source/blender/blenkernel/intern/tracking_stabilize.c
@@ -440,5 +440,5 @@ void BKE_tracking_stabilization_data_to_mat4(int width, int 
height, float aspect
 
        /* compose transformation matrix */
        mul_serie_m4(mat, translation_mat, center_mat, aspect_mat, 
rotation_mat, inv_aspect_mat,
-                    scale_mat, inv_center_mat, NULL);
+                    scale_mat, inv_center_mat);
 }
diff --git a/source/blender/blenlib/BLI_math_matrix.h 
b/source/blender/blenlib/BLI_math_matrix.h
index 4918393..1c1e4e7 100644
--- a/source/blender/blenlib/BLI_math_matrix.h
+++ b/source/blender/blenlib/BLI_math_matrix.h
@@ -34,6 +34,8 @@
 extern "C" {
 #endif
 
+#include "BLI_compiler_attrs.h"
+
 /********************************* Init **************************************/
 
 void zero_m3(float R[3][3]);
@@ -67,12 +69,33 @@ void mul_m4_m4m3(float R[4][4], float A[4][4], float 
B[3][3]);
 void mul_m4_m4m4(float R[4][4], float A[4][4], float B[4][4]);
 void mul_m3_m3m4(float R[3][3], float A[4][4], float B[3][3]);
 
-void mul_serie_m3(float R[3][3],
-                  float M1[3][3], float M2[3][3], float M3[3][3], float 
M4[3][3],
-                  float M5[3][3], float M6[3][3], float M7[3][3], float 
M8[3][3]);
-void mul_serie_m4(float R[4][4],
-                  float M1[4][4], float M2[4][4], float M3[4][4], float 
M4[4][4],
-                  float M5[4][4], float M6[4][4], float M7[4][4], float 
M8[4][4]);
+/* mul_serie_m3 */
+void _va_mul_serie_m3_3(float R[3][3], float M1[3][3], float M2[3][3]) 
ATTR_NONNULL();
+void _va_mul_serie_m3_4(float R[3][3], float M1[3][3], float M2[3][3], float 
M3[3][3]) ATTR_NONNULL();
+void _va_mul_serie_m3_5(float R[3][3], float M1[3][3], float M2[3][3], float 
M3[3][3], float M4[3][3]) ATTR_NONNULL();
+void _va_mul_serie_m3_6(float R[3][3], float M1[3][3], float M2[3][3], float 
M3[3][3], float M4[3][3],
+                        float M5[3][3]) ATTR_NONNULL();
+void _va_mul_serie_m3_7(float R[3][3], float M1[3][3], float M2[3][3], float 
M3[3][3], float M4[3][3],
+                        float M5[3][3], float M6[3][3]) ATTR_NONNULL();
+void _va_mul_serie_m3_8(float R[3][3], float M1[3][3], float M2[3][3], float 
M3[3][3], float M4[3][3],
+                        float M5[3][3], float M6[3][3], float M7[3][3]) 
ATTR_NONNULL();
+void _va_mul_serie_m3_9(float R[3][3], float M1[3][3], float M2[3][3], float 
M3[3][3], float M4[3][3],
+                        float M5[3][3], float M6[3][3], float M7[3][3], float 
M8[3][3]) ATTR_NONNULL();
+/* mul_serie_m4 */
+void _va_mul_serie_m4_3(float R[4][4], float M1[4][4], float M2[4][4]) 
ATTR_NONNULL();
+void _va_mul_serie_m4_4(float R[4][4], float M1[4][4], float M2[4][4], float 
M3[4][4]) ATTR_NONNULL();
+void _va_mul_serie_m4_5(float R[4][4], float M1[4][4], float M2[4][4], float 
M3[4][4], float M4[4][4]) ATTR_NONNULL();
+void _va_mul_serie_m4_6(float R[4][4], float M1[4][4], float M2[4][4], float 
M3[4][4], float M4[4][4],
+                        float M5[4][4]) ATTR_NONNULL();
+void _va_mul_serie_m4_7(float R[4][4], float M1[4][4], float M2[4][4], float 
M3[4][4], float M4[4][4],
+                        float M5[4][4], float M6[4][4]) ATTR_NONNULL();
+void _va_mul_serie_m4_8(float R[4][4], float M1[4][4], float M2[4][4], float 
M3[4][4], float M4[4][4],
+                        float M5[4][4], float M6[4][4], float M7[4][4]) 
ATTR_NONNULL();
+void _va_mul_serie_m4_9(float R[4][4], float M1[4][4], float M2[4][4], float 
M3[4][4], float M4[4][4],
+                        float M5[4][4], float M6[4][4], float M7[4][4], float 
M8[4][4]) ATTR_NONNULL();
+
+#define mul_serie_m3(...) VA_NARGS_CALL_OVERLOAD(_va_mul_serie_m3_, 
__VA_ARGS__)
+#define mul_serie_m4(...) VA_NARGS_CALL_OVERLOAD(_va_mul_serie_m4_, 
__VA_ARGS__)
 
 void mul_m4_v3(float M[4][4], float r[3]);
 void mul_v3_m4v3(float r[3], float M[4][4], const float v[3]);
diff --git a/source/blender/blenlib/intern/math_matrix.c 
b/source/blender/blenlib/intern/math_matrix.c
index 7fc30e3..74b0df1 100644
--- a/source/blender/blenlib/intern/math_matrix.c
+++ b/source/blender/blenlib/intern/math_matrix.c
@@ -274,71 +274,148 @@ void mul_m4_m3m4(float m1[4][4], float m3_[3][3], float 
m2_[4][4])
        m1[2][2] = m2[2][0] * m3[0][2] + m2[2][1] * m3[1][2] + m2[2][2] * 
m3[2][2];
 }
 
-void mul_serie_m3(float answ[3][3],
-                  float m1[3][3], float m2[3][3], float m3[3][3],
-                  float m4[3][3], float m5[3][3], float m6[3][3],
-                  float m7[3][3], float m8[3][3])
-{
-       float temp[3][3];
-
-       if (m1 == NULL || m2 == NULL) return;
-
-       mul_m3_m3m3(answ, m2, m1);
-       if (m3) {
-               mul_m3_m3m3(temp, m3, answ);
-               if (m4) {
-                       mul_m3_m3m3(answ, m4, temp);
-                       if (m5) {
-                               mul_m3_m3m3(temp, m5, answ);
-                               if (m6) {
-                                       mul_m3_m3m3(answ, m6, temp);
-                                       if (m7) {
-                                               mul_m3_m3m3(temp, m7, answ);
-                                               if (m8) {
-                                                       mul_m3_m3m3(answ, m8, 
temp);
-                                               }
-                                               else copy_m3_m3(answ, temp);
-                                       }
-                               }
-                               else copy_m3_m3(answ, temp);
-                       }
-               }
-               else copy_m3_m3(answ, temp);
-       }
-}
 
-void mul_serie_m4(float answ[4][4], float m1[4][4],
-                  float m2[4][4], float m3[4][4], float m4[4][4],
-                  float m5[4][4], float m6[4][4], float m7[4][4],
-                  float m8[4][4])
-{
-       float temp[4][4];
-
-       if (m1 == NULL || m2 == NULL) return;
-
-       mul_m4_m4m4(answ, m1, m2);
-       if (m3) {
-               mul_m4_m4m4(temp, answ, m3);
-               if (m4) {
-                       mul_m4_m4m4(answ, temp, m4);
-                       if (m5) {
-                               mul_m4_m4m4(temp, answ, m5);
-                               if (m6) {
-                                       mul_m4_m4m4(answ, temp, m6);
-                                       if (m7) {
-                                               mul_m4_m4m4(temp, answ, m7);
-                                               if (m8) {
-                                                       mul_m4_m4m4(answ, temp, 
m8);
-                                               }
-                                               else copy_m4_m4(answ, temp);
-                                       }
-                               }
-                               else copy_m4_m4(answ, temp);
-                       }
-               }
-               else copy_m4_m4(answ, temp);
-       }
-}
+/** \name Macro helpers for: mul_serie_m3
+ * \{ */
+void _va_mul_serie_m3_3(
+        float r[3][3],
+        float m1[3][3], float m2[3][3])
+{
+       mul_m3_m3m3(r, m2, m1);
+}
+void _va_mul_serie_m3_4(
+        float r[3][3],
+        float m1[3][3], 

@@ Diff output truncated at 10240 characters. @@

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

Reply via email to