From d74cf9de81f1241c8c3f2419d62f7519c6fbd6f2 Mon Sep 17 00:00:00 2001 From: Robert Bragg Date: Thu, 30 Jun 2011 22:15:08 +0100 Subject: [PATCH] matrix: Adds cogl_matrix_is_identity API This adds a function called cogl_matrix_is_identity that can determine if a given matrix is an identity matrix or not. Signed-off-by: Neil Roberts --- cogl/cogl-matrix.c | 10 ++++++++++ cogl/cogl-matrix.h | 12 ++++++++++++ .../cogl-2.0-experimental/cogl-sections.txt | 1 + doc/reference/cogl/cogl-sections.txt | 1 + 4 files changed, 24 insertions(+) diff --git a/cogl/cogl-matrix.c b/cogl/cogl-matrix.c index 51c98fb83..4ceece7d2 100644 --- a/cogl/cogl-matrix.c +++ b/cogl/cogl-matrix.c @@ -2041,3 +2041,13 @@ cogl_matrix_project_points (const CoglMatrix *matrix, n_points); } } + +gboolean +cogl_matrix_is_identity (const CoglMatrix *matrix) +{ + if (!(matrix->flags & MAT_DIRTY_TYPE) && + matrix->type == COGL_MATRIX_TYPE_IDENTITY) + return TRUE; + else + return memcmp (matrix, identity, sizeof (float) * 16) == 0; +} diff --git a/cogl/cogl-matrix.h b/cogl/cogl-matrix.h index 903d2ea62..a2c238544 100644 --- a/cogl/cogl-matrix.h +++ b/cogl/cogl-matrix.h @@ -585,6 +585,18 @@ cogl_matrix_project_points (const CoglMatrix *matrix, #endif /* COGL_ENABLE_EXPERIMENTAL_API */ +/** + * cogl_matrix_is_identity: + * @matrix: A #CoglMatrix + * + * Determines if the given matrix is an identity matrix. + * + * Returns: %TRUE if @matrix is an identity matrix else %FALSE + * Since: 1.8 + */ +gboolean +cogl_matrix_is_identity (const CoglMatrix *matrix); + #ifdef _COGL_SUPPORTS_GTYPE_INTEGRATION #define COGL_GTYPE_TYPE_MATRIX (cogl_gtype_matrix_get_type ()) diff --git a/doc/reference/cogl-2.0-experimental/cogl-sections.txt b/doc/reference/cogl-2.0-experimental/cogl-sections.txt index 02f793155..1f7216fa2 100644 --- a/doc/reference/cogl-2.0-experimental/cogl-sections.txt +++ b/doc/reference/cogl-2.0-experimental/cogl-sections.txt @@ -387,6 +387,7 @@ cogl_matrix_scale cogl_matrix_init_from_array cogl_matrix_get_array cogl_matrix_get_inverse +cogl_matrix_is_identity cogl-euler diff --git a/doc/reference/cogl/cogl-sections.txt b/doc/reference/cogl/cogl-sections.txt index c737a8b4c..1bbb50b08 100644 --- a/doc/reference/cogl/cogl-sections.txt +++ b/doc/reference/cogl/cogl-sections.txt @@ -469,6 +469,7 @@ cogl_matrix_get_inverse cogl_matrix_transform_point cogl_matrix_project_points cogl_matrix_transform_points +cogl_matrix_is_identity