summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCedric BAIL <cedric@osg.samsung.com>2015-06-25 14:52:55 +0200
committerCedric BAIL <cedric@osg.samsung.com>2015-08-21 16:37:17 +0200
commite931a48d8d20a0b909ce556340b6cc51ac36d4e1 (patch)
treefc994a0bdef36ef71f8a9b46eeed18f28618d098
parent8f7680691faa892e1550ae2d97cdfb4f144c0a21 (diff)
downloadefl-e931a48d8d20a0b909ce556340b6cc51ac36d4e1.tar.gz
eina: add eina_matrix4_transpose.
-rw-r--r--src/lib/eina/eina_matrix.c21
-rw-r--r--src/lib/eina/eina_matrix.h12
2 files changed, 33 insertions, 0 deletions
diff --git a/src/lib/eina/eina_matrix.c b/src/lib/eina/eina_matrix.c
index 62190041cf..96a0971f11 100644
--- a/src/lib/eina/eina_matrix.c
+++ b/src/lib/eina/eina_matrix.c
@@ -915,3 +915,24 @@ eina_matrix4_inverse(Eina_Matrix4 *out, const Eina_Matrix4 *in)
return EINA_TRUE;
}
+
+EAPI void
+eina_matrix4_transpose(Eina_Matrix4 *out, const Eina_Matrix4 *in)
+{
+ MATRIX_XX(out) = MATRIX_XX(in);
+ MATRIX_XY(out) = MATRIX_YX(in);
+ MATRIX_XZ(out) = MATRIX_ZX(in);
+ MATRIX_XW(out) = MATRIX_WX(in);
+ MATRIX_YX(out) = MATRIX_XY(in);
+ MATRIX_YY(out) = MATRIX_YY(in);
+ MATRIX_YZ(out) = MATRIX_ZY(in);
+ MATRIX_YW(out) = MATRIX_WY(in);
+ MATRIX_ZX(out) = MATRIX_XZ(in);
+ MATRIX_ZY(out) = MATRIX_YZ(in);
+ MATRIX_ZZ(out) = MATRIX_ZZ(in);
+ MATRIX_ZW(out) = MATRIX_WZ(in);
+ MATRIX_WX(out) = MATRIX_XW(in);
+ MATRIX_WY(out) = MATRIX_YW(in);
+ MATRIX_WZ(out) = MATRIX_ZW(in);
+ MATRIX_WW(out) = MATRIX_WW(in);
+}
diff --git a/src/lib/eina/eina_matrix.h b/src/lib/eina/eina_matrix.h
index 1f11be35ce..ab6be4cf79 100644
--- a/src/lib/eina/eina_matrix.h
+++ b/src/lib/eina/eina_matrix.h
@@ -550,6 +550,18 @@ EAPI Eina_Bool eina_matrix4_normalized(Eina_Matrix4 *out,
EAPI Eina_Bool eina_matrix4_inverse(Eina_Matrix4 *out, const Eina_Matrix4 *in);
/**
+ * @brief Return the transpose of the given matrix.
+ *
+ * @param out The transpose matrix
+ * @param in The matrix.
+ *
+ * Just going to swap row and column.
+ *
+ * @since 1.15
+ */
+EAPI void eina_matrix4_transpose(Eina_Matrix4 *out, const Eina_Matrix4 *in);
+
+/**
* @brief Convert an Eina_Matrix4 into an Eina_Matrix3.
*
* @param m3 The destination Eina_Matrix3.