diff options
author | Georges Basile Stavracas Neto <georges.stavracas@gmail.com> | 2020-09-10 11:59:46 -0300 |
---|---|---|
committer | Georges Basile Stavracas Neto <georges.stavracas@gmail.com> | 2020-10-06 15:34:46 +0000 |
commit | 5d84f73aa06ee4cd45a3bea8262488e752d1d09e (patch) | |
tree | e2485cc216d4a14ad60b52700cb03e3093c18a65 /cogl | |
parent | 3ea8af14890684e6c2681e9f98a22b25bed6d254 (diff) | |
download | mutter-5d84f73aa06ee4cd45a3bea8262488e752d1d09e.tar.gz |
cogl/matrix: Skew using graphene matrices
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1439
Diffstat (limited to 'cogl')
-rw-r--r-- | cogl/cogl/cogl-matrix.c | 39 |
1 files changed, 24 insertions, 15 deletions
diff --git a/cogl/cogl/cogl-matrix.c b/cogl/cogl/cogl-matrix.c index 4060199a4..f0be09496 100644 --- a/cogl/cogl/cogl-matrix.c +++ b/cogl/cogl/cogl-matrix.c @@ -1946,12 +1946,15 @@ void cogl_matrix_skew_xy (CoglMatrix *matrix, float factor) { - matrix->yx += matrix->xx * factor; - matrix->yy += matrix->xy * factor; - matrix->yz += matrix->xz * factor; - matrix->yw += matrix->xw * factor; + graphene_matrix_t skew; + graphene_matrix_t m; + + cogl_matrix_to_graphene_matrix (matrix, &m); + graphene_matrix_init_identity (&skew); + graphene_matrix_skew_xy (&skew, factor); + graphene_matrix_multiply (&skew, &m, &m); + graphene_matrix_to_cogl_matrix (&m, matrix); - matrix->flags = (MAT_FLAG_GENERAL | MAT_DIRTY_ALL); _COGL_MATRIX_DEBUG_PRINT (matrix); } @@ -1959,12 +1962,15 @@ void cogl_matrix_skew_xz (CoglMatrix *matrix, float factor) { - matrix->zx += matrix->xx * factor; - matrix->zy += matrix->xy * factor; - matrix->zz += matrix->xz * factor; - matrix->zw += matrix->xw * factor; + graphene_matrix_t skew; + graphene_matrix_t m; + + cogl_matrix_to_graphene_matrix (matrix, &m); + graphene_matrix_init_identity (&skew); + graphene_matrix_skew_xz (&skew, factor); + graphene_matrix_multiply (&skew, &m, &m); + graphene_matrix_to_cogl_matrix (&m, matrix); - matrix->flags = (MAT_FLAG_GENERAL | MAT_DIRTY_ALL); _COGL_MATRIX_DEBUG_PRINT (matrix); } @@ -1972,11 +1978,14 @@ void cogl_matrix_skew_yz (CoglMatrix *matrix, float factor) { - matrix->zx += matrix->yx * factor; - matrix->zy += matrix->yy * factor; - matrix->zz += matrix->yz * factor; - matrix->zw += matrix->yw * factor; + graphene_matrix_t skew; + graphene_matrix_t m; + + cogl_matrix_to_graphene_matrix (matrix, &m); + graphene_matrix_init_identity (&skew); + graphene_matrix_skew_yz (&skew, factor); + graphene_matrix_multiply (&skew, &m, &m); + graphene_matrix_to_cogl_matrix (&m, matrix); - matrix->flags = (MAT_FLAG_GENERAL | MAT_DIRTY_ALL); _COGL_MATRIX_DEBUG_PRINT (matrix); } |