summaryrefslogtreecommitdiff
path: root/tests/conform/actor-invariants.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/conform/actor-invariants.c')
-rw-r--r--tests/conform/actor-invariants.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/conform/actor-invariants.c b/tests/conform/actor-invariants.c
index 893dfa499..a9e21eeb8 100644
--- a/tests/conform/actor-invariants.c
+++ b/tests/conform/actor-invariants.c
@@ -442,3 +442,43 @@ default_stage (TestConformSimpleFixture *fixture,
g_assert (CLUTTER_ACTOR_IS_REALIZED (def_stage));
}
+
+void
+actor_pivot_transformation (TestConformSimpleFixture *fixture,
+ gconstpointer data)
+{
+ ClutterActor *stage, *actor_implicit, *actor_explicit;
+ ClutterMatrix transform, result_implicit, result_explicit;
+ ClutterActorBox allocation = CLUTTER_ACTOR_BOX_INIT (0, 0, 90, 30);
+ gfloat angle = 30;
+
+ stage = clutter_stage_new ();
+
+ actor_implicit = clutter_actor_new ();
+ actor_explicit = clutter_actor_new ();
+
+ clutter_actor_add_child (stage, actor_implicit);
+ clutter_actor_add_child (stage, actor_explicit);
+
+ /* Fake allocation or pivot-point will not have any effect */
+ clutter_actor_allocate (actor_implicit, &allocation, CLUTTER_ALLOCATION_NONE);
+ clutter_actor_allocate (actor_explicit, &allocation, CLUTTER_ALLOCATION_NONE);
+
+ clutter_actor_set_pivot_point (actor_implicit, 0.5, 0.5);
+ clutter_actor_set_pivot_point (actor_explicit, 0.5, 0.5);
+
+ /* Implict transformation */
+ clutter_actor_set_rotation_angle (actor_implicit, CLUTTER_Z_AXIS, angle);
+
+ /* Explict transformation */
+ clutter_matrix_init_identity(&transform);
+ cogl_matrix_rotate (&transform, angle, 0, 0, 1.0);
+ clutter_actor_set_transform (actor_explicit, &transform);
+
+ clutter_actor_get_transform (actor_implicit, &result_implicit);
+ clutter_actor_get_transform (actor_explicit, &result_explicit);
+
+ clutter_actor_destroy (stage);
+
+ g_assert (cogl_matrix_equal (&result_implicit, &result_explicit));
+}