[cogl/wip/rib/master-next: 4/11] matrix: Adds cogl_matrix_is_identity API



commit bd1ed43e8468e3ca786efd7f9bae602ce8459eb6
Author: Robert Bragg <robert linux intel com>
Date:   Thu Jun 30 22:15:08 2011 +0100

    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.

 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(+), 0 deletions(-)
---
diff --git a/cogl/cogl-matrix.c b/cogl/cogl-matrix.c
index 51c98fb..4ceece7 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 903d2ea..a2c2385 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 02f7931..1f7216f 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
 </SECTION>
 
 <FILE>cogl-euler</FILE>
diff --git a/doc/reference/cogl/cogl-sections.txt b/doc/reference/cogl/cogl-sections.txt
index c737a8b..1bbb50b 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
 </SECTION>
 
 <SECTION>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]