babl-matrix: add babl_matrix_mul_matrixf
authorØyvind Kolås <pippin@gimp.org>
Tue, 28 Aug 2018 14:44:19 +0000 (16:44 +0200)
committerØyvind Kolås <pippin@gimp.org>
Tue, 28 Aug 2018 14:44:19 +0000 (16:44 +0200)
babl/babl-matrix.h

index 8f331a524d9d0c9a551fa8c2f06120c5d4801e50..2107b31c355da1066b61406b0da39d162f2ef4e3 100644 (file)
@@ -31,6 +31,33 @@ static inline void babl_matrix_mul_matrix (const double *matA_,
   }
 }
 
+
+static inline void babl_matrix_mul_matrixf (const float *matA_,
+                                            const float *matB_,
+                                            float *out)
+{
+  int i, j;
+  float matA[9];
+  float matB[9];
+  float t1, t2, t3;
+  memcpy (matA, matA_, sizeof (matA));
+  memcpy (matB, matB_, sizeof (matB));
+
+  for (i = 0; i < 3; i++)
+  {
+    t1 = m(matA, i, 0);
+    t2 = m(matA, i, 1);
+    t3 = m(matA, i, 2);
+
+    for (j = 0; j < 3; j ++)
+    {
+      m(out,i,j) = t1 * m(matB, 0, j);
+      m(out,i,j) += t2 * m(matB, 1, j);
+      m(out,i,j) += t3 * m(matB, 2, j);
+    }
+  }
+}
+
 static inline void babl_matrix_to_float (const double *in, float *out)
 {
   int i;