From 8f0b70a9eebf760e42d635dfe4b7347d3701debf Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C3=98yvind=20Kol=C3=A5s?= Date: Mon, 24 May 2010 15:39:01 +0100 Subject: [PATCH] state: replaced test with a more complex one --- tests/interactive/test-state.c | 167 +++++++++++++++++++++++++++++++---------- 1 file changed, 126 insertions(+), 41 deletions(-) diff --git a/tests/interactive/test-state.c b/tests/interactive/test-state.c index 064c03a..348a994 100644 --- a/tests/interactive/test-state.c +++ b/tests/interactive/test-state.c @@ -3,14 +3,24 @@ #include #include -static ClutterState *state; +#define STAGE_WIDTH 1024 +#define STAGE_HEIGHT 768 + +#define ACTOR_WIDTH 128 +#define ACTOR_HEIGHT 128 + +#define COLS (STAGE_WIDTH/ACTOR_WIDTH) +#define ROWS (STAGE_HEIGHT/ACTOR_HEIGHT) +#define TOTAL (ROWS*COLS) + static gboolean press_event (ClutterActor *actor, ClutterEvent *event, gpointer user_data) { + ClutterState *state = CLUTTER_STATE (user_data); clutter_grab_pointer (actor); - clutter_state_change (state, "end", TRUE); + clutter_state_change (state, "right", TRUE); return TRUE; } @@ -18,16 +28,41 @@ static gboolean release_event (ClutterActor *actor, ClutterEvent *event, gpointer user_data) { - clutter_state_change (state, "start", TRUE); + ClutterState *state = CLUTTER_STATE (user_data); + clutter_state_change (state, "active", TRUE); clutter_ungrab_pointer (); return TRUE; } -static void completed (ClutterState *sstate, +static gboolean enter_event (ClutterActor *actor, + ClutterEvent *event, + gpointer user_data) +{ + ClutterState *state = CLUTTER_STATE (user_data); + clutter_state_change (state, "hover", TRUE); + return TRUE; +} + +static gboolean leave_event (ClutterActor *actor, + ClutterEvent *event, + gpointer user_data) +{ + ClutterState *state = CLUTTER_STATE (user_data); + clutter_state_change (state, "normal", TRUE); + return TRUE; +} + +static void completed (ClutterState *state, gpointer data) { g_print ("Completed transitioning to state: %s\n", - clutter_state_get_target_state (sstate)); + clutter_state_get_target_state (state)); + + if (g_str_equal (clutter_state_get_target_state (state), "right")) + { + /* skip straight to left state when reaching right */ + clutter_state_change (state, "left", FALSE); + } } static ClutterActor *new_rect (gint r, @@ -37,68 +72,118 @@ static ClutterActor *new_rect (gint r, { GError *error = NULL; ClutterColor *color = clutter_color_new (r, g, b, a); + ClutterActor *group = clutter_group_new (); ClutterActor *rectangle = clutter_rectangle_new_with_color (color); + ClutterActor *hand = NULL; gchar *file = g_build_filename (TESTS_DATADIR, "redhand.png", NULL); - rectangle = clutter_texture_new_from_file (file, &error); + + hand = clutter_texture_new_from_file (file, &error); if (rectangle == NULL) g_error ("image load failed: %s", error->message); g_free (file); + clutter_actor_set_size (hand, ACTOR_WIDTH,ACTOR_HEIGHT); - clutter_actor_set_size (rectangle, 128, 128); + clutter_actor_set_size (rectangle, ACTOR_WIDTH,ACTOR_HEIGHT); clutter_color_free (color); - return rectangle; + clutter_container_add (CLUTTER_CONTAINER (group), rectangle, hand, NULL); + return group; } G_MODULE_EXPORT gint test_state_main (gint argc, - gchar **argv) + gchar **argv) { + ClutterColor black={0,0,0,0xff}; ClutterActor *stage; - ClutterActor *rects[40]; + ClutterState *layout_state; gint i; clutter_init (&argc, &argv); stage = clutter_stage_get_default (); + layout_state = clutter_state_new (); + clutter_stage_set_color (CLUTTER_STAGE (stage), &black); + clutter_actor_set_size (stage, STAGE_WIDTH, STAGE_HEIGHT); - for (i=0; i<2; i++) + + for (i=0; i