e_util_transform: add matrix flip functions 33/127333/2
authorBoram Park <boram1288.park@samsung.com>
Sun, 23 Apr 2017 05:53:15 +0000 (14:53 +0900)
committerBoram Park <boram1288.park@samsung.com>
Thu, 27 Apr 2017 06:40:38 +0000 (15:40 +0900)
Change-Id: I2a8ad68a5cd3949a7ea990e51bac6aebde7e01e4

src/bin/e_util_transform.c
src/bin/e_util_transform.h

index 79b24c952f4ae50d224bbb097cad7037529e73cc..40f673a225061f6d53a01094f1b7d54c87fd815f 100644 (file)
@@ -657,6 +657,46 @@ e_util_transform_matrix_rotation_z(E_Util_Transform_Matrix *matrix, double degre
    matrix->mat[1][3] = s * source.mat[0][3] + c * source.mat[1][3];
 }
 
+E_API void
+e_util_transform_matrix_flip_x(E_Util_Transform_Matrix *matrix)
+{
+   E_Util_Transform_Matrix source;
+
+   if (!matrix) return;
+
+   source = *matrix;
+
+   //   | -1 0 0 0 |     |m00 m01 m02 m03|
+   //   |  0 1 0 0 |     |m10 m11 m12 m13|
+   //   |  0 0 1 0 |  *  |m20 m21 m22 m23|
+   //   |  0 0 0 1 |     |m30 m31 m32 m33|
+
+   matrix->mat[0][0] = -source.mat[0][0];
+   matrix->mat[0][1] = -source.mat[0][1];
+   matrix->mat[0][2] = -source.mat[0][2];
+   matrix->mat[0][3] = -source.mat[0][3];
+}
+
+E_API void
+e_util_transform_matrix_flip_y(E_Util_Transform_Matrix *matrix)
+{
+   E_Util_Transform_Matrix source;
+
+   if (!matrix) return;
+
+   source = *matrix;
+
+   //   | 0  0 0 0 |     |m00 m01 m02 m03|
+   //   | 0 -1 0 0 |     |m10 m11 m12 m13|
+   //   | 0  0 1 0 |  *  |m20 m21 m22 m23|
+   //   | 0  0 0 1 |     |m30 m31 m32 m33|
+
+   matrix->mat[1][0] = -source.mat[1][0];
+   matrix->mat[1][1] = -source.mat[1][1];
+   matrix->mat[1][2] = -source.mat[1][2];
+   matrix->mat[1][3] = -source.mat[1][3];
+}
+
 E_API void
 e_util_transform_matrix_scale(E_Util_Transform_Matrix *matrix, double sx, double sy, double sz)
 {
index c4912fadb8e247a4e5941e51acba64e4bc02434f..3dc48c196fe332eb7d1c81f0f9d390e6842a76ab 100644 (file)
@@ -123,6 +123,8 @@ E_API void                         e_util_transform_matrix_translate(E_Util_Tran
 E_API void                         e_util_transform_matrix_rotation_x(E_Util_Transform_Matrix *matrix, double degree);
 E_API void                         e_util_transform_matrix_rotation_y(E_Util_Transform_Matrix *matrix, double degree);
 E_API void                         e_util_transform_matrix_rotation_z(E_Util_Transform_Matrix *matrix, double degree);
+E_API void                         e_util_transform_matrix_flip_x(E_Util_Transform_Matrix *matrix);
+E_API void                         e_util_transform_matrix_flip_y(E_Util_Transform_Matrix *matrix);
 E_API void                         e_util_transform_matrix_scale(E_Util_Transform_Matrix *matrix, double sx, double sy, double sz);
 E_API E_Util_Transform_Matrix      e_util_transform_matrix_multiply(E_Util_Transform_Matrix *matrix1,
                                                                     E_Util_Transform_Matrix *matrix2);