summaryrefslogtreecommitdiff
path: root/clutter
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2019-07-03 11:51:45 +0200
committerJonas Ådahl <jadahl@gmail.com>2019-08-24 08:59:08 +0000
commitcfb8f18cef8546dd3b4e5ac93986d96b00d6423f (patch)
tree6558685df340d253875e177de1df5614858260fc /clutter
parentc0a71720af94b7f64da4d7ca7dde6a49c21b6e8c (diff)
downloadmutter-cfb8f18cef8546dd3b4e5ac93986d96b00d6423f.tar.gz
clutter: Move tests to src/tests
Clutter doesn't hold anymore backend implementations, move tests where we have one that we may assign. https://gitlab.gnome.org/GNOME/mutter/merge_requests/672
Diffstat (limited to 'clutter')
-rw-r--r--clutter/meson.build3
-rw-r--r--clutter/tests/README38
-rw-r--r--clutter/tests/accessibility/.gitignore5
-rw-r--r--clutter/tests/accessibility/cally-atkcomponent-example.c94
-rw-r--r--clutter/tests/accessibility/cally-atkeditabletext-example.c268
-rw-r--r--clutter/tests/accessibility/cally-atkevents-example.c196
-rw-r--r--clutter/tests/accessibility/cally-atktext-example.c255
-rw-r--r--clutter/tests/accessibility/cally-clone-example.c116
-rw-r--r--clutter/tests/accessibility/cally-examples-util.c146
-rw-r--r--clutter/tests/accessibility/cally-examples-util.h24
-rw-r--r--clutter/tests/accessibility/meson.build38
-rw-r--r--clutter/tests/clutter-1.0.suppressions173
-rw-r--r--clutter/tests/conform/actor-anchors.c740
-rw-r--r--clutter/tests/conform/actor-destroy.c195
-rw-r--r--clutter/tests/conform/actor-graph.c550
-rw-r--r--clutter/tests/conform/actor-invariants.c371
-rw-r--r--clutter/tests/conform/actor-iter.c218
-rw-r--r--clutter/tests/conform/actor-layout.c92
-rw-r--r--clutter/tests/conform/actor-meta.c40
-rw-r--r--clutter/tests/conform/actor-offscreen-redirect.c349
-rw-r--r--clutter/tests/conform/actor-paint-opacity.c141
-rw-r--r--clutter/tests/conform/actor-pick.c311
-rw-r--r--clutter/tests/conform/actor-shader-effect.c288
-rw-r--r--clutter/tests/conform/actor-size.c216
-rw-r--r--clutter/tests/conform/behaviours.c80
-rw-r--r--clutter/tests/conform/binding-pool.c297
-rw-r--r--clutter/tests/conform/cairo-texture.c198
-rw-r--r--clutter/tests/conform/cally-text.c338
-rw-r--r--clutter/tests/conform/color.c319
-rw-r--r--clutter/tests/conform/group.c60
-rw-r--r--clutter/tests/conform/interval.c117
-rw-r--r--clutter/tests/conform/meson.build78
-rw-r--r--clutter/tests/conform/path.c740
-rw-r--r--clutter/tests/conform/rectangle.c51
-rw-r--r--clutter/tests/conform/script-parser.c427
-rw-r--r--clutter/tests/conform/scripts/test-animator-1.json5
-rw-r--r--clutter/tests/conform/scripts/test-animator-2.json29
-rw-r--r--clutter/tests/conform/scripts/test-animator-3.json40
-rw-r--r--clutter/tests/conform/scripts/test-script-animation.json14
-rw-r--r--clutter/tests/conform/scripts/test-script-child.json21
-rw-r--r--clutter/tests/conform/scripts/test-script-implicit-alpha.json8
-rw-r--r--clutter/tests/conform/scripts/test-script-interval.json16
-rw-r--r--clutter/tests/conform/scripts/test-script-layout-property.json21
-rw-r--r--clutter/tests/conform/scripts/test-script-margin.json22
-rw-r--r--clutter/tests/conform/scripts/test-script-model.json17
-rw-r--r--clutter/tests/conform/scripts/test-script-named-object.json44
-rw-r--r--clutter/tests/conform/scripts/test-script-object-property.json13
-rw-r--r--clutter/tests/conform/scripts/test-script-single.json10
-rw-r--r--clutter/tests/conform/scripts/test-script-timeline-markers.json12
-rw-r--r--clutter/tests/conform/scripts/test-state-1.json33
-rw-r--r--clutter/tests/conform/state.c87
-rw-r--r--clutter/tests/conform/text-cache.c297
-rw-r--r--clutter/tests/conform/text.c563
-rw-r--r--clutter/tests/conform/texture-fbo.c235
-rw-r--r--clutter/tests/conform/texture.c84
-rw-r--r--clutter/tests/conform/timeline-interpolate.c161
-rw-r--r--clutter/tests/conform/timeline-progress.c110
-rw-r--r--clutter/tests/conform/timeline-rewind.c92
-rw-r--r--clutter/tests/conform/timeline.c361
-rw-r--r--clutter/tests/conform/units.c131
-rw-r--r--clutter/tests/interactive/.gitignore55
-rw-r--r--clutter/tests/interactive/meson.build91
-rwxr-xr-xclutter/tests/interactive/meson/gen-test-unit-names.sh14
-rw-r--r--clutter/tests/interactive/redhand.pngbin8250 -> 0 bytes
-rw-r--r--clutter/tests/interactive/test-actors.c318
-rw-r--r--clutter/tests/interactive/test-animation.c130
-rw-r--r--clutter/tests/interactive/test-bind-constraint.c257
-rw-r--r--clutter/tests/interactive/test-binding-pool.c316
-rw-r--r--clutter/tests/interactive/test-cairo-clock.c124
-rw-r--r--clutter/tests/interactive/test-cairo-flowers.c262
-rw-r--r--clutter/tests/interactive/test-cogl-multitexture.c243
-rw-r--r--clutter/tests/interactive/test-cogl-offscreen.c337
-rw-r--r--clutter/tests/interactive/test-cogl-point-sprites.c294
-rw-r--r--clutter/tests/interactive/test-cogl-shader-glsl.c351
-rw-r--r--clutter/tests/interactive/test-cogl-tex-convert.c229
-rw-r--r--clutter/tests/interactive/test-cogl-tex-polygon.c425
-rw-r--r--clutter/tests/interactive/test-cogl-tex-tile.c223
-rw-r--r--clutter/tests/interactive/test-cogl-vertex-buffer.c396
-rw-r--r--clutter/tests/interactive/test-content.c240
-rw-r--r--clutter/tests/interactive/test-devices.c289
-rw-r--r--clutter/tests/interactive/test-easing.c276
-rw-r--r--clutter/tests/interactive/test-events.c494
-rw-r--r--clutter/tests/interactive/test-fbo.c111
-rw-r--r--clutter/tests/interactive/test-grab.c302
-rw-r--r--clutter/tests/interactive/test-image.c259
-rw-r--r--clutter/tests/interactive/test-keyframe-transition.c114
-rw-r--r--clutter/tests/interactive/test-layout.c693
-rw-r--r--clutter/tests/interactive/test-main.c221
-rw-r--r--clutter/tests/interactive/test-paint-wrapper.c376
-rw-r--r--clutter/tests/interactive/test-path-constraint.c137
-rw-r--r--clutter/tests/interactive/test-rotate-zoom.c99
-rw-r--r--clutter/tests/interactive/test-scale.c125
-rw-r--r--clutter/tests/interactive/test-script-signals.json68
-rw-r--r--clutter/tests/interactive/test-script.c188
-rw-r--r--clutter/tests/interactive/test-script.json74
-rw-r--r--clutter/tests/interactive/test-scrolling.c137
-rw-r--r--clutter/tests/interactive/test-shader-effects.c86
-rw-r--r--clutter/tests/interactive/test-stage-read-pixels.c174
-rw-r--r--clutter/tests/interactive/test-stage-sizing.c88
-rw-r--r--clutter/tests/interactive/test-state-script.c45
-rw-r--r--clutter/tests/interactive/test-state.c212
-rw-r--r--clutter/tests/interactive/test-swipe-action.c201
-rw-r--r--clutter/tests/interactive/test-table-layout.c289
-rw-r--r--clutter/tests/interactive/test-text-field.c338
-rw-r--r--clutter/tests/interactive/test-text.c101
-rw-r--r--clutter/tests/interactive/test-texture-async.c160
-rw-r--r--clutter/tests/interactive/test-texture-material.c49
-rw-r--r--clutter/tests/interactive/test-texture-quality.c122
-rw-r--r--clutter/tests/interactive/test-texture-slicing.c131
-rw-r--r--clutter/tests/interactive/test-touch-events.c198
-rwxr-xr-xclutter/tests/interactive/wrapper.sh.in15
-rw-r--r--clutter/tests/meson.build5
-rw-r--r--clutter/tests/micro-bench/.gitignore5
-rw-r--r--clutter/tests/micro-bench/meson.build28
-rw-r--r--clutter/tests/micro-bench/test-cogl-perf.c158
-rw-r--r--clutter/tests/micro-bench/test-picking.c140
-rw-r--r--clutter/tests/micro-bench/test-random-text.c105
-rw-r--r--clutter/tests/micro-bench/test-text-perf.c187
-rw-r--r--clutter/tests/micro-bench/test-text.c120
-rw-r--r--clutter/tests/performance/.gitignore7
-rwxr-xr-xclutter/tests/performance/create-report.rb179
-rw-r--r--clutter/tests/performance/joblist27
-rwxr-xr-xclutter/tests/performance/makejobs.rb24
-rw-r--r--clutter/tests/performance/meson.build35
-rw-r--r--clutter/tests/performance/test-common.h134
-rw-r--r--clutter/tests/performance/test-picking.c134
-rw-r--r--clutter/tests/performance/test-state-hidden.c150
-rw-r--r--clutter/tests/performance/test-state-interactive.c194
-rw-r--r--clutter/tests/performance/test-state-mini.c153
-rw-r--r--clutter/tests/performance/test-state-pick.c159
-rw-r--r--clutter/tests/performance/test-state.c158
-rw-r--r--clutter/tests/performance/test-text-perf.c167
132 files changed, 0 insertions, 22744 deletions
diff --git a/clutter/meson.build b/clutter/meson.build
index bd9f06e74..298d6f177 100644
--- a/clutter/meson.build
+++ b/clutter/meson.build
@@ -86,6 +86,3 @@ clutter_deps = [
subdir('clutter')
-#if have_clutter_tests
-# subdir('tests')
-#endif
diff --git a/clutter/tests/README b/clutter/tests/README
deleted file mode 100644
index b5665e6ab..000000000
--- a/clutter/tests/README
+++ /dev/null
@@ -1,38 +0,0 @@
-Outline of test categories:
-
-The conform/ tests should be non-interactive unit-tests that verify a single
-feature is behaving as documented. Use the GLib and Clutter test API and macros
-to write the test units. The conformance test suites are meant to be used with
-continuous integration builds.
-
-The performance/ tests are performance tests, both focused tests testing single
-metrics and larger tests. These tests are used to report one or more
-performance markers for the build of Clutter. Each performance marker is picked
-up from the standard output of running the tests from strings having the form
-"\n@ marker-name: 42.23" where 'marker-name' and '42.23' are the key/value pairs
-of a single metric. Each test can provide multiple key/value pairs. Note that
-if framerate is the feedback metric the test should forcibly enable FPS
-debugging itself. The file test-common.h contains utility function helping to
-do fps reporting.
-
-The interactive/ tests are any tests whose status can not be determined without
-a user looking at some visual output, or providing some manual input etc. This
-covers most of the original Clutter tests. Ideally some of these tests will be
-migrated into the conform/ directory.
-
-The accessibility/ tests are tests created to test the accessibility support of
-clutter, testing some of the atk interfaces.
-
-Other notes:
-
-• All tests should ideally include a detailed description in the source
-explaining exactly what the test is for, how the test was designed to work,
-and possibly a rationale for the approach taken for testing. Tests for specific
-bugs should reference the bug report URL or number.
-
-• When running tests under Valgrind, you should follow the instructions
-available here:
-
- https://wiki.gnome.org/Valgrind
-
-and also use the suppression file available in the Git repository.
diff --git a/clutter/tests/accessibility/.gitignore b/clutter/tests/accessibility/.gitignore
deleted file mode 100644
index 2b1a0b151..000000000
--- a/clutter/tests/accessibility/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-/cally-atkcomponent-example
-/cally-atkeditabletext-example
-/cally-atkevents-example
-/cally-atktext-example
-/cally-clone-example
diff --git a/clutter/tests/accessibility/cally-atkcomponent-example.c b/clutter/tests/accessibility/cally-atkcomponent-example.c
deleted file mode 100644
index 79a816bde..000000000
--- a/clutter/tests/accessibility/cally-atkcomponent-example.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/* CALLY - The Clutter Accessibility Implementation Library
- *
- * Copyright (C) 2009 Igalia, S.L.
- *
- * Author: Alejandro Piñeiro Iglesias <apinheiro@igalia.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <clutter/clutter.h>
-
-#include "cally-examples-util.h"
-
-#define WIDTH 300
-#define HEIGHT 300
-#define SIZE 50
-#define DEPTH -100
-
-int
-main (int argc, char *argv[])
-{
- ClutterActor *stage = NULL;
- ClutterActor *button1 = NULL;
- ClutterActor *button2 = NULL;
- ClutterActor *button3 = NULL;
- ClutterActor *button4 = NULL;
- ClutterActor *group[4];
- int i = 0;
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- cally_util_a11y_init (&argc, &argv);
-
- stage = clutter_stage_new ();
-
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Cally - AtkComponent Test");
- clutter_stage_set_color (CLUTTER_STAGE (stage), CLUTTER_COLOR_White);
- clutter_actor_set_size (stage, WIDTH, HEIGHT);
-
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- button1 = clutter_rectangle_new_with_color (CLUTTER_COLOR_Yellow);
- clutter_actor_set_size (button1, SIZE, SIZE);
-
- button2 = clutter_rectangle_new_with_color (CLUTTER_COLOR_Green);
- clutter_actor_set_position (button2, 2 * SIZE, 0);
- clutter_actor_set_size (button2, SIZE, SIZE);
-
- button3 = clutter_rectangle_new_with_color (CLUTTER_COLOR_Blue);
- clutter_actor_set_position (button3, 0, 2 * SIZE);
- clutter_actor_set_size (button3, SIZE, SIZE);
- clutter_actor_set_depth( button3, DEPTH);
-
- /* a nested hierarchy, to check that the relative positions are
- computed properly */
- button4 = clutter_rectangle_new_with_color (CLUTTER_COLOR_Magenta);
- clutter_actor_set_position (button4, SIZE / 2, SIZE / 2);
- clutter_actor_set_size (button4, SIZE, SIZE);
-
- for (i = 0; i < 4; i++) {
- group[i] = clutter_group_new ();
- clutter_actor_set_position (group[i], SIZE / 2, SIZE / 2);
- clutter_actor_set_size (group[i], SIZE, SIZE);
-
- if (i > 0)
- clutter_container_add_actor (CLUTTER_CONTAINER (group[i]), group [i - 1]);
- }
-
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), button1);
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), button2);
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), button3);
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), group[3]);
- clutter_container_add_actor (CLUTTER_CONTAINER (group[0]), button4);
-
- clutter_actor_show (stage);
-
- clutter_main ();
-
- return 0;
-}
diff --git a/clutter/tests/accessibility/cally-atkeditabletext-example.c b/clutter/tests/accessibility/cally-atkeditabletext-example.c
deleted file mode 100644
index 433ee9270..000000000
--- a/clutter/tests/accessibility/cally-atkeditabletext-example.c
+++ /dev/null
@@ -1,268 +0,0 @@
-/* CALLY - The Clutter Accessibility Implementation Library
- *
- * Copyright (C) 2009 Igalia, S.L.
- *
- * Author: Alejandro Piñeiro Iglesias <apinheiro@igalia.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <atk/atk.h>
-#include <clutter/clutter.h>
-
-#include "cally-examples-util.h"
-
-#define WIDTH 800
-#define HEIGHT 600
-
-static ClutterActor *text_actor = NULL;
-static ClutterActor *text_editable_actor = NULL;
-
-/*
- * Test AtkText interface
- */
-static void
-test_atk_text (ClutterActor *actor)
-{
- AtkObject *object = NULL;
- AtkEditableText *cally_editable_text = NULL;
- gint pos = 0;
-
- object = atk_gobject_accessible_for_object (G_OBJECT (actor));
- cally_editable_text = ATK_EDITABLE_TEXT (object);
-
- if (cally_editable_text != NULL) {
- atk_editable_text_set_text_contents (cally_editable_text, "New text");
- atk_editable_text_delete_text (cally_editable_text, 0, 3);
- pos = 3;
- atk_editable_text_insert_text (cally_editable_text, "New", 0, &pos);
-
- /* Not implemented in cally, just checking that we can call this
- functions */
- atk_editable_text_copy_text (cally_editable_text, 0, -1);
- atk_editable_text_paste_text (cally_editable_text, 5);
- atk_editable_text_cut_text (cally_editable_text, 0, -1);
- }
-}
-
-static gboolean
-insert_text_press_cb (ClutterActor *actor,
- ClutterButtonEvent *event,
- gpointer data)
-{
- AtkObject *object = NULL;
- AtkEditableText *cally_editable_text = NULL;
- gint pos = 0;
-
- object = atk_gobject_accessible_for_object (G_OBJECT (text_editable_actor));
- cally_editable_text = ATK_EDITABLE_TEXT (object);
-
- pos = 3;
- atk_editable_text_insert_text (cally_editable_text, "New", 0, &pos);
-
- return TRUE;
-}
-
-static gboolean
-delete_text_press_cb (ClutterActor *actor,
- ClutterButtonEvent *event,
- gpointer data)
-{
- AtkObject *object = NULL;
- AtkEditableText *cally_editable_text = NULL;
-
- object = atk_gobject_accessible_for_object (G_OBJECT (text_editable_actor));
- cally_editable_text = ATK_EDITABLE_TEXT (object);
-
- atk_editable_text_delete_text (cally_editable_text, 0, 3);
-
- return TRUE;
-}
-
-static gboolean
-set_text_press_cb (ClutterActor *actor,
- ClutterButtonEvent *event,
- gpointer data)
-{
- AtkObject *object = NULL;
- AtkEditableText *cally_editable_text = NULL;
-
- object = atk_gobject_accessible_for_object (G_OBJECT (text_editable_actor));
- cally_editable_text = ATK_EDITABLE_TEXT (object);
-
- atk_editable_text_set_text_contents (cally_editable_text, "New text");
-
- return TRUE;
-}
-
-static gboolean
-activate_deactivate_press_cb (ClutterActor *actor,
- ClutterButtonEvent *event,
- gpointer data)
-{
- gboolean active = FALSE;
-
- active = clutter_text_get_activatable (CLUTTER_TEXT (text_editable_actor));
- clutter_text_set_activatable (CLUTTER_TEXT (text_editable_actor), !active);
-
- return TRUE;
-}
-
-static gboolean
-print_cursor_position_press_cb (ClutterActor *actor,
- ClutterButtonEvent *event,
- gpointer data)
-{
- gint pos = 0;
-
- pos = clutter_text_get_cursor_position (CLUTTER_TEXT (text_editable_actor));
-
- g_print ("current cursor position %i\n", pos);
-
- return TRUE;
-}
-
-static void
-activate_cb (ClutterActor *actor,
- gpointer data)
-{
- g_print ("Actor activated\n");
-}
-
-static ClutterActor*
-_create_button (const gchar *text)
-{
- ClutterActor *button = NULL;
- ClutterActor *rectangle = NULL;
- ClutterActor *label = NULL;
-
- button = clutter_group_new ();
- rectangle = clutter_rectangle_new_with_color (CLUTTER_COLOR_Magenta);
- clutter_actor_set_size (rectangle, 375, 35);
-
- label = clutter_text_new_full ("Sans Bold 32px",
- text,
- CLUTTER_COLOR_Black);
- clutter_container_add_actor (CLUTTER_CONTAINER (button), rectangle);
- clutter_container_add_actor (CLUTTER_CONTAINER (button), label);
- clutter_actor_set_reactive (button, TRUE);
-
- return button;
-}
-
-static void
-make_ui (ClutterActor *stage)
-{
- ClutterActor *button = NULL;
-
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Cally - AtkEditable Test");
- clutter_stage_set_color (CLUTTER_STAGE (stage), CLUTTER_COLOR_White);
- clutter_actor_set_size (stage, WIDTH, HEIGHT);
-
- /* text */
- text_actor = clutter_text_new_full ("Sans Bold 32px",
- "Lorem ipsum dolor sit amet",
- CLUTTER_COLOR_Red);
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), text_actor);
-
- /* text_editable */
- text_editable_actor = clutter_text_new_full ("Sans Bold 32px",
- "consectetur adipisicing elit",
- CLUTTER_COLOR_Red);
- clutter_actor_set_position (text_editable_actor, 0, 100);
- clutter_text_set_editable (CLUTTER_TEXT (text_editable_actor), TRUE);
- clutter_text_set_selectable (CLUTTER_TEXT (text_editable_actor), TRUE);
- clutter_text_set_selection_color (CLUTTER_TEXT (text_editable_actor),
- CLUTTER_COLOR_Green);
- clutter_text_set_activatable (CLUTTER_TEXT (text_editable_actor),
- TRUE);
- clutter_text_set_line_wrap (CLUTTER_TEXT (text_editable_actor), TRUE);
- clutter_actor_grab_key_focus (text_editable_actor);
- clutter_actor_set_reactive (text_editable_actor, TRUE);
-
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), text_editable_actor);
- g_signal_connect (text_editable_actor, "activate",
- G_CALLBACK (activate_cb), NULL);
-
- /* test buttons */
- button = _create_button ("Set");
- clutter_actor_set_position (button, 100, 200);
-
- g_signal_connect_after (button, "button-press-event",
- G_CALLBACK (set_text_press_cb), NULL);
-
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), button);
-
- button = _create_button ("Delete");
- clutter_actor_set_position (button, 100, 250);
-
- g_signal_connect_after (button, "button-press-event",
- G_CALLBACK (delete_text_press_cb), NULL);
-
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), button);
-
- button = _create_button ("Insert");
- clutter_actor_set_position (button, 100, 300);
-
- g_signal_connect_after (button, "button-press-event",
- G_CALLBACK (insert_text_press_cb), NULL);
-
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), button);
-
- button = _create_button ("Activate/Deactivate");
- clutter_actor_set_position (button, 100, 350);
-
- g_signal_connect_after (button, "button-press-event",
- G_CALLBACK (activate_deactivate_press_cb), NULL);
-
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), button);
-
- button = _create_button ("Cursor position");
- clutter_actor_set_position (button, 100, 450);
-
- g_signal_connect_after (button, "button-press-event",
- G_CALLBACK (print_cursor_position_press_cb), NULL);
-
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), button);
-
-}
-
-int
-main (int argc, char *argv[])
-{
- ClutterActor *stage = NULL;
-
- g_set_application_name ("AtkEditableText");
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- cally_util_a11y_init (&argc, &argv);
-
- stage = clutter_stage_new ();
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- make_ui (stage);
-
- clutter_actor_show_all (stage);
-
- test_atk_text (text_actor);
- test_atk_text (text_editable_actor);
-
- clutter_main ();
-
- return 0;
-}
diff --git a/clutter/tests/accessibility/cally-atkevents-example.c b/clutter/tests/accessibility/cally-atkevents-example.c
deleted file mode 100644
index 6740cb80f..000000000
--- a/clutter/tests/accessibility/cally-atkevents-example.c
+++ /dev/null
@@ -1,196 +0,0 @@
-/* CALLY - The Clutter Accessibility Implementation Library
- *
- * Copyright (C) 2009 Igalia, S.L.
- *
- * Author: Alejandro Piñeiro Iglesias <apinheiro@igalia.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * The purpose of this example is test key event and global event
- * implementation, specifically:
- *
- * atk_add_global_event_listener
- * atk_remove_global_event_listener
- * atk_add_key_event_listener
- * atk_remove_key_event_listener
- */
-#include <atk/atk.h>
-#include <clutter/clutter.h>
-#include <cally/cally.h>
-
-#include "cally-examples-util.h"
-
-#define WIDTH 800
-#define HEIGHT 600
-#define HEIGHT_STEP 100
-#define NUM_ENTRIES 3
-
-struct _Data{
- gint value;
-};
-typedef struct _Data Data;
-
-static gboolean
-atk_key_listener (AtkKeyEventStruct *event, gpointer data)
-{
- Data *my_data = (Data*) data;
-
- g_print ("atk_listener: 0x%x ", event->keyval);
-
- if (my_data != NULL) {
- g_print ("\t Data value: %i\n", my_data->value);
- } else {
- g_print ("\tNo data!!\n");
- }
-
- return FALSE;
-}
-
-static gboolean
-window_event_listener (GSignalInvocationHint * signal_hint,
- guint n_param_values,
- const GValue * param_values, gpointer data)
-{
- AtkObject *accessible;
- GSignalQuery signal_query;
- const gchar *name, *s;
-
- g_signal_query (signal_hint->signal_id, &signal_query);
- name = signal_query.signal_name;
-
- accessible = ATK_OBJECT (g_value_get_object (&param_values[0]));
- s = atk_object_get_name (accessible);
-
- g_print ("Detected window event \"%s\" from object \"%p\" named \"%s\"\n",
- name, accessible, s);
-
- return TRUE;
-}
-static void
-make_ui (ClutterActor *stage)
-{
- gint i = 0;
- ClutterActor *editable = NULL;
- ClutterActor *rectangle = NULL;
- ClutterActor *label = NULL;
- ClutterColor color_sel = { 0x00, 0xff, 0x00, 0x55 };
- ClutterColor color_label = { 0x00, 0xff, 0x55, 0xff };
- ClutterColor color_rect = { 0x00, 0xff, 0xff, 0x55 };
- float label_geom_y, editable_geom_y;
-
- clutter_stage_set_color (CLUTTER_STAGE (stage), CLUTTER_COLOR_White);
- clutter_actor_set_size (stage, WIDTH, HEIGHT);
-
- label_geom_y = 50;
- editable_geom_y = 50;
-
- for (i = 0; i < NUM_ENTRIES; i++)
- {
- /* label */
- label = clutter_text_new_full ("Sans Bold 32px",
- "Entry",
- &color_label);
- clutter_actor_set_position (label, 0, label_geom_y);
-
- /* editable */
- editable = clutter_text_new_full ("Sans Bold 32px",
- "ddd",
- CLUTTER_COLOR_Red);
- clutter_actor_set_position (editable, 150, editable_geom_y);
- clutter_actor_set_size (editable, 500, 75);
- clutter_text_set_editable (CLUTTER_TEXT (editable), TRUE);
- clutter_text_set_selectable (CLUTTER_TEXT (editable), TRUE);
- clutter_text_set_selection_color (CLUTTER_TEXT (editable),
- &color_sel);
- clutter_actor_grab_key_focus (editable);
- clutter_actor_set_reactive (editable, TRUE);
-
- /* rectangle: to create a entry "feeling" */
- rectangle = clutter_rectangle_new_with_color (&color_rect);
- clutter_actor_set_position (rectangle, 150, editable_geom_y);
- clutter_actor_set_size (rectangle, 500, 75);
-
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), label);
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), editable);
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), rectangle);
-
- label_geom_y += HEIGHT_STEP;
- editable_geom_y += HEIGHT_STEP;
- }
-}
-
-int
-main (int argc, char *argv[])
-{
- ClutterActor *stage, *stage_main;
- Data data1, data2, data3;
- guint id_1 = 0, id_2 = 0, id_3 = 0;
-
- g_set_application_name ("AtkText");
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- if (cally_util_a11y_init (&argc, &argv) == FALSE)
- {
- g_error ("This example requires the accessibility support, "
- "especifically AtkUtil implementation loaded, "
- "as it tries to register and remove event listeners");
- }
-
- data1.value = 10;
- data2.value = 20;
- data3.value = 30;
-
- /* key event listeners */
- id_1 = atk_add_key_event_listener ((AtkKeySnoopFunc)atk_key_listener, &data1);
- atk_remove_key_event_listener (id_1);
- id_2 = atk_add_key_event_listener ((AtkKeySnoopFunc)atk_key_listener, &data2);
- id_3 = atk_add_key_event_listener ((AtkKeySnoopFunc)atk_key_listener, &data3);
-
- atk_remove_key_event_listener (id_2);
-
- g_print ("key event listener ids registered: (%i, %i, %i)\n", id_1, id_2, id_3);
-
- /* event listeners */
- atk_add_global_event_listener (window_event_listener, "Atk:AtkWindow:create");
- atk_add_global_event_listener (window_event_listener, "Atk:AtkWindow:destroy");
- atk_add_global_event_listener (window_event_listener, "Atk:AtkWindow:activate");
- atk_add_global_event_listener (window_event_listener, "Atk:AtkWindow:deactivate");
-
- stage_main = clutter_stage_new ();
- clutter_stage_set_title (CLUTTER_STAGE (stage_main), "Cally - AtkEvents/1");
- g_signal_connect (stage_main, "destroy", G_CALLBACK (clutter_main_quit), NULL);
- make_ui (stage_main);
-
- clutter_actor_show_all (stage_main);
-
- if (clutter_feature_available (CLUTTER_FEATURE_STAGE_MULTIPLE))
- {
- stage = clutter_stage_new ();
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Cally - AtkEvents/2");
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- make_ui (stage);
- clutter_actor_show_all (stage);
- }
-
- clutter_main ();
-
- return 0;
-}
diff --git a/clutter/tests/accessibility/cally-atktext-example.c b/clutter/tests/accessibility/cally-atktext-example.c
deleted file mode 100644
index 634a9a74f..000000000
--- a/clutter/tests/accessibility/cally-atktext-example.c
+++ /dev/null
@@ -1,255 +0,0 @@
-/* CALLY - The Clutter Accessibility Implementation Library
- *
- * Copyright (C) 2009 Igalia, S.L.
- *
- * Author: Alejandro Piñeiro Iglesias <apinheiro@igalia.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <atk/atk.h>
-#include <clutter/clutter.h>
-
-#include "cally-examples-util.h"
-
-#define WIDTH 800
-#define HEIGHT 600
-
-static ClutterActor *text_actor = NULL;
-static ClutterActor *text_editable_actor = NULL;
-
-/*
- * Test AtkText interface
- */
-static void
-test_atk_text (ClutterActor *actor)
-{
- gchar *text = NULL;
- AtkObject *object = NULL;
- AtkText *cally_text = NULL;
- gboolean bool = FALSE;
- gunichar unichar;
- gint count = -1;
- gint start = -1;
- gint end = -1;
- gint pos = -1;
- AtkAttributeSet *at_set = NULL;
- GSList *attrs;
- gchar *buf;
- gint x, y, width, height;
-
- object = atk_gobject_accessible_for_object (G_OBJECT (actor));
- cally_text = ATK_TEXT (object);
-
- if (!cally_text)
- return;
-
- text = atk_text_get_text (cally_text, 0, -1);
- g_print ("atk_text_get_text output: %s\n", text);
-
- unichar = atk_text_get_character_at_offset (cally_text, 5);
- buf = g_ucs4_to_utf8 (&unichar, 1, NULL, NULL, NULL);
- g_print ("atk_text_get_character_at_offset(5): '%s' vs '%c'\n", buf, text[5]);
- g_free (text); text = NULL;
- g_free (buf); buf = NULL;
-
- text = atk_text_get_string_at_offset (cally_text,
- 5,
- ATK_TEXT_GRANULARITY_WORD,
- &start, &end);
- g_print ("atk_text_get_string_at_offset: %s, %i, %i\n",
- text, start, end);
- g_free (text); text = NULL;
-
- pos = atk_text_get_caret_offset (cally_text);
- g_print ("atk_text_get_caret_offset: %i\n", pos);
-
- atk_text_set_caret_offset (cally_text, 5);
-
- count = atk_text_get_character_count (cally_text);
- g_print ("atk_text_get_character_count: %i\n", count);
-
- count = atk_text_get_n_selections (cally_text);
- g_print ("atk_text_get_n_selections: %i\n", count);
-
- text = atk_text_get_selection (cally_text, 0, &start, &end);
- g_print ("atk_text_get_selection: %s, %i, %i\n", text, start, end);
- g_free(text); text = NULL;
-
- bool = atk_text_remove_selection (cally_text, 0);
- g_print ("atk_text_remove_selection (0): %i\n", bool);
-
- bool = atk_text_remove_selection (cally_text, 1);
- g_print ("atk_text_remove_selection (1): %i\n", bool);
-
- bool = atk_text_add_selection (cally_text, 5, 10);
- g_print ("atk_text_add_selection: %i\n", bool);
-
- bool = atk_text_set_selection (cally_text, 0, 6, 10);
- g_print ("atk_text_set_selection: %i\n", bool);
-
- at_set = atk_text_get_run_attributes (cally_text, 0,
- &start, &end);
- g_print ("atk_text_get_run_attributes: %i, %i\n", start, end);
- attrs = (GSList*) at_set;
- while (attrs)
- {
- AtkAttribute *at = (AtkAttribute *) attrs->data;
- g_print ("text run %s = %s\n", at->name, at->value);
- attrs = g_slist_next (attrs);
- }
-
- atk_text_get_character_extents (cally_text, 0, &x, &y, &width, &height,
- ATK_XY_WINDOW);
- g_print ("atk_text_get_character_extents (0, window): x=%i y=%i width=%i height=%i\n",
- x, y, width, height);
-
- atk_text_get_character_extents (cally_text, 0, &x, &y, &width, &height,
- ATK_XY_SCREEN);
- g_print ("atk_text_get_character_extents (0, screen): x=%i y=%i width=%i height=%i\n",
- x, y, width, height);
-
- pos = atk_text_get_offset_at_point (cally_text, 200, 10, ATK_XY_WINDOW);
- g_print ("atk_text_get_offset_at_point (200, 10, window): %i\n", pos);
-
- pos = atk_text_get_offset_at_point (cally_text, 200, 100, ATK_XY_SCREEN);
- g_print ("atk_text_get_offset_at_point (200, 100, screen): %i\n", pos);
-
-}
-
-static void
-dump_actor_default_atk_attributes (ClutterActor *actor)
-{
- AtkObject *object = NULL;
- AtkText *cally_text = NULL;
- AtkAttributeSet *at_set = NULL;
- GSList *attrs;
- const gchar *text_value = NULL;
-
- object = atk_gobject_accessible_for_object (G_OBJECT (actor));
- cally_text = ATK_TEXT (object);
-
- if (!cally_text)
- return;
-
- text_value = clutter_text_get_text (CLUTTER_TEXT (actor));
- g_print ("text value = %s\n", text_value);
-
- at_set = atk_text_get_default_attributes (cally_text);
- attrs = (GSList*) at_set;
- while (attrs) {
- AtkAttribute *at = (AtkAttribute *) attrs->data;
- g_print ("text default %s = %s\n", at->name, at->value);
- attrs = g_slist_next (attrs);
- }
-}
-
-static gboolean
-button_press_cb (ClutterActor *actor,
- ClutterButtonEvent *event,
- gpointer data)
-{
- test_atk_text (text_actor);
- test_atk_text (text_editable_actor);
-
- return TRUE;
-}
-
-static void
-make_ui (ClutterActor *stage)
-{
- ClutterColor color_stage = { 0x00, 0x00, 0x00, 0xff };
- ClutterColor color_text = { 0xff, 0x00, 0x00, 0xff };
- ClutterColor color_sel = { 0x00, 0xff, 0x00, 0x55 };
- ClutterColor color_rect = { 0x00, 0xff, 0xff, 0xff };
- ClutterColor color_label = { 0x00, 0x00, 0x00, 0xff };
- ClutterActor *button = NULL;
- ClutterActor *rectangle = NULL;
- ClutterActor *label = NULL;
-
- clutter_stage_set_color (CLUTTER_STAGE (stage), &color_stage);
- clutter_actor_set_size (stage, WIDTH, HEIGHT);
-
- /* text */
- text_actor = clutter_text_new_full ("Sans Bold 32px",
- "",
- &color_text);
- clutter_text_set_markup (CLUTTER_TEXT(text_actor),
- "<span fgcolor=\"#FFFF00\" bgcolor=\"#00FF00\"><s>Lorem ipsum dolor sit amet</s></span>");
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), text_actor);
- dump_actor_default_atk_attributes (text_actor);
-
- /* text_editable */
- text_editable_actor = clutter_text_new_full ("Sans Bold 32px",
- "consectetur adipisicing elit",
- &color_text);
- clutter_actor_set_position (text_editable_actor, 20, 100);
- clutter_text_set_editable (CLUTTER_TEXT (text_editable_actor), TRUE);
- clutter_text_set_selectable (CLUTTER_TEXT (text_editable_actor), TRUE);
- clutter_text_set_selection_color (CLUTTER_TEXT (text_editable_actor),
- &color_sel);
- clutter_text_set_line_wrap (CLUTTER_TEXT (text_editable_actor), TRUE);
- clutter_actor_grab_key_focus (text_editable_actor);
- clutter_actor_set_reactive (text_editable_actor, TRUE);
- dump_actor_default_atk_attributes (text_editable_actor);
-
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), text_editable_actor);
-
- /* test button */
- button = clutter_group_new ();
- rectangle = clutter_rectangle_new_with_color (&color_rect);
- clutter_actor_set_size (rectangle, 75, 35);
-
- label = clutter_text_new_full ("Sans Bold 32px",
- "Test", &color_label);
- clutter_actor_set_position (button, 100, 200);
- clutter_container_add_actor (CLUTTER_CONTAINER (button), rectangle);
- clutter_container_add_actor (CLUTTER_CONTAINER (button), label);
- clutter_actor_set_reactive (button, TRUE);
-
- g_signal_connect_after (button, "button-press-event",
- G_CALLBACK (button_press_cb), NULL);
-
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), button);
-}
-
-int
-main (int argc, char *argv[])
-{
- ClutterActor *stage;
-
- g_set_application_name ("AtkText");
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- cally_util_a11y_init (&argc, &argv);
-
- stage = clutter_stage_new ();
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Cally - AtkText Test");
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- make_ui (stage);
-
- clutter_actor_show_all (stage);
-
- test_atk_text (text_actor);
- test_atk_text (text_editable_actor);
-
- clutter_main ();
-
- return 0;
-}
diff --git a/clutter/tests/accessibility/cally-clone-example.c b/clutter/tests/accessibility/cally-clone-example.c
deleted file mode 100644
index 9cc2d6856..000000000
--- a/clutter/tests/accessibility/cally-clone-example.c
+++ /dev/null
@@ -1,116 +0,0 @@
-/* CALLY - The Clutter Accessibility Implementation Library
- *
- * Copyright (C) 2009 Igalia, S.L.
- *
- * Author: Alejandro Piñeiro Iglesias <apinheiro@igalia.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <atk/atk.h>
-#include <clutter/clutter.h>
-
-#include "cally-examples-util.h"
-
-#define WIDTH 800
-#define HEIGHT 600
-#define HEIGHT_STEP 100
-#define NUM_ENTRIES 3
-
-static void
-make_ui (ClutterActor *stage)
-{
- ClutterActor *editable = NULL;
- ClutterActor *rectangle = NULL;
- ClutterActor *label = NULL;
- ClutterColor color_stage = { 0x00, 0x00, 0x00, 0xff };
- ClutterColor color_text = { 0xff, 0x00, 0x00, 0xff };
- ClutterColor color_sel = { 0x00, 0xff, 0x00, 0x55 };
- ClutterColor color_label = { 0x00, 0xff, 0x55, 0xff };
- ClutterColor color_rect = { 0x00, 0xff, 0xff, 0x55 };
- ClutterActor *full_entry = NULL;
- ClutterActor *cloned_entry = NULL;
-
-
- clutter_stage_set_color (CLUTTER_STAGE (stage), &color_stage);
- clutter_actor_set_size (stage, WIDTH, HEIGHT);
-
- label = clutter_text_new_full ("Sans Bold 32px",
- "Entry",
- &color_label);
- clutter_actor_set_position (label, 0, 50);
-
- /* editable */
- editable = clutter_text_new_full ("Sans Bold 32px",
- "ddd",
- &color_text);
- clutter_actor_set_position (editable, 150, 50);
- clutter_text_set_editable (CLUTTER_TEXT (editable), TRUE);
- clutter_text_set_selectable (CLUTTER_TEXT (editable), TRUE);
- clutter_text_set_selection_color (CLUTTER_TEXT (editable),
- &color_sel);
- clutter_actor_grab_key_focus (editable);
- clutter_actor_set_reactive (editable, TRUE);
-
- /* rectangle: to create a entry "feeling" */
- rectangle = clutter_rectangle_new_with_color (&color_rect);
- clutter_actor_set_position (rectangle, 150, 50);
- clutter_actor_add_constraint (rectangle, clutter_bind_constraint_new (editable, CLUTTER_BIND_SIZE, 0));
-
- full_entry = clutter_group_new ();
- clutter_actor_set_position (full_entry, 0, 50);
- clutter_actor_set_size (full_entry, 100, 75);
- clutter_container_add_actor (CLUTTER_CONTAINER (full_entry), label);
- clutter_container_add_actor (CLUTTER_CONTAINER (full_entry), editable);
- clutter_container_add_actor (CLUTTER_CONTAINER (full_entry), rectangle);
- clutter_actor_show_all (full_entry);
- clutter_actor_set_scale (full_entry, 2, 1);
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), full_entry);
-
- /* Cloning! */
- cloned_entry = clutter_clone_new (full_entry);
- clutter_actor_set_position (cloned_entry, 50, 200);
- clutter_actor_set_scale (cloned_entry, 1, 2);
- clutter_actor_show_all (cloned_entry);
- clutter_actor_set_reactive (cloned_entry, TRUE);
-
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), cloned_entry);
-}
-
-int
-main (int argc, char *argv[])
-{
- ClutterActor *stage;
-
- g_set_application_name ("Clone Example");
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- cally_util_a11y_init (&argc, &argv);
-
- stage = clutter_stage_new ();
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Cally - Clone Test");
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- make_ui (stage);
-
- clutter_actor_show_all (stage);
-
- clutter_main ();
-
- return 0;
-}
diff --git a/clutter/tests/accessibility/cally-examples-util.c b/clutter/tests/accessibility/cally-examples-util.c
deleted file mode 100644
index ea3e31aa7..000000000
--- a/clutter/tests/accessibility/cally-examples-util.c
+++ /dev/null
@@ -1,146 +0,0 @@
-/* CALLY - The Clutter Accessibility Implementation Library
- *
- * Copyright (C) 2009 Igalia, S.L.
- *
- * Author: Alejandro Piñeiro Iglesias <apinheiro@igalia.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-
-#include <gmodule.h>
-#include <stdlib.h>
-
-#include <clutter/clutter.h>
-
-#include "cally-examples-util.h"
-
-/* Checking the at-spi sources, the module directory is
- * $(libdir)/gtk-2.0/modules
- *
- * It is supposed cally would be installed on the same libdir.
- *
- * You could use the option atk-bridge-dir to use other directory.
- */
-#define ATK_BRIDGE_DEFAULT_MODULE_DIRECTORY PREFIXDIR"/gtk-2.0/modules"
-
-static gchar *
-_search_for_bridge_module (const gchar *module_name)
-{
- /* We simplify the search for the atk bridge, see see the definition
- * of the macro for more information*/
- return g_strdup (ATK_BRIDGE_DEFAULT_MODULE_DIRECTORY);
-}
-
-static gchar*
-_a11y_check_custom_bridge (int *argc,
- char ***argv)
-{
- GError *error = NULL;
- GOptionContext *context;
- static gchar *bridge_dir = NULL;
- static GOptionEntry entries [] =
- {
- {"atk-bridge-dir", 'd', 0, G_OPTION_ARG_STRING, &bridge_dir, "atk-bridge module directory", NULL}
- };
-
- context = g_option_context_new ("- cally examples");
- g_option_context_add_main_entries (context, entries, NULL);
- if (!g_option_context_parse (context, argc, argv, &error))
- {
- g_print ("%s\n", error->message);
- g_print ("Use --help for more information.\n");
- exit (0);
- }
-
- return bridge_dir;
-}
-
-
-static gboolean
-_a11y_invoke_module (const gchar *module_path,
- gboolean init)
-{
- GModule *handle;
- void (*invoke_fn) (void);
- const char *method;
-
- if (init)
- method = "gnome_accessibility_module_init";
- else
- method = "gnome_accessibility_module_shutdown";
-
- if (!module_path)
- return FALSE;
-
- if (!(handle = g_module_open (module_path, G_MODULE_BIND_LAZY)))
- {
- g_warning ("Accessibility: failed to load module '%s': '%s'",
- module_path, g_module_error ());
-
- return FALSE;
- }
-
- if (!g_module_symbol (handle, method, (gpointer *)&invoke_fn))
- {
- g_warning ("Accessibility: error library '%s' does not include "
- "method '%s' required for accessibility support",
- module_path, method);
- g_module_close (handle);
-
- return FALSE;
- }
-
- g_debug ("Module %s loaded successfully", module_path);
- invoke_fn ();
-
- return TRUE;
-}
-
-/**
- * This method will initialize the accessibility support provided by cally.
- *
- * Basically it will load the cally module using gmodule functions.
- *
- * Returns if it was able to init the a11y support or not.
- */
-gboolean
-cally_util_a11y_init (int *argc, char ***argv)
-{
- gchar *bridge_dir = NULL;
- gchar *bridge_path = NULL;
- gboolean result = FALSE;
-
- if (clutter_get_accessibility_enabled () == FALSE)
- {
- g_warning ("Accessibility: clutter has no accessibility enabled"
- " skipping the atk-bridge load");
- return FALSE;
- }
-
- bridge_dir = _a11y_check_custom_bridge (argc, argv);
- if (bridge_dir == NULL)
- bridge_dir = _search_for_bridge_module ("atk-bridge");
-
- bridge_path = g_module_build_path (bridge_dir, "libatk-bridge");
-
- result = _a11y_invoke_module (bridge_path, TRUE);
-
- g_free (bridge_dir);
- g_free (bridge_path);
-
- return result;
-}
diff --git a/clutter/tests/accessibility/cally-examples-util.h b/clutter/tests/accessibility/cally-examples-util.h
deleted file mode 100644
index dab5926cc..000000000
--- a/clutter/tests/accessibility/cally-examples-util.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* CALLY - The Clutter Accessibility Implementation Library
- *
- * Copyright (C) 2009 Igalia, S.L.
- *
- * Author: Alejandro Piñeiro Iglesias <apinheiro@igalia.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-gboolean
-cally_util_a11y_init (int *argc, char ***argv);
diff --git a/clutter/tests/accessibility/meson.build b/clutter/tests/accessibility/meson.build
deleted file mode 100644
index fe9732efc..000000000
--- a/clutter/tests/accessibility/meson.build
+++ /dev/null
@@ -1,38 +0,0 @@
-clutter_test_accessibility_common_sources = [
- 'cally-examples-util.c',
- 'cally-examples-util.h',
-]
-
-clutter_test_accessibility_c_args = [
- '-DPREFIXDIR="@0@"'.format(libdir),
- '-DCLUTTER_DISABLE_DEPRECATION_WARNINGS',
- '-DGLIB_DISABLE_DEPRECATION_WARNINGS',
-]
-
-clutter_test_accessibility_c_args += clutter_debug_c_args
-
-clutter_accessibility_tests_dependencies = [
- clutter_deps,
- libmutter_clutter_dep,
-]
-
-clutter_accessibility_tests = [
- 'cally-atkcomponent-example',
- 'cally-atktext-example',
- 'cally-atkevents-example',
- 'cally-atkeditabletext-example',
- 'cally-clone-example',
-]
-
-foreach test : clutter_accessibility_tests
- executable(test,
- sources: [
- clutter_test_accessibility_common_sources,
- test + '.c',
- ],
- include_directories: clutter_includes,
- c_args: clutter_test_accessibility_c_args,
- dependencies: [clutter_accessibility_tests_dependencies],
- install: false,
- )
-endforeach
diff --git a/clutter/tests/clutter-1.0.suppressions b/clutter/tests/clutter-1.0.suppressions
deleted file mode 100644
index f47498d16..000000000
--- a/clutter/tests/clutter-1.0.suppressions
+++ /dev/null
@@ -1,173 +0,0 @@
-{
- ioctl_1
- Memcheck:Param
- ioctl(generic)
- fun:ioctl
- fun:driDrawableInitVBlank
- fun:intelMakeCurrent
- fun:glXMakeContextCurrent
-}
-
-{
- ioctl_2
- Memcheck:Param
- ioctl(generic)
- fun:ioctl
- fun:driDrawableGetMSC32
- fun:clutter_backend_glx_redraw
-}
-
-{
- ioctl_3
- Memcheck:Param
- ioctl(generic)
- fun:ioctl
- fun:driWaitForMSC32
- fun:clutter_backend_glx_redraw
-}
-
-{
- mesa_init_context
- Memcheck:Leak
- fun:*alloc
- ...
- fun:glXCreateNewContext
-}
-
-{
- type_register
- Memcheck:Leak
- fun:*alloc
- ...
- fun:g_type_register_*
-}
-
-{
- type_ref
- Memcheck:Leak
- fun:*alloc
- ...
- fun:g_type_class_ref
-}
-
-{
- type_interface_prereq
- Memcheck:Leak
- fun:*alloc
- ...
- fun:g_type_interface_add_prerequisite
-}
-
-{
- get_charset
- Memcheck:Leak
- fun:*alloc
- ...
- fun:g_get_charset
-}
-
-{
- cogl_features
- Memcheck:Leak
- fun:*alloc
- ...
- fun:cogl_get_features
-}
-
-{
- glx_query_version
- Memcheck:Leak
- fun:*alloc
- ...
- fun:glXQueryVersion
-}
-
-{
- glx_create_context
- Memcheck:Leak
- fun:*alloc
- ...
- fun:glXCreateNewContext
-}
-
-{
- glx_make_current
- Memcheck:Leak
- fun:*alloc
- ...
- fun:glXMakeContextCurrent
-}
-
-{
- gl_draw_arrays
- Memcheck:Leak
- fun:*malloc
- ...
- fun:glDrawArrays
-}
-
-{
- cogl_clear
- Memcheck:Leak
- fun:*alloc
- ...
- fun:cogl_clear
-}
-
-{
- default_font
- Memcheck:Leak
- fun:*alloc
- ...
- fun:clutter_backend_get_font_name
-}
-
-{
- id_pool
- Memcheck:Leak
- fun:*alloc
- ...
- fun:clutter_id_pool_new
-}
-
-{
- x_open_display
- Memcheck:Leak
- fun:*alloc
- ...
- fun:XOpenDisplay
-}
-
-# ... and font descriptions from every "sans 12" type string
-{
- pango_font_description_from_string
- Memcheck:Leak
- fun:*alloc
- ...
- fun:pango_font_description_from_string
-}
-
-# other lib init
-{
- fontconfig_init
- Memcheck:Leak
- fun:*alloc
- ...
- fun:FcConfigParseAndLoad
-}
-
-{
- freetype_init
- Memcheck:Leak
- fun:*alloc
- ...
- fun:FT_Open_Face
-}
-
-{
- x_init_ext
- Memcheck:Leak
- fun:*alloc
- ...
- fun:XInitExtension
-}
diff --git a/clutter/tests/conform/actor-anchors.c b/clutter/tests/conform/actor-anchors.c
deleted file mode 100644
index 55395880b..000000000
--- a/clutter/tests/conform/actor-anchors.c
+++ /dev/null
@@ -1,740 +0,0 @@
-#include <stdlib.h>
-#include <string.h>
-
-#define CLUTTER_DISABLE_DEPRECATION_WARNINGS
-#include <clutter/clutter.h>
-
-#define NOTIFY_ANCHOR_X (1 << 0)
-#define NOTIFY_ANCHOR_Y (1 << 1)
-#define NOTIFY_ANCHOR_GRAVITY (1 << 2)
-#define NOTIFY_SCALE_X (1 << 3)
-#define NOTIFY_SCALE_Y (1 << 4)
-#define NOTIFY_SCALE_CENTER_X (1 << 5)
-#define NOTIFY_SCALE_CENTER_Y (1 << 6)
-#define NOTIFY_SCALE_GRAVITY (1 << 7)
-#define NOTIFY_ROTATION_ANGLE_X (1 << 8)
-#define NOTIFY_ROTATION_ANGLE_Y (1 << 9)
-#define NOTIFY_ROTATION_ANGLE_Z (1 << 10)
-#define NOTIFY_ROTATION_CENTER_X (1 << 11)
-#define NOTIFY_ROTATION_CENTER_Y (1 << 12)
-#define NOTIFY_ROTATION_CENTER_Z (1 << 13)
-#define NOTIFY_ROTATION_CENTER_Z_GRAVITY (1 << 14)
-
-#define RECT_WIDTH 100.0
-#define RECT_HEIGHT 80.0
-
-/* Allow the transformed position by off by a certain number of
- pixels */
-#define POSITION_TOLERANCE 2
-
-typedef struct _TestState
-{
- gulong notifications;
- ClutterActor *rect;
-} TestState;
-
-static const struct
-{
- ClutterGravity gravity;
- gfloat x_pos;
- gfloat y_pos;
-} gravities[] =
- {
- { CLUTTER_GRAVITY_NORTH, RECT_WIDTH / 2, 0 },
- { CLUTTER_GRAVITY_NORTH_EAST, RECT_WIDTH, 0 },
- { CLUTTER_GRAVITY_EAST, RECT_WIDTH, RECT_HEIGHT / 2 },
- { CLUTTER_GRAVITY_SOUTH_EAST, RECT_WIDTH, RECT_HEIGHT },
- { CLUTTER_GRAVITY_SOUTH, RECT_WIDTH / 2, RECT_HEIGHT },
- { CLUTTER_GRAVITY_SOUTH_WEST, 0, RECT_HEIGHT },
- { CLUTTER_GRAVITY_WEST, 0, RECT_HEIGHT / 2 },
- { CLUTTER_GRAVITY_NORTH_WEST, 0, 0 },
- { CLUTTER_GRAVITY_CENTER, RECT_WIDTH / 2, RECT_HEIGHT / 2 }
- };
-
-static const char * const properties[] = {
- "anchor-x",
- "anchor-y",
- "anchor-gravity",
- "scale-x",
- "scale-y",
- "scale-center-x",
- "scale-center-y",
- "scale-gravity",
- "rotation-angle-x",
- "rotation-angle-y",
- "rotation-angle-z",
- "rotation-center-x",
- "rotation-center-y",
- "rotation-center-z",
- "rotation-center-z-gravity"
-};
-
-static const int n_properties = G_N_ELEMENTS (properties);
-
-static void
-notify_cb (GObject *object, GParamSpec *pspec, TestState *state)
-{
- int i;
- int new_flags = 0;
- int flag = 1;
-
- for (i = 0; i < n_properties; i++)
- {
- if (!strcmp (properties[i], pspec->name))
- new_flags |= flag;
-
- flag <<= 1;
- }
-
- g_assert ((new_flags & state->notifications) == 0);
-
- state->notifications |= new_flags;
-}
-
-#define assert_notifications(flags) G_STMT_START { \
- g_assert (state->notifications == (flags)); \
- state->notifications = 0; } G_STMT_END
-
-/* Helper macro to assert the transformed position. This needs to be a
- macro so that the assertion failure will report the right line
- number */
-#define assert_coords(state, x_1, y_1, x_2, y_2) G_STMT_START { \
- ClutterVertex verts[4]; \
- clutter_actor_get_abs_allocation_vertices ((state)->rect, verts); \
- check_coords ((state), (x_1), (y_1), (x_2), (y_2), verts); \
- g_assert (approx_equal ((x_1), verts[0].x)); \
- g_assert (approx_equal ((y_1), verts[0].y)); \
- g_assert (approx_equal ((x_2), verts[3].x)); \
- g_assert (approx_equal ((y_2), verts[3].y)); } G_STMT_END
-
-#define assert_position(state, x, y) \
- assert_coords((state), (x), (y), (x) + RECT_WIDTH, (y) + RECT_HEIGHT)
-
-#define assert_vertex_and_free(v, xc, yc, zc) G_STMT_START { \
- g_assert (approx_equal (v->x, xc) && \
- approx_equal (v->y, yc) && \
- approx_equal (v->z, zc)); \
- g_boxed_free (CLUTTER_TYPE_VERTEX, v); } G_STMT_END
-
-static inline gboolean
-approx_equal (int a, int b)
-{
- return abs (a - b) <= POSITION_TOLERANCE;
-}
-
-static void
-check_coords (TestState *state,
- gint x_1,
- gint y_1,
- gint x_2,
- gint y_2,
- const ClutterVertex *verts)
-{
- if (g_test_verbose ())
- g_print ("checking that (%i,%i,%i,%i) \xe2\x89\x88 (%i,%i,%i,%i): %s\n",
- x_1, y_1, x_2, y_2,
- (int) (verts[0].x),
- (int) (verts[0].y),
- (int) (verts[3].x),
- (int) (verts[3].y),
- approx_equal (x_1, verts[0].x) &&
- approx_equal (y_1, verts[0].y) &&
- approx_equal (x_2, verts[3].x) &&
- approx_equal (y_2, verts[3].y) ? "yes"
- : "NO");
-}
-
-static void
-test_anchor_point (TestState *state)
-{
- ClutterActor *rect = state->rect;
- gfloat anchor_x, anchor_y;
- ClutterGravity anchor_gravity;
- int i;
-
- /* Assert the default settings */
- g_assert (clutter_actor_get_x (rect) == 100);
- g_assert (clutter_actor_get_y (rect) == 200);
- g_assert (clutter_actor_get_width (rect) == RECT_WIDTH);
- g_assert (clutter_actor_get_height (rect) == RECT_HEIGHT);
- g_object_get (rect,
- "anchor-x", &anchor_x,
- "anchor-y", &anchor_y,
- "anchor-gravity", &anchor_gravity,
- NULL);
- g_assert (anchor_x == 0);
- g_assert (anchor_y == 0);
- g_assert (anchor_gravity == CLUTTER_GRAVITY_NONE);
-
- /* Change the anchor point */
- clutter_actor_set_anchor_point (rect, 20, 30);
- g_object_get (rect,
- "anchor-x", &anchor_x,
- "anchor-y", &anchor_y,
- "anchor-gravity", &anchor_gravity,
- NULL);
- g_assert (anchor_x == 20);
- g_assert (anchor_y == 30);
- g_assert (anchor_gravity == CLUTTER_GRAVITY_NONE);
- assert_position (state, 80, 170);
- assert_notifications (NOTIFY_ANCHOR_X | NOTIFY_ANCHOR_Y);
-
- /* Move the anchor point */
- clutter_actor_move_anchor_point (rect, 40, 50);
- g_object_get (rect,
- "anchor-x", &anchor_x,
- "anchor-y", &anchor_y,
- "anchor-gravity", &anchor_gravity,
- NULL);
- g_assert (anchor_x == 40);
- g_assert (anchor_y == 50);
- g_assert (anchor_gravity == CLUTTER_GRAVITY_NONE);
- assert_position (state, 80, 170);
- assert_notifications (NOTIFY_ANCHOR_X | NOTIFY_ANCHOR_Y);
-
- /* Put the actor back to its default position */
- clutter_actor_set_position (rect, 100, 200);
-
- /* Change the anchor point with each of the gravities */
- for (i = 0; i < G_N_ELEMENTS (gravities); i++)
- {
- if (g_test_verbose ())
- {
- GEnumClass *gravity_class = g_type_class_ref (CLUTTER_TYPE_GRAVITY);
- GEnumValue *value = g_enum_get_value (gravity_class,
- gravities[i].gravity);
- g_print ("Setting gravity to %s\n",
- value ? value->value_name : "?");
- g_type_class_unref (gravity_class);
- }
-
- g_object_set (rect, "anchor-gravity", gravities[i].gravity, NULL);
-
- g_object_get (rect,
- "anchor-x", &anchor_x,
- "anchor-y", &anchor_y,
- "anchor-gravity", &anchor_gravity,
- NULL);
- g_assert (anchor_x == gravities[i].x_pos);
- g_assert (anchor_y == gravities[i].y_pos);
- g_assert (anchor_gravity == gravities[i].gravity);
- assert_position (state,
- 100 - gravities[i].x_pos,
- 200 - gravities[i].y_pos);
-
- assert_notifications (NOTIFY_ANCHOR_X | NOTIFY_ANCHOR_Y
- | NOTIFY_ANCHOR_GRAVITY);
- }
-
- /* Verify that the anchor point moves if the actor changes size when
- it is set from the gravity */
- clutter_actor_set_size (rect, RECT_WIDTH * 2, RECT_HEIGHT * 2);
- g_object_get (rect,
- "anchor-x", &anchor_x,
- "anchor-y", &anchor_y,
- "anchor-gravity", &anchor_gravity,
- NULL);
- g_assert (anchor_x == RECT_WIDTH);
- g_assert (anchor_y == RECT_HEIGHT);
- g_assert (anchor_gravity == CLUTTER_GRAVITY_CENTER);
- assert_coords (state, 100 - RECT_WIDTH, 200 - RECT_HEIGHT,
- 100 + RECT_WIDTH, 200 + RECT_HEIGHT);
- assert_notifications (0);
- clutter_actor_set_size (rect, RECT_WIDTH, RECT_HEIGHT);
-
- /* Change the anchor point using units again to assert that the
- gravity property changes */
- clutter_actor_set_anchor_point (rect, 20, 30);
- g_object_get (rect,
- "anchor-x", &anchor_x, "anchor-y", &anchor_y,
- "anchor-gravity", &anchor_gravity,
- NULL);
- g_assert (anchor_x == 20);
- g_assert (anchor_y == 30);
- g_assert (anchor_gravity == CLUTTER_GRAVITY_NONE);
- assert_position (state, 80, 170);
- assert_notifications (NOTIFY_ANCHOR_X | NOTIFY_ANCHOR_Y
- | NOTIFY_ANCHOR_GRAVITY);
-
- /* Verify that the anchor point doesn't move if the actor changes
- size when it is set from units */
- clutter_actor_set_size (rect, RECT_WIDTH * 2, RECT_HEIGHT * 2);
- g_object_get (rect,
- "anchor-x", &anchor_x,
- "anchor-y", &anchor_y,
- "anchor-gravity", &anchor_gravity,
- NULL);
- g_assert (anchor_x == 20);
- g_assert (anchor_y == 30);
- g_assert (anchor_gravity == CLUTTER_GRAVITY_NONE);
- assert_coords (state, 80, 170, 80 + RECT_WIDTH * 2, 170 + RECT_HEIGHT * 2);
- assert_notifications (0);
- clutter_actor_set_size (rect, RECT_WIDTH, RECT_HEIGHT);
-
- /* Put the anchor back */
- clutter_actor_set_anchor_point_from_gravity (rect, CLUTTER_GRAVITY_NONE);
- assert_notifications (NOTIFY_ANCHOR_X | NOTIFY_ANCHOR_Y);
-}
-
-static void
-test_scale_center (TestState *state)
-{
- ClutterActor *rect = state->rect;
- gdouble scale_x, scale_y;
- gfloat center_x, center_y;
- ClutterGravity gravity;
- int i;
-
- /* Assert the default settings */
- g_assert (clutter_actor_get_x (rect) == 100);
- g_assert (clutter_actor_get_y (rect) == 200);
- g_assert (clutter_actor_get_width (rect) == RECT_WIDTH);
- g_assert (clutter_actor_get_height (rect) == RECT_HEIGHT);
- g_object_get (rect,
- "scale-center-x", &center_x,
- "scale-center-y", &center_y,
- "scale-x", &scale_x,
- "scale-y", &scale_y,
- "scale-gravity", &gravity,
- NULL);
- g_assert (center_x == 0);
- g_assert (center_y == 0);
- g_assert (scale_x == 1.0);
- g_assert (scale_y == 1.0);
- g_assert (gravity == CLUTTER_GRAVITY_NONE);
-
- /* Try changing the scale without affecting the center */
- g_object_set (rect, "scale-x", 2.0, "scale-y", 3.0, NULL);
- g_assert (clutter_actor_get_x (rect) == 100);
- g_assert (clutter_actor_get_y (rect) == 200);
- g_assert (clutter_actor_get_width (rect) == RECT_WIDTH);
- g_assert (clutter_actor_get_height (rect) == RECT_HEIGHT);
- g_object_get (rect,
- "scale-center-x", &center_x,
- "scale-center-y", &center_y,
- "scale-x", &scale_x,
- "scale-y", &scale_y,
- "scale-gravity", &gravity,
- NULL);
- g_assert (center_x == 0);
- g_assert (center_y == 0);
- g_assert (scale_x == 2.0);
- g_assert (scale_y == 3.0);
- g_assert (gravity == CLUTTER_GRAVITY_NONE);
- assert_notifications (NOTIFY_SCALE_X | NOTIFY_SCALE_Y);
- assert_coords (state, 100, 200, 100 + RECT_WIDTH * 2, 200 + RECT_HEIGHT * 3);
-
- /* Change the scale and center */
- g_object_set (rect,
- "scale-x", 4.0,
- "scale-y", 2.0,
- "scale-center-x", 10.0,
- "scale-center-y", 20.0,
- NULL);
- g_assert (clutter_actor_get_x (rect) == 100);
- g_assert (clutter_actor_get_y (rect) == 200);
- g_assert (clutter_actor_get_width (rect) == RECT_WIDTH);
- g_assert (clutter_actor_get_height (rect) == RECT_HEIGHT);
- g_object_get (rect,
- "scale-center-x", &center_x, "scale-center-y", &center_y,
- "scale-x", &scale_x, "scale-y", &scale_y,
- "scale-gravity", &gravity,
- NULL);
- g_assert (center_x == 10);
- g_assert (center_y == 20);
- g_assert (scale_x == 4.0);
- g_assert (scale_y == 2.0);
- g_assert (gravity == CLUTTER_GRAVITY_NONE);
- assert_notifications (NOTIFY_SCALE_X | NOTIFY_SCALE_Y
- | NOTIFY_SCALE_CENTER_X | NOTIFY_SCALE_CENTER_Y);
- assert_coords (state, 100 + 10 - 10 * 4, 200 + 20 - 20 * 2,
- 100 + 10 + (RECT_WIDTH - 10) * 4,
- 200 + 20 + (RECT_HEIGHT - 20) * 2);
-
- /* Change the anchor point with each of the gravities */
- for (i = 0; i < G_N_ELEMENTS (gravities); i++)
- {
- if (g_test_verbose ())
- {
- GEnumClass *gravity_class = g_type_class_ref (CLUTTER_TYPE_GRAVITY);
- GEnumValue *value = g_enum_get_value (gravity_class,
- gravities[i].gravity);
- g_print ("Setting scale center to %s\n",
- value ? value->value_name : "?");
- g_type_class_unref (gravity_class);
- }
-
- g_object_set (rect, "scale-gravity", gravities[i].gravity, NULL);
-
- g_assert (clutter_actor_get_x (rect) == 100);
- g_assert (clutter_actor_get_y (rect) == 200);
- g_assert (clutter_actor_get_width (rect) == RECT_WIDTH);
- g_assert (clutter_actor_get_height (rect) == RECT_HEIGHT);
- g_object_get (rect,
- "scale-center-x", &center_x, "scale-center-y", &center_y,
- "scale-x", &scale_x, "scale-y", &scale_y,
- "scale-gravity", &gravity,
- NULL);
- g_assert (center_x == gravities[i].x_pos);
- g_assert (center_y == gravities[i].y_pos);
- g_assert (scale_x == 4.0);
- g_assert (scale_y == 2.0);
- g_assert (gravity == gravities[i].gravity);
- assert_notifications (NOTIFY_SCALE_CENTER_X |
- NOTIFY_SCALE_CENTER_Y |
- NOTIFY_SCALE_GRAVITY);
- assert_coords (state,
- 100 - gravities[i].x_pos * 3,
- 200 - gravities[i].y_pos,
- 100 + (gravities[i].x_pos
- + (RECT_WIDTH - gravities[i].x_pos) * 4),
- 200 + (gravities[i].y_pos
- + (RECT_HEIGHT - gravities[i].y_pos) * 2));
- }
-
- /* Change the scale center using units again to assert that the
- gravity property changes */
- clutter_actor_set_scale_full (rect, 4, 2, 10, 20);
- g_object_get (rect,
- "scale-center-x", &center_x,
- "scale-center-y", &center_y,
- "scale-x", &scale_x,
- "scale-y", &scale_y,
- "scale-gravity", &gravity,
- NULL);
- g_assert (center_x == 10);
- g_assert (center_y == 20);
- g_assert (scale_x == 4.0);
- g_assert (scale_y == 2.0);
- g_assert (gravity == CLUTTER_GRAVITY_NONE);
- assert_notifications (NOTIFY_SCALE_CENTER_X | NOTIFY_SCALE_CENTER_Y
- | NOTIFY_SCALE_GRAVITY);
- assert_coords (state, 100 + 10 - 10 * 4, 200 + 20 - 20 * 2,
- 100 + 10 + (RECT_WIDTH - 10) * 4,
- 200 + 20 + (RECT_HEIGHT - 20) * 2);
-
- /* Put the scale back to normal */
- clutter_actor_set_scale_full (rect, 1, 1, 0, 0);
- assert_notifications (NOTIFY_SCALE_X | NOTIFY_SCALE_Y
- | NOTIFY_SCALE_CENTER_X | NOTIFY_SCALE_CENTER_Y);
-}
-
-static void
-test_rotate_center (TestState *state)
-{
- ClutterActor *rect = state->rect;
- gdouble angle_x, angle_y, angle_z;
- ClutterVertex *center_x, *center_y, *center_z;
- ClutterGravity z_center_gravity;
- gfloat stage_width, stage_height;
- gfloat rect_x, rect_y;
- int i;
-
- /* Position the rectangle at the center of the stage so that
- rotations by 90° along the X or Y axis will cause the actor to be
- appear as a flat line. This makes verifying the transformations
- easier */
- clutter_actor_get_size (clutter_actor_get_stage (rect),
- &stage_width,
- &stage_height);
- rect_x = stage_width / 2;
- rect_y = stage_height / 2;
- clutter_actor_set_position (rect, rect_x, rect_y);
-
- /* Assert the default settings */
- g_assert_cmpfloat (clutter_actor_get_x (rect), ==, rect_x);
- g_assert_cmpfloat (clutter_actor_get_y (rect), ==, rect_y);
- g_assert_cmpfloat (clutter_actor_get_width (rect), ==, RECT_WIDTH);
- g_assert_cmpfloat (clutter_actor_get_height (rect), ==, RECT_HEIGHT);
- g_object_get (rect,
- "rotation-angle-x", &angle_x,
- "rotation-angle-y", &angle_y,
- "rotation-angle-z", &angle_z,
- "rotation-center-x", &center_x,
- "rotation-center-y", &center_y,
- "rotation-center-z", &center_z,
- "rotation-center-z-gravity", &z_center_gravity,
- NULL);
- g_assert (angle_x == 0.0);
- g_assert (angle_y == 0.0);
- g_assert (angle_z == 0.0);
- assert_vertex_and_free (center_x, 0, 0, 0);
- assert_vertex_and_free (center_y, 0, 0, 0);
- assert_vertex_and_free (center_z, 0, 0, 0);
- g_assert (z_center_gravity == CLUTTER_GRAVITY_NONE);
-
- /* Change each of the rotation angles without affecting the center
- point */
- for (i = CLUTTER_X_AXIS; i <= CLUTTER_Z_AXIS; i++)
- {
- char prop_name[] = "rotation-angle- ";
- prop_name[sizeof (prop_name) - 2] = i - CLUTTER_X_AXIS + 'x';
-
- if (g_test_verbose ())
- g_print ("Setting %s to 90 degrees\n", prop_name);
-
- g_object_set (rect, prop_name, 90.0, NULL);
- assert_notifications (NOTIFY_ROTATION_ANGLE_X << (i - CLUTTER_X_AXIS));
-
- g_assert (clutter_actor_get_x (rect) == rect_x);
- g_assert (clutter_actor_get_y (rect) == rect_y);
- g_assert (clutter_actor_get_width (rect) == RECT_WIDTH);
- g_assert (clutter_actor_get_height (rect) == RECT_HEIGHT);
- g_object_get (rect,
- "rotation-angle-x", &angle_x,
- "rotation-angle-y", &angle_y,
- "rotation-angle-z", &angle_z,
- "rotation-center-x", &center_x,
- "rotation-center-y", &center_y,
- "rotation-center-z", &center_z,
- "rotation-center-z-gravity", &z_center_gravity,
- NULL);
- if (i == CLUTTER_X_AXIS)
- {
- g_assert (angle_x == 90.0);
- assert_coords (state, rect_x, rect_y, verts[3].x, rect_y);
- }
- else
- g_assert (angle_x == 0.0);
- if (i == CLUTTER_Y_AXIS)
- {
- g_assert (angle_y == 90.0);
- assert_coords (state, rect_x, rect_y, rect_x, verts[3].y);
- }
- else
- g_assert (angle_y == 0.0);
- if (i == CLUTTER_Z_AXIS)
- {
- g_assert (angle_z == 90.0);
- assert_coords (state, rect_x, rect_y,
- rect_x - RECT_HEIGHT,
- rect_y + RECT_WIDTH);
- }
- else
- g_assert (angle_z == 0.0);
- assert_vertex_and_free (center_x, 0, 0, 0);
- assert_vertex_and_free (center_y, 0, 0, 0);
- assert_vertex_and_free (center_z, 0, 0, 0);
- g_assert (z_center_gravity == CLUTTER_GRAVITY_NONE);
-
- g_object_set (rect, prop_name, 0.0, NULL);
- assert_notifications (NOTIFY_ROTATION_ANGLE_X << (i - CLUTTER_X_AXIS));
- }
-
- clutter_actor_set_position (rect, rect_x -= 10, rect_y -= 20);
-
- /* Same test but also change the center position */
- for (i = CLUTTER_X_AXIS; i <= CLUTTER_Z_AXIS; i++)
- {
- char prop_name[] = "rotation-angle- ";
- prop_name[sizeof (prop_name) - 2] = i - CLUTTER_X_AXIS + 'x';
-
- if (g_test_verbose ())
- g_print ("Setting %s to 90 degrees with center 10,20,0\n", prop_name);
-
- clutter_actor_set_rotation (rect, i, 90.0, 10, 20, 0);
- assert_notifications ((NOTIFY_ROTATION_ANGLE_X << (i - CLUTTER_X_AXIS))
- | (NOTIFY_ROTATION_CENTER_X
- << (i - CLUTTER_X_AXIS)));
-
- g_assert (clutter_actor_get_x (rect) == rect_x);
- g_assert (clutter_actor_get_y (rect) == rect_y);
- g_assert (clutter_actor_get_width (rect) == RECT_WIDTH);
- g_assert (clutter_actor_get_height (rect) == RECT_HEIGHT);
- g_object_get (rect,
- "rotation-angle-x", &angle_x,
- "rotation-angle-y", &angle_y,
- "rotation-angle-z", &angle_z,
- "rotation-center-x", &center_x,
- "rotation-center-y", &center_y,
- "rotation-center-z", &center_z,
- "rotation-center-z-gravity", &z_center_gravity,
- NULL);
- if (i == CLUTTER_X_AXIS)
- {
- g_assert (angle_x == 90.0);
- assert_coords (state,
- verts[0].x, rect_y + 20,
- verts[3].x, rect_y + 20);
- assert_vertex_and_free (center_x, 10, 20, 0);
- }
- else
- {
- g_assert (angle_x == 0.0);
- assert_vertex_and_free (center_x, 0, 0, 0);
- }
- if (i == CLUTTER_Y_AXIS)
- {
- g_assert (angle_y == 90.0);
- assert_coords (state,
- rect_x + 10, verts[0].y,
- rect_x + 10, verts[3].y);
- assert_vertex_and_free (center_y, 10, 20, 0);
- }
- else
- {
- g_assert (angle_y == 0.0);
- assert_vertex_and_free (center_y, 0, 0, 0);
- }
- if (i == CLUTTER_Z_AXIS)
- {
- g_assert (angle_z == 90.0);
- assert_coords (state,
- rect_x + 10 + 20,
- rect_y + 20 - 10,
- rect_x + 10 + 20 - RECT_HEIGHT,
- rect_y + 20 + RECT_WIDTH - 10);
- assert_vertex_and_free (center_z, 10, 20, 0);
- }
- else
- {
- g_assert (angle_z == 0.0);
- assert_vertex_and_free (center_z, 0, 0, 0);
- }
- g_assert (z_center_gravity == CLUTTER_GRAVITY_NONE);
-
- clutter_actor_set_rotation (rect, i, 0, 0, 0, 0);
- assert_notifications ((NOTIFY_ROTATION_ANGLE_X << (i - CLUTTER_X_AXIS))
- | (NOTIFY_ROTATION_CENTER_X
- << (i - CLUTTER_X_AXIS)));
-
- }
-
- /* Try rotating the z with all of the gravities */
- for (i = 0; i < G_N_ELEMENTS (gravities); i++)
- {
- if (g_test_verbose ())
- {
- GEnumClass *gravity_class = g_type_class_ref (CLUTTER_TYPE_GRAVITY);
- GEnumValue *value = g_enum_get_value (gravity_class,
- gravities[i].gravity);
- g_print ("Setting z rotation to 90 degrees with center at %s\n",
- value ? value->value_name : "?");
- g_type_class_unref (gravity_class);
- }
-
- clutter_actor_set_z_rotation_from_gravity (rect, 90,
- gravities[i].gravity);
- assert_notifications (NOTIFY_ROTATION_ANGLE_Z
- | NOTIFY_ROTATION_CENTER_Z
- | NOTIFY_ROTATION_CENTER_Z_GRAVITY);
-
- g_assert (clutter_actor_get_x (rect) == rect_x);
- g_assert (clutter_actor_get_y (rect) == rect_y);
- g_assert (clutter_actor_get_width (rect) == RECT_WIDTH);
- g_assert (clutter_actor_get_height (rect) == RECT_HEIGHT);
- g_object_get (rect,
- "rotation-angle-x", &angle_x,
- "rotation-angle-y", &angle_y,
- "rotation-angle-z", &angle_z,
- "rotation-center-x", &center_x,
- "rotation-center-y", &center_y,
- "rotation-center-z", &center_z,
- "rotation-center-z-gravity", &z_center_gravity,
- NULL);
- g_assert (angle_x == 0.0);
- g_assert (angle_y == 0.0);
- g_assert (angle_z == 90.0);
- assert_vertex_and_free (center_x, 0, 0, 0);
- assert_vertex_and_free (center_y, 0, 0, 0);
- assert_vertex_and_free (center_z,
- gravities[i].x_pos, gravities[i].y_pos, 0);
- assert_coords (state,
- rect_x + gravities[i].x_pos + gravities[i].y_pos,
- rect_y + gravities[i].y_pos - gravities[i].x_pos,
- rect_x + gravities[i].x_pos + gravities[i].y_pos
- - RECT_HEIGHT,
- rect_y + gravities[i].y_pos + RECT_WIDTH
- - gravities[i].x_pos);
- g_assert (z_center_gravity == gravities[i].gravity);
- g_assert (clutter_actor_get_z_rotation_gravity (rect)
- == gravities[i].gravity);
-
- /* Put the rotation back */
- clutter_actor_set_z_rotation_from_gravity (rect, 0, CLUTTER_GRAVITY_NONE);
- assert_notifications (NOTIFY_ROTATION_ANGLE_Z
- | NOTIFY_ROTATION_CENTER_Z
- | NOTIFY_ROTATION_CENTER_Z_GRAVITY);
- }
-}
-
-static gboolean
-idle_cb (gpointer data)
-{
- test_anchor_point (data);
- test_scale_center (data);
- test_rotate_center (data);
-
- clutter_main_quit ();
-
- return G_SOURCE_REMOVE;
-}
-
-static void
-actor_anchors (void)
-{
- TestState state;
- ClutterActor *stage;
-
- stage = clutter_test_get_stage ();
-
- state.rect = clutter_actor_new ();
- clutter_actor_add_child (stage, state.rect);
- clutter_actor_set_position (state.rect, 100, 200);
- clutter_actor_set_size (state.rect, RECT_WIDTH, RECT_HEIGHT);
-
- /* Record notifications on the actor properties */
- state.notifications = 0;
- g_signal_connect (state.rect, "notify",
- G_CALLBACK (notify_cb), &state);
-
- /* Run the tests in a low priority idle function so that we can be
- sure the stage is correctly setup */
- clutter_threads_add_idle_full (G_PRIORITY_LOW, idle_cb, &state, NULL);
-
- clutter_actor_show (stage);
-
- clutter_main ();
-}
-
-static void
-actor_pivot (void)
-{
- 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_test_get_stage ();
-
- 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);
-
- g_assert (cogl_matrix_equal (&result_implicit, &result_explicit));
-}
-
-CLUTTER_TEST_SUITE (
- CLUTTER_TEST_UNIT ("/actor/transforms/anchor-point", actor_anchors)
- CLUTTER_TEST_UNIT ("/actor/transforms/pivot-point", actor_pivot)
-)
diff --git a/clutter/tests/conform/actor-destroy.c b/clutter/tests/conform/actor-destroy.c
deleted file mode 100644
index 10ad79df7..000000000
--- a/clutter/tests/conform/actor-destroy.c
+++ /dev/null
@@ -1,195 +0,0 @@
-#define CLUTTER_DISABLE_DEPRECATION_WARNINGS
-#include <clutter/clutter.h>
-
-#define TEST_TYPE_DESTROY (test_destroy_get_type ())
-#define TEST_DESTROY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TEST_TYPE_DESTROY, TestDestroy))
-#define TEST_IS_DESTROY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TEST_TYPE_DESTROY))
-
-typedef struct _TestDestroy TestDestroy;
-typedef struct _TestDestroyClass TestDestroyClass;
-
-struct _TestDestroy
-{
- ClutterActor parent_instance;
-
- ClutterActor *bg;
- ClutterActor *label;
- ClutterActor *tex;
-
- GList *children;
-};
-
-struct _TestDestroyClass
-{
- ClutterActorClass parent_class;
-};
-
-static void clutter_container_init (ClutterContainerIface *iface);
-
-GType test_destroy_get_type (void);
-
-G_DEFINE_TYPE_WITH_CODE (TestDestroy, test_destroy, CLUTTER_TYPE_ACTOR,
- G_IMPLEMENT_INTERFACE (CLUTTER_TYPE_CONTAINER,
- clutter_container_init));
-
-static void
-test_destroy_add (ClutterContainer *container,
- ClutterActor *actor)
-{
- TestDestroy *self = TEST_DESTROY (container);
-
- if (g_test_verbose ())
- g_print ("Adding '%s' (type:%s)\n",
- clutter_actor_get_name (actor),
- G_OBJECT_TYPE_NAME (actor));
-
- self->children = g_list_prepend (self->children, actor);
- clutter_actor_set_parent (actor, CLUTTER_ACTOR (container));
-}
-
-static void
-test_destroy_remove (ClutterContainer *container,
- ClutterActor *actor)
-{
- TestDestroy *self = TEST_DESTROY (container);
-
- if (g_test_verbose ())
- g_print ("Removing '%s' (type:%s)\n",
- clutter_actor_get_name (actor),
- G_OBJECT_TYPE_NAME (actor));
-
- g_assert (actor != self->bg);
- g_assert (actor != self->label);
-
- if (!g_list_find (self->children, actor))
- g_assert (actor == self->tex);
- else
- self->children = g_list_remove (self->children, actor);
-
- clutter_actor_unparent (actor);
-}
-
-static void
-clutter_container_init (ClutterContainerIface *iface)
-{
- iface->add = test_destroy_add;
- iface->remove = test_destroy_remove;
-}
-
-static void
-test_destroy_destroy (ClutterActor *self)
-{
- TestDestroy *test = TEST_DESTROY (self);
-
- if (test->bg != NULL)
- {
- if (g_test_verbose ())
- g_print ("Destroying '%s' (type:%s)\n",
- clutter_actor_get_name (test->bg),
- G_OBJECT_TYPE_NAME (test->bg));
-
- clutter_actor_destroy (test->bg);
- test->bg = NULL;
- }
-
- if (test->label != NULL)
- {
- if (g_test_verbose ())
- g_print ("Destroying '%s' (type:%s)\n",
- clutter_actor_get_name (test->label),
- G_OBJECT_TYPE_NAME (test->label));
-
- clutter_actor_destroy (test->label);
- test->label = NULL;
- }
-
- if (test->tex != NULL)
- {
- if (g_test_verbose ())
- g_print ("Destroying '%s' (type:%s)\n",
- clutter_actor_get_name (test->tex),
- G_OBJECT_TYPE_NAME (test->tex));
-
- clutter_actor_destroy (test->tex);
- test->tex = NULL;
- }
-
- g_assert_nonnull (test->children);
-
- if (CLUTTER_ACTOR_CLASS (test_destroy_parent_class)->destroy)
- CLUTTER_ACTOR_CLASS (test_destroy_parent_class)->destroy (self);
-
- g_assert_null (test->children);
-}
-
-static void
-test_destroy_class_init (TestDestroyClass *klass)
-{
- ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
-
- actor_class->destroy = test_destroy_destroy;
-}
-
-static void
-test_destroy_init (TestDestroy *self)
-{
- clutter_actor_push_internal (CLUTTER_ACTOR (self));
-
- if (g_test_verbose ())
- g_print ("Adding internal children...\n");
-
- self->bg = clutter_rectangle_new ();
- clutter_actor_set_parent (self->bg, CLUTTER_ACTOR (self));
- clutter_actor_set_name (self->bg, "Background");
-
- self->label = clutter_text_new ();
- clutter_actor_set_parent (self->label, CLUTTER_ACTOR (self));
- clutter_actor_set_name (self->label, "Label");
-
- clutter_actor_pop_internal (CLUTTER_ACTOR (self));
-
- self->tex = clutter_texture_new ();
- clutter_actor_set_parent (self->tex, CLUTTER_ACTOR (self));
- clutter_actor_set_name (self->tex, "Texture");
-}
-
-static void
-on_destroy (ClutterActor *actor,
- gpointer data)
-{
- gboolean *destroy_called = data;
-
- *destroy_called = TRUE;
-}
-
-static void
-actor_destruction (void)
-{
- ClutterActor *test = g_object_new (TEST_TYPE_DESTROY, NULL);
- ClutterActor *child = clutter_rectangle_new ();
- gboolean destroy_called = FALSE;
-
- g_object_ref_sink (test);
-
- g_object_add_weak_pointer (G_OBJECT (test), (gpointer *) &test);
- g_object_add_weak_pointer (G_OBJECT (child), (gpointer *) &child);
-
- if (g_test_verbose ())
- g_print ("Adding external child...\n");
-
- clutter_actor_set_name (child, "Child");
- clutter_container_add_actor (CLUTTER_CONTAINER (test), child);
- g_signal_connect (child, "destroy", G_CALLBACK (on_destroy), &destroy_called);
-
- if (g_test_verbose ())
- g_print ("Calling destroy()...\n");
-
- clutter_actor_destroy (test);
- g_assert (destroy_called);
- g_assert_null (child);
- g_assert_null (test);
-}
-
-CLUTTER_TEST_SUITE (
- CLUTTER_TEST_UNIT ("/actor/destruction", actor_destruction)
-)
diff --git a/clutter/tests/conform/actor-graph.c b/clutter/tests/conform/actor-graph.c
deleted file mode 100644
index 8fbf4bcb7..000000000
--- a/clutter/tests/conform/actor-graph.c
+++ /dev/null
@@ -1,550 +0,0 @@
-#include <clutter/clutter.h>
-
-static void
-actor_add_child (void)
-{
- ClutterActor *actor = clutter_actor_new ();
- ClutterActor *iter;
-
- g_object_ref_sink (actor);
- g_object_add_weak_pointer (G_OBJECT (actor), (gpointer *) &actor);
-
- clutter_actor_add_child (actor, g_object_new (CLUTTER_TYPE_ACTOR,
- "name", "foo",
- NULL));
- clutter_actor_add_child (actor, g_object_new (CLUTTER_TYPE_ACTOR,
- "name", "bar",
- NULL));
- clutter_actor_add_child (actor, g_object_new (CLUTTER_TYPE_ACTOR,
- "name", "baz",
- NULL));
-
- g_assert_cmpint (clutter_actor_get_n_children (actor), ==, 3);
-
- iter = clutter_actor_get_first_child (actor);
- g_assert_cmpstr (clutter_actor_get_name (iter), ==, "foo");
-
- iter = clutter_actor_get_next_sibling (iter);
- g_assert_cmpstr (clutter_actor_get_name (iter), ==, "bar");
-
- iter = clutter_actor_get_next_sibling (iter);
- g_assert_cmpstr (clutter_actor_get_name (iter), ==, "baz");
- g_assert (iter == clutter_actor_get_last_child (actor));
- g_assert (clutter_actor_get_next_sibling (iter) == NULL);
-
- iter = clutter_actor_get_last_child (actor);
- g_assert_cmpstr (clutter_actor_get_name (iter), ==, "baz");
-
- iter = clutter_actor_get_previous_sibling (iter);
- g_assert_cmpstr (clutter_actor_get_name (iter), ==, "bar");
-
- iter = clutter_actor_get_previous_sibling (iter);
- g_assert_cmpstr (clutter_actor_get_name (iter), ==, "foo");
- g_assert (iter == clutter_actor_get_first_child (actor));
- g_assert (clutter_actor_get_previous_sibling (iter) == NULL);
-
- clutter_actor_destroy (actor);
- g_assert (actor == NULL);
-}
-
-static void
-actor_insert_child (void)
-{
- ClutterActor *actor = clutter_actor_new ();
- ClutterActor *iter;
-
- g_object_ref_sink (actor);
- g_object_add_weak_pointer (G_OBJECT (actor), (gpointer *) &actor);
-
- clutter_actor_insert_child_at_index (actor,
- g_object_new (CLUTTER_TYPE_ACTOR,
- "name", "foo",
- NULL),
- 0);
-
- iter = clutter_actor_get_first_child (actor);
- g_assert (iter != NULL);
- g_assert_cmpstr (clutter_actor_get_name (iter), ==, "foo");
- g_assert (iter == clutter_actor_get_child_at_index (actor, 0));
-
- clutter_actor_insert_child_below (actor,
- g_object_new (CLUTTER_TYPE_ACTOR,
- "name", "bar",
- NULL),
- iter);
-
- g_assert_cmpint (clutter_actor_get_n_children (actor), ==, 2);
-
- iter = clutter_actor_get_first_child (actor);
- g_assert_cmpstr (clutter_actor_get_name (iter), ==, "bar");
- iter = clutter_actor_get_next_sibling (iter);
- g_assert_cmpstr (clutter_actor_get_name (iter), ==, "foo");
- g_assert (iter == clutter_actor_get_child_at_index (actor, 1));
-
- iter = clutter_actor_get_first_child (actor);
- clutter_actor_insert_child_above (actor,
- g_object_new (CLUTTER_TYPE_ACTOR,
- "name", "baz",
- NULL),
- iter);
-
- iter = clutter_actor_get_last_child (actor);
- g_assert_cmpstr (clutter_actor_get_name (iter), ==, "foo");
-
- iter = clutter_actor_get_previous_sibling (iter);
- g_assert_cmpstr (clutter_actor_get_name (iter), ==, "baz");
-
- iter = clutter_actor_get_previous_sibling (iter);
- g_assert_cmpstr (clutter_actor_get_name (iter), ==, "bar");
-
- clutter_actor_remove_all_children (actor);
-
- clutter_actor_insert_child_at_index (actor,
- g_object_new (CLUTTER_TYPE_ACTOR,
- "name", "1",
- NULL),
- 0);
- iter = clutter_actor_get_child_at_index (actor, 0);
- g_assert_cmpstr (clutter_actor_get_name (iter), ==, "1");
- g_assert (clutter_actor_get_first_child (actor) == iter);
- g_assert (clutter_actor_get_last_child (actor) == iter);
-
- clutter_actor_insert_child_at_index (actor,
- g_object_new (CLUTTER_TYPE_ACTOR,
- "name", "2",
- NULL),
- 0);
- iter = clutter_actor_get_child_at_index (actor, 0);
- g_assert_cmpstr (clutter_actor_get_name (iter), ==, "2");
- g_assert (clutter_actor_get_first_child (actor) == iter);
- iter = clutter_actor_get_child_at_index (actor, 1);
- g_assert_cmpstr (clutter_actor_get_name (iter), ==, "1");
- g_assert (clutter_actor_get_last_child (actor) == iter);
-
- clutter_actor_insert_child_at_index (actor,
- g_object_new (CLUTTER_TYPE_ACTOR,
- "name", "3",
- NULL),
- -1);
- iter = clutter_actor_get_child_at_index (actor, 2);
- g_assert_cmpstr (clutter_actor_get_name (iter), ==, "3");
- g_assert (clutter_actor_get_last_child (actor) == iter);
-
- clutter_actor_destroy (actor);
- g_assert (actor == NULL);
-}
-
-static void
-actor_remove_child (void)
-{
- ClutterActor *actor = clutter_actor_new ();
- ClutterActor *iter;
-
- g_object_ref_sink (actor);
- g_object_add_weak_pointer (G_OBJECT (actor), (gpointer *) &actor);
-
- clutter_actor_add_child (actor, g_object_new (CLUTTER_TYPE_ACTOR,
- "name", "foo",
- NULL));
- clutter_actor_add_child (actor, g_object_new (CLUTTER_TYPE_ACTOR,
- "name", "bar",
- NULL));
-
- g_assert_cmpint (clutter_actor_get_n_children (actor), ==, 2);
-
- g_assert (clutter_actor_get_first_child (actor) != clutter_actor_get_last_child (actor));
-
- iter = clutter_actor_get_first_child (actor);
- g_assert_cmpstr (clutter_actor_get_name (iter), ==, "foo");
-
- iter = clutter_actor_get_last_child (actor);
- g_assert_cmpstr (clutter_actor_get_name (iter), ==, "bar");
-
- clutter_actor_remove_child (actor, clutter_actor_get_first_child (actor));
-
- g_assert_cmpint (clutter_actor_get_n_children (actor), ==, 1);
-
- iter = clutter_actor_get_first_child (actor);
- g_assert_cmpstr (clutter_actor_get_name (iter), ==, "bar");
- g_assert (clutter_actor_get_first_child (actor) == clutter_actor_get_last_child (actor));
-
- clutter_actor_remove_child (actor, clutter_actor_get_first_child (actor));
-
- g_assert_cmpint (clutter_actor_get_n_children (actor), ==, 0);
- g_assert (clutter_actor_get_first_child (actor) == NULL);
- g_assert (clutter_actor_get_last_child (actor) == NULL);
-
- clutter_actor_destroy (actor);
- g_assert (actor == NULL);
-}
-
-static void
-actor_raise_child (void)
-{
- ClutterActor *actor = clutter_actor_new ();
- ClutterActor *iter;
- gboolean show_on_set_parent;
-
- g_object_ref_sink (actor);
- g_object_add_weak_pointer (G_OBJECT (actor), (gpointer *) &actor);
-
- clutter_actor_add_child (actor, g_object_new (CLUTTER_TYPE_ACTOR,
- "name", "foo",
- "visible", FALSE,
- NULL));
- clutter_actor_add_child (actor, g_object_new (CLUTTER_TYPE_ACTOR,
- "name", "bar",
- "visible", FALSE,
- NULL));
- clutter_actor_add_child (actor, g_object_new (CLUTTER_TYPE_ACTOR,
- "name", "baz",
- "visible", FALSE,
- NULL));
-
- g_assert_cmpint (clutter_actor_get_n_children (actor), ==, 3);
-
- iter = clutter_actor_get_child_at_index (actor, 1);
- g_assert_cmpstr (clutter_actor_get_name (iter), ==, "bar");
-
- clutter_actor_set_child_above_sibling (actor, iter,
- clutter_actor_get_child_at_index (actor, 2));
-
- g_assert_cmpstr (clutter_actor_get_name (clutter_actor_get_child_at_index (actor, 0)),
- ==,
- "foo");
- g_assert_cmpstr (clutter_actor_get_name (clutter_actor_get_child_at_index (actor, 1)),
- ==,
- "baz");
- g_assert_cmpstr (clutter_actor_get_name (clutter_actor_get_child_at_index (actor, 2)),
- ==,
- "bar");
- g_assert (!clutter_actor_is_visible (iter));
- g_object_get (iter, "show-on-set-parent", &show_on_set_parent, NULL);
- g_assert (!show_on_set_parent);
-
- iter = clutter_actor_get_child_at_index (actor, 0);
- clutter_actor_set_child_above_sibling (actor, iter, NULL);
- g_object_add_weak_pointer (G_OBJECT (iter), (gpointer *) &iter);
-
- g_assert_cmpstr (clutter_actor_get_name (clutter_actor_get_child_at_index (actor, 0)),
- ==,
- "baz");
- g_assert_cmpstr (clutter_actor_get_name (clutter_actor_get_child_at_index (actor, 1)),
- ==,
- "bar");
- g_assert_cmpstr (clutter_actor_get_name (clutter_actor_get_child_at_index (actor, 2)),
- ==,
- "foo");
- g_assert (!clutter_actor_is_visible (iter));
- g_object_get (iter, "show-on-set-parent", &show_on_set_parent, NULL);
- g_assert (!show_on_set_parent);
-
- clutter_actor_destroy (actor);
- g_assert (actor == NULL);
- g_assert (iter == NULL);
-}
-
-static void
-actor_lower_child (void)
-{
- ClutterActor *actor = clutter_actor_new ();
- ClutterActor *iter;
- gboolean show_on_set_parent;
-
- g_object_ref_sink (actor);
- g_object_add_weak_pointer (G_OBJECT (actor), (gpointer *) &actor);
-
- clutter_actor_add_child (actor, g_object_new (CLUTTER_TYPE_ACTOR,
- "name", "foo",
- "visible", FALSE,
- NULL));
- clutter_actor_add_child (actor, g_object_new (CLUTTER_TYPE_ACTOR,
- "name", "bar",
- "visible", FALSE,
- NULL));
- clutter_actor_add_child (actor, g_object_new (CLUTTER_TYPE_ACTOR,
- "name", "baz",
- "visible", FALSE,
- NULL));
-
- g_assert_cmpint (clutter_actor_get_n_children (actor), ==, 3);
-
- iter = clutter_actor_get_child_at_index (actor, 1);
- g_assert_cmpstr (clutter_actor_get_name (iter), ==, "bar");
-
- clutter_actor_set_child_below_sibling (actor, iter,
- clutter_actor_get_child_at_index (actor, 0));
-
- g_assert_cmpstr (clutter_actor_get_name (clutter_actor_get_child_at_index (actor, 0)),
- ==,
- "bar");
- g_assert_cmpstr (clutter_actor_get_name (clutter_actor_get_child_at_index (actor, 1)),
- ==,
- "foo");
- g_assert_cmpstr (clutter_actor_get_name (clutter_actor_get_child_at_index (actor, 2)),
- ==,
- "baz");
- g_assert (!clutter_actor_is_visible (iter));
- g_object_get (iter, "show-on-set-parent", &show_on_set_parent, NULL);
- g_assert (!show_on_set_parent);
-
- iter = clutter_actor_get_child_at_index (actor, 2);
- clutter_actor_set_child_below_sibling (actor, iter, NULL);
-
- g_assert_cmpstr (clutter_actor_get_name (clutter_actor_get_child_at_index (actor, 0)),
- ==,
- "baz");
- g_assert_cmpstr (clutter_actor_get_name (clutter_actor_get_child_at_index (actor, 1)),
- ==,
- "bar");
- g_assert_cmpstr (clutter_actor_get_name (clutter_actor_get_child_at_index (actor, 2)),
- ==,
- "foo");
- g_assert (!clutter_actor_is_visible (iter));
- g_object_get (iter, "show-on-set-parent", &show_on_set_parent, NULL);
- g_assert (!show_on_set_parent);
-
- clutter_actor_destroy (actor);
- g_assert (actor == NULL);
-}
-
-static void
-actor_replace_child (void)
-{
- ClutterActor *actor = clutter_actor_new ();
- ClutterActor *iter;
-
- g_object_ref_sink (actor);
- g_object_add_weak_pointer (G_OBJECT (actor), (gpointer *) &actor);
-
- clutter_actor_add_child (actor, g_object_new (CLUTTER_TYPE_ACTOR,
- "name", "foo",
- NULL));
- clutter_actor_add_child (actor, g_object_new (CLUTTER_TYPE_ACTOR,
- "name", "bar",
- NULL));
-
- iter = clutter_actor_get_child_at_index (actor, 0);
- g_assert_cmpstr (clutter_actor_get_name (iter), ==, "foo");
-
- clutter_actor_replace_child (actor, iter,
- g_object_new (CLUTTER_TYPE_ACTOR,
- "name", "baz",
- NULL));
-
- iter = clutter_actor_get_child_at_index (actor, 0);
- g_assert_cmpstr (clutter_actor_get_name (iter), ==, "baz");
-
- iter = clutter_actor_get_child_at_index (actor, 1);
- g_assert_cmpstr (clutter_actor_get_name (iter), ==, "bar");
-
- clutter_actor_replace_child (actor, iter,
- g_object_new (CLUTTER_TYPE_ACTOR,
- "name", "qux",
- NULL));
-
- iter = clutter_actor_get_child_at_index (actor, 0);
- g_assert_cmpstr (clutter_actor_get_name (iter), ==, "baz");
-
- iter = clutter_actor_get_child_at_index (actor, 1);
- g_assert_cmpstr (clutter_actor_get_name (iter), ==, "qux");
-
- clutter_actor_add_child (actor, g_object_new (CLUTTER_TYPE_ACTOR,
- "name", "foo",
- NULL));
-
- clutter_actor_replace_child (actor, iter,
- g_object_new (CLUTTER_TYPE_ACTOR,
- "name", "bar",
- NULL));
-
- iter = clutter_actor_get_last_child (actor);
- g_assert_cmpstr (clutter_actor_get_name (iter), ==, "foo");
- iter = clutter_actor_get_previous_sibling (iter);
- g_assert_cmpstr (clutter_actor_get_name (iter), ==, "bar");
- iter = clutter_actor_get_previous_sibling (iter);
- g_assert_cmpstr (clutter_actor_get_name (iter), ==, "baz");
-
- clutter_actor_destroy (actor);
- g_assert (actor == NULL);
-}
-
-static void
-actor_remove_all (void)
-{
- ClutterActor *actor = clutter_actor_new ();
-
- g_object_ref_sink (actor);
- g_object_add_weak_pointer (G_OBJECT (actor), (gpointer *) &actor);
-
- clutter_actor_add_child (actor, g_object_new (CLUTTER_TYPE_ACTOR,
- "name", "foo",
- NULL));
- clutter_actor_add_child (actor, g_object_new (CLUTTER_TYPE_ACTOR,
- "name", "bar",
- NULL));
- clutter_actor_add_child (actor, g_object_new (CLUTTER_TYPE_ACTOR,
- "name", "baz",
- NULL));
-
- g_assert_cmpint (clutter_actor_get_n_children (actor), ==, 3);
-
- clutter_actor_remove_all_children (actor);
-
- g_assert_cmpint (clutter_actor_get_n_children (actor), ==, 0);
-
- clutter_actor_destroy (actor);
- g_assert (actor == NULL);
-}
-
-static void
-actor_added (ClutterContainer *container,
- ClutterActor *child,
- gpointer data)
-{
- ClutterActor *actor = CLUTTER_ACTOR (container);
- int *counter = data;
- ClutterActor *old_child;
-
- if (g_test_verbose ())
- g_print ("Adding actor '%s'\n", clutter_actor_get_name (child));
-
- old_child = clutter_actor_get_child_at_index (actor, 0);
- if (old_child != child)
- clutter_actor_remove_child (actor, old_child);
-
- *counter += 1;
-}
-
-static void
-actor_removed (ClutterContainer *container,
- ClutterActor *child,
- gpointer data)
-{
- int *counter = data;
-
- if (g_test_verbose ())
- g_print ("Removing actor '%s'\n", clutter_actor_get_name (child));
-
- *counter += 1;
-}
-
-static void
-actor_container_signals (void)
-{
- ClutterActor *actor = clutter_actor_new ();
- int add_count, remove_count;
-
- g_object_ref_sink (actor);
- g_object_add_weak_pointer (G_OBJECT (actor), (gpointer *) &actor);
-
- add_count = remove_count = 0;
- g_signal_connect (actor,
- "actor-added", G_CALLBACK (actor_added),
- &add_count);
- g_signal_connect (actor,
- "actor-removed", G_CALLBACK (actor_removed),
- &remove_count);
-
- clutter_actor_add_child (actor, g_object_new (CLUTTER_TYPE_ACTOR,
- "name", "foo",
- NULL));
-
- g_assert_cmpint (add_count, ==, 1);
- g_assert_cmpint (remove_count, ==, 0);
- g_assert_cmpint (clutter_actor_get_n_children (actor), ==, 1);
-
- clutter_actor_add_child (actor, g_object_new (CLUTTER_TYPE_ACTOR,
- "name", "bar",
- NULL));
-
- g_assert_cmpint (add_count, ==, 2);
- g_assert_cmpint (remove_count, ==, 1);
- g_assert_cmpint (clutter_actor_get_n_children (actor), ==, 1);
-
- g_signal_handlers_disconnect_by_func (actor, G_CALLBACK (actor_added),
- &add_count);
- g_signal_handlers_disconnect_by_func (actor, G_CALLBACK (actor_removed),
- &remove_count);
-
- clutter_actor_destroy (actor);
- g_assert (actor == NULL);
-}
-
-static void
-actor_contains (void)
-{
- /* This build up the following tree:
- *
- * a
- * ╱ │ ╲
- * ╱ │ ╲
- * b c d
- * ╱ ╲ ╱ ╲ ╱ ╲
- * e f g h i j
- */
- struct {
- ClutterActor *actor_a, *actor_b, *actor_c, *actor_d, *actor_e;
- ClutterActor *actor_f, *actor_g, *actor_h, *actor_i, *actor_j;
- } d;
- int x, y;
- ClutterActor **actor_array = &d.actor_a;
-
- /* Matrix of expected results */
- static const gboolean expected_results[] =
- { /* a, b, c, d, e, f, g, h, i, j */
- /* a */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- /* b */ 0, 1, 0, 0, 1, 1, 0, 0, 0, 0,
- /* c */ 0, 0, 1, 0, 0, 0, 1, 1, 0, 0,
- /* d */ 0, 0, 0, 1, 0, 0, 0, 0, 1, 1,
- /* e */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
- /* f */ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
- /* g */ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- /* h */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
- /* i */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
- /* j */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
- };
-
- d.actor_a = clutter_actor_new ();
- d.actor_b = clutter_actor_new ();
- d.actor_c = clutter_actor_new ();
- d.actor_d = clutter_actor_new ();
- d.actor_e = clutter_actor_new ();
- d.actor_f = clutter_actor_new ();
- d.actor_g = clutter_actor_new ();
- d.actor_h = clutter_actor_new ();
- d.actor_i = clutter_actor_new ();
- d.actor_j = clutter_actor_new ();
-
- clutter_actor_add_child (d.actor_a, d.actor_b);
- clutter_actor_add_child (d.actor_a, d.actor_c);
- clutter_actor_add_child (d.actor_a, d.actor_d);
-
- clutter_actor_add_child (d.actor_b, d.actor_e);
- clutter_actor_add_child (d.actor_b, d.actor_f);
-
- clutter_actor_add_child (d.actor_c, d.actor_g);
- clutter_actor_add_child (d.actor_c, d.actor_h);
-
- clutter_actor_add_child (d.actor_d, d.actor_i);
- clutter_actor_add_child (d.actor_d, d.actor_j);
-
- for (y = 0; y < 10; y++)
- for (x = 0; x < 10; x++)
- g_assert_cmpint (clutter_actor_contains (actor_array[x],
- actor_array[y]),
- ==,
- expected_results[x * 10 + y]);
-}
-
-CLUTTER_TEST_SUITE (
- CLUTTER_TEST_UNIT ("/actor/graph/add-child", actor_add_child)
- CLUTTER_TEST_UNIT ("/actor/graph/insert-child", actor_insert_child)
- CLUTTER_TEST_UNIT ("/actor/graph/remove-child", actor_remove_child)
- CLUTTER_TEST_UNIT ("/actor/graph/raise-child", actor_raise_child)
- CLUTTER_TEST_UNIT ("/actor/graph/lower-child", actor_lower_child)
- CLUTTER_TEST_UNIT ("/actor/graph/replace-child", actor_replace_child)
- CLUTTER_TEST_UNIT ("/actor/graph/remove-all", actor_remove_all)
- CLUTTER_TEST_UNIT ("/actor/graph/container-signals", actor_container_signals)
- CLUTTER_TEST_UNIT ("/actor/graph/contains", actor_contains)
-)
diff --git a/clutter/tests/conform/actor-invariants.c b/clutter/tests/conform/actor-invariants.c
deleted file mode 100644
index 87df90bc1..000000000
--- a/clutter/tests/conform/actor-invariants.c
+++ /dev/null
@@ -1,371 +0,0 @@
-#include <stdlib.h>
-#include <string.h>
-
-#define CLUTTER_DISABLE_DEPRECATION_WARNINGS
-#include <clutter/clutter.h>
-
-static void
-actor_initial_state (void)
-{
- ClutterActor *actor;
-
- actor = clutter_actor_new ();
- g_object_ref_sink (actor);
- g_object_add_weak_pointer (G_OBJECT (actor), (gpointer *) &actor);
-
- if (g_test_verbose ())
- g_print ("initial state - visible: %s, realized: %s, mapped: %s\n",
- CLUTTER_ACTOR_IS_VISIBLE (actor) ? "yes" : "no",
- CLUTTER_ACTOR_IS_REALIZED (actor) ? "yes" : "no",
- CLUTTER_ACTOR_IS_MAPPED (actor) ? "yes" : "no");
-
- g_assert (!(CLUTTER_ACTOR_IS_REALIZED (actor)));
- g_assert (!(CLUTTER_ACTOR_IS_MAPPED (actor)));
- g_assert (!(CLUTTER_ACTOR_IS_VISIBLE (actor)));
-
- clutter_actor_destroy (actor);
- g_assert (actor == NULL);
-}
-
-static void
-actor_shown_not_parented (void)
-{
- ClutterActor *actor;
-
- actor = clutter_actor_new ();
- g_object_ref_sink (actor);
- g_object_add_weak_pointer (G_OBJECT (actor), (gpointer *) &actor);
-
- clutter_actor_show (actor);
-
- if (g_test_verbose ())
- g_print ("show without a parent - visible: %s, realized: %s, mapped: %s\n",
- CLUTTER_ACTOR_IS_VISIBLE (actor) ? "yes" : "no",
- CLUTTER_ACTOR_IS_REALIZED (actor) ? "yes" : "no",
- CLUTTER_ACTOR_IS_MAPPED (actor) ? "yes" : "no");
-
- g_assert (!CLUTTER_ACTOR_IS_REALIZED (actor));
- g_assert (!CLUTTER_ACTOR_IS_MAPPED (actor));
- g_assert (CLUTTER_ACTOR_IS_VISIBLE (actor));
-
- clutter_actor_destroy (actor);
- g_assert (actor == NULL);
-}
-
-static void
-actor_realized (void)
-{
- ClutterActor *actor;
- ClutterActor *stage;
-
- stage = clutter_test_get_stage ();
-
- actor = clutter_actor_new ();
-
- g_assert (!(CLUTTER_ACTOR_IS_REALIZED (actor)));
-
- clutter_actor_hide (actor); /* don't show, so won't map */
- clutter_actor_add_child (stage, actor);
- clutter_actor_realize (actor);
-
- g_assert (CLUTTER_ACTOR_IS_REALIZED (actor));
-
- g_assert (!(CLUTTER_ACTOR_IS_MAPPED (actor)));
- g_assert (!(CLUTTER_ACTOR_IS_VISIBLE (actor)));
-}
-
-static void
-actor_mapped (void)
-{
- ClutterActor *actor;
- ClutterActor *stage;
-
- stage = clutter_test_get_stage ();
- clutter_actor_show (stage);
-
- actor = clutter_actor_new ();
-
- g_assert (!(CLUTTER_ACTOR_IS_REALIZED (actor)));
- g_assert (!(CLUTTER_ACTOR_IS_MAPPED (actor)));
-
- clutter_actor_add_child (stage, actor);
-
- if (g_test_verbose ())
- g_print ("adding to a container should map - "
- "visible: %s, realized: %s, mapped: %s\n",
- CLUTTER_ACTOR_IS_VISIBLE (actor) ? "yes" : "no",
- CLUTTER_ACTOR_IS_REALIZED (actor) ? "yes" : "no",
- CLUTTER_ACTOR_IS_MAPPED (actor) ? "yes" : "no");
-
- g_assert (CLUTTER_ACTOR_IS_REALIZED (actor));
- g_assert (CLUTTER_ACTOR_IS_MAPPED (actor));
- g_assert (CLUTTER_ACTOR_IS_VISIBLE (actor));
-
- clutter_actor_hide (actor);
-
- if (g_test_verbose ())
- g_print ("hiding should unmap - "
- "visible: %s, realized: %s, mapped: %s\n",
- CLUTTER_ACTOR_IS_VISIBLE (actor) ? "yes" : "no",
- CLUTTER_ACTOR_IS_REALIZED (actor) ? "yes" : "no",
- CLUTTER_ACTOR_IS_MAPPED (actor) ? "yes" : "no");
-
- g_assert (CLUTTER_ACTOR_IS_REALIZED (actor));
- g_assert (!CLUTTER_ACTOR_IS_MAPPED (actor));
- g_assert (!CLUTTER_ACTOR_IS_VISIBLE (actor));
-}
-
-static void
-actor_visibility_not_recursive (void)
-{
- ClutterActor *actor, *group;
- ClutterActor *stage;
-
- stage = clutter_test_get_stage ();
-
- group = clutter_actor_new ();
- actor = clutter_actor_new ();
-
- clutter_actor_hide (group); /* don't show, so won't map */
- clutter_actor_hide (actor); /* don't show, so won't map */
-
- g_assert (!(CLUTTER_ACTOR_IS_VISIBLE (stage)));
- g_assert (!(CLUTTER_ACTOR_IS_VISIBLE (group)));
- g_assert (!(CLUTTER_ACTOR_IS_VISIBLE (actor)));
-
- clutter_actor_add_child (stage, group);
- clutter_actor_add_child (group, actor);
-
- clutter_actor_show (actor);
- g_assert (CLUTTER_ACTOR_IS_VISIBLE (actor));
- g_assert (!CLUTTER_ACTOR_IS_VISIBLE (group));
- g_assert (!CLUTTER_ACTOR_IS_VISIBLE (stage));
-
- clutter_actor_show (stage);
- g_assert (CLUTTER_ACTOR_IS_VISIBLE (actor));
- g_assert (!CLUTTER_ACTOR_IS_VISIBLE (group));
- g_assert (CLUTTER_ACTOR_IS_VISIBLE (stage));
-
- clutter_actor_hide (actor);
- clutter_actor_hide (group);
- clutter_actor_hide (stage);
- g_assert (!CLUTTER_ACTOR_IS_VISIBLE (actor));
-
- clutter_actor_show (stage);
- g_assert (!CLUTTER_ACTOR_IS_VISIBLE (actor));
-}
-
-static void
-actor_realize_not_recursive (void)
-{
- ClutterActor *actor, *group;
- ClutterActor *stage;
-
- stage = clutter_test_get_stage ();
- clutter_actor_show (stage);
-
- group = clutter_actor_new ();
-
- actor = clutter_actor_new ();
-
- clutter_actor_hide (group); /* don't show, so won't map */
- clutter_actor_hide (actor); /* don't show, so won't map */
-
- g_assert (!(CLUTTER_ACTOR_IS_REALIZED (group)));
- g_assert (!(CLUTTER_ACTOR_IS_REALIZED (actor)));
-
- clutter_actor_add_child (stage, group);
- clutter_actor_add_child (group, actor);
-
- clutter_actor_realize (group);
-
- g_assert (CLUTTER_ACTOR_IS_REALIZED (group));
-
- g_assert (!(CLUTTER_ACTOR_IS_MAPPED (group)));
- g_assert (!(CLUTTER_ACTOR_IS_VISIBLE (group)));
-
- /* realizing group did not realize the child */
- g_assert (!CLUTTER_ACTOR_IS_REALIZED (actor));
- g_assert (!(CLUTTER_ACTOR_IS_MAPPED (actor)));
- g_assert (!(CLUTTER_ACTOR_IS_VISIBLE (actor)));
-}
-
-static void
-actor_map_recursive (void)
-{
- ClutterActor *actor, *group;
- ClutterActor *stage;
-
- stage = clutter_test_get_stage ();
- clutter_actor_show (stage);
-
- group = clutter_actor_new ();
-
- actor = clutter_actor_new ();
-
- clutter_actor_hide (group); /* hide at first */
- clutter_actor_show (actor); /* show at first */
-
- g_assert (!(CLUTTER_ACTOR_IS_REALIZED (group)));
- g_assert (!(CLUTTER_ACTOR_IS_REALIZED (actor)));
- g_assert (!(CLUTTER_ACTOR_IS_MAPPED (group)));
- g_assert (!(CLUTTER_ACTOR_IS_MAPPED (actor)));
- g_assert (!(CLUTTER_ACTOR_IS_VISIBLE (group)));
- g_assert ((CLUTTER_ACTOR_IS_VISIBLE (actor)));
-
- clutter_actor_add_child (stage, group);
- clutter_actor_add_child (group, actor);
-
- g_assert (!(CLUTTER_ACTOR_IS_REALIZED (group)));
- g_assert (!(CLUTTER_ACTOR_IS_REALIZED (actor)));
- g_assert (!(CLUTTER_ACTOR_IS_MAPPED (group)));
- g_assert (!(CLUTTER_ACTOR_IS_MAPPED (actor)));
- g_assert (!(CLUTTER_ACTOR_IS_VISIBLE (group)));
- g_assert ((CLUTTER_ACTOR_IS_VISIBLE (actor)));
-
- /* show group, which should map and realize both
- * group and child.
- */
- clutter_actor_show (group);
- g_assert (CLUTTER_ACTOR_IS_REALIZED (group));
- g_assert (CLUTTER_ACTOR_IS_REALIZED (actor));
- g_assert (CLUTTER_ACTOR_IS_MAPPED (group));
- g_assert (CLUTTER_ACTOR_IS_MAPPED (actor));
- g_assert (CLUTTER_ACTOR_IS_VISIBLE (group));
- g_assert (CLUTTER_ACTOR_IS_VISIBLE (actor));
-}
-
-static void
-actor_show_on_set_parent (void)
-{
- ClutterActor *actor, *group;
- gboolean show_on_set_parent;
- ClutterActor *stage;
-
- stage = clutter_test_get_stage ();
-
- group = clutter_actor_new ();
-
- g_assert (!(CLUTTER_ACTOR_IS_VISIBLE (group)));
-
- clutter_actor_add_child (stage, group);
-
- actor = clutter_actor_new ();
- g_object_get (actor,
- "show-on-set-parent", &show_on_set_parent,
- NULL);
-
- g_assert (!(CLUTTER_ACTOR_IS_VISIBLE (actor)));
- g_assert (show_on_set_parent);
-
- clutter_actor_add_child (group, actor);
- g_object_get (actor,
- "show-on-set-parent", &show_on_set_parent,
- NULL);
-
- g_assert (CLUTTER_ACTOR_IS_VISIBLE (actor));
- g_assert (show_on_set_parent);
-
- g_object_ref (actor);
- clutter_actor_remove_child (group, actor);
- g_object_get (actor,
- "show-on-set-parent", &show_on_set_parent,
- NULL);
-
- g_assert (!CLUTTER_ACTOR_IS_REALIZED (actor));
- g_assert (!CLUTTER_ACTOR_IS_MAPPED (actor));
- g_assert (CLUTTER_ACTOR_IS_VISIBLE (actor));
- g_assert (show_on_set_parent);
-
- clutter_actor_destroy (actor);
- clutter_actor_destroy (group);
-
- actor = clutter_actor_new ();
- clutter_actor_add_child (stage, actor);
- clutter_actor_hide (actor);
- g_object_get (actor,
- "show-on-set-parent", &show_on_set_parent,
- NULL);
- g_assert (!CLUTTER_ACTOR_IS_VISIBLE (actor));
- g_assert (!CLUTTER_ACTOR_IS_MAPPED (actor));
- g_assert (show_on_set_parent);
-
- clutter_actor_destroy (actor);
-
- actor = clutter_actor_new ();
- clutter_actor_hide (actor);
- clutter_actor_add_child (stage, actor);
- g_object_get (actor,
- "show-on-set-parent", &show_on_set_parent,
- NULL);
- g_assert (!CLUTTER_ACTOR_IS_VISIBLE (actor));
- g_assert (!CLUTTER_ACTOR_IS_MAPPED (actor));
- g_assert (!show_on_set_parent);
-
- clutter_actor_destroy (actor);
-}
-
-static void
-clone_no_map (void)
-{
- ClutterActor *stage;
- ClutterActor *group;
- ClutterActor *actor;
- ClutterActor *clone;
-
- stage = clutter_test_get_stage ();
- clutter_actor_show (stage);
-
- group = clutter_actor_new ();
- actor = clutter_actor_new ();
-
- clutter_actor_hide (group);
-
- clutter_actor_add_child (group, actor);
- clutter_actor_add_child (stage, group);
-
- g_assert (!(CLUTTER_ACTOR_IS_MAPPED (group)));
- g_assert (!(CLUTTER_ACTOR_IS_MAPPED (actor)));
-
- clone = clutter_clone_new (group);
-
- clutter_actor_add_child (stage, clone);
-
- g_assert (CLUTTER_ACTOR_IS_MAPPED (clone));
- g_assert (!(CLUTTER_ACTOR_IS_MAPPED (group)));
- g_assert (!(CLUTTER_ACTOR_IS_MAPPED (actor)));
-
- clutter_actor_destroy (CLUTTER_ACTOR (clone));
- clutter_actor_destroy (CLUTTER_ACTOR (group));
-}
-
-G_GNUC_BEGIN_IGNORE_DEPRECATIONS
-static void
-default_stage (void)
-{
- ClutterActor *stage, *def_stage;
-
- stage = clutter_test_get_stage ();
- def_stage = clutter_stage_get_default ();
-
- if (clutter_feature_available (CLUTTER_FEATURE_STAGE_MULTIPLE))
- g_assert (stage != def_stage);
- else
- g_assert (stage == def_stage);
-
- g_assert (CLUTTER_ACTOR_IS_REALIZED (def_stage));
-}
-G_GNUC_END_IGNORE_DEPRECATIONS
-
-CLUTTER_TEST_SUITE (
- CLUTTER_TEST_UNIT ("/actor/invariants/initial-state", actor_initial_state)
- CLUTTER_TEST_UNIT ("/actor/invariants/show-not-parented", actor_shown_not_parented)
- CLUTTER_TEST_UNIT ("/actor/invariants/realized", actor_realized)
- CLUTTER_TEST_UNIT ("/actor/invariants/mapped", actor_mapped)
- CLUTTER_TEST_UNIT ("/actor/invariants/visibility-not-recursive", actor_visibility_not_recursive)
- CLUTTER_TEST_UNIT ("/actor/invariants/realize-not-recursive", actor_realize_not_recursive)
- CLUTTER_TEST_UNIT ("/actor/invariants/map-recursive", actor_map_recursive)
- CLUTTER_TEST_UNIT ("/actor/invariants/show-on-set-parent", actor_show_on_set_parent)
- CLUTTER_TEST_UNIT ("/actor/invariants/clone-no-map", clone_no_map)
- CLUTTER_TEST_UNIT ("/actor/invariants/default-stage", default_stage)
-)
diff --git a/clutter/tests/conform/actor-iter.c b/clutter/tests/conform/actor-iter.c
deleted file mode 100644
index 193f63b27..000000000
--- a/clutter/tests/conform/actor-iter.c
+++ /dev/null
@@ -1,218 +0,0 @@
-#include <glib.h>
-#include <clutter/clutter.h>
-
-static void
-actor_iter_traverse_children (void)
-{
- ClutterActorIter iter;
- ClutterActor *actor;
- ClutterActor *child;
- int i, n_actors;
-
- actor = clutter_actor_new ();
- clutter_actor_set_name (actor, "root");
- g_object_ref_sink (actor);
-
- n_actors = g_random_int_range (10, 50);
- for (i = 0; i < n_actors; i++)
- {
- char *name;
-
- name = g_strdup_printf ("actor%d", i);
- child = clutter_actor_new ();
- clutter_actor_set_name (child, name);
-
- clutter_actor_add_child (actor, child);
-
- g_free (name);
- }
-
- g_assert_cmpint (clutter_actor_get_n_children (actor), ==, n_actors);
-
- i = 0;
- clutter_actor_iter_init (&iter, actor);
- g_assert (clutter_actor_iter_is_valid (&iter));
-
- while (clutter_actor_iter_next (&iter, &child))
- {
- g_assert (CLUTTER_IS_ACTOR (child));
- g_assert (clutter_actor_get_parent (child) == actor);
-
- if (g_test_verbose ())
- g_print ("actor %d = '%s'\n", i, clutter_actor_get_name (child));
-
- if (i == 0)
- g_assert (child == clutter_actor_get_first_child (actor));
-
- if (i == (n_actors - 1))
- g_assert (child == clutter_actor_get_last_child (actor));
-
- i += 1;
- }
-
- g_assert_cmpint (i, ==, n_actors);
-
- i = 0;
- clutter_actor_iter_init (&iter, actor);
- g_assert (clutter_actor_iter_is_valid (&iter));
-
- while (clutter_actor_iter_prev (&iter, &child))
- {
- g_assert (CLUTTER_IS_ACTOR (child));
- g_assert (clutter_actor_get_parent (child) == actor);
-
- if (g_test_verbose ())
- g_print ("actor %d = '%s'\n", i, clutter_actor_get_name (child));
-
- if (i == 0)
- g_assert (child == clutter_actor_get_last_child (actor));
-
- if (i == (n_actors - 1))
- g_assert (child == clutter_actor_get_first_child (actor));
-
- i += 1;
- }
-
- g_object_unref (actor);
-}
-
-static void
-actor_iter_traverse_remove (void)
-{
- ClutterActorIter iter;
- ClutterActor *actor;
- ClutterActor *child;
- int i, n_actors;
-
- actor = clutter_actor_new ();
- clutter_actor_set_name (actor, "root");
- g_object_ref_sink (actor);
-
- n_actors = g_random_int_range (10, 50);
- for (i = 0; i < n_actors; i++)
- {
- char *name;
-
- name = g_strdup_printf ("actor%d", i);
- child = clutter_actor_new ();
- clutter_actor_set_name (child, name);
-
- clutter_actor_add_child (actor, child);
-
- g_free (name);
- }
-
- g_assert_cmpint (clutter_actor_get_n_children (actor), ==, n_actors);
-
- i = 0;
- clutter_actor_iter_init (&iter, actor);
- g_assert (clutter_actor_iter_is_valid (&iter));
-
- while (clutter_actor_iter_next (&iter, &child))
- {
- g_assert (CLUTTER_IS_ACTOR (child));
- g_assert (clutter_actor_get_parent (child) == actor);
-
- if (g_test_verbose ())
- g_print ("actor %d = '%s'\n", i, clutter_actor_get_name (child));
-
- if (i == 0)
- g_assert (child == clutter_actor_get_first_child (actor));
-
- if (i == (n_actors - 1))
- g_assert (child == clutter_actor_get_last_child (actor));
-
- clutter_actor_iter_remove (&iter);
- g_assert (clutter_actor_iter_is_valid (&iter));
-
- i += 1;
- }
-
- g_assert_cmpint (i, ==, n_actors);
- g_assert_cmpint (0, ==, clutter_actor_get_n_children (actor));
-}
-
-static void
-actor_iter_assignment (void)
-{
- ClutterActorIter iter_a, iter_b;
- ClutterActor *actor;
- ClutterActor *child;
- int i, n_actors;
-
- actor = clutter_actor_new ();
- clutter_actor_set_name (actor, "root");
- g_object_ref_sink (actor);
-
- n_actors = g_random_int_range (10, 50);
- for (i = 0; i < n_actors; i++)
- {
- char *name;
-
- name = g_strdup_printf ("actor[%02d]", i);
- child = clutter_actor_new ();
- clutter_actor_set_name (child, name);
-
- clutter_actor_add_child (actor, child);
-
- g_free (name);
- }
-
- g_assert_cmpint (clutter_actor_get_n_children (actor), ==, n_actors);
-
- i = 0;
-
- clutter_actor_iter_init (&iter_a, actor);
-
- iter_b = iter_a;
-
- g_assert (clutter_actor_iter_is_valid (&iter_a));
- g_assert (clutter_actor_iter_is_valid (&iter_b));
-
- while (clutter_actor_iter_next (&iter_a, &child))
- {
- g_assert (CLUTTER_IS_ACTOR (child));
- g_assert (clutter_actor_get_parent (child) == actor);
-
- if (g_test_verbose ())
- g_print ("actor %2d = '%s'\n", i, clutter_actor_get_name (child));
-
- if (i == 0)
- g_assert (child == clutter_actor_get_first_child (actor));
-
- if (i == (n_actors - 1))
- g_assert (child == clutter_actor_get_last_child (actor));
-
- i += 1;
- }
-
- g_assert_cmpint (i, ==, n_actors);
-
- i = n_actors - 1;
-
- while (clutter_actor_iter_prev (&iter_b, &child))
- {
- g_assert (clutter_actor_get_parent (child) == actor);
-
- if (g_test_verbose ())
- g_print ("actor %2d = '%s'\n", i, clutter_actor_get_name (child));
-
- if (i == n_actors - 1)
- g_assert (child == clutter_actor_get_last_child (actor));
-
- if (i == 0)
- g_assert (child == clutter_actor_get_first_child (actor));
-
- i -= 1;
- }
-
- g_assert_cmpint (i, ==, -1);
-
- g_object_unref (actor);
-}
-
-CLUTTER_TEST_SUITE (
- CLUTTER_TEST_UNIT ("/actor/iter/traverse-children", actor_iter_traverse_children)
- CLUTTER_TEST_UNIT ("/actor/iter/traverse-remove", actor_iter_traverse_remove)
- CLUTTER_TEST_UNIT ("/actor/iter/assignment", actor_iter_assignment)
-)
diff --git a/clutter/tests/conform/actor-layout.c b/clutter/tests/conform/actor-layout.c
deleted file mode 100644
index 2cc89400c..000000000
--- a/clutter/tests/conform/actor-layout.c
+++ /dev/null
@@ -1,92 +0,0 @@
-#include <clutter/clutter.h>
-
-static void
-actor_basic_layout (void)
-{
- ClutterActor *stage = clutter_test_get_stage ();
- ClutterActor *vase;
- ClutterActor *flower[3];
- ClutterPoint p;
-
- vase = clutter_actor_new ();
- clutter_actor_set_name (vase, "Vase");
- clutter_actor_set_layout_manager (vase, clutter_flow_layout_new (CLUTTER_FLOW_HORIZONTAL));
- clutter_actor_add_child (stage, vase);
-
- flower[0] = clutter_actor_new ();
- clutter_actor_set_background_color (flower[0], CLUTTER_COLOR_Red);
- clutter_actor_set_size (flower[0], 100, 100);
- clutter_actor_set_name (flower[0], "Red Flower");
- clutter_actor_add_child (vase, flower[0]);
-
- flower[1] = clutter_actor_new ();
- clutter_actor_set_background_color (flower[1], CLUTTER_COLOR_Yellow);
- clutter_actor_set_size (flower[1], 100, 100);
- clutter_actor_set_name (flower[1], "Yellow Flower");
- clutter_actor_add_child (vase, flower[1]);
-
- flower[2] = clutter_actor_new ();
- clutter_actor_set_background_color (flower[2], CLUTTER_COLOR_Green);
- clutter_actor_set_size (flower[2], 100, 100);
- clutter_actor_set_name (flower[2], "Green Flower");
- clutter_actor_add_child (vase, flower[2]);
-
- clutter_point_init (&p, 50, 50);
- clutter_test_assert_actor_at_point (stage, &p, flower[0]);
-
- clutter_point_init (&p, 150, 50);
- clutter_test_assert_actor_at_point (stage, &p, flower[1]);
-
- clutter_point_init (&p, 250, 50);
- clutter_test_assert_actor_at_point (stage, &p, flower[2]);
-}
-
-static void
-actor_margin_layout (void)
-{
- ClutterActor *stage = clutter_test_get_stage ();
- ClutterActor *vase;
- ClutterActor *flower[3];
- ClutterPoint p;
-
- vase = clutter_actor_new ();
- clutter_actor_set_name (vase, "Vase");
- clutter_actor_set_layout_manager (vase, clutter_box_layout_new ());
- clutter_actor_add_child (stage, vase);
-
- flower[0] = clutter_actor_new ();
- clutter_actor_set_background_color (flower[0], CLUTTER_COLOR_Red);
- clutter_actor_set_size (flower[0], 100, 100);
- clutter_actor_set_name (flower[0], "Red Flower");
- clutter_actor_add_child (vase, flower[0]);
-
- flower[1] = clutter_actor_new ();
- clutter_actor_set_background_color (flower[1], CLUTTER_COLOR_Yellow);
- clutter_actor_set_size (flower[1], 100, 100);
- clutter_actor_set_name (flower[1], "Yellow Flower");
- clutter_actor_set_margin_right (flower[1], 6);
- clutter_actor_set_margin_left (flower[1], 6);
- clutter_actor_add_child (vase, flower[1]);
-
- flower[2] = clutter_actor_new ();
- clutter_actor_set_background_color (flower[2], CLUTTER_COLOR_Green);
- clutter_actor_set_size (flower[2], 100, 100);
- clutter_actor_set_name (flower[2], "Green Flower");
- clutter_actor_set_margin_top (flower[2], 6);
- clutter_actor_set_margin_bottom (flower[2], 6);
- clutter_actor_add_child (vase, flower[2]);
-
- clutter_point_init (&p, 0, 7);
- clutter_test_assert_actor_at_point (stage, &p, flower[0]);
-
- clutter_point_init (&p, 106, 50);
- clutter_test_assert_actor_at_point (stage, &p, flower[1]);
-
- clutter_point_init (&p, 212, 7);
- clutter_test_assert_actor_at_point (stage, &p, flower[2]);
-}
-
-CLUTTER_TEST_SUITE (
- CLUTTER_TEST_UNIT ("/actor/layout/basic", actor_basic_layout)
- CLUTTER_TEST_UNIT ("/actor/layout/margin", actor_margin_layout)
-)
diff --git a/clutter/tests/conform/actor-meta.c b/clutter/tests/conform/actor-meta.c
deleted file mode 100644
index 52a313d22..000000000
--- a/clutter/tests/conform/actor-meta.c
+++ /dev/null
@@ -1,40 +0,0 @@
-#include <stdlib.h>
-#include <string.h>
-
-#include <clutter/clutter.h>
-
-static void
-actor_meta_clear (void)
-{
- ClutterActor *actor, *stage;
-
- stage = clutter_test_get_stage ();
-
- actor = clutter_actor_new ();
- g_object_ref_sink (actor);
- g_object_add_weak_pointer (G_OBJECT (actor), (gpointer *) &actor);
-
- clutter_actor_add_action (actor, clutter_click_action_new ());
- clutter_actor_add_constraint (actor, clutter_bind_constraint_new (stage, CLUTTER_BIND_ALL, 0));
- clutter_actor_add_effect (actor, clutter_blur_effect_new ());
-
- g_assert (clutter_actor_has_actions (actor));
- g_assert (clutter_actor_has_constraints (actor));
- g_assert (clutter_actor_has_effects (actor));
-
- clutter_actor_clear_actions (actor);
- g_assert (!clutter_actor_has_actions (actor));
-
- clutter_actor_clear_constraints (actor);
- g_assert (!clutter_actor_has_constraints (actor));
-
- clutter_actor_clear_effects (actor);
- g_assert (!clutter_actor_has_effects (actor));
-
- clutter_actor_destroy (actor);
- g_assert (actor == NULL);
-}
-
-CLUTTER_TEST_SUITE (
- CLUTTER_TEST_UNIT ("/actor/meta/clear", actor_meta_clear)
-)
diff --git a/clutter/tests/conform/actor-offscreen-redirect.c b/clutter/tests/conform/actor-offscreen-redirect.c
deleted file mode 100644
index 9dbb7d2c5..000000000
--- a/clutter/tests/conform/actor-offscreen-redirect.c
+++ /dev/null
@@ -1,349 +0,0 @@
-#define CLUTTER_DISABLE_DEPRECATION_WARNINGS
-#include <clutter/clutter.h>
-
-typedef struct _FooActor FooActor;
-typedef struct _FooActorClass FooActorClass;
-
-struct _FooActorClass
-{
- ClutterActorClass parent_class;
-};
-
-struct _FooActor
-{
- ClutterActor parent;
-
- guint8 last_paint_opacity;
- int paint_count;
-};
-
-typedef struct
-{
- ClutterActor *stage;
- FooActor *foo_actor;
- ClutterActor *parent_container;
- ClutterActor *container;
- ClutterActor *child;
- ClutterActor *unrelated_actor;
- gboolean was_painted;
-} Data;
-
-GType foo_actor_get_type (void) G_GNUC_CONST;
-
-G_DEFINE_TYPE (FooActor, foo_actor, CLUTTER_TYPE_ACTOR);
-
-static gboolean group_has_overlaps;
-
-static void
-foo_actor_paint (ClutterActor *actor)
-{
- FooActor *foo_actor = (FooActor *) actor;
- ClutterActorBox allocation;
-
- foo_actor->last_paint_opacity = clutter_actor_get_paint_opacity (actor);
- foo_actor->paint_count++;
-
- clutter_actor_get_allocation_box (actor, &allocation);
-
- /* Paint a red rectangle with the right opacity */
- cogl_set_source_color4ub (255,
- 0,
- 0,
- foo_actor->last_paint_opacity);
- cogl_rectangle (allocation.x1,
- allocation.y1,
- allocation.x2,
- allocation.y2);
-}
-
-static gboolean
-foo_actor_get_paint_volume (ClutterActor *actor,
- ClutterPaintVolume *volume)
-{
- return clutter_paint_volume_set_from_allocation (volume, actor);
-}
-
-static gboolean
-foo_actor_has_overlaps (ClutterActor *actor)
-{
- return FALSE;
-}
-
-static void
-foo_actor_class_init (FooActorClass *klass)
-{
- ClutterActorClass *actor_class = (ClutterActorClass *) klass;
-
- actor_class->paint = foo_actor_paint;
- actor_class->get_paint_volume = foo_actor_get_paint_volume;
- actor_class->has_overlaps = foo_actor_has_overlaps;
-}
-
-static void
-foo_actor_init (FooActor *self)
-{
-}
-
-typedef struct _FooGroup FooGroup;
-typedef struct _FooGroupClass FooGroupClass;
-
-struct _FooGroupClass
-{
- ClutterActorClass parent_class;
-};
-
-struct _FooGroup
-{
- ClutterActor parent;
-};
-
-GType foo_group_get_type (void);
-
-G_DEFINE_TYPE (FooGroup, foo_group, CLUTTER_TYPE_ACTOR)
-
-static gboolean
-foo_group_has_overlaps (ClutterActor *actor)
-{
- return group_has_overlaps;
-}
-
-static void
-foo_group_class_init (FooGroupClass *klass)
-{
- ClutterActorClass *actor_class = (ClutterActorClass *) klass;
-
- actor_class->has_overlaps = foo_group_has_overlaps;
-}
-
-static void
-foo_group_init (FooGroup *self)
-{
-}
-
-static void
-verify_results (Data *data,
- guint8 expected_color_red,
- guint8 expected_color_green,
- guint8 expected_color_blue,
- int expected_paint_count,
- int expected_paint_opacity)
-{
- guchar *pixel;
-
- data->foo_actor->paint_count = 0;
-
- /* Read a pixel at the center of the to determine what color it
- painted. This should cause a redraw */
- pixel = clutter_stage_read_pixels (CLUTTER_STAGE (data->stage),
- 50, 50, /* x/y */
- 1, 1 /* width/height */);
-
- g_assert_cmpint (expected_paint_count, ==, data->foo_actor->paint_count);
- g_assert_cmpint (expected_paint_opacity,
- ==,
- data->foo_actor->last_paint_opacity);
-
- g_assert_cmpint (ABS ((int) expected_color_red - (int) pixel[0]), <=, 2);
- g_assert_cmpint (ABS ((int) expected_color_green - (int) pixel[1]), <=, 2);
- g_assert_cmpint (ABS ((int) expected_color_blue - (int) pixel[2]), <=, 2);
-
- g_free (pixel);
-}
-
-static void
-verify_redraw (Data *data, int expected_paint_count)
-{
- GMainLoop *main_loop = g_main_loop_new (NULL, TRUE);
- guint paint_handler;
-
- paint_handler = g_signal_connect_data (data->stage,
- "paint",
- G_CALLBACK (g_main_loop_quit),
- main_loop,
- NULL,
- G_CONNECT_SWAPPED | G_CONNECT_AFTER);
-
- /* Queue a redraw on the stage */
- clutter_actor_queue_redraw (data->stage);
-
- data->foo_actor->paint_count = 0;
-
- /* Wait for it to paint */
- g_main_loop_run (main_loop);
-
- g_signal_handler_disconnect (data->stage, paint_handler);
-
- g_assert_cmpint (data->foo_actor->paint_count, ==, expected_paint_count);
-}
-
-static gboolean
-verify_redraws (gpointer user_data)
-{
- Data *data = user_data;
-
- /* Queueing a redraw on the actor should cause a redraw */
- clutter_actor_queue_redraw (data->container);
- verify_redraw (data, 1);
-
- /* Queueing a redraw on a child should cause a redraw */
- clutter_actor_queue_redraw (data->child);
- verify_redraw (data, 1);
-
- /* Modifying the transformation on the parent should not cause a redraw,
- since the FBO stores pre-transformed rendering that can be reused with
- any transformation. */
- clutter_actor_set_anchor_point (data->parent_container, 0, 1);
- verify_redraw (data, 0);
-
- /* Redrawing an unrelated actor shouldn't cause a redraw */
- clutter_actor_set_position (data->unrelated_actor, 0, 1);
- verify_redraw (data, 0);
-
- data->was_painted = TRUE;
-
- return G_SOURCE_REMOVE;
-}
-
-static gboolean
-run_verify (gpointer user_data)
-{
- Data *data = user_data;
-
- group_has_overlaps = FALSE;
-
- /* By default the actor shouldn't be redirected so the redraw should
- cause the actor to be painted */
- verify_results (data,
- 255, 0, 0,
- 1,
- 255);
-
- /* Make the actor semi-transparent and verify the paint opacity */
- clutter_actor_set_opacity (data->container, 127);
- verify_results (data,
- 255, 127, 127,
- 1,
- 127);
-
- /* With automatic redirect for opacity it shouldn't redirect if
- * has_overlaps returns FALSE; */
- clutter_actor_set_offscreen_redirect
- (data->container, CLUTTER_OFFSCREEN_REDIRECT_AUTOMATIC_FOR_OPACITY);
- verify_results (data,
- 255, 127, 127,
- 1,
- 127);
-
- /* We do a double check here to verify that the actor wasn't cached
- * during the last check. If it was cached then this check wouldn't
- * result in any foo-actor re-paint. */
- verify_results (data,
- 255, 127, 127,
- 1,
- 127);
-
- /* With automatic redirect for opacity it should redirect if
- * has_overlaps returns TRUE.
- * The first paint will still cause the actor to draw because
- * it needs to fill the cache first. It should be painted with full
- * opacity */
- group_has_overlaps = TRUE;
-
- verify_results (data,
- 255, 127, 127,
- 1,
- 255);
-
- /* The second time the actor is painted it should be cached */
- verify_results (data,
- 255, 127, 127,
- 0,
- 255);
-
- /* We should be able to change the opacity without causing the actor
- to redraw */
- clutter_actor_set_opacity (data->container, 64);
- verify_results (data,
- 255, 191, 191,
- 0,
- 255);
-
- /* Changing it back to fully opaque should cause it not to go
- through the FBO so it will draw */
- clutter_actor_set_opacity (data->container, 255);
- verify_results (data,
- 255, 0, 0,
- 1,
- 255);
-
- /* Tell it to always redirect through the FBO. This should cause a
- paint of the actor because the last draw didn't go through the
- FBO */
- clutter_actor_set_offscreen_redirect (data->container,
- CLUTTER_OFFSCREEN_REDIRECT_ALWAYS);
- verify_results (data,
- 255, 0, 0,
- 1,
- 255);
-
- /* We should be able to change the opacity without causing the actor
- to redraw */
- clutter_actor_set_opacity (data->container, 64);
- verify_results (data,
- 255, 191, 191,
- 0,
- 255);
-
- /* Even changing it back to fully opaque shouldn't cause a redraw */
- clutter_actor_set_opacity (data->container, 255);
- verify_results (data,
- 255, 0, 0,
- 0,
- 255);
-
- /* Check redraws */
- g_idle_add (verify_redraws, data);
-
- return G_SOURCE_REMOVE;
-}
-
-static void
-actor_offscreen_redirect (void)
-{
- Data data = { 0 };
-
- if (!cogl_features_available (COGL_FEATURE_OFFSCREEN))
- return;
-
- data.stage = clutter_test_get_stage ();
- data.parent_container = clutter_actor_new ();
- data.container = g_object_new (foo_group_get_type (), NULL);
- data.foo_actor = g_object_new (foo_actor_get_type (), NULL);
- clutter_actor_set_size (CLUTTER_ACTOR (data.foo_actor), 100, 100);
-
- clutter_actor_add_child (data.container, CLUTTER_ACTOR (data.foo_actor));
- clutter_actor_add_child (data.parent_container, data.container);
- clutter_actor_add_child (data.stage, data.parent_container);
-
- data.child = clutter_actor_new ();
- clutter_actor_set_size (data.child, 1, 1);
- clutter_actor_add_child (data.container, data.child);
-
- data.unrelated_actor = clutter_actor_new ();
- clutter_actor_set_size (data.child, 1, 1);
- clutter_actor_add_child (data.stage, data.unrelated_actor);
-
- clutter_actor_show (data.stage);
-
- clutter_threads_add_repaint_func_full (CLUTTER_REPAINT_FLAGS_POST_PAINT,
- run_verify,
- &data,
- NULL);
-
- while (!data.was_painted)
- g_main_context_iteration (NULL, FALSE);
-}
-
-CLUTTER_TEST_SUITE (
- CLUTTER_TEST_UNIT ("/actor/offscreen/redirect", actor_offscreen_redirect)
-)
diff --git a/clutter/tests/conform/actor-paint-opacity.c b/clutter/tests/conform/actor-paint-opacity.c
deleted file mode 100644
index 6df240872..000000000
--- a/clutter/tests/conform/actor-paint-opacity.c
+++ /dev/null
@@ -1,141 +0,0 @@
-#include <clutter/clutter.h>
-#include <stdlib.h>
-
-static void
-opacity_label (void)
-{
- ClutterActor *stage;
- ClutterActor *label;
- ClutterColor label_color = { 255, 0, 0, 128 };
- ClutterColor color_check = { 0, };
-
- stage = clutter_test_get_stage ();
-
- label = clutter_text_new_with_text ("Sans 18px", "Label, 50% opacity");
- clutter_text_set_color (CLUTTER_TEXT (label), &label_color);
-
- if (g_test_verbose ())
- g_print ("label 50%%.get_color()/1\n");
- clutter_text_get_color (CLUTTER_TEXT (label), &color_check);
- g_assert (color_check.alpha == label_color.alpha);
-
- clutter_actor_add_child (stage, label);
- clutter_actor_set_position (label, 10, 10);
-
- if (g_test_verbose ())
- g_print ("label 50%%.get_color()/2\n");
- clutter_text_get_color (CLUTTER_TEXT (label), &color_check);
- g_assert (color_check.alpha == label_color.alpha);
-
- if (g_test_verbose ())
- g_print ("label 50%%.get_paint_opacity()/1\n");
- g_assert (clutter_actor_get_paint_opacity (label) == 255);
-
- if (g_test_verbose ())
- g_print ("label 50%%.get_paint_opacity()/2\n");
- clutter_actor_set_opacity (label, 128);
- g_assert (clutter_actor_get_paint_opacity (label) == 128);
-}
-
-G_GNUC_BEGIN_IGNORE_DEPRECATIONS
-static void
-opacity_rectangle (void)
-{
- ClutterActor *stage;
- ClutterActor *rect;
- ClutterColor rect_color = { 0, 0, 255, 255 };
- ClutterColor color_check = { 0, };
-
- stage = clutter_test_get_stage ();
-
- rect = clutter_rectangle_new_with_color (&rect_color);
- clutter_actor_set_size (rect, 128, 128);
- clutter_actor_set_position (rect, 150, 90);
-
- if (g_test_verbose ())
- g_print ("rect 100%%.get_color()/1\n");
- clutter_rectangle_get_color (CLUTTER_RECTANGLE (rect), &color_check);
- g_assert (color_check.alpha == rect_color.alpha);
-
- clutter_actor_add_child (stage, rect);
-
- if (g_test_verbose ())
- g_print ("rect 100%%.get_color()/2\n");
- clutter_rectangle_get_color (CLUTTER_RECTANGLE (rect), &color_check);
- g_assert (color_check.alpha == rect_color.alpha);
-
- if (g_test_verbose ())
- g_print ("rect 100%%.get_paint_opacity()\n");
- g_assert (clutter_actor_get_paint_opacity (rect) == 255);
-}
-G_GNUC_END_IGNORE_DEPRECATIONS
-
-G_GNUC_BEGIN_IGNORE_DEPRECATIONS
-static void
-opacity_paint (void)
-{
- ClutterActor *stage, *group1, *group2;
- ClutterActor *label, *rect;
- ClutterColor label_color = { 255, 0, 0, 128 };
- ClutterColor rect_color = { 0, 0, 255, 255 };
- ClutterColor color_check = { 0, };
-
- stage = clutter_test_get_stage ();
-
- group1 = clutter_group_new ();
- clutter_actor_set_opacity (group1, 128);
- clutter_container_add (CLUTTER_CONTAINER (stage), group1, NULL);
- clutter_actor_set_position (group1, 10, 30);
- clutter_actor_show (group1);
-
- label = clutter_text_new_with_text ("Sans 18px", "Label+Group, 25% opacity");
- clutter_text_set_color (CLUTTER_TEXT (label), &label_color);
-
- if (g_test_verbose ())
- g_print ("label 50%% + group 50%%.get_color()/1\n");
- clutter_text_get_color (CLUTTER_TEXT (label), &color_check);
- g_assert (color_check.alpha == label_color.alpha);
-
- clutter_container_add (CLUTTER_CONTAINER (group1), label, NULL);
-
- if (g_test_verbose ())
- g_print ("label 50%% + group 50%%.get_color()/2\n");
- clutter_text_get_color (CLUTTER_TEXT (label), &color_check);
- g_assert (color_check.alpha == label_color.alpha);
-
- if (g_test_verbose ())
- g_print ("label 50%% + group 50%%.get_paint_opacity() = 128\n");
- g_assert (clutter_actor_get_paint_opacity (label) == 128);
-
- clutter_actor_destroy (label);
-
- group2 = clutter_group_new ();
- clutter_container_add (CLUTTER_CONTAINER (group1), group2, NULL);
- clutter_actor_set_position (group2, 10, 60);
-
- rect = clutter_rectangle_new_with_color (&rect_color);
- clutter_actor_set_size (rect, 128, 128);
-
- if (g_test_verbose ())
- g_print ("rect 100%% + group 100%% + group 50%%.get_color()/1\n");
- clutter_rectangle_get_color (CLUTTER_RECTANGLE (rect), &color_check);
- g_assert (color_check.alpha == rect_color.alpha);
-
- clutter_container_add (CLUTTER_CONTAINER (group2), rect, NULL);
-
- if (g_test_verbose ())
- g_print ("rect 100%% + group 100%% + group 50%%.get_color()/2\n");
- clutter_rectangle_get_color (CLUTTER_RECTANGLE (rect), &color_check);
- g_assert (color_check.alpha == rect_color.alpha);
-
- if (g_test_verbose ())
- g_print ("rect 100%%.get_paint_opacity()\n");
- g_assert (clutter_actor_get_paint_opacity (rect) == 128);
-}
-G_GNUC_END_IGNORE_DEPRECATIONS
-
-CLUTTER_TEST_SUITE (
- CLUTTER_TEST_UNIT ("/actor/opacity/text", opacity_label)
- CLUTTER_TEST_UNIT ("/actor/opacity/rectangle", opacity_rectangle)
- CLUTTER_TEST_UNIT ("/actor/opacity/paint", opacity_paint)
-)
diff --git a/clutter/tests/conform/actor-pick.c b/clutter/tests/conform/actor-pick.c
deleted file mode 100644
index 969b4920a..000000000
--- a/clutter/tests/conform/actor-pick.c
+++ /dev/null
@@ -1,311 +0,0 @@
-#define CLUTTER_DISABLE_DEPRECATION_WARNINGS
-#include <clutter/clutter.h>
-
-#define STAGE_WIDTH 640
-#define STAGE_HEIGHT 480
-#define ACTORS_X 12
-#define ACTORS_Y 16
-#define SHIFT_STEP STAGE_WIDTH / ACTORS_X
-
-typedef struct _State State;
-
-struct _State
-{
- ClutterActor *stage;
- int y, x;
- ClutterActor *actors[ACTORS_X * ACTORS_Y];
- guint actor_width, actor_height;
- guint failed_pass;
- guint failed_idx;
- gboolean pass;
-};
-
-struct _ShiftEffect
-{
- ClutterShaderEffect parent_instance;
-};
-
-struct _ShiftEffectClass
-{
- ClutterShaderEffectClass parent_class;
-};
-
-typedef struct _ShiftEffect ShiftEffect;
-typedef struct _ShiftEffectClass ShiftEffectClass;
-
-#define TYPE_SHIFT_EFFECT (shift_effect_get_type ())
-
-GType shift_effect_get_type (void);
-
-G_DEFINE_TYPE (ShiftEffect,
- shift_effect,
- CLUTTER_TYPE_SHADER_EFFECT);
-
-static void
-shader_paint (ClutterEffect *effect,
- ClutterEffectPaintFlags flags)
-{
- ClutterShaderEffect *shader = CLUTTER_SHADER_EFFECT (effect);
- float tex_width;
- ClutterActor *actor =
- clutter_actor_meta_get_actor (CLUTTER_ACTOR_META (effect));
-
- if (g_test_verbose ())
- g_debug ("shader_paint");
-
- clutter_shader_effect_set_shader_source (shader,
- "uniform sampler2D tex;\n"
- "uniform float step;\n"
- "void main (void)\n"
- "{\n"
- " cogl_color_out = texture2D(tex, vec2 (cogl_tex_coord_in[0].s + step,\n"
- " cogl_tex_coord_in[0].t));\n"
- "}\n");
-
- tex_width = clutter_actor_get_width (actor);
-
- clutter_shader_effect_set_uniform (shader, "tex", G_TYPE_INT, 1, 0);
- clutter_shader_effect_set_uniform (shader, "step", G_TYPE_FLOAT, 1,
- SHIFT_STEP / tex_width);
-
- CLUTTER_EFFECT_CLASS (shift_effect_parent_class)->paint (effect, flags);
-}
-
-static void
-shader_pick (ClutterEffect *effect,
- ClutterEffectPaintFlags flags)
-{
- shader_paint (effect, flags);
-}
-
-static void
-shift_effect_class_init (ShiftEffectClass *klass)
-{
- ClutterEffectClass *shader_class = CLUTTER_EFFECT_CLASS (klass);
-
- shader_class->paint = shader_paint;
- shader_class->pick = shader_pick;
-}
-
-static void
-shift_effect_init (ShiftEffect *self)
-{
-}
-
-static const char *test_passes[] = {
- "No covering actor",
- "Invisible covering actor",
- "Clipped covering actor",
- "Blur effect",
- "Shift effect",
-};
-
-static gboolean
-on_timeout (gpointer data)
-{
- State *state = data;
- int test_num = 0;
- int y, x;
- ClutterActor *over_actor = NULL;
-
- /* This will cause an unclipped pick redraw that will get buffered.
- We'll check below that this buffer is discarded because we also need
- to pick non-reactive actors */
- clutter_stage_get_actor_at_pos (CLUTTER_STAGE (state->stage),
- CLUTTER_PICK_REACTIVE, 10, 10);
-
- clutter_stage_get_actor_at_pos (CLUTTER_STAGE (state->stage),
- CLUTTER_PICK_REACTIVE, 10, 10);
-
- for (test_num = 0; test_num < G_N_ELEMENTS (test_passes); test_num++)
- {
- if (test_num == 0)
- {
- if (g_test_verbose ())
- g_print ("No covering actor:\n");
- }
- if (test_num == 1)
- {
- static const ClutterColor red = { 0xff, 0x00, 0x00, 0xff };
- /* Create an actor that covers the whole stage but that
- isn't visible so it shouldn't affect the picking */
- over_actor = clutter_rectangle_new_with_color (&red);
- clutter_actor_set_size (over_actor, STAGE_WIDTH, STAGE_HEIGHT);
- clutter_actor_add_child (state->stage, over_actor);
- clutter_actor_hide (over_actor);
-
- if (g_test_verbose ())
- g_print ("Invisible covering actor:\n");
- }
- else if (test_num == 2)
- {
- /* Make the actor visible but set a clip so that only some
- of the actors are accessible */
- clutter_actor_show (over_actor);
- clutter_actor_set_clip (over_actor,
- state->actor_width * 2,
- state->actor_height * 2,
- state->actor_width * (ACTORS_X - 4),
- state->actor_height * (ACTORS_Y - 4));
-
- if (g_test_verbose ())
- g_print ("Clipped covering actor:\n");
- }
- else if (test_num == 3)
- {
- if (!clutter_feature_available (CLUTTER_FEATURE_SHADERS_GLSL))
- continue;
-
- clutter_actor_hide (over_actor);
-
- clutter_actor_add_effect_with_name (CLUTTER_ACTOR (state->stage),
- "blur",
- clutter_blur_effect_new ());
-
- if (g_test_verbose ())
- g_print ("With blur effect:\n");
- }
- else if (test_num == 4)
- {
- if (!clutter_feature_available (CLUTTER_FEATURE_SHADERS_GLSL))
- continue;
-
- clutter_actor_hide (over_actor);
- clutter_actor_remove_effect_by_name (CLUTTER_ACTOR (state->stage),
- "blur");
-
- clutter_actor_add_effect_with_name (CLUTTER_ACTOR (state->stage),
- "shift",
- g_object_new (TYPE_SHIFT_EFFECT,
- NULL));
-
- if (g_test_verbose ())
- g_print ("With shift effect:\n");
- }
-
- for (y = 0; y < ACTORS_Y; y++)
- {
- if (test_num == 4)
- x = 1;
- else
- x = 0;
-
- for (; x < ACTORS_X; x++)
- {
- gboolean pass = FALSE;
- gfloat pick_x;
- ClutterActor *actor;
-
- pick_x = x * state->actor_width + state->actor_width / 2;
-
- if (test_num == 4)
- pick_x -= SHIFT_STEP;
-
- actor =
- clutter_stage_get_actor_at_pos (CLUTTER_STAGE (state->stage),
- CLUTTER_PICK_ALL,
- pick_x,
- y * state->actor_height
- + state->actor_height / 2);
-
- if (g_test_verbose ())
- g_print ("% 3i,% 3i / %p -> ",
- x, y, state->actors[y * ACTORS_X + x]);
-
- if (actor == NULL)
- {
- if (g_test_verbose ())
- g_print ("NULL: FAIL\n");
- }
- else if (actor == over_actor)
- {
- if (test_num == 2
- && x >= 2 && x < ACTORS_X - 2
- && y >= 2 && y < ACTORS_Y - 2)
- pass = TRUE;
-
- if (g_test_verbose ())
- g_print ("over_actor: %s\n", pass ? "pass" : "FAIL");
- }
- else
- {
- if (actor == state->actors[y * ACTORS_X + x]
- && (test_num != 2
- || x < 2 || x >= ACTORS_X - 2
- || y < 2 || y >= ACTORS_Y - 2))
- pass = TRUE;
-
- if (g_test_verbose ())
- g_print ("%p: %s\n", actor, pass ? "pass" : "FAIL");
- }
-
- if (!pass)
- {
- state->failed_pass = test_num;
- state->failed_idx = y * ACTORS_X + x;
- state->pass = FALSE;
- }
- }
- }
- }
-
- clutter_main_quit ();
-
- return G_SOURCE_REMOVE;
-}
-
-static void
-actor_pick (void)
-{
- int y, x;
- State state;
-
- state.pass = TRUE;
-
- state.stage = clutter_test_get_stage ();
-
- state.actor_width = STAGE_WIDTH / ACTORS_X;
- state.actor_height = STAGE_HEIGHT / ACTORS_Y;
-
- for (y = 0; y < ACTORS_Y; y++)
- for (x = 0; x < ACTORS_X; x++)
- {
- ClutterColor color = { x * 255 / (ACTORS_X - 1),
- y * 255 / (ACTORS_Y - 1),
- 128, 255 };
- ClutterActor *rect = clutter_rectangle_new_with_color (&color);
-
- clutter_actor_set_position (rect,
- x * state.actor_width,
- y * state.actor_height);
- clutter_actor_set_size (rect,
- state.actor_width,
- state.actor_height);
-
- clutter_actor_add_child (state.stage, rect);
-
- state.actors[y * ACTORS_X + x] = rect;
- }
-
- clutter_actor_show (state.stage);
-
- clutter_threads_add_idle (on_timeout, &state);
-
- clutter_main ();
-
- if (g_test_verbose ())
- {
- if (!state.pass)
- g_test_message ("Failed pass: %s[%d], actor index: %d [%p]\n",
- test_passes[state.failed_pass],
- state.failed_pass,
- state.failed_idx,
- state.actors[state.failed_idx]);
- }
-
- g_assert (state.pass);
-}
-
-CLUTTER_TEST_SUITE (
- CLUTTER_TEST_UNIT ("/actor/pick", actor_pick)
-)
diff --git a/clutter/tests/conform/actor-shader-effect.c b/clutter/tests/conform/actor-shader-effect.c
deleted file mode 100644
index ac99c5b40..000000000
--- a/clutter/tests/conform/actor-shader-effect.c
+++ /dev/null
@@ -1,288 +0,0 @@
-#define CLUTTER_ENABLE_EXPERIMENTAL_API
-#define CLUTTER_DISABLE_DEPRECATION_WARNINGS
-#include <clutter/clutter.h>
-
-/****************************************************************
- Old style shader effect
- This uses clutter_shader_effect_set_source
- ****************************************************************/
-
-static const gchar
-old_shader_effect_source[] =
- "uniform vec3 override_color;\n"
- "\n"
- "void\n"
- "main ()\n"
- "{\n"
- " cogl_color_out = vec4 (override_color, 1.0);\n"
- "}";
-
-typedef struct _FooOldShaderEffectClass
-{
- ClutterShaderEffectClass parent_class;
-} FooOldShaderEffectClass;
-
-typedef struct _FooOldShaderEffect
-{
- ClutterShaderEffect parent;
-} FooOldShaderEffect;
-
-GType foo_old_shader_effect_get_type (void);
-
-G_DEFINE_TYPE (FooOldShaderEffect,
- foo_old_shader_effect,
- CLUTTER_TYPE_SHADER_EFFECT);
-
-static void
-foo_old_shader_effect_paint_target (ClutterOffscreenEffect *effect)
-{
- clutter_shader_effect_set_shader_source (CLUTTER_SHADER_EFFECT (effect),
- old_shader_effect_source);
- clutter_shader_effect_set_uniform (CLUTTER_SHADER_EFFECT (effect),
- "override_color",
- G_TYPE_FLOAT, 3,
- 1.0f, 0.0f, 0.0f);
-
- CLUTTER_OFFSCREEN_EFFECT_CLASS (foo_old_shader_effect_parent_class)->
- paint_target (effect);
-}
-
-static void
-foo_old_shader_effect_class_init (FooOldShaderEffectClass *klass)
-{
- ClutterOffscreenEffectClass *offscreen_effect_class =
- CLUTTER_OFFSCREEN_EFFECT_CLASS (klass);
-
- offscreen_effect_class->paint_target = foo_old_shader_effect_paint_target;
-}
-
-static void
-foo_old_shader_effect_init (FooOldShaderEffect *self)
-{
-}
-
-/****************************************************************
- New style shader effect
- This overrides get_static_shader_source()
- ****************************************************************/
-
-static const gchar
-new_shader_effect_source[] =
- "uniform vec3 override_color;\n"
- "\n"
- "void\n"
- "main ()\n"
- "{\n"
- " cogl_color_out = (vec4 (override_color, 1.0) +\n"
- " vec4 (0.0, 0.0, 1.0, 0.0));\n"
- "}";
-
-typedef struct _FooNewShaderEffectClass
-{
- ClutterShaderEffectClass parent_class;
-} FooNewShaderEffectClass;
-
-typedef struct _FooNewShaderEffect
-{
- ClutterShaderEffect parent;
-} FooNewShaderEffect;
-
-GType foo_new_shader_effect_get_type (void);
-
-G_DEFINE_TYPE (FooNewShaderEffect,
- foo_new_shader_effect,
- CLUTTER_TYPE_SHADER_EFFECT);
-
-static gchar *
-foo_new_shader_effect_get_static_source (ClutterShaderEffect *effect)
-{
- static gboolean already_called = FALSE;
-
- /* This should only be called once even though we have two actors
- using this effect */
- g_assert (!already_called);
-
- already_called = TRUE;
-
- return g_strdup (new_shader_effect_source);
-}
-
-static void
-foo_new_shader_effect_paint_target (ClutterOffscreenEffect *effect)
-{
- clutter_shader_effect_set_uniform (CLUTTER_SHADER_EFFECT (effect),
- "override_color",
- G_TYPE_FLOAT, 3,
- 0.0f, 1.0f, 0.0f);
-
- CLUTTER_OFFSCREEN_EFFECT_CLASS (foo_new_shader_effect_parent_class)->
- paint_target (effect);
-}
-
-static void
-foo_new_shader_effect_class_init (FooNewShaderEffectClass *klass)
-{
- ClutterOffscreenEffectClass *offscreen_effect_class =
- CLUTTER_OFFSCREEN_EFFECT_CLASS (klass);
- ClutterShaderEffectClass *shader_effect_class =
- CLUTTER_SHADER_EFFECT_CLASS (klass);
-
- offscreen_effect_class->paint_target = foo_new_shader_effect_paint_target;
-
- shader_effect_class->get_static_shader_source =
- foo_new_shader_effect_get_static_source;
-}
-
-static void
-foo_new_shader_effect_init (FooNewShaderEffect *self)
-{
-}
-
-/****************************************************************
- Another new style shader effect
- This is the same but with a different shader. This is just
- sanity check that each class gets its own copy of the private
- data
- ****************************************************************/
-
-static const gchar
-another_new_shader_effect_source[] =
- "\n"
- "void\n"
- "main ()\n"
- "{\n"
- " cogl_color_out = vec4 (1.0, 0.0, 1.0, 1.0);\n"
- "}";
-
-typedef struct _FooAnotherNewShaderEffectClass
-{
- ClutterShaderEffectClass parent_class;
-} FooAnotherNewShaderEffectClass;
-
-typedef struct _FooAnotherNewShaderEffect
-{
- ClutterShaderEffect parent;
-} FooAnotherNewShaderEffect;
-
-GType foo_another_new_shader_effect_get_type (void);
-
-G_DEFINE_TYPE (FooAnotherNewShaderEffect,
- foo_another_new_shader_effect,
- CLUTTER_TYPE_SHADER_EFFECT);
-
-static gchar *
-foo_another_new_shader_effect_get_static_source (ClutterShaderEffect *effect)
-{
- return g_strdup (another_new_shader_effect_source);
-}
-
-static void
-foo_another_new_shader_effect_class_init (FooAnotherNewShaderEffectClass *klass)
-{
- ClutterShaderEffectClass *shader_effect_class =
- CLUTTER_SHADER_EFFECT_CLASS (klass);
-
- shader_effect_class->get_static_shader_source =
- foo_another_new_shader_effect_get_static_source;
-}
-
-static void
-foo_another_new_shader_effect_init (FooAnotherNewShaderEffect *self)
-{
-}
-
-/****************************************************************/
-
-static ClutterActor *
-make_actor (GType shader_type)
-{
- ClutterActor *rect;
- const ClutterColor white = { 0xff, 0xff, 0xff, 0xff };
-
- rect = clutter_rectangle_new ();
- clutter_rectangle_set_color (CLUTTER_RECTANGLE (rect), &white);
- clutter_actor_set_size (rect, 50, 50);
-
- clutter_actor_add_effect (rect, g_object_new (shader_type, NULL));
-
- return rect;
-}
-
-static guint32
-get_pixel (CoglFramebuffer *fb,
- int x,
- int y)
-{
- guint8 data[4];
-
- cogl_framebuffer_read_pixels (fb,
- x, y, 1, 1,
- COGL_PIXEL_FORMAT_RGBA_8888_PRE,
- data);
-
- return (((guint32) data[0] << 16) |
- ((guint32) data[1] << 8) |
- data[2]);
-}
-
-static void
-view_painted_cb (ClutterStage *stage,
- ClutterStageView *view,
- gpointer data)
-{
- CoglFramebuffer *fb = clutter_stage_view_get_framebuffer (view);
- gboolean *was_painted = data;
-
- /* old shader effect */
- g_assert_cmpint (get_pixel (fb, 0, 25), ==, 0xff0000);
- /* new shader effect */
- g_assert_cmpint (get_pixel (fb, 100, 25), ==, 0x00ffff);
- /* another new shader effect */
- g_assert_cmpint (get_pixel (fb, 200, 25), ==, 0xff00ff);
- /* new shader effect */
- g_assert_cmpint (get_pixel (fb, 300, 25), ==, 0x00ffff);
-
- *was_painted = TRUE;
-}
-
-static void
-actor_shader_effect (void)
-{
- ClutterActor *stage;
- ClutterActor *rect;
- gboolean was_painted;
-
- if (!clutter_feature_available (CLUTTER_FEATURE_SHADERS_GLSL))
- return;
-
- stage = clutter_stage_new ();
-
- rect = make_actor (foo_old_shader_effect_get_type ());
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), rect);
-
- rect = make_actor (foo_new_shader_effect_get_type ());
- clutter_actor_set_x (rect, 100);
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), rect);
-
- rect = make_actor (foo_another_new_shader_effect_get_type ());
- clutter_actor_set_x (rect, 200);
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), rect);
-
- rect = make_actor (foo_new_shader_effect_get_type ());
- clutter_actor_set_x (rect, 300);
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), rect);
-
- clutter_actor_show (stage);
-
- was_painted = FALSE;
- g_signal_connect_after (stage, "paint-view",
- G_CALLBACK (view_painted_cb),
- &was_painted);
-
- while (!was_painted)
- g_main_context_iteration (NULL, FALSE);
-}
-
-CLUTTER_TEST_SUITE (
- CLUTTER_TEST_UNIT ("/actor/shader-effect", actor_shader_effect)
-)
diff --git a/clutter/tests/conform/actor-size.c b/clutter/tests/conform/actor-size.c
deleted file mode 100644
index 7245f157d..000000000
--- a/clutter/tests/conform/actor-size.c
+++ /dev/null
@@ -1,216 +0,0 @@
-#include <stdlib.h>
-#include <string.h>
-
-#include <clutter/clutter.h>
-
-#define TEST_TYPE_ACTOR (test_actor_get_type ())
-
-typedef struct _TestActor TestActor;
-typedef struct _ClutterActorClass TestActorClass;
-
-struct _TestActor
-{
- ClutterActor parent_instance;
-
- guint preferred_width_called : 1;
- guint preferred_height_called : 1;
-};
-
-GType test_actor_get_type (void);
-
-G_DEFINE_TYPE (TestActor, test_actor, CLUTTER_TYPE_ACTOR);
-
-static void
-test_actor_get_preferred_width (ClutterActor *self,
- gfloat for_height,
- gfloat *min_width_p,
- gfloat *nat_width_p)
-{
- TestActor *test = (TestActor *) self;
-
- test->preferred_width_called = TRUE;
-
- if (for_height == 10)
- {
- *min_width_p = 10;
- *nat_width_p = 100;
- }
- else
- {
- *min_width_p = 100;
- *nat_width_p = 100;
- }
-}
-
-static void
-test_actor_get_preferred_height (ClutterActor *self,
- gfloat for_width,
- gfloat *min_height_p,
- gfloat *nat_height_p)
-{
- TestActor *test = (TestActor *) self;
-
- test->preferred_height_called = TRUE;
-
- if (for_width == 10)
- {
- *min_height_p = 50;
- *nat_height_p = 100;
- }
- else
- {
- *min_height_p = 100;
- *nat_height_p = 100;
- }
-}
-
-static void
-test_actor_class_init (TestActorClass *klass)
-{
- ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
-
- actor_class->get_preferred_width = test_actor_get_preferred_width;
- actor_class->get_preferred_height = test_actor_get_preferred_height;
-}
-
-static void
-test_actor_init (TestActor *self)
-{
-}
-
-static void
-actor_preferred_size (void)
-{
- ClutterActor *test;
- TestActor *self;
- gfloat min_width, min_height;
- gfloat nat_width, nat_height;
-
- test = g_object_new (TEST_TYPE_ACTOR, NULL);
- self = (TestActor *) test;
-
- if (g_test_verbose ())
- g_print ("Preferred size\n");
-
- clutter_actor_get_preferred_size (test,
- &min_width, &min_height,
- &nat_width, &nat_height);
-
- g_assert (self->preferred_width_called);
- g_assert (self->preferred_height_called);
- g_assert_cmpfloat (min_width, ==, 100);
- g_assert_cmpfloat (min_height, ==, 100);
- g_assert_cmpfloat (nat_width, ==, min_width);
- g_assert_cmpfloat (nat_height, ==, min_height);
-
- if (g_test_verbose ())
- g_print ("Preferred width\n");
- self->preferred_width_called = FALSE;
- clutter_actor_get_preferred_width (test, 10, &min_width, &nat_width);
- g_assert (self->preferred_width_called);
- g_assert_cmpfloat (min_width, ==, 10);
- g_assert_cmpfloat (nat_width, ==, 100);
-
- if (g_test_verbose ())
- g_print ("Preferred height\n");
- self->preferred_height_called = FALSE;
- clutter_actor_get_preferred_height (test, 200, &min_height, &nat_height);
- g_assert (self->preferred_height_called);
- g_assert_cmpfloat (min_height, !=, 10);
- g_assert_cmpfloat (nat_height, ==, 100);
-
- if (g_test_verbose ())
- g_print ("Preferred width (cached)\n");
- self->preferred_width_called = FALSE;
- clutter_actor_get_preferred_width (test, 10, &min_width, &nat_width);
- g_assert (!self->preferred_width_called);
- g_assert_cmpfloat (min_width, ==, 10);
- g_assert_cmpfloat (nat_width, ==, 100);
-
- if (g_test_verbose ())
- g_print ("Preferred height (cache eviction)\n");
- self->preferred_height_called = FALSE;
- clutter_actor_get_preferred_height (test, 10, &min_height, &nat_height);
- g_assert (self->preferred_height_called);
- g_assert_cmpfloat (min_height, ==, 50);
- g_assert_cmpfloat (nat_height, ==, 100);
-
- clutter_actor_destroy (test);
-}
-
-static void
-actor_fixed_size (void)
-{
- ClutterActor *rect;
- gboolean min_width_set, nat_width_set;
- gboolean min_height_set, nat_height_set;
- gfloat min_width, min_height;
- gfloat nat_width, nat_height;
-
- rect = clutter_actor_new ();
- g_object_ref_sink (rect);
-
- if (g_test_verbose ())
- g_print ("Initial size is 0\n");
-
- g_assert_cmpfloat (clutter_actor_get_width (rect), ==, 0);
- g_assert_cmpfloat (clutter_actor_get_height (rect), ==, 0);
-
- clutter_actor_set_size (rect, 100, 100);
-
- if (g_test_verbose ())
- g_print ("Explicit size set\n");
-
- g_assert_cmpfloat (clutter_actor_get_width (rect), ==, 100);
- g_assert_cmpfloat (clutter_actor_get_height (rect), ==, 100);
-
- g_object_get (G_OBJECT (rect),
- "min-width-set", &min_width_set,
- "min-height-set", &min_height_set,
- "natural-width-set", &nat_width_set,
- "natural-height-set", &nat_height_set,
- NULL);
-
- if (g_test_verbose ())
- g_print ("Notification properties\n");
-
- g_assert (min_width_set && nat_width_set);
- g_assert (min_height_set && nat_height_set);
-
- clutter_actor_get_preferred_size (rect,
- &min_width, &min_height,
- &nat_width, &nat_height);
-
- if (g_test_verbose ())
- g_print ("Preferred size\n");
-
- g_assert_cmpfloat (min_width, ==, 100);
- g_assert_cmpfloat (min_height, ==, 100);
- g_assert_cmpfloat (min_width, ==, nat_width);
- g_assert_cmpfloat (min_height, ==, nat_height);
-
- clutter_actor_set_size (rect, -1, -1);
-
- if (g_test_verbose ())
- g_print ("Explicit size unset\n");
-
- g_object_get (G_OBJECT (rect),
- "min-width-set", &min_width_set,
- "min-height-set", &min_height_set,
- "natural-width-set", &nat_width_set,
- "natural-height-set", &nat_height_set,
- NULL);
- g_assert (!min_width_set && !nat_width_set);
- g_assert (!min_height_set && !nat_height_set);
-
- g_assert_cmpfloat (clutter_actor_get_width (rect), ==, 0);
- g_assert_cmpfloat (clutter_actor_get_height (rect), ==, 0);
-
- clutter_actor_destroy (rect);
- g_object_unref (rect);
-}
-
-CLUTTER_TEST_SUITE (
- CLUTTER_TEST_UNIT ("/actor/size/preferred", actor_preferred_size)
- CLUTTER_TEST_UNIT ("/actor/size/fixed", actor_fixed_size)
-)
diff --git a/clutter/tests/conform/behaviours.c b/clutter/tests/conform/behaviours.c
deleted file mode 100644
index 6c531beff..000000000
--- a/clutter/tests/conform/behaviours.c
+++ /dev/null
@@ -1,80 +0,0 @@
-#define CLUTTER_DISABLE_DEPRECATION_WARNINGS
-#include <clutter/clutter.h>
-
-static void
-behaviour_opacity (void)
-{
- ClutterBehaviour *behaviour;
- ClutterTimeline *timeline;
- ClutterAlpha *alpha;
- guint8 start, end;
- guint starti;
-
- timeline = clutter_timeline_new (500);
- alpha = clutter_alpha_new_full (timeline, CLUTTER_LINEAR);
- behaviour = clutter_behaviour_opacity_new (alpha, 0, 255);
- g_assert (CLUTTER_IS_BEHAVIOUR_OPACITY (behaviour));
- g_object_add_weak_pointer (G_OBJECT (behaviour), (gpointer *) &behaviour);
- g_object_add_weak_pointer (G_OBJECT (timeline), (gpointer *) &timeline);
-
- clutter_behaviour_opacity_get_bounds (CLUTTER_BEHAVIOUR_OPACITY (behaviour),
- &start,
- &end);
-
- if (g_test_verbose ())
- g_print ("BehaviourOpacity:bounds = %d, %d (expected: 0, 255)\n",
- start,
- end);
-
- g_assert_cmpint (start, ==, 0);
- g_assert_cmpint (end, ==, 255);
-
- clutter_behaviour_opacity_set_bounds (CLUTTER_BEHAVIOUR_OPACITY (behaviour),
- 255,
- 0);
- /* XXX: The gobject property is actually a unsigned int not unsigned char
- * property so we have to be careful not to corrupt the stack by passing
- * a guint8 pointer here... */
- starti = 0;
- g_object_get (G_OBJECT (behaviour), "opacity-start", &starti, NULL);
-
- if (g_test_verbose ())
- g_print ("BehaviourOpacity:start = %d (expected: 255)\n", start);
-
- g_assert_cmpint (starti, ==, 255);
-
- g_object_unref (behaviour);
- g_object_unref (timeline);
-
- g_assert_null (behaviour);
- g_assert_null (timeline);
-}
-
-static struct
-{
- const gchar *path;
- GTestFunc func;
-} behaviour_tests[] = {
- { "opacity", behaviour_opacity },
-};
-
-static const int n_behaviour_tests = G_N_ELEMENTS (behaviour_tests);
-
-int
-main (int argc, char *argv[])
-{
- int i;
-
- clutter_test_init (&argc, &argv);
-
- for (i = 0; i < n_behaviour_tests; i++)
- {
- char *path = g_strconcat ("/behaviours/", behaviour_tests[i].path, NULL);
-
- clutter_test_add (path, behaviour_tests[i].func);
-
- g_free (path);
- }
-
- return clutter_test_run ();
-}
diff --git a/clutter/tests/conform/binding-pool.c b/clutter/tests/conform/binding-pool.c
deleted file mode 100644
index 4e4752b6b..000000000
--- a/clutter/tests/conform/binding-pool.c
+++ /dev/null
@@ -1,297 +0,0 @@
-#include <string.h>
-
-#include <clutter/clutter.h>
-
-#define TYPE_KEY_GROUP (key_group_get_type ())
-#define KEY_GROUP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_KEY_GROUP, KeyGroup))
-#define IS_KEY_GROUP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_KEY_GROUP))
-#define KEY_GROUP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_KEY_GROUP, KeyGroupClass))
-#define IS_KEY_GROUP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_KEY_GROUP))
-
-typedef struct _KeyGroup KeyGroup;
-typedef struct _KeyGroupClass KeyGroupClass;
-
-struct _KeyGroup
-{
- ClutterActor parent_instance;
-
- gint selected_index;
-};
-
-struct _KeyGroupClass
-{
- ClutterActorClass parent_class;
-
- void (* activate) (KeyGroup *group,
- ClutterActor *child);
-};
-
-GType key_group_get_type (void);
-
-G_DEFINE_TYPE (KeyGroup, key_group, CLUTTER_TYPE_ACTOR)
-
-enum
-{
- ACTIVATE,
-
- LAST_SIGNAL
-};
-
-static guint group_signals[LAST_SIGNAL] = { 0, };
-
-static gboolean
-key_group_action_move_left (KeyGroup *self,
- const gchar *action_name,
- guint key_val,
- ClutterModifierType modifiers)
-{
- gint n_children;
-
- g_assert_cmpstr (action_name, ==, "move-left");
- g_assert_cmpint (key_val, ==, CLUTTER_KEY_Left);
-
- n_children = clutter_actor_get_n_children (CLUTTER_ACTOR (self));
-
- self->selected_index -= 1;
-
- if (self->selected_index < 0)
- self->selected_index = n_children - 1;
-
- return TRUE;
-}
-
-static gboolean
-key_group_action_move_right (KeyGroup *self,
- const gchar *action_name,
- guint key_val,
- ClutterModifierType modifiers)
-{
- gint n_children;
-
- g_assert_cmpstr (action_name, ==, "move-right");
- g_assert_cmpint (key_val, ==, CLUTTER_KEY_Right);
-
- n_children = clutter_actor_get_n_children (CLUTTER_ACTOR (self));
-
- self->selected_index += 1;
-
- if (self->selected_index >= n_children)
- self->selected_index = 0;
-
- return TRUE;
-}
-
-static gboolean
-key_group_action_activate (KeyGroup *self,
- const gchar *action_name,
- guint key_val,
- ClutterModifierType modifiers)
-{
- ClutterActor *child = NULL;
-
- g_assert_cmpstr (action_name, ==, "activate");
- g_assert (key_val == CLUTTER_KEY_Return ||
- key_val == CLUTTER_KEY_KP_Enter ||
- key_val == CLUTTER_KEY_ISO_Enter);
-
- if (self->selected_index == -1)
- return FALSE;
-
- child = clutter_actor_get_child_at_index (CLUTTER_ACTOR (self), self->selected_index);
- if (child != NULL)
- {
- g_signal_emit (self, group_signals[ACTIVATE], 0, child);
- return TRUE;
- }
- else
- return FALSE;
-}
-
-static gboolean
-key_group_key_press (ClutterActor *actor,
- ClutterKeyEvent *event)
-{
- ClutterBindingPool *pool;
- gboolean res;
-
- pool = clutter_binding_pool_find (G_OBJECT_TYPE_NAME (actor));
- g_assert (pool != NULL);
-
- res = clutter_binding_pool_activate (pool,
- event->keyval,
- event->modifier_state,
- G_OBJECT (actor));
-
- /* if we activate a key binding, redraw the actor */
- if (res)
- clutter_actor_queue_redraw (actor);
-
- return res;
-}
-
-static void
-key_group_paint (ClutterActor *actor)
-{
- KeyGroup *self = KEY_GROUP (actor);
- ClutterActorIter iter;
- ClutterActor *child;
- gint i = 0;
-
- clutter_actor_iter_init (&iter, actor);
- while (clutter_actor_iter_next (&iter, &child))
- {
- /* paint the selection rectangle */
- if (i == self->selected_index)
- {
- ClutterActorBox box = { 0, };
-
- clutter_actor_get_allocation_box (child, &box);
-
- box.x1 -= 2;
- box.y1 -= 2;
- box.x2 += 2;
- box.y2 += 2;
-
- cogl_set_source_color4ub (255, 255, 0, 224);
- cogl_rectangle (box.x1, box.y1, box.x2, box.y2);
- }
-
- clutter_actor_paint (child);
- }
-}
-
-static void
-key_group_class_init (KeyGroupClass *klass)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
- ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
- ClutterBindingPool *binding_pool;
-
- actor_class->paint = key_group_paint;
- actor_class->key_press_event = key_group_key_press;
-
- group_signals[ACTIVATE] =
- g_signal_new (g_intern_static_string ("activate"),
- G_OBJECT_CLASS_TYPE (gobject_class),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (KeyGroupClass, activate),
- NULL, NULL,
- g_cclosure_marshal_VOID__OBJECT,
- G_TYPE_NONE, 1,
- CLUTTER_TYPE_ACTOR);
-
- binding_pool = clutter_binding_pool_get_for_class (klass);
-
- clutter_binding_pool_install_action (binding_pool, "move-right",
- CLUTTER_KEY_Right, 0,
- G_CALLBACK (key_group_action_move_right),
- NULL, NULL);
- clutter_binding_pool_install_action (binding_pool, "move-left",
- CLUTTER_KEY_Left, 0,
- G_CALLBACK (key_group_action_move_left),
- NULL, NULL);
- clutter_binding_pool_install_action (binding_pool, "activate",
- CLUTTER_KEY_Return, 0,
- G_CALLBACK (key_group_action_activate),
- NULL, NULL);
- clutter_binding_pool_install_action (binding_pool, "activate",
- CLUTTER_KEY_KP_Enter, 0,
- G_CALLBACK (key_group_action_activate),
- NULL, NULL);
- clutter_binding_pool_install_action (binding_pool, "activate",
- CLUTTER_KEY_ISO_Enter, 0,
- G_CALLBACK (key_group_action_activate),
- NULL, NULL);
-}
-
-static void
-key_group_init (KeyGroup *self)
-{
- self->selected_index = -1;
-}
-
-static void
-init_event (ClutterKeyEvent *event)
-{
- event->type = CLUTTER_KEY_PRESS;
- event->time = 0; /* not needed */
- event->flags = CLUTTER_EVENT_FLAG_SYNTHETIC;
- event->stage = NULL; /* not needed */
- event->source = NULL; /* not needed */
- event->modifier_state = 0;
- event->hardware_keycode = 0; /* not needed */
-}
-
-static void
-send_keyval (KeyGroup *group, int keyval)
-{
- ClutterKeyEvent event;
-
- init_event (&event);
- event.keyval = keyval;
- event.unicode_value = 0; /* should be ignored for cursor keys etc. */
-
- clutter_actor_event (CLUTTER_ACTOR (group), (ClutterEvent *) &event, FALSE);
-}
-
-static void
-on_activate (KeyGroup *key_group,
- ClutterActor *child,
- gpointer data)
-{
- gint _index = GPOINTER_TO_INT (data);
-
- g_assert_cmpint (key_group->selected_index, ==, _index);
-}
-
-static void
-binding_pool (void)
-{
- KeyGroup *key_group = g_object_new (TYPE_KEY_GROUP, NULL);
- g_object_ref_sink (key_group);
-
- clutter_actor_add_child (CLUTTER_ACTOR (key_group),
- g_object_new (CLUTTER_TYPE_ACTOR,
- "width", 50.0,
- "height", 50.0,
- "x", 0.0, "y", 0.0,
- NULL));
- clutter_actor_add_child (CLUTTER_ACTOR (key_group),
- g_object_new (CLUTTER_TYPE_ACTOR,
- "width", 50.0,
- "height", 50.0,
- "x", 75.0, "y", 0.0,
- NULL));
- clutter_actor_add_child (CLUTTER_ACTOR (key_group),
- g_object_new (CLUTTER_TYPE_ACTOR,
- "width", 50.0,
- "height", 50.0,
- "x", 150.0, "y", 0.0,
- NULL));
-
- g_assert_cmpint (key_group->selected_index, ==, -1);
-
- send_keyval (key_group, CLUTTER_KEY_Left);
- g_assert_cmpint (key_group->selected_index, ==, 2);
-
- send_keyval (key_group, CLUTTER_KEY_Left);
- g_assert_cmpint (key_group->selected_index, ==, 1);
-
- send_keyval (key_group, CLUTTER_KEY_Right);
- g_assert_cmpint (key_group->selected_index, ==, 2);
-
- send_keyval (key_group, CLUTTER_KEY_Right);
- g_assert_cmpint (key_group->selected_index, ==, 0);
-
- g_signal_connect (key_group,
- "activate", G_CALLBACK (on_activate),
- GINT_TO_POINTER (0));
-
- send_keyval (key_group, CLUTTER_KEY_Return);
-
- clutter_actor_destroy (CLUTTER_ACTOR (key_group));
-}
-
-CLUTTER_TEST_SUITE (
- CLUTTER_TEST_UNIT ("/binding-pool", binding_pool)
-)
diff --git a/clutter/tests/conform/cairo-texture.c b/clutter/tests/conform/cairo-texture.c
deleted file mode 100644
index dd7818063..000000000
--- a/clutter/tests/conform/cairo-texture.c
+++ /dev/null
@@ -1,198 +0,0 @@
-#include <clutter/clutter.h>
-#include <cogl/cogl.h>
-
-#include "test-conform-common.h"
-
-#define BLOCK_SIZE 16
-
-/* Number of pixels at the border of a block to skip when verifying */
-#define TEST_INSET 1
-
-static const ClutterColor stage_color = { 0x0, 0x0, 0x0, 0xff };
-
-typedef enum
-{
- /* The first frame is drawn using clutter_cairo_texture_create. The
- second frame is an update of the first frame using
- clutter_cairo_texture_create_region. The states are stored like
- this because the cairo drawing is done on idle and the validation
- is done during paint and we need to synchronize the two */
- TEST_BEFORE_DRAW_FIRST_FRAME,
- TEST_BEFORE_VALIDATE_FIRST_FRAME,
- TEST_BEFORE_DRAW_SECOND_FRAME,
- TEST_BEFORE_VALIDATE_SECOND_FRAME,
- TEST_DONE
-} TestProgress;
-
-typedef struct _TestState
-{
- ClutterActor *stage;
- ClutterActor *ct;
- guint frame;
- TestProgress progress;
-} TestState;
-
-static void
-validate_part (int block_x, int block_y, const ClutterColor *color)
-{
- guint8 data[BLOCK_SIZE * BLOCK_SIZE * 4];
- int x, y;
-
- cogl_read_pixels (block_x * BLOCK_SIZE,
- block_y * BLOCK_SIZE,
- BLOCK_SIZE, BLOCK_SIZE,
- COGL_READ_PIXELS_COLOR_BUFFER,
- COGL_PIXEL_FORMAT_RGBA_8888_PRE,
- data);
-
- for (x = 0; x < BLOCK_SIZE - TEST_INSET * 2; x++)
- for (y = 0; y < BLOCK_SIZE - TEST_INSET * 2; y++)
- {
- const guint8 *p = data + ((x + TEST_INSET) * 4 +
- (y + TEST_INSET) * BLOCK_SIZE * 4);
-
- g_assert_cmpint (p[0], ==, color->red);
- g_assert_cmpint (p[1], ==, color->green);
- g_assert_cmpint (p[2], ==, color->blue);
- }
-}
-
-static void
-paint_cb (ClutterActor *actor, TestState *state)
-{
- static const ClutterColor red = { 0xff, 0x00, 0x00, 0xff };
- static const ClutterColor green = { 0x00, 0xff, 0x00, 0xff };
- static const ClutterColor blue = { 0x00, 0x00, 0xff, 0xff };
-
- if (state->frame++ < 2)
- return;
-
- switch (state->progress)
- {
- case TEST_BEFORE_DRAW_FIRST_FRAME:
- case TEST_BEFORE_DRAW_SECOND_FRAME:
- case TEST_DONE:
- /* Handled by the idle callback */
- break;
-
- case TEST_BEFORE_VALIDATE_FIRST_FRAME:
- /* In the first frame there is a red rectangle next to a green
- rectangle */
- validate_part (0, 0, &red);
- validate_part (1, 0, &green);
-
- state->progress = TEST_BEFORE_DRAW_SECOND_FRAME;
- break;
-
- case TEST_BEFORE_VALIDATE_SECOND_FRAME:
- /* The second frame is the same except the green rectangle is
- replaced with a blue one */
- validate_part (0, 0, &red);
- validate_part (1, 0, &blue);
-
- state->progress = TEST_DONE;
- break;
- }
-}
-
-static gboolean
-idle_cb (gpointer data)
-{
- TestState *state = data;
- cairo_t *cr;
-
- if (state->frame < 2)
- clutter_actor_queue_redraw (CLUTTER_ACTOR (state->stage));
- else
- switch (state->progress)
- {
- case TEST_BEFORE_DRAW_FIRST_FRAME:
- /* Draw two different colour rectangles */
- cr = clutter_cairo_texture_create (CLUTTER_CAIRO_TEXTURE (state->ct));
-
- cairo_save (cr);
- cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
-
- cairo_save (cr);
- cairo_rectangle (cr, 0, 0, BLOCK_SIZE, BLOCK_SIZE);
- cairo_clip (cr);
- cairo_set_source_rgb (cr, 1.0, 0.0, 0.0);
- cairo_paint (cr);
- cairo_restore (cr);
-
- cairo_rectangle (cr, BLOCK_SIZE, 0, BLOCK_SIZE, BLOCK_SIZE);
- cairo_clip (cr);
- cairo_set_source_rgb (cr, 0.0, 1.0, 0.0);
- cairo_paint (cr);
-
- cairo_restore (cr);
-
- cairo_destroy (cr);
-
- state->progress = TEST_BEFORE_VALIDATE_FIRST_FRAME;
-
- break;
-
- case TEST_BEFORE_DRAW_SECOND_FRAME:
- /* Replace the second rectangle with a blue one */
- cr = clutter_cairo_texture_create (CLUTTER_CAIRO_TEXTURE (state->ct));
-
- cairo_rectangle (cr, BLOCK_SIZE, 0, BLOCK_SIZE, BLOCK_SIZE);
- cairo_set_source_rgb (cr, 0.0, 0.0, 1.0);
- cairo_fill (cr);
-
- cairo_destroy (cr);
-
- state->progress = TEST_BEFORE_VALIDATE_SECOND_FRAME;
-
- break;
-
- case TEST_BEFORE_VALIDATE_FIRST_FRAME:
- case TEST_BEFORE_VALIDATE_SECOND_FRAME:
- /* Handled by the paint callback */
- break;
-
- case TEST_DONE:
- clutter_main_quit ();
- break;
- }
-
- return G_SOURCE_CONTINUE;
-}
-
-void
-texture_cairo (TestConformSimpleFixture *fixture,
- gconstpointer data)
-{
- TestState state;
- unsigned int idle_source;
- unsigned int paint_handler;
-
- state.frame = 0;
- state.stage = clutter_stage_new ();
- state.progress = TEST_BEFORE_DRAW_FIRST_FRAME;
-
- state.ct = clutter_cairo_texture_new (BLOCK_SIZE * 2, BLOCK_SIZE);
- clutter_container_add_actor (CLUTTER_CONTAINER (state.stage), state.ct);
-
- clutter_stage_set_color (CLUTTER_STAGE (state.stage), &stage_color);
-
- /* We force continuous redrawing of the stage, since we need to skip
- * the first few frames, and we wont be doing anything else that
- * will trigger redrawing. */
- idle_source = clutter_threads_add_idle (idle_cb, &state);
- paint_handler = g_signal_connect_after (state.stage, "paint",
- G_CALLBACK (paint_cb), &state);
-
- clutter_actor_show (state.stage);
- clutter_main ();
-
- g_signal_handler_disconnect (state.stage, paint_handler);
- g_source_remove (idle_source);
-
- if (g_test_verbose ())
- g_print ("OK\n");
-
- clutter_actor_destroy (state.stage);
-}
-
diff --git a/clutter/tests/conform/cally-text.c b/clutter/tests/conform/cally-text.c
deleted file mode 100644
index 32d7afb70..000000000
--- a/clutter/tests/conform/cally-text.c
+++ /dev/null
@@ -1,338 +0,0 @@
-#include <clutter/clutter.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include "test-conform-common.h"
-
-#define TEST_FONT "Sans 10"
-
-typedef struct _CallbackData CallbackData;
-
-struct _CallbackData
-{
- ClutterActor *stage;
- ClutterActor *label;
- gint offset;
- gboolean test_failed;
-
- gint extents_x;
- gint extents_y;
- gint extents_width;
- gint extents_height;
- GSList *run_attributes;
- GSList *default_attributes;
- CallbackData *next;
-};
-
-
-static gint
-attribute_lookup_func (gconstpointer data,
- gconstpointer user_data)
-{
- AtkAttribute *lookup_attr = (AtkAttribute*) user_data;
- AtkAttribute *at = (AtkAttribute *) data;
- if (!data)
- return -1;
- if (!g_strcmp0 (at->name, lookup_attr->name))
- return g_strcmp0 (at->value, lookup_attr->value);
- return -1;
-}
-
-/* check l1 is a sub-set of l2 */
-static gboolean
-compare_lists (GSList* l1, GSList* l2)
-{
- gboolean fail = FALSE;
-
- if (l2 && !l1)
- return TRUE;
-
- while (l1)
- {
- AtkAttribute *at = (AtkAttribute *) l1->data;
- GSList* result = g_slist_find_custom ((GSList*) l2,
- (gconstpointer) at,
- attribute_lookup_func);
- if (!result)
- {
- fail = TRUE;
- break;
- }
- l1 = g_slist_next (l1);
- }
-
- return fail;
-}
-
-static void
-dump_attribute_set (AtkAttributeSet *at_set)
-{
- GSList *attrs = (GSList*) at_set;
-
- while (attrs) {
- AtkAttribute *at = (AtkAttribute *) attrs->data;
- g_print ("text attribute %s = %s\n", at->name, at->value);
- attrs = g_slist_next (attrs);
- }
-
-}
-
-static gboolean
-check_result (CallbackData *data)
-{
- gboolean fail = FALSE;
- gchar *text = NULL;
- const gchar *expected_text = NULL;
- AtkObject *object = NULL;
- AtkText *cally_text = NULL;
- gunichar unichar;
- gunichar expected_char;
- gint x, y, width, height;
- gint pos;
- AtkAttributeSet *at_set = NULL;
- GSList *attrs;
- gint start = -1;
- gint end = -1;
-
- object = atk_gobject_accessible_for_object (G_OBJECT (data->label));
- cally_text = ATK_TEXT (object);
-
- if (!cally_text) {
- g_print("no text\n");
- return TRUE;
- }
-
- text = atk_text_get_text (cally_text, 0, -1);
- expected_text = clutter_text_get_text (CLUTTER_TEXT (data->label));
-
- if (g_strcmp0 (expected_text, text) != 0)
- {
- if (g_test_verbose ())
- g_print ("text value differs %s vs %s\n", expected_text, text);
- fail = TRUE;
- }
-
- unichar = atk_text_get_character_at_offset (cally_text, data->offset);
- expected_char = g_utf8_get_char (g_utf8_offset_to_pointer (text, data->offset));
- if (expected_char != unichar)
- {
- if (g_test_verbose ())
- g_print ("text af offset differs\n");
- fail = TRUE;
- }
-
- atk_text_get_character_extents (cally_text, data->offset, &x, &y, &width, &height,
- ATK_XY_WINDOW);
- if (x != data->extents_x)
- {
- if (g_test_verbose ())
- g_print ("extents x position at index 0 differs (current value=%d)\n", x);
- fail = TRUE;
- }
- if (y != data->extents_y)
- {
- if (g_test_verbose ())
- g_print ("extents y position at index 0 differs (current value=%d)\n", y);
- fail = TRUE;
- }
- if (width != data->extents_width)
- {
- if (g_test_verbose ())
- g_print ("extents width at index 0 differs (current value=%d)\n", width);
- fail = TRUE;
- }
- if (height != data->extents_height)
- {
- if (g_test_verbose ())
- g_print ("extents height at index 0 differs (current value=%d)\n", height);
- fail = TRUE;
- }
-
- pos = atk_text_get_offset_at_point (cally_text, x, y, ATK_XY_WINDOW);
- if (pos != data->offset)
- {
- if (g_test_verbose ())
- g_print ("offset at position (%d, %d) differs (current value=%d)\n", x,
- y, pos);
- fail = TRUE;
- }
-
- at_set = atk_text_get_run_attributes (cally_text, 0,
- &start, &end);
- if (start != 0)
- {
- if (g_test_verbose ())
- g_print ("run attributes start offset is not 0: %d\n", start);
- fail = TRUE;
- }
- if (end != g_utf8_strlen (text, -1))
- {
- if (g_test_verbose ())
- g_print ("run attributes end offset is not text length: %d\n", end);
- fail = TRUE;
- }
-
- attrs = (GSList*) at_set;
- fail = compare_lists (attrs, data->run_attributes);
- if (fail && g_test_verbose ())
- {
- g_print ("run attributes mismatch\n");
- dump_attribute_set (attrs);
- }
-
- at_set = atk_text_get_default_attributes (cally_text);
- attrs = (GSList*) at_set;
- fail = compare_lists (attrs, data->default_attributes);
- if (fail && g_test_verbose ())
- {
- g_print ("default attributes mismatch\n");
- dump_attribute_set (attrs);
- }
-
- g_free (text);
- text = NULL;
-
- if (fail)
- {
- if (g_test_verbose ())
- g_print ("FAIL\n");
- data->test_failed = TRUE;
- }
- else if (g_test_verbose ())
- g_print ("pass\n");
-
- return fail;
-}
-
-static gboolean
-do_tests (CallbackData *data)
-{
- while (data)
- {
- gboolean result = check_result (data);
- g_assert (result == FALSE);
- data = data->next;
- }
-
- clutter_main_quit ();
-
- return FALSE;
-}
-
-static GSList*
-build_attribute_set (const gchar* first_attribute, ...)
-{
- AtkAttributeSet *return_set = g_slist_alloc ();
- va_list args;
- const gchar *name;
- const gchar *value;
- gint i = 0;
-
- value = first_attribute;
- va_start (args, first_attribute);
-
- while (value)
- {
- if ((i> 0) && (i % 2 != 0))
- {
- AtkAttribute *at = g_malloc (sizeof (AtkAttribute));
- at->name = g_strdup (name);
- at->value = g_strdup (value);
- return_set = g_slist_prepend (return_set, at);
- }
- i++;
- name = g_strdup (value);
- value = va_arg (args, gchar*);
- }
- va_end (args);
- return return_set;
-}
-
-void
-cally_text (void)
-{
- CallbackData data;
- CallbackData data1;
- GSList* default_attributes = build_attribute_set ("left-margin", "0",
- "right-margin", "0",
- "indent", "0",
- "invisible", "false",
- "editable", "false",
- "pixels-above-lines", "0",
- "pixels-below-lines", "0",
- "pixels-inside-wrap", "0",
- "bg-full-height", "0",
- "bg-stipple", "false",
- "fg-stipple", "false",
- "fg-color", "0,0,0",
- "wrap-mode", "word",
- "justification", "left",
- "size", "10",
- "weight", "400",
- "family-name", "Sans",
- "stretch", "normal",
- "variant", "normal",
- "style", "normal",
- "language", "en-us",
- "direction", "ltr",
- NULL);
-
- memset (&data, 0, sizeof (data));
-
- data.stage = clutter_stage_new ();
-
- data.default_attributes = default_attributes;
- data.run_attributes = build_attribute_set ("fg-color", "0,0,0", NULL);
-
- data.label = clutter_text_new_with_text (TEST_FONT, "Lorem ipsum dolor sit amet");
-
- clutter_container_add (CLUTTER_CONTAINER (data.stage), data.label, NULL);
- data.offset = 6;
- data.extents_x = 64;
- data.extents_y = 99;
- data.extents_width = 3;
- data.extents_height = 17;
- clutter_actor_set_position (data.label, 20, 100);
-
- memset (&data1, 0, sizeof (data1));
- data1.stage = data.stage;
- data1.default_attributes = default_attributes;
- data1.run_attributes = build_attribute_set ("bg-color", "0,65535,0",
- "fg-color", "65535,65535,0",
- "strikethrough", "true", NULL);
-
- data1.label = clutter_text_new_with_text (TEST_FONT, "");
- clutter_text_set_markup (CLUTTER_TEXT(data1.label), "<span fgcolor=\"#FFFF00\" bgcolor=\"#00FF00\"><s>Lorem ipsum dolor sit amet</s></span>");
-
- clutter_container_add (CLUTTER_CONTAINER (data1.stage), data1.label, NULL);
- data1.offset = 10;
- data1.extents_x = 90;
- data1.extents_y = 199;
- data1.extents_width = 13;
- data1.extents_height = 17;
- clutter_actor_set_position (data1.label, 20, 200);
- data.next = &data1;
-
- clutter_actor_show (data.stage);
- clutter_threads_add_idle ((GSourceFunc) do_tests, &data);
- clutter_main ();
-
- clutter_actor_destroy (data.stage);
-
- if (g_test_verbose ())
- g_print ("\nOverall result: ");
-
- if (g_test_verbose ())
- {
- if (data.test_failed)
- g_print ("FAIL\n");
- else
- g_print ("pass\n");
- }
- else
- {
- g_assert (data.test_failed != TRUE);
- g_assert (data1.test_failed != TRUE);
- }
-}
-
diff --git a/clutter/tests/conform/color.c b/clutter/tests/conform/color.c
deleted file mode 100644
index 03ecf3f08..000000000
--- a/clutter/tests/conform/color.c
+++ /dev/null
@@ -1,319 +0,0 @@
-#include <clutter/clutter.h>
-
-static void
-color_hls_roundtrip (void)
-{
- ClutterColor color;
- gfloat hue, luminance, saturation;
-
- /* test luminance only */
- clutter_color_from_string (&color, "#7f7f7f");
- g_assert_cmpuint (color.red, ==, 0x7f);
- g_assert_cmpuint (color.green, ==, 0x7f);
- g_assert_cmpuint (color.blue, ==, 0x7f);
-
- clutter_color_to_hls (&color, &hue, &luminance, &saturation);
- g_assert_cmpfloat (hue, ==, 0.0);
- g_assert (luminance >= 0.0 && luminance <= 1.0);
- g_assert_cmpfloat (saturation, ==, 0.0);
- if (g_test_verbose ())
- {
- g_print ("RGB = { %x, %x, %x }, HLS = { %.2f, %.2f, %.2f }\n",
- color.red,
- color.green,
- color.blue,
- hue,
- luminance,
- saturation);
- }
-
- color.red = color.green = color.blue = 0;
- clutter_color_from_hls (&color, hue, luminance, saturation);
-
- g_assert_cmpuint (color.red, ==, 0x7f);
- g_assert_cmpuint (color.green, ==, 0x7f);
- g_assert_cmpuint (color.blue, ==, 0x7f);
-
- /* full conversion */
- clutter_color_from_string (&color, "#7f8f7f");
- color.alpha = 255;
-
- g_assert_cmpuint (color.red, ==, 0x7f);
- g_assert_cmpuint (color.green, ==, 0x8f);
- g_assert_cmpuint (color.blue, ==, 0x7f);
-
- clutter_color_to_hls (&color, &hue, &luminance, &saturation);
- g_assert (hue >= 0.0 && hue < 360.0);
- g_assert (luminance >= 0.0 && luminance <= 1.0);
- g_assert (saturation >= 0.0 && saturation <= 1.0);
- if (g_test_verbose ())
- {
- g_print ("RGB = { %x, %x, %x }, HLS = { %.2f, %.2f, %.2f }\n",
- color.red,
- color.green,
- color.blue,
- hue,
- luminance,
- saturation);
- }
-
- color.red = color.green = color.blue = 0;
- clutter_color_from_hls (&color, hue, luminance, saturation);
-
- g_assert_cmpuint (color.red, ==, 0x7f);
- g_assert_cmpuint (color.green, ==, 0x8f);
- g_assert_cmpuint (color.blue, ==, 0x7f);
-
- /* the alpha channel should be untouched */
- g_assert_cmpuint (color.alpha, ==, 255);
-}
-
-static void
-color_from_string_invalid (void)
-{
- ClutterColor color;
-
- g_assert (!clutter_color_from_string (&color, "ff0000ff"));
- g_assert (!clutter_color_from_string (&color, "#decaffbad"));
- g_assert (!clutter_color_from_string (&color, "ponies"));
- g_assert (!clutter_color_from_string (&color, "rgb(255, 0, 0, 0)"));
- g_assert (!clutter_color_from_string (&color, "rgba(1.0, 0, 0)"));
- g_assert (!clutter_color_from_string (&color, "hsl(100, 0, 0)"));
- g_assert (!clutter_color_from_string (&color, "hsla(10%, 0%, 50%)"));
- g_assert (!clutter_color_from_string (&color, "hsla(100%, 0%, 50%, 20%)"));
- g_assert (!clutter_color_from_string (&color, "hsla(0.5, 0.9, 0.2, 0.4)"));
-}
-
-static void
-color_from_string_valid (void)
-{
- ClutterColor color;
-
- g_assert (clutter_color_from_string (&color, "#ff0000ff"));
- if (g_test_verbose ())
- {
- g_print ("color = { %x, %x, %x, %x }, expected = { 0xff, 0, 0, 0xff }\n",
- color.red,
- color.green,
- color.blue,
- color.alpha);
- }
- g_assert_cmpuint (color.red, ==, 0xff);
- g_assert_cmpuint (color.green, ==, 0);
- g_assert_cmpuint (color.blue, ==, 0);
- g_assert_cmpuint (color.alpha, ==, 0xff);
-
- g_assert (clutter_color_from_string (&color, "#0f0f"));
- if (g_test_verbose ())
- {
- g_print ("color = { %x, %x, %x, %x }, expected = { 0, 0xff, 0, 0xff }\n",
- color.red,
- color.green,
- color.blue,
- color.alpha);
- }
- g_assert_cmpuint (color.red, ==, 0);
- g_assert_cmpuint (color.green, ==, 0xff);
- g_assert_cmpuint (color.blue, ==, 0);
- g_assert_cmpuint (color.alpha, ==, 0xff);
-
- g_assert (clutter_color_from_string (&color, "#0000ff"));
- if (g_test_verbose ())
- {
- g_print ("color = { %x, %x, %x, %x }, expected = { 0, 0, 0xff, 0xff }\n",
- color.red,
- color.green,
- color.blue,
- color.alpha);
- }
- g_assert_cmpuint (color.red, ==, 0);
- g_assert_cmpuint (color.green, ==, 0);
- g_assert_cmpuint (color.blue, ==, 0xff);
- g_assert_cmpuint (color.alpha, ==, 0xff);
-
- g_assert (clutter_color_from_string (&color, "#abc"));
- if (g_test_verbose ())
- {
- g_print ("color = { %x, %x, %x, %x }, expected = { 0xaa, 0xbb, 0xcc, 0xff }\n",
- color.red,
- color.green,
- color.blue,
- color.alpha);
- }
- g_assert_cmpuint (color.red, ==, 0xaa);
- g_assert_cmpuint (color.green, ==, 0xbb);
- g_assert_cmpuint (color.blue, ==, 0xcc);
- g_assert_cmpuint (color.alpha, ==, 0xff);
-
- g_assert (clutter_color_from_string (&color, "#123abc"));
- if (g_test_verbose ())
- {
- g_print ("color = { %x, %x, %x, %x }, expected = { 0x12, 0x3a, 0xbc, 0xff }\n",
- color.red,
- color.green,
- color.blue,
- color.alpha);
- }
- g_assert (color.red == 0x12);
- g_assert (color.green == 0x3a);
- g_assert (color.blue == 0xbc);
- g_assert (color.alpha == 0xff);
-
- g_assert (clutter_color_from_string (&color, "rgb(255, 128, 64)"));
- if (g_test_verbose ())
- {
- g_print ("color = { %x, %x, %x, %x }, expected = { 255, 128, 64, 255 }\n",
- color.red,
- color.green,
- color.blue,
- color.alpha);
- }
- g_assert_cmpuint (color.red, ==, 255);
- g_assert_cmpuint (color.green, ==, 128);
- g_assert_cmpuint (color.blue, ==, 64);
- g_assert_cmpuint (color.alpha, ==, 255);
-
- g_assert (clutter_color_from_string (&color, "rgba ( 30%, 0, 25%, 0.5 ) "));
- if (g_test_verbose ())
- {
- g_print ("color = { %x, %x, %x, %x }, expected = { %.1f, 0, %.1f, 128 }\n",
- color.red,
- color.green,
- color.blue,
- color.alpha,
- CLAMP (255.0 / 100.0 * 30.0, 0, 255),
- CLAMP (255.0 / 100.0 * 25.0, 0, 255));
- }
- g_assert_cmpuint (color.red, ==, (255.0 / 100.0 * 30.0));
- g_assert_cmpuint (color.green, ==, 0);
- g_assert_cmpuint (color.blue, ==, (255.0 / 100.0 * 25.0));
- g_assert_cmpuint (color.alpha, ==, 127);
-
- g_assert (clutter_color_from_string (&color, "rgb( 50%, -50%, 150% )"));
- if (g_test_verbose ())
- {
- g_print ("color = { %x, %x, %x, %x }, expected = { 127, 0, 255, 255 }\n",
- color.red,
- color.green,
- color.blue,
- color.alpha);
- }
- g_assert_cmpuint (color.red, ==, 127);
- g_assert_cmpuint (color.green, ==, 0);
- g_assert_cmpuint (color.blue, ==, 255);
- g_assert_cmpuint (color.alpha, ==, 255);
-
- g_assert (clutter_color_from_string (&color, "hsl( 0, 100%, 50% )"));
- if (g_test_verbose ())
- {
- g_print ("color = { %x, %x, %x, %x }, expected = { 255, 0, 0, 255 }\n",
- color.red,
- color.green,
- color.blue,
- color.alpha);
- }
- g_assert_cmpuint (color.red, ==, 255);
- g_assert_cmpuint (color.green, ==, 0);
- g_assert_cmpuint (color.blue, ==, 0);
- g_assert_cmpuint (color.alpha, ==, 255);
-
- g_assert (clutter_color_from_string (&color, "hsl( 0, 100%, 50% )"));
-
- g_assert (clutter_color_from_string (&color, "hsla( 0, 100%, 50%, 0.5 )"));
- if (g_test_verbose ())
- {
- g_print ("color = { %x, %x, %x, %x }, expected = { 255, 0, 0, 127 }\n",
- color.red,
- color.green,
- color.blue,
- color.alpha);
- }
- g_assert_cmpuint (color.red, ==, 255);
- g_assert_cmpuint (color.green, ==, 0);
- g_assert_cmpuint (color.blue, ==, 0);
- g_assert_cmpuint (color.alpha, ==, 127);
-
- g_test_bug ("662818");
- g_assert (clutter_color_from_string (&color, "hsla(0,100%,50% , 0.5)"));
-}
-
-static void
-color_to_string (void)
-{
- ClutterColor color;
- gchar *str;
-
- color.red = 0xcc;
- color.green = 0xcc;
- color.blue = 0xcc;
- color.alpha = 0x22;
-
- str = clutter_color_to_string (&color);
- g_assert_cmpstr (str, ==, "#cccccc22");
-
- g_free (str);
-}
-
-static void
-color_operators (void)
-{
- ClutterColor op1, op2;
- ClutterColor res;
-
- clutter_color_from_pixel (&op1, 0xff0000ff);
- g_assert_cmpuint (op1.red, ==, 0xff);
- g_assert_cmpuint (op1.green, ==, 0);
- g_assert_cmpuint (op1.blue, ==, 0);
- g_assert_cmpuint (op1.alpha, ==, 0xff);
-
- clutter_color_from_pixel (&op2, 0x00ff00ff);
- g_assert_cmpuint (op2.red, ==, 0);
- g_assert_cmpuint (op2.green, ==, 0xff);
- g_assert_cmpuint (op2.blue, ==, 0);
- g_assert_cmpuint (op2.alpha, ==, 0xff);
-
- if (g_test_verbose ())
- g_print ("Adding %x, %x; expected result: %x\n",
- clutter_color_to_pixel (&op1),
- clutter_color_to_pixel (&op2),
- 0xffff00ff);
-
- clutter_color_add (&op1, &op2, &res);
- g_assert_cmpuint (clutter_color_to_pixel (&res), ==, 0xffff00ff);
-
- if (g_test_verbose ())
- g_print ("Checking alpha channel on color add\n");
-
- op1.alpha = 0xdd;
- op2.alpha = 0xcc;
- clutter_color_add (&op1, &op2, &res);
- g_assert_cmpuint (clutter_color_to_pixel (&res), ==, 0xffff00dd);
-
- clutter_color_from_pixel (&op1, 0xffffffff);
- clutter_color_from_pixel (&op2, 0xff00ffff);
-
- if (g_test_verbose ())
- g_print ("Subtracting %x, %x; expected result: %x\n",
- clutter_color_to_pixel (&op1),
- clutter_color_to_pixel (&op2),
- 0x00ff00ff);
-
- clutter_color_subtract (&op1, &op2, &res);
- g_assert_cmpuint (clutter_color_to_pixel (&res), ==, 0x00ff00ff);
-
- if (g_test_verbose ())
- g_print ("Checking alpha channel on color subtract\n");
-
- op1.alpha = 0xdd;
- op2.alpha = 0xcc;
- clutter_color_subtract (&op1, &op2, &res);
- g_assert_cmpuint (clutter_color_to_pixel (&res), ==, 0x00ff00cc);
-}
-
-CLUTTER_TEST_SUITE (
- CLUTTER_TEST_UNIT ("/color/hls-roundtrip", color_hls_roundtrip)
- CLUTTER_TEST_UNIT ("/color/from-string/invalid", color_from_string_invalid)
- CLUTTER_TEST_UNIT ("/color/from-string/valid", color_from_string_valid)
- CLUTTER_TEST_UNIT ("/color/to-string", color_to_string)
- CLUTTER_TEST_UNIT ("/color/operators", color_operators)
-)
diff --git a/clutter/tests/conform/group.c b/clutter/tests/conform/group.c
deleted file mode 100644
index 3f7b1fb4b..000000000
--- a/clutter/tests/conform/group.c
+++ /dev/null
@@ -1,60 +0,0 @@
-#define CLUTTER_DISABLE_DEPRECATION_WARNINGS
-#include <clutter/clutter.h>
-
-static void
-group_depth_sorting (void)
-{
- ClutterActor *group;
- ClutterActor *child, *test;
- ClutterGroup *g;
- GList *children;
-
- group = clutter_group_new ();
- g = CLUTTER_GROUP (group);
-
- child = clutter_rectangle_new ();
- clutter_actor_set_size (child, 20, 20);
- clutter_actor_set_depth (child, 0);
- clutter_actor_set_name (child, "zero");
- clutter_container_add_actor (CLUTTER_CONTAINER (group), child);
-
- children = clutter_container_get_children (CLUTTER_CONTAINER (group));
- g_assert (children->data == child);
- g_assert (children->next == NULL);
- g_list_free (children);
-
- child = clutter_rectangle_new ();
- clutter_actor_set_size (child, 20, 20);
- clutter_actor_set_depth (child, 10);
- clutter_actor_set_name (child, "plus-ten");
- clutter_container_add_actor (CLUTTER_CONTAINER (group), child);
-
- test = clutter_group_get_nth_child (g, 0);
- g_assert_cmpstr (clutter_actor_get_name (test), ==, "zero");
-
- test = clutter_group_get_nth_child (g, 1);
- g_assert_cmpstr (clutter_actor_get_name (test), ==, "plus-ten");
-
- child = clutter_rectangle_new ();
- clutter_actor_set_size (child, 20, 20);
- clutter_actor_set_depth (child, -10);
- clutter_actor_set_name (child, "minus-ten");
- clutter_container_add_actor (CLUTTER_CONTAINER (group), child);
-
- g_assert_cmpint (clutter_group_get_n_children (g), ==, 3);
-
- test = clutter_group_get_nth_child (g, 0);
- g_assert_cmpstr (clutter_actor_get_name (test), ==, "minus-ten");
-
- test = clutter_group_get_nth_child (g, 1);
- g_assert_cmpstr (clutter_actor_get_name (test), ==, "zero");
-
- test = clutter_group_get_nth_child (g, 2);
- g_assert_cmpstr (clutter_actor_get_name (test), ==, "plus-ten");
-
- clutter_actor_destroy (group);
-}
-
-CLUTTER_TEST_SUITE (
- CLUTTER_TEST_UNIT ("/group/depth-sorting", group_depth_sorting)
-)
diff --git a/clutter/tests/conform/interval.c b/clutter/tests/conform/interval.c
deleted file mode 100644
index 520437894..000000000
--- a/clutter/tests/conform/interval.c
+++ /dev/null
@@ -1,117 +0,0 @@
-#include <clutter/clutter.h>
-
-static void
-interval_initial_state (void)
-{
- ClutterInterval *interval;
- int initial, final;
- const GValue *value;
-
- interval = clutter_interval_new (G_TYPE_INT, 0, 100);
- g_assert (CLUTTER_IS_INTERVAL (interval));
- g_assert (clutter_interval_get_value_type (interval) == G_TYPE_INT);
-
- clutter_interval_get_interval (interval, &initial, &final);
- g_assert_cmpint (initial, ==, 0);
- g_assert_cmpint (final, ==, 100);
-
- value = clutter_interval_compute (interval, 0);
- g_assert (G_VALUE_HOLDS_INT (value));
- g_assert_cmpint (g_value_get_int (value), ==, 0);
-
- value = clutter_interval_compute (interval, 1);
- g_assert (G_VALUE_HOLDS_INT (value));
- g_assert_cmpint (g_value_get_int (value), ==, 100);
-
- value = clutter_interval_compute (interval, 0.5);
- g_assert (G_VALUE_HOLDS_INT (value));
- g_assert_cmpint (g_value_get_int (value), ==, 50);
-
- clutter_interval_set_final (interval, 200);
- value = clutter_interval_peek_final_value (interval);
- g_assert (G_VALUE_HOLDS_INT (value));
- g_assert_cmpint (g_value_get_int (value), ==, 200);
-
- g_object_unref (interval);
-}
-
-static void
-interval_transform (void)
-{
- ClutterInterval *interval;
- GValue value = G_VALUE_INIT;
- const GValue *value_p = NULL;
-
- interval = clutter_interval_new_with_values (G_TYPE_FLOAT, NULL, NULL);
-
- g_value_init (&value, G_TYPE_DOUBLE);
-
- g_value_set_double (&value, 0.0);
- clutter_interval_set_initial_value (interval, &value);
-
- g_value_set_double (&value, 100.0);
- clutter_interval_set_final_value (interval, &value);
-
- g_value_unset (&value);
-
- value_p = clutter_interval_peek_initial_value (interval);
- g_assert (G_VALUE_HOLDS_FLOAT (value_p));
- g_assert_cmpfloat (g_value_get_float (value_p), ==, 0.f);
-
- value_p = clutter_interval_peek_final_value (interval);
- g_assert (G_VALUE_HOLDS_FLOAT (value_p));
- g_assert_cmpfloat (g_value_get_float (value_p), ==, 100.f);
-
- g_object_unref (interval);
-}
-
-static void
-interval_from_script (void)
-{
- ClutterScript *script = clutter_script_new ();
- ClutterInterval *interval;
- gchar *test_file;
- GError *error = NULL;
- GValue *initial, *final;
-
- test_file = g_test_build_filename (G_TEST_DIST,
- "scripts",
- "test-script-interval.json",
- NULL);
- clutter_script_load_from_file (script, test_file, &error);
- if (g_test_verbose () && error)
- g_printerr ("\tError: %s", error->message);
-
- g_assert_no_error (error);
-
- interval = CLUTTER_INTERVAL (clutter_script_get_object (script, "int-1"));
- initial = clutter_interval_peek_initial_value (interval);
- if (g_test_verbose ())
- g_test_message ("\tinitial ['%s'] = '%.2f'",
- g_type_name (G_VALUE_TYPE (initial)),
- g_value_get_float (initial));
- g_assert (G_VALUE_HOLDS (initial, G_TYPE_FLOAT));
- g_assert_cmpfloat (g_value_get_float (initial), ==, 23.3f);
- final = clutter_interval_peek_final_value (interval);
- if (g_test_verbose ())
- g_test_message ("\tfinal ['%s'] = '%.2f'",
- g_type_name (G_VALUE_TYPE (final)),
- g_value_get_float (final));
- g_assert (G_VALUE_HOLDS (final, G_TYPE_FLOAT));
- g_assert_cmpfloat (g_value_get_float (final), ==, 42.2f);
-
- interval = CLUTTER_INTERVAL (clutter_script_get_object (script, "int-2"));
- initial = clutter_interval_peek_initial_value (interval);
- g_assert (G_VALUE_HOLDS (initial, CLUTTER_TYPE_COLOR));
- final = clutter_interval_peek_final_value (interval);
- g_assert (G_VALUE_HOLDS (final, CLUTTER_TYPE_COLOR));
-
- g_object_unref (script);
- g_free (test_file);
-}
-
-CLUTTER_TEST_SUITE (
- CLUTTER_TEST_UNIT ("/interval/initial-state", interval_initial_state)
- CLUTTER_TEST_UNIT ("/interval/transform", interval_transform)
- CLUTTER_TEST_UNIT ("/interval/from-script", interval_from_script)
-)
diff --git a/clutter/tests/conform/meson.build b/clutter/tests/conform/meson.build
deleted file mode 100644
index 5d0df7acd..000000000
--- a/clutter/tests/conform/meson.build
+++ /dev/null
@@ -1,78 +0,0 @@
-clutter_tests_conform_c_args = [
- '-DG_LOG_DOMAIN="Clutter-Conform"',
- '-DCOGL_DISABLE_DEPRECATION_WARNINGS',
-]
-clutter_tests_conform_c_args += clutter_debug_c_args
-
-clutter_tests_conform_link_args = [
- '-Wl,--export-dynamic',
-]
-
-clutter_conform_tests_actor_tests = [
- 'actor-anchors',
- 'actor-destroy',
- 'actor-graph',
- 'actor-invariants',
- 'actor-iter',
- 'actor-layout',
- 'actor-meta',
- 'actor-offscreen-redirect',
- 'actor-paint-opacity',
- 'actor-pick',
- 'actor-shader-effect',
- 'actor-size',
-]
-
-clutter_conform_tests_classes_tests = [
- 'text',
-]
-
-clutter_conform_tests_general_tests = [
- 'binding-pool',
- 'color',
- 'interval',
- 'script-parser',
- 'units',
-]
-
-clutter_conform_tests_deprecated_tests = [
- 'behaviours',
- 'group',
- 'rectangle',
- 'texture',
-]
-
-clutter_conform_tests = []
-clutter_conform_tests += clutter_conform_tests_actor_tests
-clutter_conform_tests += clutter_conform_tests_classes_tests
-clutter_conform_tests += clutter_conform_tests_general_tests
-clutter_conform_tests += clutter_conform_tests_deprecated_tests
-
-test_env = environment()
-test_env.set('G_TEST_SRCDIR', meson.current_source_dir())
-test_env.set('G_TEST_BUILDDIR', meson.current_build_dir())
-test_env.set('G_ENABLE_DIAGNOSTIC', '0')
-test_env.set('CLUTTER_ENABLE_DIAGNOSTIC', '0')
-test_env.set('CLUTTER_SCALE', '1')
-
-foreach test : clutter_conform_tests
- test_executable = executable('@0@'.format(test),
- sources: [
- '@0@.c'.format(test),
- ],
- include_directories: clutter_includes,
- c_args: clutter_tests_conform_c_args,
- link_args: clutter_tests_conform_link_args,
- dependencies: [
- clutter_deps,
- libmutter_clutter_dep,
- libmutter_cogl_path_dep
- ],
- install: false,
- )
-
- test(test, test_executable,
- suite: ['clutter', 'clutter/conform'],
- env: test_env
- )
-endforeach
diff --git a/clutter/tests/conform/path.c b/clutter/tests/conform/path.c
deleted file mode 100644
index b292ac9da..000000000
--- a/clutter/tests/conform/path.c
+++ /dev/null
@@ -1,740 +0,0 @@
-#include <clutter/clutter.h>
-#include <cairo.h>
-#include <string.h>
-#include <math.h>
-
-#include "test-conform-common.h"
-
-#define MAX_NODES 128
-
-#define FLOAT_FUZZ_AMOUNT 5.0f
-
-typedef struct _CallbackData CallbackData;
-
-typedef gboolean (* PathTestFunc) (CallbackData *data);
-
-static void compare_node (const ClutterPathNode *node, gpointer data_p);
-
-struct _CallbackData
-{
- ClutterPath *path;
-
- guint n_nodes;
- ClutterPathNode nodes[MAX_NODES];
-
- gboolean nodes_different;
- guint nodes_found;
-};
-
-static const char path_desc[] =
- "M 21 22 "
- "L 25 26 "
- "C 29 30 31 32 33 34 "
- "m 23 24 "
- "l 27 28 "
- "c 35 36 37 38 39 40 "
- "z";
-static const ClutterPathNode path_nodes[] =
- { { CLUTTER_PATH_MOVE_TO, { { 21, 22 }, { 0, 0 }, { 0, 0 } } },
- { CLUTTER_PATH_LINE_TO, { { 25, 26 }, { 0, 0 }, { 0, 0 } } },
- { CLUTTER_PATH_CURVE_TO, { { 29, 30 }, { 31, 32 }, { 33, 34 } } },
- { CLUTTER_PATH_REL_MOVE_TO, { { 23, 24 }, { 0, 0 }, { 0, 0 } } },
- { CLUTTER_PATH_REL_LINE_TO, { { 27, 28 }, { 0, 0 }, { 0, 0 } } },
- { CLUTTER_PATH_REL_CURVE_TO, { { 35, 36 }, { 37, 38 }, { 39, 40 } } },
- { CLUTTER_PATH_CLOSE, { { 0, 0 }, { 0, 0 }, { 0, 0 } } } };
-
-static gboolean
-path_test_add_move_to (CallbackData *data)
-{
- ClutterPathNode node = { 0, };
-
- node.type = CLUTTER_PATH_MOVE_TO;
- node.points[0].x = 1;
- node.points[0].y = 2;
-
- clutter_path_add_move_to (data->path, node.points[0].x, node.points[0].y);
-
- data->nodes[data->n_nodes++] = node;
-
- return TRUE;
-}
-
-static gboolean
-path_test_add_line_to (CallbackData *data)
-{
- ClutterPathNode node = { 0, };
-
- node.type = CLUTTER_PATH_LINE_TO;
- node.points[0].x = 3;
- node.points[0].y = 4;
-
- clutter_path_add_line_to (data->path, node.points[0].x, node.points[0].y);
-
- data->nodes[data->n_nodes++] = node;
-
- return TRUE;
-}
-
-static gboolean
-path_test_add_curve_to (CallbackData *data)
-{
- ClutterPathNode node = { 0, };
-
- node.type = CLUTTER_PATH_CURVE_TO;
- node.points[0].x = 5;
- node.points[0].y = 6;
- node.points[1].x = 7;
- node.points[1].y = 8;
- node.points[2].x = 9;
- node.points[2].y = 10;
-
- clutter_path_add_curve_to (data->path,
- node.points[0].x, node.points[0].y,
- node.points[1].x, node.points[1].y,
- node.points[2].x, node.points[2].y);
-
- data->nodes[data->n_nodes++] = node;
-
- return TRUE;
-}
-
-static gboolean
-path_test_add_close (CallbackData *data)
-{
- ClutterPathNode node = { 0, };
-
- node.type = CLUTTER_PATH_CLOSE;
-
- clutter_path_add_close (data->path);
-
- data->nodes[data->n_nodes++] = node;
-
- return TRUE;
-}
-
-static gboolean
-path_test_add_rel_move_to (CallbackData *data)
-{
- ClutterPathNode node = { 0, };
-
- node.type = CLUTTER_PATH_REL_MOVE_TO;
- node.points[0].x = 11;
- node.points[0].y = 12;
-
- clutter_path_add_rel_move_to (data->path, node.points[0].x, node.points[0].y);
-
- data->nodes[data->n_nodes++] = node;
-
- return TRUE;
-}
-
-static gboolean
-path_test_add_rel_line_to (CallbackData *data)
-{
- ClutterPathNode node = { 0, };
-
- node.type = CLUTTER_PATH_REL_LINE_TO;
- node.points[0].x = 13;
- node.points[0].y = 14;
-
- clutter_path_add_rel_line_to (data->path, node.points[0].x, node.points[0].y);
-
- data->nodes[data->n_nodes++] = node;
-
- return TRUE;
-}
-
-static gboolean
-path_test_add_rel_curve_to (CallbackData *data)
-{
- ClutterPathNode node = { 0, };
-
- node.type = CLUTTER_PATH_REL_CURVE_TO;
- node.points[0].x = 15;
- node.points[0].y = 16;
- node.points[1].x = 17;
- node.points[1].y = 18;
- node.points[2].x = 19;
- node.points[2].y = 20;
-
- clutter_path_add_rel_curve_to (data->path,
- node.points[0].x, node.points[0].y,
- node.points[1].x, node.points[1].y,
- node.points[2].x, node.points[2].y);
-
- data->nodes[data->n_nodes++] = node;
-
- return TRUE;
-}
-
-static gboolean
-path_test_add_string (CallbackData *data)
-{
- int i;
-
- for (i = 0; i < G_N_ELEMENTS (path_nodes); i++)
- data->nodes[data->n_nodes++] = path_nodes[i];
-
- clutter_path_add_string (data->path, path_desc);
-
- return TRUE;
-}
-
-static gboolean
-path_test_add_node_by_struct (CallbackData *data)
-{
- int i;
-
- for (i = 0; i < G_N_ELEMENTS (path_nodes); i++)
- {
- data->nodes[data->n_nodes++] = path_nodes[i];
- clutter_path_add_node (data->path, path_nodes + i);
- }
-
- return TRUE;
-}
-
-static gboolean
-path_test_get_n_nodes (CallbackData *data)
-{
- return clutter_path_get_n_nodes (data->path) == data->n_nodes;
-}
-
-static gboolean
-path_test_get_node (CallbackData *data)
-{
- int i;
-
- data->nodes_found = 0;
- data->nodes_different = FALSE;
-
- for (i = 0; i < data->n_nodes; i++)
- {
- ClutterPathNode node;
-
- clutter_path_get_node (data->path, i, &node);
-
- compare_node (&node, data);
- }
-
- return !data->nodes_different;
-}
-
-static gboolean
-path_test_get_nodes (CallbackData *data)
-{
- GSList *list, *node;
-
- data->nodes_found = 0;
- data->nodes_different = FALSE;
-
- list = clutter_path_get_nodes (data->path);
-
- for (node = list; node; node = node->next)
- compare_node (node->data, data);
-
- g_slist_free (list);
-
- return !data->nodes_different && data->nodes_found == data->n_nodes;
-}
-
-static gboolean
-path_test_insert_beginning (CallbackData *data)
-{
- ClutterPathNode node;
-
- node.type = CLUTTER_PATH_LINE_TO;
- node.points[0].x = 41;
- node.points[0].y = 42;
-
- memmove (data->nodes + 1, data->nodes,
- data->n_nodes++ * sizeof (ClutterPathNode));
- data->nodes[0] = node;
-
- clutter_path_insert_node (data->path, 0, &node);
-
- return TRUE;
-}
-
-static gboolean
-path_test_insert_end (CallbackData *data)
-{
- ClutterPathNode node;
-
- node.type = CLUTTER_PATH_LINE_TO;
- node.points[0].x = 43;
- node.points[0].y = 44;
-
- data->nodes[data->n_nodes++] = node;
-
- clutter_path_insert_node (data->path, -1, &node);
-
- return TRUE;
-}
-
-static gboolean
-path_test_insert_middle (CallbackData *data)
-{
- ClutterPathNode node;
- int pos = data->n_nodes / 2;
-
- node.type = CLUTTER_PATH_LINE_TO;
- node.points[0].x = 45;
- node.points[0].y = 46;
-
- memmove (data->nodes + pos + 1, data->nodes + pos,
- (data->n_nodes - pos) * sizeof (ClutterPathNode));
- data->nodes[pos] = node;
- data->n_nodes++;
-
- clutter_path_insert_node (data->path, pos, &node);
-
- return TRUE;
-}
-
-static gboolean
-path_test_clear (CallbackData *data)
-{
- clutter_path_clear (data->path);
-
- data->n_nodes = 0;
-
- return TRUE;
-}
-
-static gboolean
-path_test_clear_insert (CallbackData *data)
-{
- return path_test_clear (data) && path_test_insert_middle (data);
-}
-
-static gboolean
-path_test_remove_beginning (CallbackData *data)
-{
- memmove (data->nodes, data->nodes + 1,
- --data->n_nodes * sizeof (ClutterPathNode));
-
- clutter_path_remove_node (data->path, 0);
-
- return TRUE;
-}
-
-static gboolean
-path_test_remove_end (CallbackData *data)
-{
- clutter_path_remove_node (data->path, --data->n_nodes);
-
- return TRUE;
-}
-
-static gboolean
-path_test_remove_middle (CallbackData *data)
-{
- int pos = data->n_nodes / 2;
-
- memmove (data->nodes + pos, data->nodes + pos + 1,
- (--data->n_nodes - pos) * sizeof (ClutterPathNode));
-
- clutter_path_remove_node (data->path, pos);
-
- return TRUE;
-}
-
-static gboolean
-path_test_remove_only (CallbackData *data)
-{
- return path_test_clear (data)
- && path_test_add_line_to (data)
- && path_test_remove_beginning (data);
-}
-
-static gboolean
-path_test_replace (CallbackData *data)
-{
- ClutterPathNode node;
- int pos = data->n_nodes / 2;
-
- node.type = CLUTTER_PATH_LINE_TO;
- node.points[0].x = 47;
- node.points[0].y = 48;
-
- data->nodes[pos] = node;
-
- clutter_path_replace_node (data->path, pos, &node);
-
- return TRUE;
-}
-
-static gboolean
-path_test_set_description (CallbackData *data)
-{
- data->n_nodes = G_N_ELEMENTS (path_nodes);
- memcpy (data->nodes, path_nodes, sizeof (path_nodes));
-
- return clutter_path_set_description (data->path, path_desc);
-}
-
-static gboolean
-path_test_get_description (CallbackData *data)
-{
- char *desc1, *desc2;
- gboolean ret = TRUE;
-
- desc1 = clutter_path_get_description (data->path);
- clutter_path_clear (data->path);
- if (!clutter_path_set_description (data->path, desc1))
- ret = FALSE;
- desc2 = clutter_path_get_description (data->path);
-
- if (strcmp (desc1, desc2))
- ret = FALSE;
-
- g_free (desc1);
- g_free (desc2);
-
- return ret;
-}
-
-static gboolean
-path_test_convert_to_cairo_path (CallbackData *data)
-{
- cairo_surface_t *surface;
- cairo_t *cr;
- cairo_path_t *cpath;
- guint i, j;
- ClutterKnot path_start = { 0, 0 }, last_point = { 0, 0 };
-
- /* Create a temporary image surface and context to hold the cairo
- path */
- surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 10, 10);
- cr = cairo_create (surface);
-
- /* Convert to a cairo path */
- clutter_path_to_cairo_path (data->path, cr);
-
- /* Get a copy of the cairo path data */
- cpath = cairo_copy_path (cr);
-
- /* Convert back to a clutter path */
- clutter_path_clear (data->path);
- clutter_path_add_cairo_path (data->path, cpath);
-
- /* The relative nodes will have been converted to absolute so we
- need to reflect this in the node array for comparison */
- for (i = 0; i < data->n_nodes; i++)
- {
- switch (data->nodes[i].type)
- {
- case CLUTTER_PATH_MOVE_TO:
- path_start = last_point = data->nodes[i].points[0];
- break;
-
- case CLUTTER_PATH_LINE_TO:
- last_point = data->nodes[i].points[0];
- break;
-
- case CLUTTER_PATH_CURVE_TO:
- last_point = data->nodes[i].points[2];
- break;
-
- case CLUTTER_PATH_REL_MOVE_TO:
- last_point.x += data->nodes[i].points[0].x;
- last_point.y += data->nodes[i].points[0].y;
- data->nodes[i].points[0] = last_point;
- data->nodes[i].type = CLUTTER_PATH_MOVE_TO;
- path_start = last_point;
- break;
-
- case CLUTTER_PATH_REL_LINE_TO:
- last_point.x += data->nodes[i].points[0].x;
- last_point.y += data->nodes[i].points[0].y;
- data->nodes[i].points[0] = last_point;
- data->nodes[i].type = CLUTTER_PATH_LINE_TO;
- break;
-
- case CLUTTER_PATH_REL_CURVE_TO:
- for (j = 0; j < 3; j++)
- {
- data->nodes[i].points[j].x += last_point.x;
- data->nodes[i].points[j].y += last_point.y;
- }
- last_point = data->nodes[i].points[2];
- data->nodes[i].type = CLUTTER_PATH_CURVE_TO;
- break;
-
- case CLUTTER_PATH_CLOSE:
- last_point = path_start;
-
- /* Cairo always adds a move to after every close so we need
- to insert one here. Since Cairo commit 166453c1abf2 it
- doesn't seem to do this anymore so will assume that if
- Cairo's minor version is >= 11 then it includes that
- commit */
- if (cairo_version () < CAIRO_VERSION_ENCODE (1, 11, 0))
- {
- memmove (data->nodes + i + 2, data->nodes + i + 1,
- (data->n_nodes - i - 1) * sizeof (ClutterPathNode));
- data->nodes[i + 1].type = CLUTTER_PATH_MOVE_TO;
- data->nodes[i + 1].points[0] = last_point;
- data->n_nodes++;
- }
- break;
- }
- }
-
- /* Free the cairo resources */
- cairo_path_destroy (cpath);
- cairo_destroy (cr);
- cairo_surface_destroy (surface);
-
- return TRUE;
-}
-
-static gboolean
-float_fuzzy_equals (float fa, float fb)
-{
- return fabs (fa - fb) <= FLOAT_FUZZ_AMOUNT;
-}
-
-static void
-set_triangle_path (CallbackData *data)
-{
- /* Triangular shaped path hitting (0,0), (64,64) and (128,0) in four
- parts. The two curves are actually straight lines */
- static const ClutterPathNode nodes[] =
- { { CLUTTER_PATH_MOVE_TO, { { 0, 0 } } },
- { CLUTTER_PATH_LINE_TO, { { 32, 32 } } },
- { CLUTTER_PATH_CURVE_TO, { { 40, 40 }, { 56, 56 }, { 64, 64 } } },
- { CLUTTER_PATH_REL_CURVE_TO, { { 8, -8 }, { 24, -24 }, { 32, -32 } } },
- { CLUTTER_PATH_REL_LINE_TO, { { 32, -32 } } } };
- gint i;
-
- clutter_path_clear (data->path);
-
- for (i = 0; i < G_N_ELEMENTS (nodes); i++)
- clutter_path_add_node (data->path, nodes + i);
-
- memcpy (data->nodes, nodes, sizeof (nodes));
- data->n_nodes = G_N_ELEMENTS (nodes);
-}
-
-static gboolean
-path_test_get_position (CallbackData *data)
-{
- static const float values[] = { 0.125f, 16.0f, 16.0f,
- 0.375f, 48.0f, 48.0f,
- 0.625f, 80.0f, 48.0f,
- 0.875f, 112.0f, 16.0f };
- gint i;
-
- set_triangle_path (data);
-
- for (i = 0; i < G_N_ELEMENTS (values); i += 3)
- {
- ClutterKnot pos;
-
- clutter_path_get_position (data->path,
- values[i],
- &pos);
-
- if (!float_fuzzy_equals (values[i + 1], pos.x)
- || !float_fuzzy_equals (values[i + 2], pos.y))
- return FALSE;
- }
-
- return TRUE;
-}
-
-static gboolean
-path_test_get_length (CallbackData *data)
-{
- const float actual_length /* sqrt(64**2 + 64**2) * 2 */ = 181.019336f;
- guint approx_length;
-
- clutter_path_set_description (data->path, "M 0 0 L 46340 0");
- g_object_get (data->path, "length", &approx_length, NULL);
-
- if (!(fabs (approx_length - 46340.f) / 46340.f <= 0.15f))
- {
- if (g_test_verbose ())
- g_print ("M 0 0 L 46340 0 - Expected 46340, got %d instead.", approx_length);
-
- return FALSE;
- }
-
- clutter_path_set_description (data->path, "M 0 0 L 46341 0");
- g_object_get (data->path, "length", &approx_length, NULL);
-
- if (!(fabs (approx_length - 46341.f) / 46341.f <= 0.15f))
- {
- if (g_test_verbose ())
- g_print ("M 0 0 L 46341 0 - Expected 46341, got %d instead.", approx_length);
-
- return FALSE;
- }
-
- set_triangle_path (data);
-
- g_object_get (data->path, "length", &approx_length, NULL);
-
- /* Allow 15% margin of error */
- if (!(fabs (approx_length - actual_length) / (float) actual_length <= 0.15f))
- {
- if (g_test_verbose ())
- g_print ("Expected %g, got %d instead.\n", actual_length, approx_length);
-
- return FALSE;
- }
-
- return TRUE;
-}
-
-static gboolean
-path_test_boxed_type (CallbackData *data)
-{
- gboolean ret = TRUE;
- GSList *nodes, *l;
- GValue value;
-
- nodes = clutter_path_get_nodes (data->path);
-
- memset (&value, 0, sizeof (value));
-
- for (l = nodes; l; l = l->next)
- {
- g_value_init (&value, CLUTTER_TYPE_PATH_NODE);
-
- g_value_set_boxed (&value, l->data);
-
- if (!clutter_path_node_equal (l->data,
- g_value_get_boxed (&value)))
- ret = FALSE;
-
- g_value_unset (&value);
- }
-
- g_slist_free (nodes);
-
- return ret;
-}
-
-static const struct
-{
- const char *desc;
- PathTestFunc func;
-}
-path_tests[] =
- {
- { "Add line to", path_test_add_line_to },
- { "Add move to", path_test_add_move_to },
- { "Add curve to", path_test_add_curve_to },
- { "Add close", path_test_add_close },
- { "Add relative line to", path_test_add_rel_line_to },
- { "Add relative move to", path_test_add_rel_move_to },
- { "Add relative curve to", path_test_add_rel_curve_to },
- { "Add string", path_test_add_string },
- { "Add node by struct", path_test_add_node_by_struct },
- { "Get number of nodes", path_test_get_n_nodes },
- { "Get a node", path_test_get_node },
- { "Get all nodes", path_test_get_nodes },
- { "Insert at beginning", path_test_insert_beginning },
- { "Insert at end", path_test_insert_end },
- { "Insert at middle", path_test_insert_middle },
- { "Add after insert", path_test_add_line_to },
- { "Clear then insert", path_test_clear_insert },
- { "Add string again", path_test_add_string },
- { "Remove from beginning", path_test_remove_beginning },
- { "Remove from end", path_test_remove_end },
- { "Remove from middle", path_test_remove_middle },
- { "Add after remove", path_test_add_line_to },
- { "Remove only node", path_test_remove_only },
- { "Add after remove again", path_test_add_line_to },
- { "Replace a node", path_test_replace },
- { "Set description", path_test_set_description },
- { "Get description", path_test_get_description },
- { "Convert to cairo path and back", path_test_convert_to_cairo_path },
- { "Clear", path_test_clear },
- { "Get position", path_test_get_position },
- { "Check node boxed type", path_test_boxed_type },
- { "Get length", path_test_get_length }
- };
-
-static void
-compare_node (const ClutterPathNode *node, gpointer data_p)
-{
- CallbackData *data = data_p;
-
- if (data->nodes_found >= data->n_nodes)
- data->nodes_different = TRUE;
- else
- {
- guint n_points = 0, i;
- const ClutterPathNode *onode = data->nodes + data->nodes_found;
-
- if (node->type != onode->type)
- data->nodes_different = TRUE;
-
- switch (node->type & ~CLUTTER_PATH_RELATIVE)
- {
- case CLUTTER_PATH_MOVE_TO: n_points = 1; break;
- case CLUTTER_PATH_LINE_TO: n_points = 1; break;
- case CLUTTER_PATH_CURVE_TO: n_points = 3; break;
- case CLUTTER_PATH_CLOSE: n_points = 0; break;
-
- default:
- data->nodes_different = TRUE;
- break;
- }
-
- for (i = 0; i < n_points; i++)
- if (node->points[i].x != onode->points[i].x
- || node->points[i].y != onode->points[i].y)
- {
- data->nodes_different = TRUE;
- break;
- }
- }
-
- data->nodes_found++;
-}
-
-static gboolean
-compare_nodes (CallbackData *data)
-{
- data->nodes_different = FALSE;
- data->nodes_found = 0;
-
- clutter_path_foreach (data->path, compare_node, data);
-
- return !data->nodes_different && data->nodes_found == data->n_nodes;
-}
-
-void
-path_base (TestConformSimpleFixture *fixture,
- gconstpointer _data)
-{
- CallbackData data;
- gint i;
-
- memset (&data, 0, sizeof (data));
-
- data.path = clutter_path_new ();
-
- for (i = 0; i < G_N_ELEMENTS (path_tests); i++)
- {
- gboolean succeeded;
-
- if (g_test_verbose ())
- g_print ("%s... ", path_tests[i].desc);
-
- succeeded = path_tests[i].func (&data) && compare_nodes (&data);
-
- if (g_test_verbose ())
- g_print ("%s\n", succeeded ? "ok" : "FAIL");
-
- g_assert (succeeded);
- }
-
- g_object_unref (data.path);
-}
-
diff --git a/clutter/tests/conform/rectangle.c b/clutter/tests/conform/rectangle.c
deleted file mode 100644
index 1c09f00b7..000000000
--- a/clutter/tests/conform/rectangle.c
+++ /dev/null
@@ -1,51 +0,0 @@
-#define CLUTTER_DISABLE_DEPRECATION_WARNINGS
-#include <clutter/clutter.h>
-
-static void
-rectangle_set_size (void)
-{
- ClutterActor *rect = clutter_rectangle_new ();
-
- /* initial positioning */
- g_assert_cmpint (clutter_actor_get_x (rect), ==, 0);
- g_assert_cmpint (clutter_actor_get_y (rect), ==, 0);
-
- clutter_actor_set_size (rect, 100, 100);
-
- /* make sure that changing the size does not affect the
- * rest of the bounding box
- */
- g_assert_cmpint (clutter_actor_get_x (rect), ==, 0);
- g_assert_cmpint (clutter_actor_get_y (rect), ==, 0);
-
- g_assert_cmpint (clutter_actor_get_width (rect), ==, 100);
- g_assert_cmpint (clutter_actor_get_height (rect), ==, 100);
-
- clutter_actor_destroy (rect);
-}
-
-static void
-rectangle_set_color (void)
-{
- ClutterActor *rect = clutter_rectangle_new ();
- ClutterColor white = { 255, 255, 255, 255 };
- ClutterColor black = { 0, 0, 0, 255 };
- ClutterColor check = { 0, };
-
- clutter_rectangle_set_color (CLUTTER_RECTANGLE (rect), &black);
- clutter_rectangle_get_color (CLUTTER_RECTANGLE (rect), &check);
- g_assert_cmpint (check.blue, ==, black.blue);
-
- clutter_rectangle_set_color (CLUTTER_RECTANGLE (rect), &white);
- clutter_rectangle_get_color (CLUTTER_RECTANGLE (rect), &check);
- g_assert_cmpint (check.green, ==, white.green);
-
- g_assert_cmpint (clutter_actor_get_opacity (rect), ==, white.alpha);
-
- clutter_actor_destroy (rect);
-}
-
-CLUTTER_TEST_SUITE (
- CLUTTER_TEST_UNIT ("/rectangle/set-size", rectangle_set_size)
- CLUTTER_TEST_UNIT ("/rectangle/set-color", rectangle_set_color)
-)
diff --git a/clutter/tests/conform/script-parser.c b/clutter/tests/conform/script-parser.c
deleted file mode 100644
index c2e2dbd08..000000000
--- a/clutter/tests/conform/script-parser.c
+++ /dev/null
@@ -1,427 +0,0 @@
-#include <stdlib.h>
-#include <string.h>
-
-#define CLUTTER_DISABLE_DEPRECATION_WARNINGS
-#include <clutter/clutter.h>
-
-#define TEST_TYPE_GROUP (test_group_get_type ())
-#define TEST_TYPE_GROUP_META (test_group_meta_get_type ())
-
-#define TEST_GROUP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TEST_TYPE_GROUP, TestGroup))
-#define TEST_IS_GROUP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TEST_TYPE_GROUP))
-
-#define TEST_GROUP_META(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TEST_TYPE_GROUP_META, TestGroupMeta))
-#define TEST_IS_GROUP_META(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TEST_TYPE_GROUP_META))
-
-typedef struct _ClutterActor TestGroup;
-typedef struct _ClutterActorClass TestGroupClass;
-
-typedef struct _TestGroupMeta {
- ClutterChildMeta parent_instance;
-
- guint is_focus : 1;
-} TestGroupMeta;
-
-typedef struct _ClutterChildMetaClass TestGroupMetaClass;
-
-GType test_group_meta_get_type (void);
-
-G_DEFINE_TYPE (TestGroupMeta, test_group_meta, CLUTTER_TYPE_CHILD_META)
-
-enum
-{
- PROP_META_0,
-
- PROP_META_FOCUS
-};
-
-static void
-test_group_meta_set_property (GObject *gobject,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- TestGroupMeta *self = TEST_GROUP_META (gobject);
-
- switch (prop_id)
- {
- case PROP_META_FOCUS:
- self->is_focus = g_value_get_boolean (value);
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
- break;
- }
-}
-
-static void
-test_group_meta_get_property (GObject *gobject,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- TestGroupMeta *self = TEST_GROUP_META (gobject);
-
- switch (prop_id)
- {
- case PROP_META_FOCUS:
- g_value_set_boolean (value, self->is_focus);
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
- break;
- }
-}
-
-static void
-test_group_meta_class_init (TestGroupMetaClass *klass)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
- GParamSpec *pspec;
-
- gobject_class->set_property = test_group_meta_set_property;
- gobject_class->get_property = test_group_meta_get_property;
-
- pspec = g_param_spec_boolean ("focus", "Focus", "Focus",
- FALSE,
- G_PARAM_READWRITE);
- g_object_class_install_property (gobject_class, PROP_META_FOCUS, pspec);
-}
-
-static void
-test_group_meta_init (TestGroupMeta *meta)
-{
- meta->is_focus = FALSE;
-}
-
-static void
-clutter_container_iface_init (ClutterContainerIface *iface)
-{
- iface->child_meta_type = TEST_TYPE_GROUP_META;
-}
-
-GType test_group_get_type (void);
-
-G_DEFINE_TYPE_WITH_CODE (TestGroup, test_group, CLUTTER_TYPE_ACTOR,
- G_IMPLEMENT_INTERFACE (CLUTTER_TYPE_CONTAINER,
- clutter_container_iface_init))
-
-static void
-test_group_class_init (TestGroupClass *klass)
-{
-}
-
-static void
-test_group_init (TestGroup *self)
-{
-}
-
-static void
-script_child (void)
-{
- ClutterScript *script = clutter_script_new ();
- GObject *container, *actor;
- GError *error = NULL;
- gboolean focus_ret;
- gchar *test_file;
-
- test_file = g_test_build_filename (G_TEST_DIST, "scripts", "test-script-child.json", NULL);
- clutter_script_load_from_file (script, test_file, &error);
- if (g_test_verbose () && error)
- g_print ("Error: %s", error->message);
-
- g_assert_no_error (error);
-
- container = actor = NULL;
- clutter_script_get_objects (script,
- "test-group", &container,
- "test-rect-1", &actor,
- NULL);
- g_assert (TEST_IS_GROUP (container));
- g_assert (CLUTTER_IS_RECTANGLE (actor));
-
- focus_ret = FALSE;
- clutter_container_child_get (CLUTTER_CONTAINER (container),
- CLUTTER_ACTOR (actor),
- "focus", &focus_ret,
- NULL);
- g_assert (focus_ret);
-
- actor = clutter_script_get_object (script, "test-rect-2");
- g_assert (CLUTTER_IS_RECTANGLE (actor));
-
- focus_ret = FALSE;
- clutter_container_child_get (CLUTTER_CONTAINER (container),
- CLUTTER_ACTOR (actor),
- "focus", &focus_ret,
- NULL);
- g_assert (!focus_ret);
-
- g_object_unref (script);
- g_free (test_file);
-}
-
-static void
-script_single (void)
-{
- ClutterScript *script = clutter_script_new ();
- ClutterColor color = { 0, };
- GObject *actor = NULL;
- GError *error = NULL;
- ClutterActor *rect;
- gchar *test_file;
-
- test_file = g_test_build_filename (G_TEST_DIST, "scripts", "test-script-single.json", NULL);
- clutter_script_load_from_file (script, test_file, &error);
- if (g_test_verbose () && error)
- g_print ("Error: %s", error->message);
-
- g_assert_no_error (error);
-
- actor = clutter_script_get_object (script, "test");
- g_assert (CLUTTER_IS_RECTANGLE (actor));
-
- rect = CLUTTER_ACTOR (actor);
- g_assert_cmpfloat (clutter_actor_get_width (rect), ==, 50.0);
- g_assert_cmpfloat (clutter_actor_get_y (rect), ==, 100.0);
-
- clutter_rectangle_get_color (CLUTTER_RECTANGLE (rect), &color);
- g_assert_cmpint (color.red, ==, 255);
- g_assert_cmpint (color.green, ==, 0xcc);
- g_assert_cmpint (color.alpha, ==, 0xff);
-
- g_object_unref (script);
- g_free (test_file);
-}
-
-static void
-script_implicit_alpha (void)
-{
- ClutterScript *script = clutter_script_new ();
- ClutterTimeline *timeline;
- GObject *behaviour = NULL;
- GError *error = NULL;
- ClutterAlpha *alpha;
- gchar *test_file;
-
- test_file = g_test_build_filename (G_TEST_DIST, "scripts", "test-script-implicit-alpha.json", NULL);
- clutter_script_load_from_file (script, test_file, &error);
- if (g_test_verbose () && error)
- g_print ("Error: %s", error->message);
-
-#if GLIB_CHECK_VERSION (2, 20, 0)
- g_assert_no_error (error);
-#else
- g_assert (error == NULL);
-#endif
-
- behaviour = clutter_script_get_object (script, "test");
- g_assert (CLUTTER_IS_BEHAVIOUR (behaviour));
-
- alpha = clutter_behaviour_get_alpha (CLUTTER_BEHAVIOUR (behaviour));
- g_assert (CLUTTER_IS_ALPHA (alpha));
-
- g_assert_cmpint (clutter_alpha_get_mode (alpha), ==, CLUTTER_EASE_OUT_CIRC);
-
- timeline = clutter_alpha_get_timeline (alpha);
- g_assert (CLUTTER_IS_TIMELINE (timeline));
-
- g_assert_cmpint (clutter_timeline_get_duration (timeline), ==, 500);
-
- g_object_unref (script);
- g_free (test_file);
-}
-
-static void
-script_object_property (void)
-{
- ClutterScript *script = clutter_script_new ();
- ClutterLayoutManager *manager;
- GObject *actor = NULL;
- GError *error = NULL;
- gchar *test_file;
-
- test_file = g_test_build_filename (G_TEST_DIST, "scripts", "test-script-object-property.json", NULL);
- clutter_script_load_from_file (script, test_file, &error);
- if (g_test_verbose () && error)
- g_print ("Error: %s", error->message);
-
- g_assert_no_error (error);
-
- actor = clutter_script_get_object (script, "test");
- g_assert (CLUTTER_IS_BOX (actor));
-
- manager = clutter_box_get_layout_manager (CLUTTER_BOX (actor));
- g_assert (CLUTTER_IS_BIN_LAYOUT (manager));
-
- g_object_unref (script);
- g_free (test_file);
-}
-
-static void
-script_named_object (void)
-{
- ClutterScript *script = clutter_script_new ();
- ClutterLayoutManager *manager;
- GObject *actor = NULL;
- GError *error = NULL;
- gchar *test_file;
-
- test_file = g_test_build_filename (G_TEST_DIST, "scripts", "test-script-named-object.json", NULL);
- clutter_script_load_from_file (script, test_file, &error);
- if (g_test_verbose () && error)
- g_print ("Error: %s", error->message);
-
- g_assert_no_error (error);
-
- actor = clutter_script_get_object (script, "test");
- g_assert (CLUTTER_IS_BOX (actor));
-
- manager = clutter_box_get_layout_manager (CLUTTER_BOX (actor));
- g_assert (CLUTTER_IS_BOX_LAYOUT (manager));
- g_assert (clutter_box_layout_get_vertical (CLUTTER_BOX_LAYOUT (manager)));
-
- g_object_unref (script);
- g_free (test_file);
-}
-
-static void
-script_animation (void)
-{
- ClutterScript *script = clutter_script_new ();
- GObject *animation = NULL;
- GError *error = NULL;
- gchar *test_file;
-
- test_file = g_test_build_filename (G_TEST_DIST, "scripts", "test-script-animation.json", NULL);
- clutter_script_load_from_file (script, test_file, &error);
- if (g_test_verbose () && error)
- g_print ("Error: %s", error->message);
-
- g_assert_no_error (error);
-
- animation = clutter_script_get_object (script, "test");
- g_assert (CLUTTER_IS_ANIMATION (animation));
-
- g_object_unref (script);
- g_free (test_file);
-}
-
-static void
-script_layout_property (void)
-{
- ClutterScript *script = clutter_script_new ();
- GObject *manager, *container, *actor1, *actor2;
- GError *error = NULL;
- gchar *test_file;
- gboolean x_fill, expand;
- ClutterBoxAlignment y_align;
-
- test_file = g_test_build_filename (G_TEST_DIST, "scripts", "test-script-layout-property.json", NULL);
- clutter_script_load_from_file (script, test_file, &error);
- if (g_test_verbose () && error)
- g_print ("Error: %s", error->message);
-
- g_assert_no_error (error);
-
- manager = container = actor1 = actor2 = NULL;
- clutter_script_get_objects (script,
- "manager", &manager,
- "container", &container,
- "actor-1", &actor1,
- "actor-2", &actor2,
- NULL);
-
- g_assert (CLUTTER_IS_LAYOUT_MANAGER (manager));
- g_assert (CLUTTER_IS_CONTAINER (container));
- g_assert (CLUTTER_IS_ACTOR (actor1));
- g_assert (CLUTTER_IS_ACTOR (actor2));
-
- x_fill = FALSE;
- y_align = CLUTTER_BOX_ALIGNMENT_START;
- expand = FALSE;
- clutter_layout_manager_child_get (CLUTTER_LAYOUT_MANAGER (manager),
- CLUTTER_CONTAINER (container),
- CLUTTER_ACTOR (actor1),
- "x-fill", &x_fill,
- "y-align", &y_align,
- "expand", &expand,
- NULL);
-
- g_assert (x_fill);
- g_assert (y_align == CLUTTER_BOX_ALIGNMENT_CENTER);
- g_assert (expand);
-
- x_fill = TRUE;
- y_align = CLUTTER_BOX_ALIGNMENT_START;
- expand = TRUE;
- clutter_layout_manager_child_get (CLUTTER_LAYOUT_MANAGER (manager),
- CLUTTER_CONTAINER (container),
- CLUTTER_ACTOR (actor2),
- "x-fill", &x_fill,
- "y-align", &y_align,
- "expand", &expand,
- NULL);
-
- g_assert (x_fill == FALSE);
- g_assert (y_align == CLUTTER_BOX_ALIGNMENT_END);
- g_assert (expand == FALSE);
-
- g_object_unref (script);
-}
-
-static void
-script_margin (void)
-{
- ClutterScript *script = clutter_script_new ();
- ClutterActor *actor;
- gchar *test_file;
- GError *error = NULL;
-
- test_file = g_test_build_filename (G_TEST_DIST, "scripts", "test-script-margin.json", NULL);
- clutter_script_load_from_file (script, test_file, &error);
- if (g_test_verbose () && error)
- g_print ("Error: %s", error->message);
-
- g_assert_no_error (error);
-
- actor = CLUTTER_ACTOR (clutter_script_get_object (script, "actor-1"));
- g_assert_cmpfloat (clutter_actor_get_margin_top (actor), ==, 10.0f);
- g_assert_cmpfloat (clutter_actor_get_margin_right (actor), ==, 10.0f);
- g_assert_cmpfloat (clutter_actor_get_margin_bottom (actor), ==, 10.0f);
- g_assert_cmpfloat (clutter_actor_get_margin_left (actor), ==, 10.0f);
-
- actor = CLUTTER_ACTOR (clutter_script_get_object (script, "actor-2"));
- g_assert_cmpfloat (clutter_actor_get_margin_top (actor), ==, 10.0f);
- g_assert_cmpfloat (clutter_actor_get_margin_right (actor), ==, 20.0f);
- g_assert_cmpfloat (clutter_actor_get_margin_bottom (actor), ==, 10.0f);
- g_assert_cmpfloat (clutter_actor_get_margin_left (actor), ==, 20.0f);
-
- actor = CLUTTER_ACTOR (clutter_script_get_object (script, "actor-3"));
- g_assert_cmpfloat (clutter_actor_get_margin_top (actor), ==, 10.0f);
- g_assert_cmpfloat (clutter_actor_get_margin_right (actor), ==, 20.0f);
- g_assert_cmpfloat (clutter_actor_get_margin_bottom (actor), ==, 30.0f);
- g_assert_cmpfloat (clutter_actor_get_margin_left (actor), ==, 20.0f);
-
- actor = CLUTTER_ACTOR (clutter_script_get_object (script, "actor-4"));
- g_assert_cmpfloat (clutter_actor_get_margin_top (actor), ==, 10.0f);
- g_assert_cmpfloat (clutter_actor_get_margin_right (actor), ==, 20.0f);
- g_assert_cmpfloat (clutter_actor_get_margin_bottom (actor), ==, 30.0f);
- g_assert_cmpfloat (clutter_actor_get_margin_left (actor), ==, 40.0f);
-
- g_object_unref (script);
- g_free (test_file);
-}
-
-CLUTTER_TEST_SUITE (
- CLUTTER_TEST_UNIT ("/script/single-object", script_single)
- CLUTTER_TEST_UNIT ("/script/container-child", script_child)
- CLUTTER_TEST_UNIT ("/script/named-object", script_named_object)
- CLUTTER_TEST_UNIT ("/script/animation", script_animation)
- CLUTTER_TEST_UNIT ("/script/implicit-alpha", script_implicit_alpha)
- CLUTTER_TEST_UNIT ("/script/object-property", script_object_property)
- CLUTTER_TEST_UNIT ("/script/layout-property", script_layout_property)
- CLUTTER_TEST_UNIT ("/script/actor-margin", script_margin)
-)
diff --git a/clutter/tests/conform/scripts/test-animator-1.json b/clutter/tests/conform/scripts/test-animator-1.json
deleted file mode 100644
index 2d6aab908..000000000
--- a/clutter/tests/conform/scripts/test-animator-1.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "type" : "ClutterAnimator",
- "id" : "animator",
- "duration" : 1000
-}
diff --git a/clutter/tests/conform/scripts/test-animator-2.json b/clutter/tests/conform/scripts/test-animator-2.json
deleted file mode 100644
index 9059f57ed..000000000
--- a/clutter/tests/conform/scripts/test-animator-2.json
+++ /dev/null
@@ -1,29 +0,0 @@
-[
- {
- "type" : "ClutterRectangle",
- "id" : "foo",
- "x" : 0,
- "y" : 0,
- "width" : 100,
- "height" : 100
- },
- {
- "type" : "ClutterAnimator",
- "id" : "animator",
- "duration" : 1000,
-
- "properties" : [
- {
- "object" : "foo",
- "name" : "x",
- "ease-in" : true,
- "interpolation" : "linear",
- "keys" : [
- [ 0.0, "easeInCubic", 100.0 ],
- [ 0.2, "easeOutCubic", 150.0 ],
- [ 0.8, "linear", 200.0 ]
- ]
- }
- ]
- }
-]
diff --git a/clutter/tests/conform/scripts/test-animator-3.json b/clutter/tests/conform/scripts/test-animator-3.json
deleted file mode 100644
index 26d779bee..000000000
--- a/clutter/tests/conform/scripts/test-animator-3.json
+++ /dev/null
@@ -1,40 +0,0 @@
-[
- {
- "type" : "ClutterRectangle",
- "id" : "foo",
- "x" : 0,
- "y" : 0,
- "width" : 100,
- "height" : 100
- },
- {
- "type" : "ClutterAnimator",
- "id" : "animator",
- "duration" : 1000,
-
- "properties" : [
- {
- "object" : "foo",
- "name" : "x",
- "ease-in" : true,
- "interpolation" : "linear",
- "keys" : [
- [ 0.0, "easeInCubic", 100.0 ],
- [ 0.2, "easeOutCubic", 150.0 ],
- [ 0.8, "linear", 200.0 ]
- ]
- },
- {
- "object" : "foo",
- "name" : "y",
- "ease-in" : true,
- "interpolation" : "linear",
- "keys" : [
- [ 0.0, "easeInCubic", 100.0 ],
- [ 0.2, "easeOutCubic", 150.0 ],
- [ 0.8, "linear", 200.0 ]
- ]
- }
- ]
- }
-]
diff --git a/clutter/tests/conform/scripts/test-script-animation.json b/clutter/tests/conform/scripts/test-script-animation.json
deleted file mode 100644
index d6ef90343..000000000
--- a/clutter/tests/conform/scripts/test-script-animation.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "type" : "ClutterAnimation",
- "id" : "test",
- "mode" : "easeInCubic",
- "duration" : 500,
- "object" : {
- "type" : "ClutterRectangle",
- "id" : "rect",
- "opacity" : 128,
- "width" : 100,
- "height" : 16,
- "color" : "white"
- }
-}
diff --git a/clutter/tests/conform/scripts/test-script-child.json b/clutter/tests/conform/scripts/test-script-child.json
deleted file mode 100644
index 5e8ac5242..000000000
--- a/clutter/tests/conform/scripts/test-script-child.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "type" : "TestGroup",
- "id" : "test-group",
- "children" : [
- {
- "type" : "ClutterRectangle",
- "id" : "test-rect-1",
- "width" : 100.0,
- "height" : 100.0,
- "color" : [ 255, 0, 0, 255 ],
- "child::focus" : true
- },
- {
- "type" : "ClutterRectangle",
- "id" : "test-rect-2",
- "width" : 100.0,
- "height" : 100.0,
- "color" : [ 0, 255, 0, 255 ]
- }
- ]
-}
diff --git a/clutter/tests/conform/scripts/test-script-implicit-alpha.json b/clutter/tests/conform/scripts/test-script-implicit-alpha.json
deleted file mode 100644
index 5aab70d3d..000000000
--- a/clutter/tests/conform/scripts/test-script-implicit-alpha.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "id" : "test",
- "type" : "ClutterBehaviourOpacity",
- "alpha" : {
- "mode" : "easeOutCirc",
- "timeline" : { "duration" : 500 }
- }
-}
diff --git a/clutter/tests/conform/scripts/test-script-interval.json b/clutter/tests/conform/scripts/test-script-interval.json
deleted file mode 100644
index 35fe5c22c..000000000
--- a/clutter/tests/conform/scripts/test-script-interval.json
+++ /dev/null
@@ -1,16 +0,0 @@
-[
- {
- "id" : "int-1",
- "type" : "ClutterInterval",
- "value-type" : "gfloat",
- "initial" : 23.3,
- "final" : 42.2
- },
- {
- "id" : "int-2",
- "type" : "ClutterInterval",
- "value-type" : "ClutterColor",
- "initial" : "red",
- "final" : "blue"
- }
-]
diff --git a/clutter/tests/conform/scripts/test-script-layout-property.json b/clutter/tests/conform/scripts/test-script-layout-property.json
deleted file mode 100644
index 17e9f4882..000000000
--- a/clutter/tests/conform/scripts/test-script-layout-property.json
+++ /dev/null
@@ -1,21 +0,0 @@
-[
- { "id" : "manager", "type" : "ClutterBoxLayout" },
-
- {
- "id" : "container", "type" : "ClutterBox",
- "layout-manager" : "manager",
- "children" : [
- {
- "id" : "actor-1", "type" : "ClutterRectangle",
- "layout::x-fill" : true,
- "layout::y-align" : "center",
- "layout::expand" : true
- }, {
- "id" : "actor-2", "type" : "ClutterRectangle",
- "layout::x-fill" : false,
- "layout::y-align" : "end",
- "layout::expand" : false
- }
- ]
- }
-]
diff --git a/clutter/tests/conform/scripts/test-script-margin.json b/clutter/tests/conform/scripts/test-script-margin.json
deleted file mode 100644
index 1f5289fa6..000000000
--- a/clutter/tests/conform/scripts/test-script-margin.json
+++ /dev/null
@@ -1,22 +0,0 @@
-[
- {
- "id" : "actor-1",
- "type" : "ClutterActor",
- "margin" : [ 10 ]
- },
- {
- "id" : "actor-2",
- "type" : "ClutterActor",
- "margin" : [ 10, 20 ]
- },
- {
- "id" : "actor-3",
- "type" : "ClutterActor",
- "margin" : [ 10, 20, 30 ]
- },
- {
- "id" : "actor-4",
- "type" : "ClutterActor",
- "margin" : [ 10, 20, 30, 40]
- }
-]
diff --git a/clutter/tests/conform/scripts/test-script-model.json b/clutter/tests/conform/scripts/test-script-model.json
deleted file mode 100644
index 9bd6aefc5..000000000
--- a/clutter/tests/conform/scripts/test-script-model.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "id" : "test-model",
- "type" : "ClutterListModel",
- "columns" : [
- [ "text-column", "gchararray" ],
- [ "int-column", "gint" ],
- [ "actor-column", "ClutterRectangle" ]
- ],
- "rows" : [
- [ "text-row-1", 1, null ],
- [ "text-row-2", 2, { "type" : "ClutterRectangle", "color" : "blue" } ],
- {
- "int-column" : 3,
- "actor-column" : { "type" : "ClutterRectangle", "name" : "actor-row-3" }
- }
- ]
-}
diff --git a/clutter/tests/conform/scripts/test-script-named-object.json b/clutter/tests/conform/scripts/test-script-named-object.json
deleted file mode 100644
index 6611b62a4..000000000
--- a/clutter/tests/conform/scripts/test-script-named-object.json
+++ /dev/null
@@ -1,44 +0,0 @@
-[
- {
- "id" : "layout",
- "type" : "ClutterBoxLayout",
- "orientation" : "vertical",
- "spacing" : 12,
- "pack-start" : false
- },
- {
- "type" : "ClutterStage",
- "id" : "main-stage",
- "children" : [
- {
- "id" : "test",
- "type" : "ClutterBox",
- "layout-manager" : "layout",
- "children" : [
- {
- "id" : "child-1",
- "type" : "ClutterRectangle",
- "width" : "3 em",
- "height" : "3 em"
- }
- ],
- "constraints" : [
- {
- "type" : "ClutterAlignConstraint",
- "name" : "x-align",
- "factor" : 0.5,
- "align-axis" : "x-axis",
- "source" : "main-stage"
- },
- {
- "type" : "ClutterAlignConstraint",
- "name" : "y-align",
- "factor" : 0.5,
- "align-axis" : "y-axis",
- "source" : "main-stage"
- }
- ]
- }
- ]
- }
-]
diff --git a/clutter/tests/conform/scripts/test-script-object-property.json b/clutter/tests/conform/scripts/test-script-object-property.json
deleted file mode 100644
index 18a02fb8b..000000000
--- a/clutter/tests/conform/scripts/test-script-object-property.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "id" : "test",
- "type" : "ClutterBox",
- "layout-manager" : { "id" : "layout", "type" : "ClutterBinLayout" },
- "children" : [
- {
- "id" : "child-1",
- "type" : "ClutterRectangle",
- "width" : "3 em",
- "height" : "3 em"
- }
- ]
-}
diff --git a/clutter/tests/conform/scripts/test-script-single.json b/clutter/tests/conform/scripts/test-script-single.json
deleted file mode 100644
index e20a318df..000000000
--- a/clutter/tests/conform/scripts/test-script-single.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "type" : "ClutterRectangle",
- "id" : "test",
- "width" : 50.0,
- "height" : 100.0,
- "x" : 100.0,
- "y" : 100.0,
- "color" : "#ffccdd",
- "name" : "Test Rectangle"
-}
diff --git a/clutter/tests/conform/scripts/test-script-timeline-markers.json b/clutter/tests/conform/scripts/test-script-timeline-markers.json
deleted file mode 100644
index f5fff5c42..000000000
--- a/clutter/tests/conform/scripts/test-script-timeline-markers.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "id" : "timeline0",
- "type" : "ClutterTimeline",
- "duration" : 1000,
-
- "markers" : [
- { "name" : "marker0", "time" : 250 },
- { "name" : "marker1", "time" : 500 },
- { "name" : "marker2", "time" : 750 },
- { "name" : "marker3", "progress" : 0.5 }
- ]
-}
diff --git a/clutter/tests/conform/scripts/test-state-1.json b/clutter/tests/conform/scripts/test-state-1.json
deleted file mode 100644
index 78ab5de89..000000000
--- a/clutter/tests/conform/scripts/test-state-1.json
+++ /dev/null
@@ -1,33 +0,0 @@
-[
- {
- "type" : "ClutterRectangle",
- "id" : "rect",
- "width" : 100,
- "height" : 100
- },
- {
- "type" : "ClutterState",
- "id" : "state",
-
- "transitions" : [
- {
- "source" : "base",
- "target" : "clicked",
- "duration" : 250,
-
- "keys" : [
- [ "rect", "opacity", "linear", 128 ]
- ]
- },
- {
- "source" : "clicked",
- "target" : "base",
- "duration" : 150,
-
- "keys" : [
- [ "rect", "opacity", "linear", 255 ]
- ]
- }
- ]
- }
-]
diff --git a/clutter/tests/conform/state.c b/clutter/tests/conform/state.c
deleted file mode 100644
index 7e4720dc5..000000000
--- a/clutter/tests/conform/state.c
+++ /dev/null
@@ -1,87 +0,0 @@
-#include <clutter/clutter.h>
-
-#include "test-conform-common.h"
-
-void
-state_base (TestConformSimpleFixture *fixture G_GNUC_UNUSED,
- gconstpointer dummy G_GNUC_UNUSED)
-{
- ClutterScript *script = clutter_script_new ();
- GObject *state = NULL;
- GError *error = NULL;
- gchar *test_file;
- GList *states, *keys;
- ClutterStateKey *state_key;
- guint duration;
-
- test_file = clutter_test_get_data_file ("test-state-1.json");
- clutter_script_load_from_file (script, test_file, &error);
- if (g_test_verbose () && error)
- g_print ("Error: %s\n", error->message);
-
- g_free (test_file);
-
-#if GLIB_CHECK_VERSION (2, 20, 0)
- g_assert_no_error (error);
-#else
- g_assert (error == NULL);
-#endif
-
- state = clutter_script_get_object (script, "state");
- g_assert (CLUTTER_IS_STATE (state));
-
- states = clutter_state_get_states (CLUTTER_STATE (state));
- g_assert (states != NULL);
-
- g_assert (g_list_find (states, g_intern_static_string ("clicked")));
- g_list_free (states);
-
- duration = clutter_state_get_duration (CLUTTER_STATE (state), "base", "clicked");
- g_assert_cmpint (duration, ==, 250);
-
- duration = clutter_state_get_duration (CLUTTER_STATE (state), "clicked", "base");
- g_assert_cmpint (duration, ==, 150);
-
- keys = clutter_state_get_keys (CLUTTER_STATE (state), "base", "clicked",
- clutter_script_get_object (script, "rect"),
- "opacity");
-
- g_assert (keys != NULL);
- g_assert_cmpint (g_list_length (keys), ==, 1);
-
- state_key = keys->data;
- g_assert (clutter_state_key_get_object (state_key) == clutter_script_get_object (script, "rect"));
- g_assert (clutter_state_key_get_mode (state_key) == CLUTTER_LINEAR);
- g_assert_cmpstr (clutter_state_key_get_property_name (state_key), ==, "opacity");
-
- g_list_free (keys);
- keys = clutter_state_get_keys (CLUTTER_STATE (state), NULL, NULL, NULL, NULL);
- g_assert_cmpint (g_list_length (keys), ==, 2);
- g_list_free (keys);
-
-
-
- clutter_state_set (CLUTTER_STATE (state), "base", "clicked", state, "state", CLUTTER_LINEAR, "foo", NULL);
-
- keys = clutter_state_get_keys (CLUTTER_STATE (state), "base", "clicked",
- NULL, NULL);
-
- g_assert (keys != NULL);
- g_assert_cmpint (g_list_length (keys), ==, 2);
- g_list_free (keys);
-
- states = clutter_state_get_states (CLUTTER_STATE (state));
- g_assert_cmpint (g_list_length (states), ==, 2);
- g_list_free (states);
-
- clutter_state_remove_key (CLUTTER_STATE (state), NULL, "clicked", NULL, NULL);
- states = clutter_state_get_states (CLUTTER_STATE (state));
-
- /* removing the "clicked" state, will also cause the "base" state to be removed
- * since in the .json there is no default source state
- */
- g_assert_cmpint (g_list_length (states), ==, 0);
- g_list_free (states);
-
- g_object_unref (script);
-}
diff --git a/clutter/tests/conform/text-cache.c b/clutter/tests/conform/text-cache.c
deleted file mode 100644
index 6b4bddf78..000000000
--- a/clutter/tests/conform/text-cache.c
+++ /dev/null
@@ -1,297 +0,0 @@
-#include <clutter/clutter.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include "test-conform-common.h"
-
-#define TEST_FONT "Sans 10"
-
-static const char long_text[] =
- "<b>This</b> <i>is</i> some <span size=\"x-large\">REALLY</span> "
- "long text that contains markup for testing the <tt>use_markup</tt> "
- "property and to test word-wrapping, justification and alignment.";
-
-typedef struct _CallbackData CallbackData;
-
-struct _CallbackData
-{
- ClutterActor *stage;
- ClutterActor *label;
-
- PangoLayout *old_layout;
- gboolean layout_changed;
- PangoRectangle label_extents;
-
- PangoLayout *test_layout;
-
- gboolean test_failed;
-};
-
-static void
-on_paint (ClutterActor *stage, CallbackData *data)
-{
- PangoLayout *new_layout;
-
- /* Check whether the layout used for this paint is different from
- the layout used for the last paint */
- new_layout = clutter_text_get_layout (CLUTTER_TEXT (data->label));
- data->layout_changed = data->old_layout != new_layout;
-
- if (data->old_layout)
- g_object_unref (data->old_layout);
- /* Keep a reference to the old layout so we can be sure it won't
- just reallocate a new layout with the same address */
- data->old_layout = g_object_ref (new_layout);
-
- pango_layout_get_extents (new_layout, NULL, &data->label_extents);
-}
-
-static void
-force_redraw (CallbackData *data)
-{
- /* XXX - this is fugly; we force a paint on the stage, which
- * will then paint the Text actor. inside the Text actor we
- * check for a Layout with the allocation size. if the allocation
- * has changed it will cause a relayout in the middle of the
- * paint, which is expensive and broken. this will ensure that
- * the test passes, though
- */
- clutter_actor_paint (clutter_actor_get_stage (data->label));
-}
-
-static gboolean
-check_result (CallbackData *data, const char *note,
- gboolean layout_should_change)
-{
- PangoRectangle test_extents;
- gboolean fail = FALSE;
-
- if (g_test_verbose ())
- g_print ("%s: ", note);
-
- /* Force a redraw to get the on_paint handler to run */
- force_redraw (data);
-
- /* Compare the extents from the label with the extents from our test
- layout */
- pango_layout_get_extents (data->test_layout, NULL, &test_extents);
- if (memcmp (&test_extents, &data->label_extents, sizeof (PangoRectangle)))
- {
- if (g_test_verbose ())
- g_print ("extents are different: expected: %d, %d, %d, %d "
- "-> text: %d, %d, %d, %d\n",
- test_extents.x / 1024,
- test_extents.y / 1024,
- test_extents.width / 1024,
- test_extents.height / 1024,
- data->label_extents.x / 1024,
- data->label_extents.y / 1024,
- data->label_extents.width / 1024,
- data->label_extents.height / 1024);
-
- fail = TRUE;
- }
- else
- {
- if (g_test_verbose ())
- g_print ("extents are the same, ");
- }
-
- if (data->layout_changed)
- {
- if (g_test_verbose ())
- g_print ("layout changed, ");
- }
- else
- {
- if (g_test_verbose ())
- g_print ("layout did not change, ");
- }
-
- if (data->layout_changed != layout_should_change)
- fail = TRUE;
-
- if (fail)
- {
- if (g_test_verbose ())
- g_print ("FAIL\n");
-
- data->test_failed = TRUE;
- }
- else
- {
- if (g_test_verbose ())
- g_print ("pass\n");
- }
-
- return fail;
-}
-
-static gboolean
-do_tests (CallbackData *data)
-{
- PangoFontDescription *fd;
- static const ClutterColor red = { 0xff, 0x00, 0x00, 0xff };
- PangoAttrList *attr_list, *attr_list_copy;
- PangoAttribute *attr;
-
- /* TEST 1: change the text */
- clutter_text_set_text (CLUTTER_TEXT (data->label), "Counter 0");
- pango_layout_set_text (data->test_layout, "Counter 0", -1);
- g_assert (check_result (data, "Change text", TRUE) == FALSE);
-
- /* TEST 2: change a single character */
- clutter_text_set_text (CLUTTER_TEXT (data->label), "Counter 1");
- pango_layout_set_text (data->test_layout, "Counter 1", -1);
- g_assert (check_result (data, "Change a single character", TRUE) == FALSE);
-
- /* TEST 3: move the label */
- clutter_actor_set_position (data->label, 10, 0);
- g_assert (check_result (data, "Move the label", FALSE) == FALSE);
-
- /* TEST 4: change the font */
- clutter_text_set_font_name (CLUTTER_TEXT (data->label), "Serif 15");
- fd = pango_font_description_from_string ("Serif 15");
- pango_layout_set_font_description (data->test_layout, fd);
- pango_font_description_free (fd);
- g_assert (check_result (data, "Change the font", TRUE) == FALSE);
-
- /* TEST 5: change the color */
- clutter_text_set_color (CLUTTER_TEXT (data->label), &red);
- g_assert (check_result (data, "Change the color", FALSE) == FALSE);
-
- /* TEST 6: change the attributes */
- attr = pango_attr_weight_new (PANGO_WEIGHT_BOLD);
- attr->start_index = 0;
- attr->end_index = 2;
- attr_list = pango_attr_list_new ();
- pango_attr_list_insert (attr_list, attr);
- attr_list_copy = pango_attr_list_copy (attr_list);
- clutter_text_set_attributes (CLUTTER_TEXT (data->label), attr_list);
- pango_layout_set_attributes (data->test_layout, attr_list_copy);
- pango_attr_list_unref (attr_list_copy);
- pango_attr_list_unref (attr_list);
- g_assert (check_result (data, "Change the attributes", TRUE) == FALSE);
-
- /* TEST 7: change the text again */
- clutter_text_set_attributes (CLUTTER_TEXT (data->label), NULL);
- clutter_text_set_text (CLUTTER_TEXT (data->label), long_text);
- pango_layout_set_attributes (data->test_layout, NULL);
- pango_layout_set_text (data->test_layout, long_text, -1);
- g_assert (check_result (data, "Change the text again", TRUE) == FALSE);
-
- /* TEST 8: enable markup */
- clutter_text_set_use_markup (CLUTTER_TEXT (data->label), TRUE);
- pango_layout_set_markup (data->test_layout, long_text, -1);
- g_assert (check_result (data, "Enable markup", TRUE) == FALSE);
-
- /* This part can't be a test because Clutter won't restrict the
- width if wrapping and ellipsizing is disabled so the extents will
- be different, but we still want to do it for the later tests */
- clutter_actor_set_width (data->label, 200);
- pango_layout_set_width (data->test_layout, 200 * PANGO_SCALE);
- /* Force a redraw so that changing the width won't affect the
- results */
- force_redraw (data);
-
- /* TEST 9: enable ellipsize */
- clutter_text_set_ellipsize (CLUTTER_TEXT (data->label),
- PANGO_ELLIPSIZE_END);
- pango_layout_set_ellipsize (data->test_layout, PANGO_ELLIPSIZE_END);
- g_assert (check_result (data, "Enable ellipsize", TRUE) == FALSE);
- clutter_text_set_ellipsize (CLUTTER_TEXT (data->label),
- PANGO_ELLIPSIZE_NONE);
- pango_layout_set_ellipsize (data->test_layout, PANGO_ELLIPSIZE_NONE);
- force_redraw (data);
-
- /* TEST 10: enable line wrap */
- clutter_text_set_line_wrap (CLUTTER_TEXT (data->label), TRUE);
- pango_layout_set_wrap (data->test_layout, PANGO_WRAP_WORD);
- g_assert (check_result (data, "Enable line wrap", TRUE) == FALSE);
-
- /* TEST 11: change wrap mode
- * FIXME - broken
- */
- clutter_text_set_line_wrap_mode (CLUTTER_TEXT (data->label),
- PANGO_WRAP_CHAR);
- pango_layout_set_wrap (data->test_layout, PANGO_WRAP_CHAR);
- g_assert (check_result (data, "Change wrap mode", TRUE) == FALSE);
-
- /* TEST 12: enable justify */
- clutter_text_set_justify (CLUTTER_TEXT (data->label), TRUE);
- pango_layout_set_justify (data->test_layout, TRUE);
- /* Pango appears to have a bug which means that you can't change the
- justification after setting the text but this fixes it.
- See http://bugzilla.gnome.org/show_bug.cgi?id=551865 */
- pango_layout_context_changed (data->test_layout);
- g_assert (check_result (data, "Enable justify", TRUE) == FALSE);
-
- /* TEST 13: change alignment */
- clutter_text_set_line_alignment (CLUTTER_TEXT (data->label),
- PANGO_ALIGN_RIGHT);
- pango_layout_set_alignment (data->test_layout, PANGO_ALIGN_RIGHT);
- g_assert (check_result (data, "Change alignment", TRUE) == FALSE);
-
- clutter_main_quit ();
-
- return FALSE;
-}
-
-static PangoLayout *
-make_layout_like_label (ClutterText *label)
-{
- PangoLayout *label_layout, *new_layout;
- PangoContext *context;
- PangoFontDescription *fd;
-
- /* Make another layout using the same context as the layout from the
- label */
- label_layout = clutter_text_get_layout (label);
- context = pango_layout_get_context (label_layout);
- new_layout = pango_layout_new (context);
- fd = pango_font_description_from_string (TEST_FONT);
- pango_layout_set_font_description (new_layout, fd);
- pango_font_description_free (fd);
-
- return new_layout;
-}
-
-void
-text_cache (void)
-{
- CallbackData data;
-
- memset (&data, 0, sizeof (data));
-
- data.stage = clutter_stage_new ();
-
- data.label = clutter_text_new_with_text (TEST_FONT, "");
-
- data.test_layout = make_layout_like_label (CLUTTER_TEXT (data.label));
-
- g_signal_connect (data.stage, "paint", G_CALLBACK (on_paint), &data);
-
- clutter_container_add (CLUTTER_CONTAINER (data.stage), data.label, NULL);
-
- clutter_actor_show (data.stage);
-
- clutter_threads_add_idle ((GSourceFunc) do_tests, &data);
-
- clutter_main ();
-
- clutter_actor_destroy (data.stage);
-
- if (g_test_verbose ())
- g_print ("\nOverall result: ");
-
- if (g_test_verbose ())
- {
- if (data.test_failed)
- g_print ("FAIL\n");
- else
- g_print ("pass\n");
- }
- else
- g_assert (data.test_failed != TRUE);
-}
-
diff --git a/clutter/tests/conform/text.c b/clutter/tests/conform/text.c
deleted file mode 100644
index cef99023e..000000000
--- a/clutter/tests/conform/text.c
+++ /dev/null
@@ -1,563 +0,0 @@
-#include <glib.h>
-#include <clutter/clutter.h>
-#include <string.h>
-
-typedef struct {
- gunichar unichar;
- const char bytes[6];
- gint nbytes;
-} TestData;
-
-static const TestData
-test_text_data[] = {
- { 0xe4, "\xc3\xa4", 2 }, /* LATIN SMALL LETTER A WITH DIAERESIS */
- { 0x2665, "\xe2\x99\xa5", 3 } /* BLACK HEART SUIT */
-};
-
-static void
-text_utf8_validation (void)
-{
- int i;
-
- for (i = 0; i < G_N_ELEMENTS (test_text_data); i++)
- {
- const TestData *t = &test_text_data[i];
- gunichar unichar;
- char bytes[6];
- int nbytes;
-
- g_assert (g_unichar_validate (t->unichar));
-
- nbytes = g_unichar_to_utf8 (t->unichar, bytes);
- bytes[nbytes] = '\0';
- g_assert_cmpint (nbytes, ==, t->nbytes);
- g_assert (memcmp (t->bytes, bytes, nbytes) == 0);
-
- unichar = g_utf8_get_char_validated (bytes, nbytes);
- g_assert_cmpint (unichar, ==, t->unichar);
- }
-}
-
-static int
-get_nbytes (ClutterText *text)
-{
- const char *s = clutter_text_get_text (text);
- return strlen (s);
-}
-
-static int
-get_nchars (ClutterText *text)
-{
- const char *s = clutter_text_get_text (text);
- g_assert (g_utf8_validate (s, -1, NULL));
- return g_utf8_strlen (s, -1);
-}
-
-#define DONT_MOVE_CURSOR (-2)
-
-static void
-insert_unichar (ClutterText *text, gunichar unichar, int position)
-{
- if (position > DONT_MOVE_CURSOR)
- {
- clutter_text_set_cursor_position (text, position);
- g_assert_cmpint (clutter_text_get_cursor_position (text), ==, position);
- }
-
- clutter_text_insert_unichar (text, unichar);
-}
-
-static void
-text_set_empty (void)
-{
- ClutterText *text = CLUTTER_TEXT (clutter_text_new ());
- g_object_ref_sink (text);
-
- g_assert_cmpstr (clutter_text_get_text (text), ==, "");
- g_assert_cmpint (*clutter_text_get_text (text), ==, '\0');
- g_assert_cmpint (clutter_text_get_cursor_position (text), ==, -1);
-
- clutter_text_set_text (text, "");
- g_assert_cmpint (get_nchars (text), ==, 0);
- g_assert_cmpint (get_nbytes (text), ==, 0);
- g_assert_cmpint (clutter_text_get_cursor_position (text), ==, -1);
-
- clutter_actor_destroy (CLUTTER_ACTOR (text));
-}
-
-static void
-text_set_text (void)
-{
- ClutterText *text = CLUTTER_TEXT (clutter_text_new ());
- g_object_ref_sink (text);
-
- clutter_text_set_text (text, "abcdef");
- g_assert_cmpint (get_nchars (text), ==, 6);
- g_assert_cmpint (get_nbytes (text), ==, 6);
- g_assert_cmpint (clutter_text_get_cursor_position (text), ==, -1);
-
- clutter_text_set_cursor_position (text, 5);
- g_assert_cmpint (clutter_text_get_cursor_position (text), ==, 5);
-
- /* FIXME: cursor position should be -1?
- clutter_text_set_text (text, "");
- g_assert_cmpint (clutter_text_get_cursor_position (text), ==, -1);
- */
-
- clutter_actor_destroy (CLUTTER_ACTOR (text));
-}
-
-static void
-text_append_some (void)
-{
- ClutterText *text = CLUTTER_TEXT (clutter_text_new ());
- int i;
-
- g_object_ref_sink (text);
-
- for (i = 0; i < G_N_ELEMENTS (test_text_data); i++)
- {
- const TestData *t = &test_text_data[i];
- int j;
-
- for (j = 1; j <= 4; j++)
- {
- insert_unichar (text, t->unichar, DONT_MOVE_CURSOR);
-
- g_assert_cmpint (get_nchars (text), ==, j);
- g_assert_cmpint (get_nbytes (text), ==, j * t->nbytes);
- g_assert_cmpint (clutter_text_get_cursor_position (text), ==, -1);
- }
-
- clutter_text_set_text (text, "");
- }
-
- clutter_actor_destroy (CLUTTER_ACTOR (text));
-}
-
-static void
-text_prepend_some (void)
-{
- ClutterText *text = CLUTTER_TEXT (clutter_text_new ());
- int i;
-
- g_object_ref_sink (text);
-
- for (i = 0; i < G_N_ELEMENTS (test_text_data); i++)
- {
- const TestData *t = &test_text_data[i];
- int j;
-
- clutter_text_insert_unichar (text, t->unichar);
-
- g_assert_cmpint (get_nchars (text), ==, 1);
- g_assert_cmpint (get_nbytes (text), ==, 1 * t->nbytes);
- g_assert_cmpint (clutter_text_get_cursor_position (text), ==, -1);
-
- for (j = 2; j <= 4; j++)
- {
- insert_unichar (text, t->unichar, 0);
-
- g_assert_cmpint (get_nchars (text), ==, j);
- g_assert_cmpint (get_nbytes (text), ==, j * t->nbytes);
- g_assert_cmpint (clutter_text_get_cursor_position (text), ==, 1);
- }
-
- clutter_text_set_text (text, "");
- }
-
- clutter_actor_destroy (CLUTTER_ACTOR (text));
-}
-
-static void
-text_insert (void)
-{
- ClutterText *text = CLUTTER_TEXT (clutter_text_new ());
- int i;
-
- g_object_ref_sink (text);
-
- for (i = 0; i < G_N_ELEMENTS (test_text_data); i++)
- {
- const TestData *t = &test_text_data[i];
-
- clutter_text_insert_unichar (text, t->unichar);
- clutter_text_insert_unichar (text, t->unichar);
-
- insert_unichar (text, t->unichar, 1);
-
- g_assert_cmpint (get_nchars (text), ==, 3);
- g_assert_cmpint (get_nbytes (text), ==, 3 * t->nbytes);
- g_assert_cmpint (clutter_text_get_cursor_position (text), ==, 2);
-
- clutter_text_set_text (text, "");
- }
-
- clutter_actor_destroy (CLUTTER_ACTOR (text));
-}
-
-static void
-text_delete_chars (void)
-{
- ClutterText *text = CLUTTER_TEXT (clutter_text_new ());
- int i;
-
- g_object_ref_sink (text);
-
- for (i = 0; i < G_N_ELEMENTS (test_text_data); i++)
- {
- const TestData *t = &test_text_data[i];
- int j;
-
- for (j = 0; j < 4; j++)
- clutter_text_insert_unichar (text, t->unichar);
-
- if (g_test_verbose ())
- g_print ("text: %s\n", clutter_text_get_text (text));
-
- clutter_text_set_cursor_position (text, 2);
- clutter_text_delete_chars (text, 1);
- if (g_test_verbose ())
- g_print ("text: %s (cursor at: %d)\n",
- clutter_text_get_text (text),
- clutter_text_get_cursor_position (text));
- g_assert_cmpint (get_nchars (text), ==, 3);
- g_assert_cmpint (get_nbytes (text), ==, 3 * t->nbytes);
- g_assert_cmpint (clutter_text_get_cursor_position (text), ==, 1);
-
- clutter_text_set_cursor_position (text, 2);
- clutter_text_delete_chars (text, 1);
- if (g_test_verbose ())
- g_print ("text: %s (cursor at: %d)\n",
- clutter_text_get_text (text),
- clutter_text_get_cursor_position (text));
- g_assert_cmpint (get_nchars (text), ==, 2);
- g_assert_cmpint (get_nbytes (text), ==, 2 * t->nbytes);
- g_assert_cmpint (clutter_text_get_cursor_position (text), ==, 1);
-
- clutter_text_set_text (text, "");
- }
-
- clutter_actor_destroy (CLUTTER_ACTOR (text));
-}
-
-static void
-text_get_chars (void)
-{
- ClutterText *text = CLUTTER_TEXT (clutter_text_new ());
- gchar *chars;
-
- g_object_ref_sink (text);
-
- clutter_text_set_text (text, "00abcdef11");
- g_assert_cmpint (get_nchars (text), ==, 10);
- g_assert_cmpint (get_nbytes (text), ==, 10);
- g_assert_cmpstr (clutter_text_get_text (text), ==, "00abcdef11");
-
- chars = clutter_text_get_chars (text, 2, -1);
- g_assert_cmpstr (chars, ==, "abcdef11");
- g_free (chars);
-
- chars = clutter_text_get_chars (text, 0, 8);
- g_assert_cmpstr (chars, ==, "00abcdef");
- g_free (chars);
-
- chars = clutter_text_get_chars (text, 2, 8);
- g_assert_cmpstr (chars, ==, "abcdef");
- g_free (chars);
-
- chars = clutter_text_get_chars (text, 8, 12);
- g_assert_cmpstr (chars, ==, "11");
- g_free (chars);
-
- clutter_actor_destroy (CLUTTER_ACTOR (text));
-}
-
-static void
-text_delete_text (void)
-{
- ClutterText *text = CLUTTER_TEXT (clutter_text_new ());
- int i;
-
- g_object_ref_sink (text);
-
- for (i = 0; i < G_N_ELEMENTS (test_text_data); i++)
- {
- const TestData *t = &test_text_data[i];
- int j;
-
- for (j = 0; j < 4; j++)
- clutter_text_insert_unichar (text, t->unichar);
-
- clutter_text_set_cursor_position (text, 3);
- clutter_text_delete_text (text, 2, 4);
-
- g_assert_cmpint (get_nchars (text), ==, 2);
- g_assert_cmpint (get_nbytes (text), ==, 2 * t->nbytes);
-
- /* FIXME: cursor position should be -1?
- g_assert_cmpint (clutter_text_get_cursor_position (text), ==, -1);
- */
-
- clutter_text_set_text (text, "");
- }
-
- clutter_actor_destroy (CLUTTER_ACTOR (text));
-}
-
-static void
-text_password_char (void)
-{
- ClutterText *text = CLUTTER_TEXT (clutter_text_new ());
-
- g_object_ref_sink (text);
-
- g_assert_cmpint (clutter_text_get_password_char (text), ==, 0);
-
- clutter_text_set_text (text, "hello");
- g_assert_cmpstr (clutter_text_get_text (text), ==, "hello");
-
- clutter_text_set_password_char (text, '*');
- g_assert_cmpint (clutter_text_get_password_char (text), ==, '*');
-
- g_assert_cmpstr (clutter_text_get_text (text), ==, "hello");
-
- clutter_actor_destroy (CLUTTER_ACTOR (text));
-}
-
-static ClutterEvent *
-init_event (void)
-{
- ClutterEvent *retval = clutter_event_new (CLUTTER_KEY_PRESS);
-
- clutter_event_set_time (retval, CLUTTER_CURRENT_TIME);
- clutter_event_set_flags (retval, CLUTTER_EVENT_FLAG_SYNTHETIC);
-
- return retval;
-}
-
-static void
-send_keyval (ClutterText *text, int keyval)
-{
- ClutterEvent *event = init_event ();
-
- /* Unicode should be ignored for cursor keys etc. */
- clutter_event_set_key_unicode (event, 0);
- clutter_event_set_key_symbol (event, keyval);
-
- clutter_actor_event (CLUTTER_ACTOR (text), event, FALSE);
-
- clutter_event_free (event);
-}
-
-static void
-send_unichar (ClutterText *text, gunichar unichar)
-{
- ClutterEvent *event = init_event ();
-
- /* Key symbol should be ignored for printable characters */
- clutter_event_set_key_symbol (event, 0);
- clutter_event_set_key_unicode (event, unichar);
-
- clutter_actor_event (CLUTTER_ACTOR (text), event, FALSE);
-
- clutter_event_free (event);
-}
-
-static void
-text_cursor (void)
-{
- ClutterText *text = CLUTTER_TEXT (clutter_text_new ());
- int i;
-
- g_object_ref_sink (text);
-
- /* only editable entries listen to events */
- clutter_text_set_editable (text, TRUE);
-
- for (i = 0; i < G_N_ELEMENTS (test_text_data); i++)
- {
- const TestData *t = &test_text_data[i];
- int j;
-
- for (j = 0; j < 4; ++j)
- clutter_text_insert_unichar (text, t->unichar);
-
- clutter_text_set_cursor_position (text, 2);
-
- /* test cursor moves and is clamped */
- send_keyval (text, CLUTTER_KEY_Left);
- g_assert_cmpint (clutter_text_get_cursor_position (text), ==, 1);
-
- send_keyval (text, CLUTTER_KEY_Left);
- g_assert_cmpint (clutter_text_get_cursor_position (text), ==, 0);
-
- send_keyval (text, CLUTTER_KEY_Left);
- g_assert_cmpint (clutter_text_get_cursor_position (text), ==, 0);
-
- /* delete text containing the cursor */
- clutter_text_set_cursor_position (text, 3);
- g_assert_cmpint (clutter_text_get_cursor_position (text), ==, 3);
-
- clutter_text_delete_text (text, 2, 4);
- send_keyval (text, CLUTTER_KEY_Left);
-
- /* FIXME: cursor position should be -1?
- g_assert_cmpint (clutter_text_get_cursor_position (text), ==, -1);
- */
-
- clutter_text_set_text (text, "");
- }
-
- clutter_actor_destroy (CLUTTER_ACTOR (text));
-}
-
-static void
-text_event (void)
-{
- ClutterText *text = CLUTTER_TEXT (clutter_text_new ());
- int i;
-
- g_object_ref_sink (text);
-
- /* only editable entries listen to events */
- clutter_text_set_editable (text, TRUE);
-
- for (i = 0; i < G_N_ELEMENTS (test_text_data); i++)
- {
- const TestData *t = &test_text_data[i];
-
- send_unichar (text, t->unichar);
-
- g_assert_cmpint (get_nchars (text), ==, 1);
- g_assert_cmpint (get_nbytes (text), ==, 1 * t->nbytes);
- g_assert_cmpint (clutter_text_get_cursor_position (text), ==, -1);
-
- clutter_text_set_text (text, "");
- }
-
- clutter_actor_destroy (CLUTTER_ACTOR (text));
-}
-
-static inline void
-validate_markup_attributes (ClutterText *text,
- PangoAttrType attr_type,
- int start_index,
- int end_index)
-{
- PangoLayout *layout;
- PangoAttrList *attrs;
- PangoAttrIterator *iter;
-
- layout = clutter_text_get_layout (text);
- g_assert (layout != NULL);
-
- attrs = pango_layout_get_attributes (layout);
- g_assert (attrs != NULL);
-
- iter = pango_attr_list_get_iterator (attrs);
- while (pango_attr_iterator_next (iter))
- {
- GSList *attributes = pango_attr_iterator_get_attrs (iter);
- PangoAttribute *a;
-
- if (attributes == NULL)
- break;
-
- g_assert (attributes->data != NULL);
-
- a = attributes->data;
-
- if (a->klass->type == PANGO_ATTR_SCALE)
- {
- PangoAttrFloat *scale = (PangoAttrFloat*) a;
- float resource_scale;
-
- if (!clutter_actor_get_resource_scale (CLUTTER_ACTOR (text), &resource_scale))
- resource_scale = 1.0;
-
- g_assert_cmpfloat (scale->value, ==, resource_scale);
- g_slist_free_full (attributes, (GDestroyNotify) pango_attribute_destroy);
- continue;
- }
-
- g_assert (a->klass->type == attr_type);
- g_assert_cmpint (a->start_index, ==, start_index);
- g_assert_cmpint (a->end_index, ==, end_index);
-
- g_slist_free_full (attributes, (GDestroyNotify) pango_attribute_destroy);
- }
-
- pango_attr_iterator_destroy (iter);
-}
-
-static void
-text_idempotent_use_markup (void)
-{
- ClutterText *text;
- const char *contents = "foo <b>bar</b>";
- const char *display = "foo bar";
- int bar_start_index = strstr (display, "bar") - display;
- int bar_end_index = bar_start_index + strlen ("bar");
-
- /* case 1: text -> use_markup */
- if (g_test_verbose ())
- g_print ("text: '%s' -> use-markup: TRUE\n", contents);
-
- text = g_object_new (CLUTTER_TYPE_TEXT,
- "text", contents, "use-markup", TRUE,
- NULL);
- g_object_ref_sink (text);
-
- if (g_test_verbose ())
- g_print ("Contents: '%s' (expected: '%s')\n",
- clutter_text_get_text (text),
- display);
-
- g_assert_cmpstr (clutter_text_get_text (text), ==, display);
-
- validate_markup_attributes (text,
- PANGO_ATTR_WEIGHT,
- bar_start_index,
- bar_end_index);
-
- clutter_actor_destroy (CLUTTER_ACTOR (text));
-
- /* case 2: use_markup -> text */
- if (g_test_verbose ())
- g_print ("use-markup: TRUE -> text: '%s'\n", contents);
-
- text = g_object_new (CLUTTER_TYPE_TEXT,
- "use-markup", TRUE, "text", contents,
- NULL);
-
- if (g_test_verbose ())
- g_print ("Contents: '%s' (expected: '%s')\n",
- clutter_text_get_text (text),
- display);
-
- g_assert_cmpstr (clutter_text_get_text (text), ==, display);
-
- validate_markup_attributes (text,
- PANGO_ATTR_WEIGHT,
- bar_start_index,
- bar_end_index);
-
- clutter_actor_destroy (CLUTTER_ACTOR (text));
-}
-
-CLUTTER_TEST_SUITE (
- CLUTTER_TEST_UNIT ("/text/utf8-validation", text_utf8_validation)
- CLUTTER_TEST_UNIT ("/text/set-empty", text_set_empty)
- CLUTTER_TEST_UNIT ("/text/set-text", text_set_text)
- CLUTTER_TEST_UNIT ("/text/append-some", text_append_some)
- CLUTTER_TEST_UNIT ("/text/prepend-some", text_prepend_some)
- CLUTTER_TEST_UNIT ("/text/insert", text_insert)
- CLUTTER_TEST_UNIT ("/text/delete-chars", text_delete_chars)
- CLUTTER_TEST_UNIT ("/text/get-chars", text_get_chars)
- CLUTTER_TEST_UNIT ("/text/delete-text", text_delete_text)
- CLUTTER_TEST_UNIT ("/text/password-char", text_password_char)
- CLUTTER_TEST_UNIT ("/text/cursor", text_cursor)
- CLUTTER_TEST_UNIT ("/text/event", text_event)
- CLUTTER_TEST_UNIT ("/text/idempotent-use-markup", text_idempotent_use_markup)
-)
diff --git a/clutter/tests/conform/texture-fbo.c b/clutter/tests/conform/texture-fbo.c
deleted file mode 100644
index 4a30b383c..000000000
--- a/clutter/tests/conform/texture-fbo.c
+++ /dev/null
@@ -1,235 +0,0 @@
-#include <clutter/clutter.h>
-#include <cogl/cogl.h>
-
-#include "test-conform-common.h"
-
-#define SOURCE_SIZE 32
-#define SOURCE_DIVISIONS_X 2
-#define SOURCE_DIVISIONS_Y 2
-#define DIVISION_WIDTH (SOURCE_SIZE / SOURCE_DIVISIONS_X)
-#define DIVISION_HEIGHT (SOURCE_SIZE / SOURCE_DIVISIONS_Y)
-
-static const ClutterColor
-corner_colors[SOURCE_DIVISIONS_X * SOURCE_DIVISIONS_Y] =
- {
- { 0xff, 0x00, 0x00, 0xff }, /* red top left */
- { 0x00, 0xff, 0x00, 0xff }, /* green top right */
- { 0x00, 0x00, 0xff, 0xff }, /* blue bottom left */
- { 0xff, 0x00, 0xff, 0xff } /* purple bottom right */
- };
-
-static const ClutterColor stage_color = { 0x0, 0x0, 0x0, 0xff };
-
-typedef struct _TestState
-{
- ClutterActor *stage;
- guint frame;
- gboolean was_painted;
-} TestState;
-
-static ClutterActor *
-create_source (void)
-{
- int x, y;
- ClutterActor *group = clutter_group_new ();
-
- /* Create a group with a different coloured rectangle at each
- corner */
- for (y = 0; y < SOURCE_DIVISIONS_Y; y++)
- for (x = 0; x < SOURCE_DIVISIONS_X; x++)
- {
- ClutterActor *rect = clutter_rectangle_new ();
- clutter_actor_set_size (rect, DIVISION_WIDTH, DIVISION_HEIGHT);
- clutter_actor_set_position (rect,
- DIVISION_WIDTH * x,
- DIVISION_HEIGHT * y);
- clutter_rectangle_set_color (CLUTTER_RECTANGLE (rect),
- corner_colors +
- (y * SOURCE_DIVISIONS_X + x));
- clutter_container_add (CLUTTER_CONTAINER (group), rect, NULL);
- }
-
- return group;
-}
-
-static void
-pre_paint_clip_cb (void)
-{
- /* Generate a clip path that clips out the top left division */
- cogl_path_move_to (DIVISION_WIDTH, 0);
- cogl_path_line_to (SOURCE_SIZE, 0);
- cogl_path_line_to (SOURCE_SIZE, SOURCE_SIZE);
- cogl_path_line_to (0, SOURCE_SIZE);
- cogl_path_line_to (0, DIVISION_HEIGHT);
- cogl_path_line_to (DIVISION_WIDTH, DIVISION_HEIGHT);
- cogl_path_close ();
- cogl_clip_push_from_path ();
-}
-
-static void
-post_paint_clip_cb (void)
-{
- cogl_clip_pop ();
-}
-
-static void
-validate_part (TestState *state,
- int xpos, int ypos,
- int clip_flags)
-{
- int x, y;
-
- /* Check whether the center of each division is the right color */
- for (y = 0; y < SOURCE_DIVISIONS_Y; y++)
- for (x = 0; x < SOURCE_DIVISIONS_X; x++)
- {
- guchar *pixels;
- const ClutterColor *correct_color;
-
- /* Read the center pixels of this division */
- pixels = clutter_stage_read_pixels (CLUTTER_STAGE (state->stage),
- x * DIVISION_WIDTH +
- DIVISION_WIDTH / 2 + xpos,
- y * DIVISION_HEIGHT +
- DIVISION_HEIGHT / 2 + ypos,
- 1, 1);
-
- /* If this division is clipped then it should be the stage
- color */
- if ((clip_flags & (1 << ((y * SOURCE_DIVISIONS_X) + x))))
- correct_color = &stage_color;
- else
- /* Otherwise it should be the color for this division */
- correct_color = corner_colors + (y * SOURCE_DIVISIONS_X) + x;
-
- g_assert (pixels != NULL);
- g_assert_cmpint (pixels[0], ==, correct_color->red);
- g_assert_cmpint (pixels[1], ==, correct_color->green);
- g_assert_cmpint (pixels[2], ==, correct_color->blue);
-
- g_free (pixels);
- }
-}
-
-static void
-validate_result (TestState *state)
-{
- int ypos = 0;
-
- if (g_test_verbose ())
- g_print ("Testing onscreen clone...\n");
- validate_part (state, SOURCE_SIZE, ypos * SOURCE_SIZE, 0);
- ypos++;
-
-#if 0 /* this doesn't work */
- if (g_test_verbose ())
- g_print ("Testing offscreen clone...\n");
- validate_part (state, SOURCE_SIZE, ypos * SOURCE_SIZE, 0);
-#endif
- ypos++;
-
- if (g_test_verbose ())
- g_print ("Testing onscreen clone with rectangular clip...\n");
- validate_part (state, SOURCE_SIZE, ypos * SOURCE_SIZE, ~1);
- ypos++;
-
- if (g_test_verbose ())
- g_print ("Testing onscreen clone with path clip...\n");
- validate_part (state, SOURCE_SIZE, ypos * SOURCE_SIZE, 1);
- ypos++;
-}
-
-static gboolean
-on_paint (gpointer data)
-{
- TestState *state = data;
- int frame_num;
-
- /* XXX: validate_result calls clutter_stage_read_pixels which will result in
- * another paint run so to avoid infinite recursion we only aim to validate
- * the first frame. */
- frame_num = state->frame++;
- if (frame_num == 1)
- validate_result (state);
-
- state->was_painted = TRUE;
-
- return G_SOURCE_REMOVE;
-}
-
-void
-texture_fbo (TestConformSimpleFixture *fixture,
- gconstpointer data)
-{
- TestState state;
- ClutterActor *actor;
- int ypos = 0;
-
- if (!cogl_features_available (COGL_FEATURE_OFFSCREEN))
- {
- if (g_test_verbose ())
- g_print ("Offscreen buffers are not available, skipping.\n");
-
- return;
- }
-
- state.frame = 0;
-
- state.stage = clutter_stage_new ();
-
- clutter_stage_set_color (CLUTTER_STAGE (state.stage), &stage_color);
-
- /* Onscreen source with clone next to it */
- actor = create_source ();
- clutter_container_add (CLUTTER_CONTAINER (state.stage), actor, NULL);
- clutter_actor_set_position (actor, 0, ypos * SOURCE_SIZE);
- actor = clutter_texture_new_from_actor (actor);
- clutter_actor_set_position (actor, SOURCE_SIZE, ypos * SOURCE_SIZE);
- clutter_container_add (CLUTTER_CONTAINER (state.stage), actor, NULL);
- ypos++;
-
- /* Offscreen source with clone */
-#if 0 /* this doesn't work */
- actor = create_source ();
- actor = clutter_texture_new_from_actor (actor);
- clutter_actor_set_position (actor, SOURCE_SIZE, ypos * SOURCE_SIZE);
- clutter_container_add (CLUTTER_CONTAINER (state.stage), actor, NULL);
-#endif
- ypos++;
-
- /* Source clipped to the top left division */
- actor = create_source ();
- clutter_container_add (CLUTTER_CONTAINER (state.stage), actor, NULL);
- clutter_actor_set_position (actor, 0, ypos * SOURCE_SIZE);
- clutter_actor_set_clip (actor, 0, 0, DIVISION_WIDTH, DIVISION_HEIGHT);
- actor = clutter_texture_new_from_actor (actor);
- clutter_actor_set_position (actor, SOURCE_SIZE, ypos * SOURCE_SIZE);
- clutter_container_add (CLUTTER_CONTAINER (state.stage), actor, NULL);
- ypos++;
-
- /* Source clipped to everything but top left division using a
- path */
- actor = create_source ();
- clutter_container_add (CLUTTER_CONTAINER (state.stage), actor, NULL);
- clutter_actor_set_position (actor, 0, ypos * SOURCE_SIZE);
- g_signal_connect (actor, "paint",
- G_CALLBACK (pre_paint_clip_cb), NULL);
- g_signal_connect_after (actor, "paint",
- G_CALLBACK (post_paint_clip_cb), NULL);
- actor = clutter_texture_new_from_actor (actor);
- clutter_actor_set_position (actor, SOURCE_SIZE, ypos * SOURCE_SIZE);
- clutter_container_add (CLUTTER_CONTAINER (state.stage), actor, NULL);
- ypos++;
-
- clutter_actor_show (state.stage);
-
- clutter_threads_add_repaint_func_full (CLUTTER_REPAINT_FLAGS_POST_PAINT,
- on_paint,
- &state,
- NULL);
-
- while (!state.was_painted)
- g_main_context_iteration (NULL, FALSE);
-
- clutter_actor_destroy (state.stage);
-}
diff --git a/clutter/tests/conform/texture.c b/clutter/tests/conform/texture.c
deleted file mode 100644
index 392fd5c47..000000000
--- a/clutter/tests/conform/texture.c
+++ /dev/null
@@ -1,84 +0,0 @@
-#define CLUTTER_DISABLE_DEPRECATION_WARNINGS
-#include <clutter/clutter.h>
-#include <string.h>
-
-static CoglHandle
-make_texture (void)
-{
- guint32 *data = g_malloc (100 * 100 * 4);
- int x;
- int y;
-
- for (y = 0; y < 100; y ++)
- for (x = 0; x < 100; x++)
- {
- if (x < 50 && y < 50)
- data[y * 100 + x] = 0xff00ff00;
- else
- data[y * 100 + x] = 0xff00ffff;
- }
- return cogl_texture_new_from_data (100,
- 100,
- COGL_TEXTURE_NONE,
- COGL_PIXEL_FORMAT_ARGB_8888,
- COGL_PIXEL_FORMAT_ARGB_8888,
- 400,
- (guchar *)data);
-}
-
-static void
-texture_pick_with_alpha (void)
-{
- ClutterTexture *tex = CLUTTER_TEXTURE (clutter_texture_new ());
- ClutterStage *stage = CLUTTER_STAGE (clutter_test_get_stage ());
- ClutterActor *actor;
-
- clutter_texture_set_cogl_texture (tex, make_texture ());
-
- clutter_actor_add_child (CLUTTER_ACTOR (stage), CLUTTER_ACTOR (tex));
-
- clutter_actor_show (CLUTTER_ACTOR (stage));
-
- if (g_test_verbose ())
- {
- g_print ("\nstage = %p\n", stage);
- g_print ("texture = %p\n\n", tex);
- }
-
- clutter_texture_set_pick_with_alpha (tex, TRUE);
- if (g_test_verbose ())
- g_print ("Testing with pick-with-alpha enabled:\n");
-
- /* This should fall through and hit the stage: */
- actor = clutter_stage_get_actor_at_pos (stage, CLUTTER_PICK_ALL, 10, 10);
- if (g_test_verbose ())
- g_print ("actor @ (10, 10) = %p\n", actor);
- g_assert (actor == CLUTTER_ACTOR (stage));
-
- /* The rest should hit the texture */
- actor = clutter_stage_get_actor_at_pos (stage, CLUTTER_PICK_ALL, 90, 10);
- if (g_test_verbose ())
- g_print ("actor @ (90, 10) = %p\n", actor);
- g_assert (actor == CLUTTER_ACTOR (tex));
- actor = clutter_stage_get_actor_at_pos (stage, CLUTTER_PICK_ALL, 90, 90);
- if (g_test_verbose ())
- g_print ("actor @ (90, 90) = %p\n", actor);
- g_assert (actor == CLUTTER_ACTOR (tex));
- actor = clutter_stage_get_actor_at_pos (stage, CLUTTER_PICK_ALL, 10, 90);
- if (g_test_verbose ())
- g_print ("actor @ (10, 90) = %p\n", actor);
- g_assert (actor == CLUTTER_ACTOR (tex));
-
- clutter_texture_set_pick_with_alpha (tex, FALSE);
- if (g_test_verbose ())
- g_print ("Testing with pick-with-alpha disabled:\n");
-
- actor = clutter_stage_get_actor_at_pos (stage, CLUTTER_PICK_ALL, 10, 10);
- if (g_test_verbose ())
- g_print ("actor @ (10, 10) = %p\n", actor);
- g_assert (actor == CLUTTER_ACTOR (tex));
-}
-
-CLUTTER_TEST_SUITE (
- CLUTTER_TEST_UNIT ("/texture/pick-with-alpha", texture_pick_with_alpha)
-)
diff --git a/clutter/tests/conform/timeline-interpolate.c b/clutter/tests/conform/timeline-interpolate.c
deleted file mode 100644
index 3988c038d..000000000
--- a/clutter/tests/conform/timeline-interpolate.c
+++ /dev/null
@@ -1,161 +0,0 @@
-#include <stdlib.h>
-#include <glib.h>
-#include <clutter/clutter.h>
-
-#include "test-conform-common.h"
-
-/* We ask for 1 frame per millisecond.
- * Whenever this rate can't be achieved then the timeline
- * will interpolate the number frames that should have
- * passed between timeouts. */
-#define TEST_TIMELINE_FPS 1000
-#define TEST_TIMELINE_DURATION 5000
-
-/* We are at the mercy of the system scheduler so this
- * may not be a very reliable tolerance. */
-#define TEST_ERROR_TOLERANCE 20
-
-typedef struct _TestState
-{
- ClutterTimeline *timeline;
- int64_t start_time;
- guint new_frame_counter;
- gint expected_frame;
- gint completion_count;
- gboolean passed;
-} TestState;
-
-
-static void
-new_frame_cb (ClutterTimeline *timeline,
- gint frame_num,
- TestState *state)
-{
- int64_t current_time;
- gint current_frame;
- glong msec_diff;
- gint loop_overflow = 0;
- static gint step = 1;
-
- current_time = g_get_real_time ();
-
- current_frame = clutter_timeline_get_elapsed_time (state->timeline);
-
- msec_diff = (current_time - state->start_time) / G_TIME_SPAN_MILLISECOND;
-
- /* If we expect to have interpolated past the end of the timeline
- * we keep track of the overflow so we can determine when
- * the next timeout will happen. We then clip expected_frames
- * to TEST_TIMELINE_DURATION since clutter-timeline
- * semantics guaranty this frame is always signaled before
- * looping */
- if (state->expected_frame > TEST_TIMELINE_DURATION)
- {
- loop_overflow = state->expected_frame - TEST_TIMELINE_DURATION;
- state->expected_frame = TEST_TIMELINE_DURATION;
- }
-
- if (current_frame >= (state->expected_frame-TEST_ERROR_TOLERANCE)
- && current_frame <= (state->expected_frame+TEST_ERROR_TOLERANCE))
- {
- g_test_message ("elapsed milliseconds=%-5li "
- "expected frame=%-4i actual frame=%-4i (OK)",
- msec_diff,
- state->expected_frame,
- current_frame);
- }
- else
- {
- g_test_message ("elapsed milliseconds=%-5li "
- "expected frame=%-4i actual frame=%-4i (FAILED)",
- msec_diff,
- state->expected_frame,
- current_frame);
- state->passed = FALSE;
- }
-
- if (step>0)
- {
- state->expected_frame = current_frame + (TEST_TIMELINE_FPS / 4);
- g_test_message ("Sleeping for 250ms "
- "so next frame should be (%i + %i) = %i",
- current_frame,
- (TEST_TIMELINE_FPS / 4),
- state->expected_frame);
- g_usleep (250000);
- }
- else
- {
- state->expected_frame = current_frame + TEST_TIMELINE_FPS;
- g_test_message ("Sleeping for 1sec "
- "so next frame should be (%i + %i) = %i",
- current_frame,
- TEST_TIMELINE_FPS,
- state->expected_frame);
- g_usleep (1000000);
- }
-
- if (current_frame >= TEST_TIMELINE_DURATION)
- {
- state->expected_frame += loop_overflow;
- state->expected_frame -= TEST_TIMELINE_DURATION;
- g_test_message ("End of timeline reached: "
- "Wrapping expected frame too %i",
- state->expected_frame);
- }
-
- state->new_frame_counter++;
- step = -step;
-}
-
-
-static void
-completed_cb (ClutterTimeline *timeline,
- TestState *state)
-{
- state->completion_count++;
-
- if (state->completion_count == 2)
- {
- if (state->passed)
- {
- g_test_message ("Passed\n");
- clutter_main_quit ();
- }
- else
- {
- g_test_message ("Failed\n");
- exit (EXIT_FAILURE);
- }
- }
-}
-
-void
-timeline_interpolation (void)
-{
- TestState state;
-
- state.timeline =
- clutter_timeline_new (TEST_TIMELINE_DURATION);
- clutter_timeline_set_loop (state.timeline, TRUE);
- g_signal_connect (G_OBJECT(state.timeline),
- "new-frame",
- G_CALLBACK(new_frame_cb),
- &state);
- g_signal_connect (G_OBJECT(state.timeline),
- "completed",
- G_CALLBACK(completed_cb),
- &state);
-
- state.completion_count = 0;
- state.new_frame_counter = 0;
- state.passed = TRUE;
- state.expected_frame = 0;
-
- state.start_time = g_get_real_time ();
- clutter_timeline_start (state.timeline);
-
- clutter_main();
-
- g_object_unref (state.timeline);
-}
diff --git a/clutter/tests/conform/timeline-progress.c b/clutter/tests/conform/timeline-progress.c
deleted file mode 100644
index 9c966ca8f..000000000
--- a/clutter/tests/conform/timeline-progress.c
+++ /dev/null
@@ -1,110 +0,0 @@
-#include <glib.h>
-#include <clutter/clutter.h>
-#include "test-conform-common.h"
-
-void
-timeline_progress_step (TestConformSimpleFixture *fixture G_GNUC_UNUSED,
- gconstpointer dummy G_GNUC_UNUSED)
-{
- ClutterTimeline *timeline;
-
- timeline = clutter_timeline_new (1000);
-
- if (g_test_verbose ())
- g_print ("mode: step(3, end)\n");
-
- clutter_timeline_rewind (timeline);
- clutter_timeline_set_step_progress (timeline, 3, CLUTTER_STEP_MODE_END);
- g_assert_cmpint (clutter_timeline_get_progress (timeline), ==, 0);
-
- clutter_timeline_advance (timeline, 1000 / 3 - 1);
- g_assert_cmpint (clutter_timeline_get_progress (timeline) * 1000, ==, 0);
-
- clutter_timeline_advance (timeline, 1000 / 3 + 1);
- g_assert_cmpint (clutter_timeline_get_progress (timeline) * 1000, ==, 333);
-
- clutter_timeline_advance (timeline, 1000 / 3 * 2 - 1);
- g_assert_cmpint (clutter_timeline_get_progress (timeline) * 1000, ==, 333);
-
- clutter_timeline_advance (timeline, 1000 / 3 * 2 + 1);
- g_assert_cmpint (clutter_timeline_get_progress (timeline) * 1000, ==, 666);
-
- clutter_timeline_rewind (timeline);
- clutter_timeline_set_progress_mode (timeline, CLUTTER_STEP_START);
- g_assert_cmpfloat (clutter_timeline_get_progress (timeline), ==, 0.0);
-
- clutter_timeline_advance (timeline, 1);
- g_assert_cmpfloat (clutter_timeline_get_progress (timeline), ==, 1.0);
-
- clutter_timeline_advance (timeline, 500);
- g_assert_cmpfloat (clutter_timeline_get_progress (timeline), ==, 1.0);
-
- clutter_timeline_advance (timeline, 999);
- g_assert_cmpfloat (clutter_timeline_get_progress (timeline), ==, 1.0);
-
- clutter_timeline_advance (timeline, 1000);
- g_assert_cmpfloat (clutter_timeline_get_progress (timeline), ==, 1.0);
-
- if (g_test_verbose ())
- g_print ("mode: step-start\n");
-
- clutter_timeline_rewind (timeline);
- clutter_timeline_set_progress_mode (timeline, CLUTTER_STEP_START);
- g_assert_cmpfloat (clutter_timeline_get_progress (timeline), ==, 0.0);
-
- clutter_timeline_advance (timeline, 1);
- g_assert_cmpfloat (clutter_timeline_get_progress (timeline), ==, 1.0);
-
- clutter_timeline_advance (timeline, 500);
- g_assert_cmpfloat (clutter_timeline_get_progress (timeline), ==, 1.0);
-
- clutter_timeline_advance (timeline, 999);
- g_assert_cmpfloat (clutter_timeline_get_progress (timeline), ==, 1.0);
-
- clutter_timeline_advance (timeline, 1000);
- g_assert_cmpfloat (clutter_timeline_get_progress (timeline), ==, 1.0);
-
- if (g_test_verbose ())
- g_print ("mode: step-end\n");
-
- clutter_timeline_rewind (timeline);
- clutter_timeline_set_progress_mode (timeline, CLUTTER_STEP_END);
- g_assert_cmpfloat (clutter_timeline_get_progress (timeline), ==, 0.0);
-
- clutter_timeline_advance (timeline, 1);
- g_assert_cmpfloat (clutter_timeline_get_progress (timeline), ==, 0.0);
-
- clutter_timeline_advance (timeline, 500);
- g_assert_cmpfloat (clutter_timeline_get_progress (timeline), ==, 0.0);
-
- clutter_timeline_advance (timeline, 999);
- g_assert_cmpfloat (clutter_timeline_get_progress (timeline), ==, 0.0);
-
- clutter_timeline_advance (timeline, 1000);
- g_assert_cmpfloat (clutter_timeline_get_progress (timeline), ==, 1.0);
-
- g_object_unref (timeline);
-}
-
-void
-timeline_progress_mode (TestConformSimpleFixture *fixture G_GNUC_UNUSED,
- gconstpointer dummy G_GNUC_UNUSED)
-{
- ClutterTimeline *timeline;
-
- timeline = clutter_timeline_new (1000);
-
- g_assert (clutter_timeline_get_progress_mode (timeline) == CLUTTER_LINEAR);
- g_assert_cmpfloat (clutter_timeline_get_progress (timeline), ==, 0.0);
-
- clutter_timeline_advance (timeline, 500);
- g_assert_cmpfloat (clutter_timeline_get_progress (timeline), ==, 0.5);
-
- clutter_timeline_advance (timeline, 1000);
- g_assert_cmpfloat (clutter_timeline_get_progress (timeline), ==, 1.0);
-
- clutter_timeline_rewind (timeline);
- g_assert_cmpfloat (clutter_timeline_get_progress (timeline), ==, 0.0);
-
- g_object_unref (timeline);
-}
diff --git a/clutter/tests/conform/timeline-rewind.c b/clutter/tests/conform/timeline-rewind.c
deleted file mode 100644
index 0263649ac..000000000
--- a/clutter/tests/conform/timeline-rewind.c
+++ /dev/null
@@ -1,92 +0,0 @@
-#include <stdlib.h>
-#include <glib.h>
-#include <clutter/clutter.h>
-
-#include "test-conform-common.h"
-
-#define TEST_TIMELINE_DURATION 500
-#define TEST_WATCHDOG_KICK_IN_SECONDS 10
-
-typedef struct _TestState
-{
- ClutterTimeline *timeline;
- gint rewind_count;
-} TestState;
-
-static gboolean
-watchdog_timeout (gpointer data)
-{
- TestState *state = data;
-
- g_test_message ("Watchdog timer kicking in");
- g_test_message ("rewind_count=%i", state->rewind_count);
- if (state->rewind_count <= 3)
- {
- /* The test has hung */
- g_test_message ("Failed (This test shouldn't have hung!)");
- exit (EXIT_FAILURE);
- }
- else
- {
- g_test_message ("Passed");
- clutter_main_quit ();
- }
-
- return G_SOURCE_REMOVE;
-}
-
-static void
-new_frame_cb (ClutterTimeline *timeline,
- gint elapsed_time,
- TestState *state)
-{
- if (elapsed_time == TEST_TIMELINE_DURATION)
- {
- g_test_message ("new-frame signal received (end of timeline)");
- g_test_message ("Rewinding timeline");
- clutter_timeline_rewind (timeline);
- state->rewind_count++;
- }
- else
- {
- if (elapsed_time == 0)
- {
- g_test_message ("new-frame signal received (start of timeline)");
- }
- else
- {
- g_test_message ("new-frame signal received (mid frame)");
- }
-
- if (state->rewind_count >= 2)
- {
- g_test_message ("Sleeping for 1 second");
- g_usleep (1000000);
- }
- }
-}
-
-void
-timeline_rewind (void)
-{
- TestState state;
-
- state.timeline =
- clutter_timeline_new (TEST_TIMELINE_DURATION);
- g_signal_connect (G_OBJECT(state.timeline),
- "new-frame",
- G_CALLBACK(new_frame_cb),
- &state);
- g_test_message ("Installing a watchdog timeout "
- "to determine if this test hangs");
- clutter_threads_add_timeout (TEST_WATCHDOG_KICK_IN_SECONDS * 1000,
- watchdog_timeout,
- &state);
- state.rewind_count = 0;
-
- clutter_timeline_start (state.timeline);
-
- clutter_main();
-
- g_object_unref (state.timeline);
-}
diff --git a/clutter/tests/conform/timeline.c b/clutter/tests/conform/timeline.c
deleted file mode 100644
index 96bd09277..000000000
--- a/clutter/tests/conform/timeline.c
+++ /dev/null
@@ -1,361 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <clutter/clutter.h>
-
-#include "test-conform-common.h"
-
-/* This test runs three timelines at 30 fps with 10 frames. Some of
- the timelines have markers. Once the timelines are run it then
- checks that all of the frames were hit, all of the markers were hit
- and that the completed signal was fired. The timelines are then run
- again but this time with a timeout source that introduces a
- delay. This should cause some frames to be skipped. The test is run
- again but only the markers and the completed signal is checked
- for. */
-
-#define FRAME_COUNT 10
-#define FPS 30
-
-typedef struct _TimelineData TimelineData;
-
-struct _TimelineData
-{
- int timeline_num;
-
- guint frame_hit_count[FRAME_COUNT + 1];
- GSList *markers_hit;
- guint completed_count;
-};
-
-static void
-timeline_data_init (TimelineData *data, int timeline_num)
-{
- memset (data, 0, sizeof (TimelineData));
- data->timeline_num = timeline_num;
-}
-
-static void
-timeline_data_destroy (TimelineData *data)
-{
- g_slist_free_full (data->markers_hit, g_free);
-}
-
-static void
-timeline_complete_cb (ClutterTimeline *timeline,
- TimelineData *data)
-{
- if (g_test_verbose ())
- g_print ("%i: Completed\n", data->timeline_num);
-
- data->completed_count++;
-}
-
-static void
-timeline_new_frame_cb (ClutterTimeline *timeline,
- gint msec,
- TimelineData *data)
-{
- /* Calculate an approximate frame number from the duration with
- rounding */
- int frame_no = ((msec * FRAME_COUNT + (FRAME_COUNT * 1000 / FPS) / 2)
- / (FRAME_COUNT * 1000 / FPS));
-
- if (g_test_verbose ())
- g_print ("%i: Doing frame %d, delta = %i\n",
- data->timeline_num, frame_no,
- clutter_timeline_get_delta (timeline));
-
- g_assert (frame_no >= 0 && frame_no <= FRAME_COUNT);
-
- data->frame_hit_count[frame_no]++;
-}
-
-static void
-timeline_marker_reached_cb (ClutterTimeline *timeline,
- const gchar *marker_name,
- guint frame_num,
- TimelineData *data)
-{
- if (g_test_verbose ())
- g_print ("%i: Marker '%s' (%d) reached, delta = %i\n",
- data->timeline_num, marker_name, frame_num,
- clutter_timeline_get_delta (timeline));
- data->markers_hit = g_slist_prepend (data->markers_hit,
- g_strdup (marker_name));
-}
-
-static gboolean
-check_timeline (ClutterTimeline *timeline,
- TimelineData *data,
- gboolean check_missed_frames)
-{
- gchar **markers;
- gsize n_markers;
- guint *marker_reached_count;
- gboolean succeeded = TRUE;
- GSList *node;
- int i;
- int missed_frame_count = 0;
- int frame_offset;
-
- if (clutter_timeline_get_direction (timeline) == CLUTTER_TIMELINE_BACKWARD)
- frame_offset = 0;
- else
- frame_offset = 1;
-
- markers = clutter_timeline_list_markers (timeline, -1, &n_markers);
- marker_reached_count = g_new0 (guint, n_markers);
-
- for (node = data->markers_hit; node; node = node->next)
- {
- for (i = 0; i < n_markers; i++)
- if (!strcmp (node->data, markers[i]))
- break;
-
- if (i < n_markers)
- marker_reached_count[i]++;
- else
- {
- if (g_test_verbose ())
- g_print ("FAIL: unknown marker '%s' hit for timeline %i\n",
- (char *) node->data, data->timeline_num);
- succeeded = FALSE;
- }
- }
-
- for (i = 0; i < n_markers; i++)
- if (marker_reached_count[i] != 1)
- {
- if (g_test_verbose ())
- g_print ("FAIL: marker '%s' hit %i times for timeline %i\n",
- markers[i], marker_reached_count[i], data->timeline_num);
- succeeded = FALSE;
- }
-
- if (check_missed_frames)
- {
- for (i = 0; i < FRAME_COUNT; i++)
- if (data->frame_hit_count[i + frame_offset] < 1)
- missed_frame_count++;
-
- if (missed_frame_count)
- {
- if (g_test_verbose ())
- g_print ("FAIL: missed %i frame%s for timeline %i\n",
- missed_frame_count, missed_frame_count == 1 ? "" : "s",
- data->timeline_num);
- succeeded = FALSE;
- }
- }
-
- if (data->completed_count != 1)
- {
- if (g_test_verbose ())
- g_print ("FAIL: timeline %i completed %i times\n",
- data->timeline_num, data->completed_count);
- succeeded = FALSE;
- }
-
- g_strfreev (markers);
- g_free (marker_reached_count);
-
- return succeeded;
-}
-
-static gboolean
-timeout_cb (gpointer data G_GNUC_UNUSED)
-{
- clutter_main_quit ();
-
- return FALSE;
-}
-
-static gboolean
-delay_cb (gpointer data)
-{
- /* Waste a bit of time so that it will skip frames */
- g_usleep (G_USEC_PER_SEC * 66 / 1000);
-
- return TRUE;
-}
-
-void
-timeline_base (TestConformSimpleFixture *fixture,
- gconstpointer data)
-{
- ClutterTimeline *timeline_1;
- TimelineData data_1;
- ClutterTimeline *timeline_2;
- TimelineData data_2;
- ClutterTimeline *timeline_3;
- TimelineData data_3;
- gchar **markers;
- gsize n_markers;
- guint delay_tag;
-
- /* NB: We have to ensure a stage is instantiated else the master
- * clock wont run... */
- ClutterActor *stage = clutter_stage_new ();
-
- timeline_data_init (&data_1, 1);
- timeline_1 = clutter_timeline_new (FRAME_COUNT * 1000 / FPS);
- clutter_timeline_add_marker_at_time (timeline_1, "start-marker",
- 0 * 1000 / FPS);
- clutter_timeline_add_marker_at_time (timeline_1, "foo", 5 * 1000 / FPS);
- clutter_timeline_add_marker_at_time (timeline_1, "bar", 5 * 1000 / FPS);
- clutter_timeline_add_marker_at_time (timeline_1, "baz", 5 * 1000 / FPS);
- clutter_timeline_add_marker_at_time (timeline_1, "near-end-marker",
- 9 * 1000 / FPS);
- clutter_timeline_add_marker_at_time (timeline_1, "end-marker",
- 10 * 1000 / FPS);
- markers = clutter_timeline_list_markers (timeline_1, 5 * 1000 / FPS,
- &n_markers);
- g_assert (markers != NULL);
- g_assert (n_markers == 3);
- g_strfreev (markers);
-
- timeline_data_init (&data_2, 2);
- timeline_2 = clutter_timeline_clone (timeline_1);
- clutter_timeline_add_marker_at_time (timeline_2, "bar", 2 * 1000 / FPS);
- markers = clutter_timeline_list_markers (timeline_2, -1, &n_markers);
- g_assert (markers != NULL);
- g_assert (n_markers == 1);
- g_assert (strcmp (markers[0], "bar") == 0);
- g_strfreev (markers);
-
- timeline_data_init (&data_3, 3);
- timeline_3 = clutter_timeline_clone (timeline_1);
- clutter_timeline_set_direction (timeline_3, CLUTTER_TIMELINE_BACKWARD);
- clutter_timeline_add_marker_at_time (timeline_3, "start-marker",
- FRAME_COUNT * 1000 / FPS);
- clutter_timeline_add_marker_at_time (timeline_3, "foo", 5 * 1000 / FPS);
- clutter_timeline_add_marker_at_time (timeline_3, "baz", 8 * 1000 / FPS);
- clutter_timeline_add_marker_at_time (timeline_3, "near-end-marker",
- 1 * 1000 / FPS);
- clutter_timeline_add_marker_at_time (timeline_3, "end-marker",
- 0 * 1000 / FPS);
-
- g_signal_connect (timeline_1,
- "marker-reached", G_CALLBACK (timeline_marker_reached_cb),
- &data_1);
- g_signal_connect (timeline_1,
- "new-frame", G_CALLBACK (timeline_new_frame_cb),
- &data_1);
- g_signal_connect (timeline_1,
- "completed", G_CALLBACK (timeline_complete_cb),
- &data_1);
-
- g_signal_connect (timeline_2,
- "marker-reached::bar",
- G_CALLBACK (timeline_marker_reached_cb),
- &data_2);
- g_signal_connect (timeline_2,
- "new-frame", G_CALLBACK (timeline_new_frame_cb),
- &data_2);
- g_signal_connect (timeline_2,
- "completed", G_CALLBACK (timeline_complete_cb),
- &data_2);
-
- g_signal_connect (timeline_3,
- "marker-reached", G_CALLBACK (timeline_marker_reached_cb),
- &data_3);
- g_signal_connect (timeline_3,
- "new-frame", G_CALLBACK (timeline_new_frame_cb),
- &data_3);
- g_signal_connect (timeline_3,
- "completed", G_CALLBACK (timeline_complete_cb),
- &data_3);
-
- if (g_test_verbose ())
- g_print ("Without delay...\n");
-
- clutter_timeline_start (timeline_1);
- clutter_timeline_start (timeline_2);
- clutter_timeline_start (timeline_3);
-
- clutter_threads_add_timeout (2000, timeout_cb, NULL);
-
- clutter_main ();
-
- g_assert (check_timeline (timeline_1, &data_1, TRUE));
- g_assert (check_timeline (timeline_2, &data_2, TRUE));
- g_assert (check_timeline (timeline_3, &data_3, TRUE));
-
- if (g_test_verbose ())
- g_print ("With delay...\n");
-
- timeline_data_destroy (&data_1);
- timeline_data_init (&data_1, 1);
- timeline_data_destroy (&data_2);
- timeline_data_init (&data_2, 2);
- timeline_data_destroy (&data_3);
- timeline_data_init (&data_3, 3);
-
- clutter_timeline_start (timeline_1);
- clutter_timeline_start (timeline_2);
- clutter_timeline_start (timeline_3);
-
- clutter_threads_add_timeout (2000, timeout_cb, NULL);
- delay_tag = clutter_threads_add_timeout (99, delay_cb, NULL);
-
- clutter_main ();
-
- g_assert (check_timeline (timeline_1, &data_1, FALSE));
- g_assert (check_timeline (timeline_2, &data_2, FALSE));
- g_assert (check_timeline (timeline_3, &data_3, FALSE));
-
- g_object_unref (timeline_1);
- g_object_unref (timeline_2);
- g_object_unref (timeline_3);
-
- timeline_data_destroy (&data_1);
- timeline_data_destroy (&data_2);
- timeline_data_destroy (&data_3);
-
- g_source_remove (delay_tag);
-
- clutter_actor_destroy (stage);
-}
-
-void
-timeline_markers_from_script (TestConformSimpleFixture *fixture,
- gconstpointer data)
-{
- ClutterScript *script = clutter_script_new ();
- ClutterTimeline *timeline;
- GError *error = NULL;
- gchar *test_file;
- gchar **markers;
- gsize n_markers;
-
- test_file = clutter_test_get_data_file ("test-script-timeline-markers.json");
- clutter_script_load_from_file (script, test_file, &error);
- if (g_test_verbose () && error != NULL)
- g_print ("Error: %s", error->message);
-
- g_assert_no_error (error);
-
- timeline = CLUTTER_TIMELINE (clutter_script_get_object (script, "timeline0"));
-
- g_assert (clutter_timeline_has_marker (timeline, "marker0"));
- g_assert (clutter_timeline_has_marker (timeline, "marker1"));
- g_assert (!clutter_timeline_has_marker (timeline, "foo"));
- g_assert (clutter_timeline_has_marker (timeline, "marker2"));
- g_assert (clutter_timeline_has_marker (timeline, "marker3"));
-
- markers = clutter_timeline_list_markers (timeline, -1, &n_markers);
- g_assert_cmpint (n_markers, ==, 4);
- g_strfreev (markers);
-
- markers = clutter_timeline_list_markers (timeline, 500, &n_markers);
- g_assert_cmpint (n_markers, ==, 2);
- g_assert (markers != NULL);
- g_assert_cmpstr (markers[0], ==, "marker3");
- g_assert_cmpstr (markers[1], ==, "marker1");
- g_strfreev (markers);
-
- g_object_unref (script);
-
- g_free (test_file);
-}
diff --git a/clutter/tests/conform/units.c b/clutter/tests/conform/units.c
deleted file mode 100644
index 06bfaf513..000000000
--- a/clutter/tests/conform/units.c
+++ /dev/null
@@ -1,131 +0,0 @@
-#include <clutter/clutter.h>
-
-static void
-units_cache (void)
-{
- ClutterUnits units;
- ClutterSettings *settings;
- gfloat pixels;
- gint old_dpi;
-
- settings = clutter_settings_get_default ();
- g_object_get (settings, "font-dpi", &old_dpi, NULL);
-
- g_object_set (settings, "font-dpi", 96 * 1024, NULL);
- clutter_units_from_em (&units, 1.0);
- pixels = clutter_units_to_pixels (&units);
-
- g_object_set (settings, "font-dpi", ((96 * 2) * 1024), NULL);
- g_assert_cmpfloat (clutter_units_to_pixels (&units), !=, pixels);
-
- g_object_set (settings, "font-dpi", (96 * 1024), NULL);
- g_assert_cmpfloat (clutter_units_to_pixels (&units), ==, pixels);
-
- g_object_set (settings, "font-dpi", old_dpi, NULL);
-}
-
-static void
-units_constructors (void)
-{
- ClutterUnits units, units_cm;
-
- clutter_units_from_pixels (&units, 100);
- g_assert (clutter_units_get_unit_type (&units) == CLUTTER_UNIT_PIXEL);
- g_assert_cmpfloat (clutter_units_get_unit_value (&units), ==, 100.0);
- g_assert_cmpfloat (clutter_units_to_pixels (&units), ==, 100.0);
-
- clutter_units_from_em (&units, 5.0);
- g_assert (clutter_units_get_unit_type (&units) == CLUTTER_UNIT_EM);
- g_assert_cmpfloat (clutter_units_get_unit_value (&units), ==, 5.0);
- g_assert_cmpfloat (clutter_units_to_pixels (&units), !=, 5.0);
-
- clutter_units_from_cm (&units_cm, 5.0);
- g_assert (clutter_units_get_unit_type (&units_cm) == CLUTTER_UNIT_CM);
- g_assert_cmpfloat (clutter_units_get_unit_value (&units_cm), ==, 5.0);
- g_assert_cmpfloat (clutter_units_to_pixels (&units_cm), !=, 5.0);
-
- clutter_units_from_mm (&units, 50.0);
- g_assert (clutter_units_get_unit_type (&units) == CLUTTER_UNIT_MM);
- g_assert_cmpfloat (clutter_units_to_pixels (&units),
- ==,
- clutter_units_to_pixels (&units_cm));
-}
-
-static void
-units_string (void)
-{
- ClutterUnits units;
- gchar *string;
-
- g_assert (clutter_units_from_string (&units, "") == FALSE);
-
- g_assert (clutter_units_from_string (&units, "10") == TRUE);
- g_assert (clutter_units_get_unit_type (&units) == CLUTTER_UNIT_PIXEL);
- g_assert_cmpfloat (clutter_units_get_unit_value (&units), ==, 10);
-
- g_assert (clutter_units_from_string (&units, "10 px") == TRUE);
- g_assert (clutter_units_get_unit_type (&units) == CLUTTER_UNIT_PIXEL);
-
- g_assert (clutter_units_from_string (&units, "10 mm") == TRUE);
- g_assert (clutter_units_get_unit_type (&units) == CLUTTER_UNIT_MM);
-
- g_assert (clutter_units_from_string (&units, "10 cm") == TRUE);
- g_assert (clutter_units_get_unit_type (&units) == CLUTTER_UNIT_CM);
-
- g_assert (clutter_units_from_string (&units, "10 ") == TRUE);
- g_assert (clutter_units_get_unit_type (&units) == CLUTTER_UNIT_PIXEL);
- g_assert_cmpfloat (clutter_units_get_unit_value (&units), ==, 10);
-
- g_assert (clutter_units_from_string (&units, "5 em") == TRUE);
- g_assert (clutter_units_get_unit_type (&units) == CLUTTER_UNIT_EM);
- g_assert_cmpfloat (clutter_units_get_unit_value (&units), ==, 5);
-
- g_assert (clutter_units_from_string (&units, "5 emeralds") == FALSE);
-
- g_assert (clutter_units_from_string (&units, " 16 mm") == TRUE);
- g_assert (clutter_units_get_unit_type (&units) == CLUTTER_UNIT_MM);
- g_assert_cmpfloat (clutter_units_get_unit_value (&units), ==, 16);
-
- g_assert (clutter_units_from_string (&units, " 24 pt ") == TRUE);
- g_assert (clutter_units_get_unit_type (&units) == CLUTTER_UNIT_POINT);
- g_assert_cmpfloat (clutter_units_get_unit_value (&units), ==, 24);
-
- g_assert (clutter_units_from_string (&units, " 32 em garbage") == FALSE);
-
- g_assert (clutter_units_from_string (&units, "5.1cm") == TRUE);
- g_assert (clutter_units_get_unit_type (&units) == CLUTTER_UNIT_CM);
- g_assert_cmpfloat (clutter_units_get_unit_value (&units), ==, 5.1f);
-
- g_assert (clutter_units_from_string (&units, "5,mm") == FALSE);
-
- g_assert (clutter_units_from_string (&units, ".5pt") == TRUE);
- g_assert (clutter_units_get_unit_type (&units) == CLUTTER_UNIT_POINT);
- g_assert_cmpfloat (clutter_units_get_unit_value (&units), ==, 0.5f);
-
- g_assert (clutter_units_from_string (&units, "1 omg!!pony") == FALSE);
-
- clutter_units_from_pt (&units, 24.0);
- string = clutter_units_to_string (&units);
- g_assert_cmpstr (string, ==, "24.0 pt");
- g_free (string);
-
- clutter_units_from_em (&units, 3.0);
- string = clutter_units_to_string (&units);
- g_assert_cmpstr (string, ==, "3.00 em");
-
- units.unit_type = CLUTTER_UNIT_PIXEL;
- units.value = 0;
-
- g_assert (clutter_units_from_string (&units, string) == TRUE);
- g_assert (clutter_units_get_unit_type (&units) != CLUTTER_UNIT_PIXEL);
- g_assert (clutter_units_get_unit_type (&units) == CLUTTER_UNIT_EM);
- g_assert_cmpint ((int) clutter_units_get_unit_value (&units), ==, 3);
-
- g_free (string);
-}
-
-CLUTTER_TEST_SUITE (
- CLUTTER_TEST_UNIT ("/units/string", units_string)
- CLUTTER_TEST_UNIT ("/units/cache", units_cache)
- CLUTTER_TEST_UNIT ("/units/constructors", units_constructors)
-)
diff --git a/clutter/tests/interactive/.gitignore b/clutter/tests/interactive/.gitignore
deleted file mode 100644
index 7fde7f98f..000000000
--- a/clutter/tests/interactive/.gitignore
+++ /dev/null
@@ -1,55 +0,0 @@
-/stamp-test-interactive
-/stamp-test-unit-names
-/test-actors
-/test-animation
-/test-animator
-/test-bind-constraint
-/test-binding-pool
-/test-cairo-clock
-/test-cairo-flowers
-/test-clip
-/test-cogl-multitexture
-/test-cogl-offscreen
-/test-cogl-point-sprites
-/test-cogl-primitives
-/test-cogl-shader-glsl
-/test-cogl-tex-convert
-/test-cogl-tex-foreign
-/test-cogl-tex-getset
-/test-cogl-tex-polygon
-/test-cogl-tex-tile
-/test-cogl-vertex-buffer
-/test-content
-/test-devices
-/test-easing
-/test-events
-/test-fbo
-/test-grab
-/test-image
-/test-interactive
-/test-keyframe-transition
-/test-layout
-/test-multistage
-/test-paint-wrapper
-/test-path-constraint
-/test-pixmap
-/test-rotate-zoom
-/test-scale
-/test-script
-/test-scrolling
-/test-shader-effects
-/test-stage-read-pixels
-/test-stage-sizing
-/test-state
-/test-state-animator
-/test-state-script
-/test-swipe-action
-/test-table-layout
-/test-text
-/test-text-field
-/test-texture-async
-/test-texture-material
-/test-texture-quality
-/test-texture-slicing
-/test-touch-events
-/test-unit-names.h
diff --git a/clutter/tests/interactive/meson.build b/clutter/tests/interactive/meson.build
deleted file mode 100644
index 4f7ddbfe6..000000000
--- a/clutter/tests/interactive/meson.build
+++ /dev/null
@@ -1,91 +0,0 @@
-clutter_tests_interactive_srcdir = meson.current_source_dir()
-clutter_tests_interactive_includepath = include_directories('.')
-
-clutter_tests_interactive_c_args = [
- '-DTESTS_DATADIR="@0@"'.format(clutter_tests_interactive_srcdir),
- '-DG_DISABLE_SINGLE_INCLUDES',
- '-DGLIB_DISABLE_DEPRECATION_WARNINGS',
- '-DCOGL_DISABLE_DEPRECATION_WARNINGS',
- '-DCLUTTER_DISABLE_DEPRECATION_WARNINGS',
-]
-clutter_tests_interactive_c_args += clutter_debug_c_args
-
-clutter_tests_interactive_link_args = [
- '-Wl,--export-dynamic',
-]
-
-clutter_tests_interactive_test_sources = [
- 'test-texture-slicing.c',
- 'test-texture-async.c',
- 'test-texture-material.c',
- 'test-events.c',
- 'test-scale.c',
- 'test-actors.c',
- 'test-shader-effects.c',
- 'test-script.c',
- 'test-grab.c',
- 'test-cogl-shader-glsl.c',
- 'test-state.c',
- 'test-fbo.c',
- 'test-cogl-tex-tile.c',
- 'test-cogl-tex-convert.c',
- 'test-cogl-offscreen.c',
- 'test-cogl-tex-polygon.c',
- 'test-cogl-multitexture.c',
- 'test-stage-read-pixels.c',
- 'test-paint-wrapper.c',
- 'test-texture-quality.c',
- 'test-layout.c',
- 'test-animation.c',
- 'test-easing.c',
- 'test-binding-pool.c',
- 'test-text.c',
- 'test-text-field.c',
- 'test-cairo-clock.c',
- 'test-cairo-flowers.c',
- 'test-cogl-vertex-buffer.c',
- 'test-stage-sizing.c',
- 'test-scrolling.c',
- 'test-swipe-action.c',
- 'test-cogl-point-sprites.c',
- 'test-table-layout.c',
- 'test-path-constraint.c',
- 'test-state-script.c',
- 'test-devices.c',
- 'test-content.c',
- 'test-keyframe-transition.c',
- 'test-bind-constraint.c',
- 'test-touch-events.c',
- 'test-rotate-zoom.c',
- 'test-image.c',
-]
-
-gen_test_unit_names = find_program('meson/gen-test-unit-names.sh')
-clutter_interactive_test_unit_names_h = custom_target('gen-test-unit-names',
- output: 'test-unit-names.h',
- input: clutter_tests_interactive_test_sources,
- command: [gen_test_unit_names, '@OUTPUT@', '@INPUT@'],
- install: false,
-)
-
-clutter_tests_interactive_sources = [
- 'test-main.c',
- clutter_interactive_test_unit_names_h,
- clutter_tests_interactive_test_sources
-]
-
-executable('test-interactive',
- sources: clutter_tests_interactive_sources,
- include_directories: [
- clutter_includes,
- clutter_tests_interactive_includepath,
- ],
- c_args: clutter_tests_interactive_c_args,
- link_args: clutter_tests_interactive_link_args,
- dependencies: [
- clutter_deps,
- libmutter_clutter_dep,
- gdk_pixbuf_dep,
- ],
- install: false,
-)
diff --git a/clutter/tests/interactive/meson/gen-test-unit-names.sh b/clutter/tests/interactive/meson/gen-test-unit-names.sh
deleted file mode 100755
index 72c5bf362..000000000
--- a/clutter/tests/interactive/meson/gen-test-unit-names.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/sh
-
-outputfile=$1
-shift
-
-echo '/* ** This file is autogenerated. Do not edit. ** */' > "$outputfile"
-echo '' >> "$outputfile"
-echo 'const char *test_unit_names[] = {' >> "$outputfile"
-
-for test_source_file in "$@"; do
- echo " \"$(echo "$test_source_file" | sed 's/.*\(test-[a-z0-9\-]\+\)\.c/\1/')\"," >> "$outputfile"
-done
-
-echo '};' >> "$outputfile"
diff --git a/clutter/tests/interactive/redhand.png b/clutter/tests/interactive/redhand.png
deleted file mode 100644
index c07d8acd3..000000000
--- a/clutter/tests/interactive/redhand.png
+++ /dev/null
Binary files differ
diff --git a/clutter/tests/interactive/test-actors.c b/clutter/tests/interactive/test-actors.c
deleted file mode 100644
index ae12d7a08..000000000
--- a/clutter/tests/interactive/test-actors.c
+++ /dev/null
@@ -1,318 +0,0 @@
-#include <clutter/clutter.h>
-
-#include <math.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <glib.h>
-#include <gmodule.h>
-
-#define NHANDS 6
-
-typedef struct SuperOH
-{
- ClutterActor **hand;
- ClutterActor *bgtex;
- ClutterActor *real_hand;
- ClutterActor *group;
- ClutterActor *stage;
-
- gint stage_width;
- gint stage_height;
- gfloat radius;
-
- ClutterBehaviour *scaler_1;
- ClutterBehaviour *scaler_2;
- ClutterTimeline *timeline;
-} SuperOH;
-
-static gint n_hands = NHANDS;
-
-int
-test_actors_main (int argc, char *argv[]);
-
-static GOptionEntry super_oh_entries[] = {
- {
- "num-hands", 'n',
- 0,
- G_OPTION_ARG_INT, &n_hands,
- "Number of hands", "HANDS"
- },
- { NULL }
-};
-
-static void
-on_group_destroy (ClutterActor *actor,
- SuperOH *oh)
-{
- oh->group = NULL;
-}
-
-static void
-on_hand_destroy (ClutterActor *actor,
- SuperOH *oh)
-{
- int i;
-
- for (i = 0; i < n_hands; i++)
- {
- if (oh->hand[i] == actor)
- oh->hand[i] = NULL;
- }
-}
-
-static gboolean
-on_button_press_event (ClutterActor *actor,
- ClutterEvent *event,
- SuperOH *oh)
-{
- gfloat x, y;
-
- clutter_event_get_coords (event, &x, &y);
-
- g_print ("*** button press event (button:%d) at %.2f, %.2f on %s ***\n",
- clutter_event_get_button (event),
- x, y,
- clutter_actor_get_name (actor));
-
- clutter_actor_hide (actor);
-
- return TRUE;
-}
-
-static gboolean
-input_cb (ClutterActor *stage,
- ClutterEvent *event,
- gpointer data)
-{
- SuperOH *oh = data;
-
- if (event->type == CLUTTER_KEY_RELEASE)
- {
- g_print ("*** key press event (key:%c) ***\n",
- clutter_event_get_key_symbol (event));
-
- if (clutter_event_get_key_symbol (event) == CLUTTER_KEY_q)
- {
- clutter_main_quit ();
-
- return TRUE;
- }
- else if (clutter_event_get_key_symbol (event) == CLUTTER_KEY_r)
- {
- gint i;
-
- for (i = 0; i < n_hands; i++)
- {
- if (oh->hand[i] != NULL)
- clutter_actor_show (oh->hand[i]);
- }
-
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-/* Timeline handler */
-static void
-frame_cb (ClutterTimeline *timeline,
- gint msecs,
- gpointer data)
-{
- SuperOH *oh = data;
- gint i;
- float rotation = clutter_timeline_get_progress (timeline) * 360.0f;
-
- /* Rotate everything clockwise about stage center*/
- if (oh->group != NULL)
- clutter_actor_set_rotation (oh->group,
- CLUTTER_Z_AXIS,
- rotation,
- oh->stage_width / 2,
- oh->stage_height / 2,
- 0);
-
- for (i = 0; i < n_hands; i++)
- {
- /* Rotate each hand around there centers - to get this we need
- * to take into account any scaling.
- */
- if (oh->hand[i] != NULL)
- clutter_actor_set_rotation (oh->hand[i],
- CLUTTER_Z_AXIS,
- -6.0 * rotation,
- 0, 0, 0);
- }
-}
-
-static void
-stop_and_quit (ClutterActor *stage,
- SuperOH *data)
-{
- clutter_timeline_stop (data->timeline);
-
- clutter_main_quit ();
-}
-
-static gdouble
-my_sine_wave (ClutterAlpha *alpha,
- gpointer dummy G_GNUC_UNUSED)
-{
- ClutterTimeline *timeline = clutter_alpha_get_timeline (alpha);
- gdouble progress = clutter_timeline_get_progress (timeline);
-
- return sin (progress * G_PI);
-}
-
-G_MODULE_EXPORT int
-test_actors_main (int argc, char *argv[])
-{
- ClutterAlpha *alpha;
- SuperOH *oh;
- gint i;
- GError *error;
- ClutterActor *real_hand;
- gchar *file;
-
- error = NULL;
-
- if (clutter_init_with_args (&argc, &argv,
- NULL,
- super_oh_entries,
- NULL,
- &error) != CLUTTER_INIT_SUCCESS)
- {
- g_warning ("Unable to initialise Clutter:\n%s",
- error->message);
- g_error_free (error);
-
- return EXIT_FAILURE;
- }
-
- oh = g_new (SuperOH, 1);
-
- oh->stage = clutter_stage_new ();
- clutter_actor_set_size (oh->stage, 800, 600);
- clutter_actor_set_name (oh->stage, "Default Stage");
- clutter_actor_set_background_color (oh->stage, CLUTTER_COLOR_LightSkyBlue);
- g_signal_connect (oh->stage, "destroy", G_CALLBACK (stop_and_quit), oh);
-
- clutter_stage_set_title (CLUTTER_STAGE (oh->stage), "Actors");
-
- /* Create a timeline to manage animation */
- oh->timeline = clutter_timeline_new (6000);
- clutter_timeline_set_repeat_count (oh->timeline, -1);
-
- /* fire a callback for frame change */
- g_signal_connect (oh->timeline, "new-frame", G_CALLBACK (frame_cb), oh);
-
- /* Set up some behaviours to handle scaling */
- alpha = clutter_alpha_new_with_func (oh->timeline, my_sine_wave, NULL, NULL);
-
- oh->scaler_1 = clutter_behaviour_scale_new (alpha, 0.5, 0.5, 1.0, 1.0);
- oh->scaler_2 = clutter_behaviour_scale_new (alpha, 1.0, 1.0, 0.5, 0.5);
-
- file = g_build_filename (TESTS_DATADIR, "redhand.png", NULL);
- real_hand = clutter_texture_new_from_file (file, &error);
- if (real_hand == NULL)
- g_error ("image load failed: %s", error->message);
-
- g_free (file);
-
- /* create a new actor to hold other actors */
- oh->group = clutter_actor_new ();
- clutter_actor_set_layout_manager (oh->group, clutter_fixed_layout_new ());
- clutter_actor_set_name (oh->group, "Group");
- g_signal_connect (oh->group, "destroy", G_CALLBACK (on_group_destroy), oh);
- clutter_actor_add_constraint (oh->group, clutter_align_constraint_new (oh->stage, CLUTTER_ALIGN_BOTH, 0.5));
- clutter_actor_add_constraint (oh->group, clutter_bind_constraint_new (oh->stage, CLUTTER_BIND_SIZE, 0.0f));
-
- oh->hand = g_new (ClutterActor*, n_hands);
-
- oh->stage_width = clutter_actor_get_width (oh->stage);
- oh->stage_height = clutter_actor_get_height (oh->stage);
- oh->radius = (oh->stage_width + oh->stage_height)
- / n_hands;
-
- for (i = 0; i < n_hands; i++)
- {
- gint x, y, w, h;
-
- if (i == 0)
- {
- oh->hand[i] = real_hand;
- clutter_actor_set_name (oh->hand[i], "Real Hand");
- }
- else
- {
- oh->hand[i] = clutter_clone_new (real_hand);
- clutter_actor_set_name (oh->hand[i], "Clone Hand");
- }
-
- clutter_actor_set_reactive (oh->hand[i], TRUE);
-
- clutter_actor_set_size (oh->hand[i], 200, 213);
-
- /* Place around a circle */
- w = clutter_actor_get_width (oh->hand[i]);
- h = clutter_actor_get_height (oh->hand[i]);
-
- x = oh->stage_width / 2
- + oh->radius
- * cos (i * G_PI / (n_hands / 2))
- - w / 2;
-
- y = oh->stage_height / 2
- + oh->radius
- * sin (i * G_PI / (n_hands / 2))
- - h / 2;
-
- clutter_actor_set_position (oh->hand[i], x, y);
-
- clutter_actor_move_anchor_point_from_gravity (oh->hand[i],
- CLUTTER_GRAVITY_CENTER);
-
- /* Add to our group group */
- clutter_container_add_actor (CLUTTER_CONTAINER (oh->group), oh->hand[i]);
-
- g_signal_connect (oh->hand[i], "button-press-event",
- G_CALLBACK (on_button_press_event),
- oh);
-
- g_signal_connect (oh->hand[i], "destroy",
- G_CALLBACK (on_hand_destroy),
- oh);
-
- if (i % 2)
- clutter_behaviour_apply (oh->scaler_1, oh->hand[i]);
- else
- clutter_behaviour_apply (oh->scaler_2, oh->hand[i]);
- }
-
- /* Add the group to the stage */
- clutter_container_add_actor (CLUTTER_CONTAINER (oh->stage), oh->group);
-
- /* Show everying */
- clutter_actor_show (oh->stage);
-
- g_signal_connect (oh->stage, "key-release-event",
- G_CALLBACK (input_cb),
- oh);
-
- /* and start it */
- clutter_timeline_start (oh->timeline);
-
- clutter_main ();
-
- clutter_timeline_stop (oh->timeline);
-
- /* clean up */
- g_object_unref (oh->scaler_1);
- g_object_unref (oh->scaler_2);
- g_object_unref (oh->timeline);
- g_free (oh->hand);
- g_free (oh);
-
- return EXIT_SUCCESS;
-}
diff --git a/clutter/tests/interactive/test-animation.c b/clutter/tests/interactive/test-animation.c
deleted file mode 100644
index dbd5e5876..000000000
--- a/clutter/tests/interactive/test-animation.c
+++ /dev/null
@@ -1,130 +0,0 @@
-#include <stdlib.h>
-#include <gmodule.h>
-#include <clutter/clutter.h>
-
-static gboolean is_expanded = FALSE;
-
-int
-test_animation_main (int argc, char *argv[]);
-
-const char *
-test_animation_describe (void);
-
-static void
-on_rect_transitions_completed (ClutterActor *actor)
-{
- is_expanded = !is_expanded;
-
- g_print ("Animation complete\n");
-
- clutter_actor_set_reactive (actor, TRUE);
-}
-
-static void
-on_clicked (ClutterClickAction *action,
- ClutterActor *actor,
- gpointer dummy G_GNUC_UNUSED)
-{
- gfloat old_x, old_y, new_x, new_y;
- gfloat old_width, old_height, new_width, new_height;
- gdouble new_angle;
- const ClutterColor *new_color;
- guint8 new_opacity;
-
- clutter_actor_get_position (actor, &old_x, &old_y);
- clutter_actor_get_size (actor, &old_width, &old_height);
-
- /* determine the final state of the animation depending on
- * the state of the actor
- */
- if (!is_expanded)
- {
- new_x = old_x - 100;
- new_y = old_y - 100;
- new_width = old_width + 200;
- new_height = old_height + 200;
- new_angle = 360.0;
-
- new_color = CLUTTER_COLOR_DarkScarletRed;
-
- new_opacity = 255;
- }
- else
- {
- new_x = old_x + 100;
- new_y = old_y + 100;
- new_width = old_width - 200;
- new_height = old_height - 200;
- new_angle = 0.0;
-
- new_color = CLUTTER_COLOR_LightOrange;
-
- new_opacity = 128;
- }
-
- clutter_actor_save_easing_state (actor);
- clutter_actor_set_easing_mode (actor, CLUTTER_EASE_IN_EXPO);
- clutter_actor_set_easing_duration (actor, 2000);
-
- clutter_actor_set_position (actor, new_x, new_y);
- clutter_actor_set_size (actor, new_width, new_height);
- clutter_actor_set_background_color (actor, new_color);
- clutter_actor_set_rotation_angle (actor, CLUTTER_Z_AXIS, new_angle);
- clutter_actor_set_reactive (actor, FALSE);
-
- /* animate the opacity halfway through, with a different pacing */
- clutter_actor_save_easing_state (actor);
- clutter_actor_set_easing_mode (actor, CLUTTER_LINEAR);
- clutter_actor_set_easing_delay (actor, 1000);
- clutter_actor_set_easing_duration (actor, 1000);
- clutter_actor_set_opacity (actor, new_opacity);
- clutter_actor_restore_easing_state (actor);
-
- clutter_actor_restore_easing_state (actor);
-}
-
-G_MODULE_EXPORT int
-test_animation_main (int argc, char *argv[])
-{
- ClutterActor *stage, *rect;
- ClutterAction *action;
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- stage = clutter_stage_new ();
- clutter_actor_set_background_color (stage, CLUTTER_COLOR_LightSkyBlue);
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Animation");
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- rect = clutter_actor_new ();
- clutter_actor_set_background_color (rect, CLUTTER_COLOR_LightOrange);
- clutter_actor_add_child (stage, rect);
- clutter_actor_set_size (rect, 50, 50);
- clutter_actor_set_pivot_point (rect, .5f, .5f);
- clutter_actor_set_translation (rect, -25, -25, 0);
- clutter_actor_set_position (rect,
- clutter_actor_get_width (stage) / 2,
- clutter_actor_get_height (stage) / 2);
- clutter_actor_set_opacity (rect, 128);
- clutter_actor_set_reactive (rect, TRUE);
- g_signal_connect (rect, "transitions-completed",
- G_CALLBACK (on_rect_transitions_completed),
- NULL);
-
- action = clutter_click_action_new ();
- g_signal_connect (action, "clicked", G_CALLBACK (on_clicked), NULL);
- clutter_actor_add_action_with_name (rect, "click", action);
-
- clutter_actor_show (stage);
-
- clutter_main ();
-
- return EXIT_SUCCESS;
-}
-
-G_MODULE_EXPORT const char *
-test_animation_describe (void)
-{
- return "Simple animation demo";
-}
diff --git a/clutter/tests/interactive/test-bind-constraint.c b/clutter/tests/interactive/test-bind-constraint.c
deleted file mode 100644
index f8df31b02..000000000
--- a/clutter/tests/interactive/test-bind-constraint.c
+++ /dev/null
@@ -1,257 +0,0 @@
-#include <stdlib.h>
-#include <clutter/clutter.h>
-
-#define RECT_SIZE 128
-
-#define H_PADDING 32
-#define V_PADDING 32
-
-enum
-{
- NorthWest, North, NorthEast,
- West, Center, East,
- SouthWest, South, SouthEast,
-
- N_RECTS
-};
-
-static ClutterActor *rects[N_RECTS] = { NULL, };
-static const gchar *colors[N_RECTS] = {
- "#8ae234", "#73d216", "#4e9a06",
- "#729fcf", "#3465a4", "#204a87",
- "#ef2929", "#cc0000", "#a40000"
-};
-static const gchar *names[N_RECTS] = {
- "North West", "North", "North East",
- "West", "Center", "East",
- "South West", "South", "South East"
-};
-
-static const gchar *desaturare_glsl_shader =
-"uniform sampler2D tex;\n"
-"uniform float factor;\n"
-"\n"
-"vec3 desaturate (const vec3 color, const float desaturation)\n"
-"{\n"
-" const vec3 gray_conv = vec3 (0.299, 0.587, 0.114);\n"
-" vec3 gray = vec3 (dot (gray_conv, color));\n"
-" return vec3 (mix (color.rgb, gray, desaturation));\n"
-"}\n"
-"\n"
-"void main ()\n"
-"{\n"
-" vec4 color = cogl_color_in * texture2D (tex, vec2 (cogl_tex_coord_in[0].xy));\n"
-" color.rgb = desaturate (color.rgb, factor);\n"
-" cogl_color_out = color;\n"
-"}\n";
-
-static gboolean is_expanded = FALSE;
-
-const char *
-test_bind_constraint_describe (void);
-
-int
-test_bind_constraint_main (int argc, char *argv[]);
-
-static gboolean
-on_button_release (ClutterActor *actor,
- ClutterEvent *event,
- gpointer data G_GNUC_UNUSED)
-{
- if (!is_expanded)
- {
- gfloat north_offset, south_offset;
- gfloat west_offset, east_offset;
-
- /* expand the 8 rectangles by animating the offset of the
- * bind constraints
- */
-
- north_offset = (clutter_actor_get_height (rects[Center]) + V_PADDING)
- * -1.0f;
- south_offset = (clutter_actor_get_height (rects[Center]) + V_PADDING);
-
- west_offset = (clutter_actor_get_width (rects[Center]) + H_PADDING)
- * -1.0f;
- east_offset = (clutter_actor_get_width (rects[Center]) + H_PADDING);
-
- clutter_actor_animate (rects[NorthWest], CLUTTER_EASE_OUT_EXPO, 500,
- "opacity", 255,
- "@constraints.x-bind.offset", west_offset,
- "@constraints.y-bind.offset", north_offset,
- "reactive", TRUE,
- NULL);
- clutter_actor_animate (rects[North], CLUTTER_EASE_OUT_EXPO, 500,
- "opacity", 255,
- "@constraints.y-bind.offset", north_offset,
- "reactive", TRUE,
- NULL);
- clutter_actor_animate (rects[NorthEast], CLUTTER_EASE_OUT_EXPO, 500,
- "opacity", 255,
- "@constraints.x-bind.offset", east_offset,
- "@constraints.y-bind.offset", north_offset,
- "reactive", TRUE,
- NULL);
-
- clutter_actor_animate (rects[West], CLUTTER_EASE_OUT_EXPO, 500,
- "opacity", 255,
- "@constraints.x-bind.offset", west_offset,
- "reactive", TRUE,
- NULL);
- /* turn on the desaturation effect and set the center
- * rectangle not reactive
- */
- clutter_actor_animate (rects[Center], CLUTTER_LINEAR, 500,
- "@effects.desaturate.enabled", TRUE,
- "reactive", FALSE,
- NULL);
- clutter_actor_animate (rects[East], CLUTTER_EASE_OUT_EXPO, 500,
- "opacity", 255,
- "@constraints.x-bind.offset", east_offset,
- "reactive", TRUE,
- NULL);
-
- clutter_actor_animate (rects[SouthWest], CLUTTER_EASE_OUT_EXPO, 500,
- "opacity", 255,
- "@constraints.x-bind.offset", west_offset,
- "@constraints.y-bind.offset", south_offset,
- "reactive", TRUE,
- NULL);
- clutter_actor_animate (rects[South], CLUTTER_EASE_OUT_EXPO, 500,
- "opacity", 255,
- "@constraints.y-bind.offset", south_offset,
- "reactive", TRUE,
- NULL);
- clutter_actor_animate (rects[SouthEast], CLUTTER_EASE_OUT_EXPO, 500,
- "opacity", 255,
- "@constraints.x-bind.offset", east_offset,
- "@constraints.y-bind.offset", south_offset,
- "reactive", TRUE,
- NULL);
- }
- else
- {
- gint i;
-
- clutter_actor_animate (rects[Center], CLUTTER_LINEAR, 500,
- "@effects.desaturate.enabled", FALSE,
- "reactive", TRUE,
- NULL);
-
- for (i = NorthWest; i < N_RECTS; i++)
- {
- if (i == Center)
- continue;
-
- /* put the 8 rectangles back into their initial state */
- clutter_actor_animate (rects[i], CLUTTER_EASE_OUT_EXPO, 500,
- "opacity", 0,
- "@constraints.x-bind.offset", 0.0f,
- "@constraints.y-bind.offset", 0.0f,
- "reactive", FALSE,
- NULL);
- }
- }
-
- is_expanded = !is_expanded;
-
- g_print ("Selected: [%s]\n", clutter_actor_get_name (actor));
-
- return TRUE;
-}
-
-G_MODULE_EXPORT const char *
-test_bind_constraint_describe (void)
-{
- return "Demonstrate the usage of ClutterBindConstraint";
-}
-
-G_MODULE_EXPORT int
-test_bind_constraint_main (int argc, char *argv[])
-{
- ClutterActor *stage, *rect;
- ClutterConstraint *constraint;
- ClutterEffect *effect;
- ClutterColor rect_color;
- gint i;
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- stage = clutter_stage_new ();
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Constraints");
- clutter_actor_set_size (stage, 800, 600);
-
- /* main rectangle */
- clutter_color_from_string (&rect_color, "#3465a4");
- rect = clutter_actor_new ();
- g_signal_connect (rect, "button-release-event",
- G_CALLBACK (on_button_release),
- NULL);
- clutter_actor_set_background_color (rect, &rect_color);
- clutter_actor_set_size (rect, RECT_SIZE, RECT_SIZE);
- clutter_actor_set_reactive (rect, TRUE);
- clutter_actor_set_name (rect, names[Center]);
- clutter_actor_add_child (stage, rect);
-
- /* align the center rectangle to the center of the stage */
- constraint = clutter_align_constraint_new (stage, CLUTTER_ALIGN_BOTH, 0.5);
- clutter_actor_add_constraint_with_name (rect, "align", constraint);
-
- /* this is the equivalent of the DesaturateEffect; we cannot animate
- * the factor because the animation API only understands GObject
- * properties; so we use the ActorMeta:enabled property to toggle
- * the shader
- */
- effect = clutter_shader_effect_new (CLUTTER_FRAGMENT_SHADER);
- clutter_shader_effect_set_shader_source (CLUTTER_SHADER_EFFECT (effect),
- desaturare_glsl_shader);
- clutter_shader_effect_set_uniform (CLUTTER_SHADER_EFFECT (effect),
- "tex", G_TYPE_INT, 1, 0);
- clutter_shader_effect_set_uniform (CLUTTER_SHADER_EFFECT (effect),
- "factor", G_TYPE_FLOAT, 1, 0.66);
- clutter_actor_meta_set_enabled (CLUTTER_ACTOR_META (effect), FALSE);
- clutter_actor_add_effect_with_name (rect, "desaturate", effect);
-
- rects[Center] = rect;
-
- /* build the other rectangles, and bind their position and size
- * to the center rectangle. we are going to animate the offset
- * of the BindConstraints
- */
- for (i = 0; i < N_RECTS; i++)
- {
- if (i == Center)
- continue;
-
- clutter_color_from_string (&rect_color, colors[i]);
-
- rect = clutter_actor_new ();
- clutter_actor_set_background_color (rect, &rect_color);
- clutter_actor_set_opacity (rect, 0);
- clutter_actor_set_name (rect, names[i]);
- clutter_actor_add_child (stage, rect);
-
- constraint = clutter_bind_constraint_new (rects[Center], CLUTTER_BIND_X, 0.0);
- clutter_actor_add_constraint_with_name (rect, "x-bind", constraint);
-
- constraint = clutter_bind_constraint_new (rects[Center], CLUTTER_BIND_Y, 0.0);
- clutter_actor_add_constraint_with_name (rect, "y-bind", constraint);
-
- constraint = clutter_bind_constraint_new (rects[Center], CLUTTER_BIND_SIZE, 0.0);
- clutter_actor_add_constraint_with_name (rect, "size-bind", constraint);
-
- g_signal_connect (rect, "button-release-event",
- G_CALLBACK (on_button_release),
- NULL);
-
- rects[i] = rect;
- }
-
- clutter_actor_show (stage);
-
- clutter_main ();
-
- return EXIT_SUCCESS;
-}
diff --git a/clutter/tests/interactive/test-binding-pool.c b/clutter/tests/interactive/test-binding-pool.c
deleted file mode 100644
index b33eebd42..000000000
--- a/clutter/tests/interactive/test-binding-pool.c
+++ /dev/null
@@ -1,316 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-
-#include <glib.h>
-#include <gmodule.h>
-
-#include <clutter/clutter.h>
-#include <clutter/clutter-keysyms.h>
-
-#define TYPE_KEY_GROUP (key_group_get_type ())
-#define KEY_GROUP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_KEY_GROUP, KeyGroup))
-#define IS_KEY_GROUP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_KEY_GROUP))
-#define KEY_GROUP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_KEY_GROUP, KeyGroupClass))
-#define IS_KEY_GROUP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_KEY_GROUP))
-
-typedef struct _KeyGroup KeyGroup;
-typedef struct _KeyGroupClass KeyGroupClass;
-
-struct _KeyGroup
-{
- ClutterActor parent_instance;
-
- gint selected_index;
-};
-
-struct _KeyGroupClass
-{
- ClutterActorClass parent_class;
-
- void (* activate) (KeyGroup *group,
- ClutterActor *child);
-};
-
-GType key_group_get_type (void);
-
-int
-test_binding_pool_main (int argc, char *argv[]);
-
-const char *
-test_binding_pool_describe (void);
-
-G_DEFINE_TYPE (KeyGroup, key_group, CLUTTER_TYPE_ACTOR)
-
-enum
-{
- ACTIVATE,
-
- LAST_SIGNAL
-};
-
-static guint group_signals[LAST_SIGNAL] = { 0, };
-
-static gboolean
-key_group_action_move_left (KeyGroup *self,
- const gchar *action_name,
- guint key_val,
- ClutterModifierType modifiers)
-{
- gint n_children;
-
- g_debug ("%s: activated '%s' (k:%d, m:%d)",
- G_STRLOC,
- action_name,
- key_val,
- modifiers);
-
- n_children = clutter_actor_get_n_children (CLUTTER_ACTOR (self));
-
- self->selected_index -= 1;
-
- if (self->selected_index < 0)
- self->selected_index = n_children - 1;
-
- return TRUE;
-}
-
-static gboolean
-key_group_action_move_right (KeyGroup *self,
- const gchar *action_name,
- guint key_val,
- ClutterModifierType modifiers)
-{
- gint n_children;
-
- g_debug ("%s: activated '%s' (k:%d, m:%d)",
- G_STRLOC,
- action_name,
- key_val,
- modifiers);
-
- n_children = clutter_actor_get_n_children (CLUTTER_ACTOR (self));
-
- self->selected_index += 1;
-
- if (self->selected_index >= n_children)
- self->selected_index = 0;
-
- return TRUE;
-}
-
-static gboolean
-key_group_action_activate (KeyGroup *self,
- const gchar *action_name,
- guint key_val,
- ClutterModifierType modifiers)
-{
- ClutterActor *child = NULL;
-
- g_debug ("%s: activated '%s' (k:%d, m:%d)",
- G_STRLOC,
- action_name,
- key_val,
- modifiers);
-
- if (self->selected_index == -1)
- return FALSE;
-
- child = clutter_actor_get_child_at_index (CLUTTER_ACTOR (self),
- self->selected_index);
-
- if (child != NULL)
- {
- g_signal_emit (self, group_signals[ACTIVATE], 0, child);
- return TRUE;
- }
- else
- return FALSE;
-}
-
-static gboolean
-key_group_key_press (ClutterActor *actor,
- ClutterKeyEvent *event)
-{
- ClutterBindingPool *pool;
- gboolean res;
-
- pool = clutter_binding_pool_find (G_OBJECT_TYPE_NAME (actor));
- g_assert (pool != NULL);
-
- res = clutter_binding_pool_activate (pool,
- event->keyval,
- event->modifier_state,
- G_OBJECT (actor));
-
- /* if we activate a key binding, redraw the actor */
- if (res)
- clutter_actor_queue_redraw (actor);
-
- return res ? CLUTTER_EVENT_STOP : CLUTTER_EVENT_PROPAGATE;
-}
-
-static void
-key_group_paint (ClutterActor *actor)
-{
- KeyGroup *self = KEY_GROUP (actor);
- ClutterActorIter iter;
- ClutterActor *child;
- gint i = 0;
-
- clutter_actor_iter_init (&iter, actor);
- while (clutter_actor_iter_next (&iter, &child))
- {
- /* paint the selection rectangle */
- if (i == self->selected_index)
- {
- ClutterActorBox box = { 0, };
-
- clutter_actor_get_allocation_box (child, &box);
-
- box.x1 -= 2;
- box.y1 -= 2;
- box.x2 += 2;
- box.y2 += 2;
-
- cogl_set_source_color4ub (255, 255, 0, 224);
- cogl_rectangle (box.x1, box.y1, box.x2, box.y2);
- }
-
- clutter_actor_paint (child);
-
- i += 1;
- }
-}
-
-static void
-key_group_class_init (KeyGroupClass *klass)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
- ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
- ClutterBindingPool *binding_pool;
-
- actor_class->paint = key_group_paint;
- actor_class->key_press_event = key_group_key_press;
-
- group_signals[ACTIVATE] =
- g_signal_new (g_intern_static_string ("activate"),
- G_OBJECT_CLASS_TYPE (gobject_class),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (KeyGroupClass, activate),
- NULL, NULL,
- g_cclosure_marshal_VOID__OBJECT,
- G_TYPE_NONE, 1,
- CLUTTER_TYPE_ACTOR);
-
- binding_pool = clutter_binding_pool_get_for_class (klass);
-
- clutter_binding_pool_install_action (binding_pool, "move-right",
- CLUTTER_KEY_Right, 0,
- G_CALLBACK (key_group_action_move_right),
- NULL, NULL);
- clutter_binding_pool_install_action (binding_pool, "move-left",
- CLUTTER_KEY_Left, 0,
- G_CALLBACK (key_group_action_move_left),
- NULL, NULL);
- clutter_binding_pool_install_action (binding_pool, "activate",
- CLUTTER_KEY_Return, 0,
- G_CALLBACK (key_group_action_activate),
- NULL, NULL);
- clutter_binding_pool_install_action (binding_pool, "activate",
- CLUTTER_KEY_KP_Enter, 0,
- G_CALLBACK (key_group_action_activate),
- NULL, NULL);
- clutter_binding_pool_install_action (binding_pool, "activate",
- CLUTTER_KEY_ISO_Enter, 0,
- G_CALLBACK (key_group_action_activate),
- NULL, NULL);
-}
-
-static void
-key_group_init (KeyGroup *self)
-{
- self->selected_index = -1;
-}
-
-static void
-on_key_group_activate (KeyGroup *group,
- ClutterActor *child)
-{
- g_print ("Child '%s' activated!\n", clutter_actor_get_name (child));
-}
-
-G_MODULE_EXPORT int
-test_binding_pool_main (int argc, char *argv[])
-{
- ClutterActor *stage, *key_group;
- gint group_x, group_y;
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- stage = clutter_stage_new ();
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Key Binding Pool");
- g_signal_connect (stage,
- "button-press-event", G_CALLBACK (clutter_main_quit),
- NULL);
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- key_group = g_object_new (TYPE_KEY_GROUP, NULL);
- clutter_actor_add_child (stage, key_group);
-
- /* add three rectangles to the key group */
- clutter_container_add (CLUTTER_CONTAINER (key_group),
- g_object_new (CLUTTER_TYPE_ACTOR,
- "background-color", CLUTTER_COLOR_Red,
- "name", "Red Rectangle",
- "width", 100.0,
- "height", 100.0,
- "x", 0.0,
- "y", 0.0,
- NULL),
- g_object_new (CLUTTER_TYPE_ACTOR,
- "background-color", CLUTTER_COLOR_Green,
- "name", "Green Rectangle",
- "width", 100.0,
- "height", 100.0,
- "x", 125.0,
- "y", 0.0,
- NULL),
- g_object_new (CLUTTER_TYPE_ACTOR,
- "background-color", CLUTTER_COLOR_Blue,
- "name", "Blue Rectangle",
- "width", 100.0,
- "height", 100.0,
- "x", 250.0,
- "y", 0.0,
- NULL),
- NULL);
-
- g_signal_connect (key_group,
- "activate", G_CALLBACK (on_key_group_activate),
- NULL);
-
- group_x =
- (clutter_actor_get_width (stage) - clutter_actor_get_width (key_group))
- / 2;
- group_y =
- (clutter_actor_get_height (stage) - clutter_actor_get_height (key_group))
- / 2;
-
- clutter_actor_set_position (key_group, group_x, group_y);
- clutter_actor_set_reactive (key_group, TRUE);
-
- clutter_stage_set_key_focus (CLUTTER_STAGE (stage), key_group);
-
- clutter_actor_show (stage);
-
- clutter_main ();
-
- return EXIT_SUCCESS;
-}
-
-G_MODULE_EXPORT const char *
-test_binding_pool_describe (void)
-{
- return "Binding pools example";
-}
diff --git a/clutter/tests/interactive/test-cairo-clock.c b/clutter/tests/interactive/test-cairo-clock.c
deleted file mode 100644
index 931282b02..000000000
--- a/clutter/tests/interactive/test-cairo-clock.c
+++ /dev/null
@@ -1,124 +0,0 @@
-#include <stdlib.h>
-#include <math.h>
-#include <cairo.h>
-#include <clutter/clutter.h>
-
-int
-test_cairo_clock_main (int argc, char *argv[]);
-
-const char *
-test_cairo_clock_describe (void);
-
-static gboolean
-draw_clock (ClutterCanvas *canvas,
- cairo_t *cr,
- int width,
- int height)
-{
- GDateTime *now;
- float hours, minutes, seconds;
-
- /* get the current time and compute the angles */
- now = g_date_time_new_now_local ();
- seconds = g_date_time_get_second (now) * G_PI / 30;
- minutes = g_date_time_get_minute (now) * G_PI / 30;
- hours = g_date_time_get_hour (now) * G_PI / 6;
-
- /* clear the contents of the canvas, to avoid painting
- * over the previous frame
- */
- cairo_save (cr);
- cairo_set_source_rgba (cr, 1.0, 1.0, 1.0, 1.0);
- cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
- cairo_paint (cr);
- cairo_restore (cr);
-
- /* scale the modelview to the size of the surface */
- cairo_scale (cr, width, height);
-
- cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND);
- cairo_set_line_width (cr, 0.1);
-
- /* the black rail that holds the seconds indicator */
- clutter_cairo_set_source_color (cr, CLUTTER_COLOR_Black);
- cairo_translate (cr, 0.5, 0.5);
- cairo_arc (cr, 0, 0, 0.4, 0, G_PI * 2);
- cairo_stroke (cr);
-
- /* the seconds indicator */
- clutter_cairo_set_source_color (cr, CLUTTER_COLOR_White);
- cairo_move_to (cr, 0, 0);
- cairo_arc (cr, sinf (seconds) * 0.4, - cosf (seconds) * 0.4, 0.05, 0, G_PI * 2);
- cairo_fill (cr);
-
- /* the minutes hand */
- clutter_cairo_set_source_color (cr, CLUTTER_COLOR_DarkChameleon);
- cairo_move_to (cr, 0, 0);
- cairo_line_to (cr, sinf (minutes) * 0.4, -cosf (minutes) * 0.4);
- cairo_stroke (cr);
-
- /* the hours hand */
- cairo_move_to (cr, 0, 0);
- cairo_line_to (cr, sinf (hours) * 0.2, -cosf (hours) * 0.2);
- cairo_stroke (cr);
-
- g_date_time_unref (now);
-
- /* we're done drawing */
- return TRUE;
-}
-
-static gboolean
-invalidate_clock (gpointer data_)
-{
- /* invalidate the contents of the canvas */
- clutter_content_invalidate (data_);
-
- /* keep the timeout source */
- return TRUE;
-}
-
-G_MODULE_EXPORT int
-test_cairo_clock_main (int argc, char *argv[])
-{
- ClutterActor *stage;
- ClutterContent *canvas;
-
- /* initialize Clutter */
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return EXIT_FAILURE;
-
- /* create a resizable stage */
- stage = clutter_stage_new ();
- clutter_stage_set_title (CLUTTER_STAGE (stage), "2D Clock");
- clutter_actor_set_background_color (stage, CLUTTER_COLOR_LightSkyBlue);
- clutter_actor_set_size (stage, 300, 300);
- clutter_actor_show (stage);
-
- /* our 2D canvas, courtesy of Cairo */
- canvas = clutter_canvas_new ();
- clutter_canvas_set_size (CLUTTER_CANVAS (canvas), 300, 300);
- clutter_actor_set_content (stage, canvas);
-
- /* quit on destroy */
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- /* connect our drawing code */
- g_signal_connect (canvas, "draw", G_CALLBACK (draw_clock), NULL);
-
- /* invalidate the canvas, so that we can draw before the main loop starts */
- clutter_content_invalidate (canvas);
-
- /* set up a timer that invalidates the canvas every second */
- clutter_threads_add_timeout (1000, invalidate_clock, canvas);
-
- clutter_main ();
-
- return EXIT_SUCCESS;
-}
-
-G_MODULE_EXPORT const char *
-test_cairo_clock_describe (void)
-{
- return "Simple 2D canvas using a Cairo texture actor";
-}
diff --git a/clutter/tests/interactive/test-cairo-flowers.c b/clutter/tests/interactive/test-cairo-flowers.c
deleted file mode 100644
index 6f60784bb..000000000
--- a/clutter/tests/interactive/test-cairo-flowers.c
+++ /dev/null
@@ -1,262 +0,0 @@
-/*
- * Pretty cairo flower hack.
- */
-#include <clutter/clutter.h>
-
-#ifndef _MSC_VER
-#include <unistd.h> /* for sleep(), used for screenshots */
-#endif
-#include <stdlib.h>
-#ifdef _MSC_VER
-#define _USE_MATH_DEFINES
-#endif
-#include <math.h>
-
-#define PETAL_MIN 20
-#define PETAL_VAR 40
-#define N_FLOWERS 40 /* reduce if you have a small card */
-
-typedef struct Flower
-{
- ClutterActor *ctex;
- gint x,y,rot,v,rv;
-}
-Flower;
-
-static ClutterActor *stage = NULL;
-
-int
-test_cairo_flowers_main (int argc, char **argv);
-
-const char *
-test_cairo_flowers_describe (void);
-
-static gboolean
-draw_flower (ClutterCanvas *canvas,
- cairo_t *cr,
- gint width,
- gint height,
- gpointer user_data)
-{
- /* No science here, just a hack from toying */
- gint i, j;
-
- double colors[] = {
- 0.71, 0.81, 0.83,
- 1.0, 0.78, 0.57,
- 0.64, 0.30, 0.35,
- 0.73, 0.40, 0.39,
- 0.91, 0.56, 0.64,
- 0.70, 0.47, 0.45,
- 0.92, 0.75, 0.60,
- 0.82, 0.86, 0.85,
- 0.51, 0.56, 0.67,
- 1.0, 0.79, 0.58,
-
- };
-
- gint size;
- gint petal_size;
- gint n_groups; /* Num groups of petals 1-3 */
- gint n_petals; /* num of petals 4 - 8 */
- gint pm1, pm2;
-
- gint idx, last_idx = -1;
-
- petal_size = GPOINTER_TO_INT (user_data);
- size = petal_size * 8;
-
- n_groups = rand() % 3 + 1;
-
- cairo_set_tolerance (cr, 0.1);
-
- /* Clear */
- cairo_set_operator (cr, CAIRO_OPERATOR_CLEAR);
- cairo_paint(cr);
- cairo_set_operator (cr, CAIRO_OPERATOR_OVER);
-
- cairo_translate(cr, size/2, size/2);
-
- for (i=0; i<n_groups; i++)
- {
- n_petals = rand() % 5 + 4;
- cairo_save (cr);
-
- cairo_rotate (cr, rand() % 6);
-
- do {
- idx = (rand() % (sizeof (colors) / sizeof (double) / 3)) * 3;
- } while (idx == last_idx);
-
- cairo_set_source_rgba (cr, colors[idx], colors[idx+1],
- colors[idx+2], 0.5);
-
- last_idx = idx;
-
- /* some bezier randomness */
- pm1 = rand() % 20;
- pm2 = rand() % 4;
-
- for (j=1; j<n_petals+1; j++)
- {
- cairo_save (cr);
- cairo_rotate (cr, ((2*M_PI)/n_petals)*j);
-
- /* Petals are made up beziers */
- cairo_new_path (cr);
- cairo_move_to (cr, 0, 0);
- cairo_rel_curve_to (cr,
- petal_size, petal_size,
- (pm2+2)*petal_size, petal_size,
- (2*petal_size) + pm1, 0);
- cairo_rel_curve_to (cr,
- 0 + (pm2*petal_size), -petal_size,
- -petal_size, -petal_size,
- -((2*petal_size) + pm1), 0);
- cairo_close_path (cr);
- cairo_fill (cr);
- cairo_restore (cr);
- }
-
- petal_size -= rand() % (size/8);
-
- cairo_restore (cr);
- }
-
- /* Finally draw flower center */
- do {
- idx = (rand() % (sizeof (colors) / sizeof (double) / 3)) * 3;
- } while (idx == last_idx);
-
- if (petal_size < 0)
- petal_size = rand() % 10;
-
- cairo_set_source_rgba (cr, colors[idx], colors[idx+1], colors[idx+2], 0.5);
-
- cairo_arc(cr, 0, 0, petal_size, 0, M_PI * 2);
- cairo_fill(cr);
-
- return TRUE;
-}
-
-static ClutterActor *
-make_flower_actor (void)
-{
- gint petal_size = PETAL_MIN + rand() % PETAL_VAR;
- gint size = petal_size * 8;
- ClutterActor *ctex;
- ClutterContent *canvas;
-
- canvas = clutter_canvas_new ();
- g_signal_connect (canvas, "draw",
- G_CALLBACK (draw_flower), GINT_TO_POINTER (petal_size));
-
- clutter_canvas_set_size (CLUTTER_CANVAS (canvas), size, size);
- ctex = g_object_new (CLUTTER_TYPE_ACTOR,
- "content", canvas,
- "width", (gfloat) size,
- "height", (gfloat) size,
- NULL);
-
- g_object_unref (canvas);
-
- return ctex;
-}
-
-static void
-tick (ClutterTimeline *timeline,
- gint msecs,
- gpointer data)
-{
- Flower **flowers = data;
- gint i = 0;
-
- for (i = 0; i < N_FLOWERS; i++)
- {
- flowers[i]->y += flowers[i]->v;
- flowers[i]->rot += flowers[i]->rv;
-
- if (flowers[i]->y > (gint) clutter_actor_get_height (stage))
- flowers[i]->y = -clutter_actor_get_height (flowers[i]->ctex);
-
- clutter_actor_set_position (flowers[i]->ctex,
- flowers[i]->x, flowers[i]->y);
-
- clutter_actor_set_rotation (flowers[i]->ctex,
- CLUTTER_Z_AXIS,
- flowers[i]->rot,
- clutter_actor_get_width (flowers[i]->ctex)/2,
- clutter_actor_get_height (flowers[i]->ctex)/2,
- 0);
- }
-}
-
-static void
-stop_and_quit (ClutterActor *actor,
- ClutterTimeline *timeline)
-{
- clutter_timeline_stop (timeline);
- clutter_main_quit ();
-}
-
-G_MODULE_EXPORT int
-test_cairo_flowers_main (int argc, char **argv)
-{
- Flower *flowers[N_FLOWERS];
- ClutterTimeline *timeline;
- int i;
-
- srand (time (NULL));
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- /* Create a timeline to manage animation */
- timeline = clutter_timeline_new (6000);
- clutter_timeline_set_repeat_count (timeline, -1);
-
- stage = clutter_stage_new ();
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Cairo Flowers");
- g_signal_connect (stage, "destroy", G_CALLBACK (stop_and_quit), timeline);
-
- clutter_actor_set_background_color (stage, CLUTTER_COLOR_Black);
-
- for (i=0; i< N_FLOWERS; i++)
- {
- flowers[i] = g_new0(Flower, 1);
- flowers[i]->ctex = make_flower_actor();
- flowers[i]->x = rand() % (int) clutter_actor_get_width (stage)
- - (PETAL_MIN + PETAL_VAR) * 2;
- flowers[i]->y = rand() % (int) clutter_actor_get_height (stage);
- flowers[i]->rv = rand() % 5 + 1;
- flowers[i]->v = rand() % 10 + 2;
-
- clutter_container_add_actor (CLUTTER_CONTAINER (stage),
- flowers[i]->ctex);
- clutter_actor_set_position (flowers[i]->ctex,
- flowers[i]->x, flowers[i]->y);
- }
-
- /* fire a callback for frame change */
- g_signal_connect (timeline, "new-frame", G_CALLBACK (tick), flowers);
-
- clutter_actor_show (stage);
-
- clutter_timeline_start (timeline);
-
- g_signal_connect (stage, "key-press-event",
- G_CALLBACK (clutter_main_quit),
- NULL);
-
- clutter_main();
-
- g_object_unref (timeline);
-
- return EXIT_SUCCESS;
-}
-
-G_MODULE_EXPORT const char *
-test_cairo_flowers_describe (void)
-{
- return "Drawing pretty flowers with Cairo";
-}
diff --git a/clutter/tests/interactive/test-cogl-multitexture.c b/clutter/tests/interactive/test-cogl-multitexture.c
deleted file mode 100644
index 3151b6e08..000000000
--- a/clutter/tests/interactive/test-cogl-multitexture.c
+++ /dev/null
@@ -1,243 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <glib.h>
-#include <glib-object.h>
-#include <gmodule.h>
-
-#include <clutter/clutter.h>
-#include <cogl/cogl.h>
-
-typedef struct _TestMultiLayerMaterialState
-{
- ClutterActor *group;
- CoglHandle alpha_tex;
- CoglHandle redhand_tex;
- gfloat *tex_coords;
-
- ClutterTimeline *timeline;
-
- CoglHandle material0;
- CoglMatrix tex_matrix0;
- CoglMatrix rot_matrix0;
- CoglHandle light_tex0;
-
- CoglHandle material1;
- CoglMatrix tex_matrix1;
- CoglMatrix rot_matrix1;
- CoglHandle light_tex1;
-
-} TestMultiLayerMaterialState;
-
-int
-test_cogl_multitexture_main (int argc, char *argv[]);
-
-const char *
-test_cogl_multitexture_describe (void);
-
-static void
-frame_cb (ClutterTimeline *timeline,
- gint frame_no,
- gpointer data)
-{
- TestMultiLayerMaterialState *state = data;
-
- cogl_matrix_multiply (&state->tex_matrix0,
- &state->tex_matrix0,
- &state->rot_matrix0);
- cogl_material_set_layer_matrix (state->material0, 2, &state->tex_matrix0);
-
- cogl_matrix_multiply (&state->tex_matrix1,
- &state->tex_matrix1,
- &state->rot_matrix1);
- cogl_material_set_layer_matrix (state->material1, 2, &state->tex_matrix1);
-}
-
-static void
-material_rectangle_paint (ClutterActor *actor, gpointer data)
-{
- TestMultiLayerMaterialState *state = data;
-
- cogl_push_matrix ();
-
- cogl_translate (150, 15, 0);
-
- cogl_set_source (state->material0);
- cogl_rectangle_with_multitexture_coords (0, 0, 200, 213,
- state->tex_coords,
- 12);
- cogl_translate (-300, -30, 0);
- cogl_set_source (state->material1);
- cogl_rectangle_with_multitexture_coords (0, 0, 200, 213,
- state->tex_coords,
- 12);
-
- cogl_pop_matrix ();
-}
-
-static void
-animation_completed_cb (ClutterAnimation *animation,
- TestMultiLayerMaterialState *state)
-{
- static gboolean go_back = FALSE;
- gdouble new_rotation_y;
-
- if (go_back)
- new_rotation_y = 30;
- else
- new_rotation_y = -30;
- go_back = !go_back;
-
- clutter_actor_animate_with_timeline (state->group,
- CLUTTER_LINEAR,
- state->timeline,
- "rotation-angle-y", new_rotation_y,
- "signal-after::completed",
- animation_completed_cb, state,
- NULL);
-
-
-}
-
-G_MODULE_EXPORT int
-test_cogl_multitexture_main (int argc, char *argv[])
-{
- GError *error = NULL;
- ClutterActor *stage;
- ClutterColor stage_color = { 0x61, 0x56, 0x56, 0xff };
- TestMultiLayerMaterialState *state = g_new0 (TestMultiLayerMaterialState, 1);
- gfloat stage_w, stage_h;
- gchar **files;
- gfloat tex_coords[] =
- {
- /* tx1 ty1 tx2 ty2 */
- 0, 0, 1, 1,
- 0, 0, 1, 1,
- 0, 0, 1, 1
- };
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- stage = clutter_stage_new ();
- clutter_actor_get_size (stage, &stage_w, &stage_h);
-
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Cogl: Multi-texturing");
- clutter_stage_set_color (CLUTTER_STAGE (stage), &stage_color);
-
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- /* We create a non-descript actor that we know doesn't have a
- * default paint handler, so that we can easily control
- * painting in a paint signal handler, without having to
- * sub-class anything etc. */
- state->group = clutter_group_new ();
- clutter_actor_set_position (state->group, stage_w / 2, stage_h / 2);
- g_signal_connect (state->group, "paint",
- G_CALLBACK(material_rectangle_paint), state);
-
- files = g_new (gchar*, 4);
- files[0] = g_build_filename (TESTS_DATADIR, "redhand_alpha.png", NULL);
- files[1] = g_build_filename (TESTS_DATADIR, "redhand.png", NULL);
- files[2] = g_build_filename (TESTS_DATADIR, "light0.png", NULL);
- files[3] = NULL;
-
- state->alpha_tex =
- cogl_texture_new_from_file (files[0],
- COGL_TEXTURE_NO_SLICING,
- COGL_PIXEL_FORMAT_ANY,
- &error);
- if (!state->alpha_tex)
- g_critical ("Failed to load redhand_alpha.png: %s", error->message);
-
- state->redhand_tex =
- cogl_texture_new_from_file (files[1],
- COGL_TEXTURE_NO_SLICING,
- COGL_PIXEL_FORMAT_ANY,
- &error);
- if (!state->redhand_tex)
- g_critical ("Failed to load redhand.png: %s", error->message);
-
- state->light_tex0 =
- cogl_texture_new_from_file (files[2],
- COGL_TEXTURE_NO_SLICING,
- COGL_PIXEL_FORMAT_ANY,
- &error);
- if (!state->light_tex0)
- g_critical ("Failed to load light0.png: %s", error->message);
-
- state->light_tex1 =
- cogl_texture_new_from_file (files[2],
- COGL_TEXTURE_NO_SLICING,
- COGL_PIXEL_FORMAT_ANY,
- &error);
- if (!state->light_tex1)
- g_critical ("Failed to load light0.png: %s", error->message);
-
- g_strfreev (files);
-
- state->material0 = cogl_material_new ();
- cogl_material_set_layer (state->material0, 0, state->alpha_tex);
- cogl_material_set_layer (state->material0, 1, state->redhand_tex);
- cogl_material_set_layer (state->material0, 2, state->light_tex0);
-
- state->material1 = cogl_material_new ();
- cogl_material_set_layer (state->material1, 0, state->alpha_tex);
- cogl_material_set_layer (state->material1, 1, state->redhand_tex);
- cogl_material_set_layer (state->material1, 2, state->light_tex1);
-
- state->tex_coords = tex_coords;
-
- cogl_matrix_init_identity (&state->tex_matrix0);
- cogl_matrix_init_identity (&state->tex_matrix1);
- cogl_matrix_init_identity (&state->rot_matrix0);
- cogl_matrix_init_identity (&state->rot_matrix1);
-
- cogl_matrix_translate (&state->rot_matrix0, 0.5, 0.5, 0);
- cogl_matrix_rotate (&state->rot_matrix0, 10.0, 0, 0, 1.0);
- cogl_matrix_translate (&state->rot_matrix0, -0.5, -0.5, 0);
-
- cogl_matrix_translate (&state->rot_matrix1, 0.5, 0.5, 0);
- cogl_matrix_rotate (&state->rot_matrix1, -10.0, 0, 0, 1.0);
- cogl_matrix_translate (&state->rot_matrix1, -0.5, -0.5, 0);
-
- clutter_actor_set_anchor_point (state->group, 86, 125);
- clutter_container_add_actor (CLUTTER_CONTAINER(stage),
- state->group);
-
- state->timeline = clutter_timeline_new (2812);
-
- g_signal_connect (state->timeline, "new-frame", G_CALLBACK (frame_cb), state);
-
- clutter_actor_animate_with_timeline (state->group,
- CLUTTER_LINEAR,
- state->timeline,
- "rotation-angle-y", 30.0,
- "signal-after::completed",
- animation_completed_cb, state,
- NULL);
-
- /* start the timeline and thus the animations */
- clutter_timeline_start (state->timeline);
-
- clutter_actor_show_all (stage);
-
- clutter_main();
-
- cogl_handle_unref (state->material1);
- cogl_handle_unref (state->material0);
- cogl_handle_unref (state->alpha_tex);
- cogl_handle_unref (state->redhand_tex);
- cogl_handle_unref (state->light_tex0);
- cogl_handle_unref (state->light_tex1);
- g_free (state);
-
- return 0;
-}
-
-G_MODULE_EXPORT const char *
-test_cogl_multitexture_describe (void)
-{
- return "Multi-texturing support in Cogl.";
-}
diff --git a/clutter/tests/interactive/test-cogl-offscreen.c b/clutter/tests/interactive/test-cogl-offscreen.c
deleted file mode 100644
index 948d978fe..000000000
--- a/clutter/tests/interactive/test-cogl-offscreen.c
+++ /dev/null
@@ -1,337 +0,0 @@
-#include <glib.h>
-#include <gmodule.h>
-#include <stdlib.h>
-#include <clutter/clutter.h>
-#include <cogl/cogl.h>
-
-/* Coglbox declaration
- *--------------------------------------------------*/
-
-G_BEGIN_DECLS
-
-#define TEST_TYPE_COGLBOX test_coglbox_get_type()
-
-#define TEST_COGLBOX(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
- TEST_TYPE_COGLBOX, TestCoglbox))
-
-#define TEST_COGLBOX_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST ((klass), \
- TEST_TYPE_COGLBOX, TestCoglboxClass))
-
-#define TEST_IS_COGLBOX(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
- TEST_TYPE_COGLBOX))
-
-#define TEST_IS_COGLBOX_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE ((klass), \
- TEST_TYPE_COGLBOX))
-
-#define TEST_COGLBOX_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS ((obj), \
- TEST_TYPE_COGLBOX, TestCoglboxClass))
-
-typedef struct _TestCoglbox TestCoglbox;
-typedef struct _TestCoglboxClass TestCoglboxClass;
-typedef struct _TestCoglboxPrivate TestCoglboxPrivate;
-
-struct _TestCoglbox
-{
- ClutterActor parent;
-
- /*< private >*/
- TestCoglboxPrivate *priv;
-};
-
-struct _TestCoglboxClass
-{
- ClutterActorClass parent_class;
-
- /* padding for future expansion */
- void (*_test_coglbox1) (void);
- void (*_test_coglbox2) (void);
- void (*_test_coglbox3) (void);
- void (*_test_coglbox4) (void);
-};
-
-static GType test_coglbox_get_type (void) G_GNUC_CONST;
-
-int
-test_cogl_offscreen_main (int argc, char *argv[]);
-
-const char *
-test_cogl_offscreen_describe (void);
-
-G_END_DECLS
-
-/* Coglbox private declaration
- *--------------------------------------------------*/
-
-struct _TestCoglboxPrivate
-{
- CoglHandle texhand_id;
- CoglHandle texture_id;
- CoglHandle offscreen_id;
-};
-
-G_DEFINE_TYPE_WITH_PRIVATE (TestCoglbox, test_coglbox, CLUTTER_TYPE_ACTOR);
-
-#define TEST_COGLBOX_GET_PRIVATE(obj) \
-(test_coglbox_get_instance_private (TEST_COGLBOX ((obj))))
-
-/* Coglbox implementation
- *--------------------------------------------------*/
-
-static void
-test_coglbox_paint (ClutterActor *self)
-{
- TestCoglboxPrivate *priv = TEST_COGLBOX_GET_PRIVATE (self);
- gfloat texcoords[4] = { 0, 0, 1, 1 };
- CoglHandle material;
-
- cogl_set_source_color4ub (0x66, 0x66, 0xdd, 0xff);
- cogl_rectangle (0, 0, 400, 400);
-
- cogl_set_source_texture (priv->texhand_id);
- cogl_rectangle_with_texture_coords (0, 0,
- 400, 400,
- 0, 0,
- 6, 6);
-
- cogl_push_framebuffer (priv->offscreen_id);
-
- cogl_set_source_color4ub (0xff, 0, 0, 0xff);
- cogl_rectangle (20, 20, 20 + 100, 20 + 100);
-
- cogl_set_source_color4ub (0, 0xff, 0, 0xff);
- cogl_rectangle (80, 80, 80 + 100, 80 + 100);
-
- cogl_pop_framebuffer ();
-
- material = cogl_material_new ();
- cogl_material_set_color4ub (material, 0x88, 0x88, 0x88, 0x88);
- cogl_material_set_layer (material, 0, priv->texture_id);
- cogl_set_source (material);
- cogl_rectangle_with_texture_coords (100, 100,
- 300, 300,
- texcoords[0],
- texcoords[1],
- texcoords[2],
- texcoords[3]);
-}
-
-static void
-test_coglbox_finalize (GObject *object)
-{
- G_OBJECT_CLASS (test_coglbox_parent_class)->finalize (object);
-}
-
-static void
-test_coglbox_dispose (GObject *object)
-{
- TestCoglboxPrivate *priv;
-
- priv = TEST_COGLBOX_GET_PRIVATE (object);
-
- cogl_handle_unref (priv->texture_id);
- cogl_handle_unref (priv->offscreen_id);
-
- G_OBJECT_CLASS (test_coglbox_parent_class)->dispose (object);
-}
-
-/* A newly created Cogl framebuffer will be initialized with a
- * viewport covering the size of the viewport i.e. equavalent to:
- *
- * calling cogl_framebuffer_set_viewport (
- * fb,
- * 0, 0,
- * cogl_framebuffer_get_viewport_width (fb),
- * cogl_framebuffer_get_viewport_width (fb));
- *
- * The projection matrix will be an identity matrix.
- *
- * The modelview matrix will be an identity matrix, and this will
- * create a coordinate system - like OpenGL - with the viewport
- * being mapped to a unit cube with the origin (0, 0, 0) in the
- * center, x, y and z ranging from -1 to 1 with (-1, -1) being top
- * left and (1, 1) bottom right.
- *
- * This sets up a Clutter like coordinate system for a Cogl
- * framebuffer
- */
-static void
-setup_viewport (unsigned int width,
- unsigned int height,
- float fovy,
- float aspect,
- float z_near,
- float z_far)
-{
- float z_camera;
- CoglMatrix projection_matrix;
- CoglMatrix mv_matrix;
-
- cogl_set_viewport (0, 0, width, height);
-
- /* For Ortho projection.
- * _cogl_matrix_stack_ortho (projection_stack, 0, width, 0, height, -1, 1);
- */
-
- cogl_perspective (fovy, aspect, z_near, z_far);
-
- /*
- * In theory, we can compute the camera distance from screen as:
- *
- * 0.5 * tan (FOV)
- *
- * However, it's better to compute the z_camera from our projection
- * matrix so that we get a 1:1 mapping at the screen distance. Consider
- * the upper-left corner of the screen. It has object coordinates
- * (0,0,0), so by the transform below, ends up with eye coordinate
- *
- * x_eye = x_object / width - 0.5 = - 0.5
- * y_eye = (height - y_object) / width - 0.5 = 0.5
- * z_eye = z_object / width - z_camera = - z_camera
- *
- * From cogl_perspective(), we know that the projection matrix has
- * the form:
- *
- * (x, 0, 0, 0)
- * (0, y, 0, 0)
- * (0, 0, c, d)
- * (0, 0, -1, 0)
- *
- * Applied to the above, we get clip coordinates of
- *
- * x_clip = x * (- 0.5)
- * y_clip = y * 0.5
- * w_clip = - 1 * (- z_camera) = z_camera
- *
- * Dividing through by w to get normalized device coordinates, we
- * have, x_nd = x * 0.5 / z_camera, y_nd = - y * 0.5 / z_camera.
- * The upper left corner of the screen has normalized device coordinates,
- * (-1, 1), so to have the correct 1:1 mapping, we have to have:
- *
- * z_camera = 0.5 * x = 0.5 * y
- *
- * If x != y, then we have a non-uniform aspect ration, and a 1:1 mapping
- * doesn't make sense.
- */
-
- cogl_get_projection_matrix (&projection_matrix);
- z_camera = 0.5 * projection_matrix.xx;
-
- cogl_matrix_init_identity (&mv_matrix);
- cogl_matrix_translate (&mv_matrix, -0.5f, -0.5f, -z_camera);
- cogl_matrix_scale (&mv_matrix, 1.0f / width, -1.0f / height, 1.0f / width);
- cogl_matrix_translate (&mv_matrix, 0.0f, -1.0 * height, 0.0f);
- cogl_set_modelview_matrix (&mv_matrix);
-}
-
-static void
-test_coglbox_map (ClutterActor *actor)
-{
- TestCoglboxPrivate *priv = TEST_COGLBOX_GET_PRIVATE (actor);
- ClutterActor *stage;
- ClutterPerspective perspective;
- float stage_width;
- float stage_height;
-
- CLUTTER_ACTOR_CLASS (test_coglbox_parent_class)->map (actor);
-
- printf ("Creating offscreen\n");
- priv->offscreen_id = cogl_offscreen_new_to_texture (priv->texture_id);
-
- stage = clutter_actor_get_stage (actor);
- clutter_stage_get_perspective (CLUTTER_STAGE (stage), &perspective);
- clutter_actor_get_size (stage, &stage_width, &stage_height);
-
- cogl_push_framebuffer (priv->offscreen_id);
-
- setup_viewport (stage_width, stage_height,
- perspective.fovy,
- perspective.aspect,
- perspective.z_near,
- perspective.z_far);
-
- cogl_pop_framebuffer ();
-
- if (priv->offscreen_id == COGL_INVALID_HANDLE)
- printf ("Failed creating offscreen to texture!\n");
-}
-
-static void
-test_coglbox_init (TestCoglbox *self)
-{
- TestCoglboxPrivate *priv;
- gchar *file;
-
- self->priv = priv = TEST_COGLBOX_GET_PRIVATE(self);
-
- printf ("Loading redhand.png\n");
- file = g_build_filename (TESTS_DATADIR, "redhand.png", NULL);
- priv->texhand_id = cogl_texture_new_from_file (file,
- COGL_TEXTURE_NONE,
- COGL_PIXEL_FORMAT_ANY,
- NULL);
- g_free (file);
-
- printf ("Creating texture with size\n");
- priv->texture_id = cogl_texture_new_with_size (200, 200,
- COGL_TEXTURE_NONE,
- COGL_PIXEL_FORMAT_RGB_888);
-
- if (priv->texture_id == COGL_INVALID_HANDLE)
- printf ("Failed creating texture with size!\n");
-}
-
-static void
-test_coglbox_class_init (TestCoglboxClass *klass)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
- ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
-
- gobject_class->finalize = test_coglbox_finalize;
- gobject_class->dispose = test_coglbox_dispose;
-
- actor_class->map = test_coglbox_map;
- actor_class->paint = test_coglbox_paint;
-}
-
-static ClutterActor*
-test_coglbox_new (void)
-{
- return g_object_new (TEST_TYPE_COGLBOX, NULL);
-}
-
-G_MODULE_EXPORT int
-test_cogl_offscreen_main (int argc, char *argv[])
-{
- ClutterActor *stage;
- ClutterActor *coglbox;
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- /* Stage */
- stage = clutter_stage_new ();
- clutter_actor_set_size (stage, 400, 400);
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Cogl Offscreen Buffers");
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- /* Cogl Box */
- coglbox = test_coglbox_new ();
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), coglbox);
-
- clutter_actor_show_all (stage);
-
- clutter_main ();
-
- return 0;
-}
-
-G_MODULE_EXPORT const char *
-test_cogl_offscreen_describe (void)
-{
- return "Offscreen buffer support in Cogl.";
-}
diff --git a/clutter/tests/interactive/test-cogl-point-sprites.c b/clutter/tests/interactive/test-cogl-point-sprites.c
deleted file mode 100644
index cd94966de..000000000
--- a/clutter/tests/interactive/test-cogl-point-sprites.c
+++ /dev/null
@@ -1,294 +0,0 @@
-#include <stdlib.h>
-#include <clutter/clutter.h>
-#include <math.h>
-#include <gmodule.h>
-#include <string.h>
-
-#define N_FIREWORKS 32
-/* Units per second per second */
-#define GRAVITY -1.5f
-
-#define N_SPARKS (N_FIREWORKS * 32) /* Must be a power of two */
-#define TIME_PER_SPARK 0.01f /* in seconds */
-
-#define TEXTURE_SIZE 32
-
-typedef struct _Firework Firework;
-
-struct _Firework
-{
- float size;
- float x, y;
- float start_x, start_y;
- ClutterColor color;
-
- /* Velocities are in units per second */
- float initial_x_velocity;
- float initial_y_velocity;
-
- GTimer *timer;
-};
-
-typedef struct _Spark Spark;
-
-struct _Spark
-{
- float x, y;
- ClutterColor color;
- ClutterColor base_color;
-};
-
-typedef struct _Data Data;
-
-struct _Data
-{
- Firework fireworks[N_FIREWORKS];
-
- int next_spark_num;
- Spark sparks[N_SPARKS];
- GTimer *last_spark_time;
-
- CoglMaterial *material;
-};
-
-int
-test_cogl_point_sprites_main (int argc, char *argv[]);
-
-const char *
-test_cogl_point_sprites_describe (void);
-
-static CoglHandle
-generate_round_texture (void)
-{
- guint8 *p, *data;
- int x, y;
- CoglHandle tex;
-
- p = data = g_malloc (TEXTURE_SIZE * TEXTURE_SIZE * 4);
-
- /* Generate a yellow circle which gets transparent towards the edges */
- for (y = 0; y < TEXTURE_SIZE; y++)
- for (x = 0; x < TEXTURE_SIZE; x++)
- {
- int dx = x - TEXTURE_SIZE / 2;
- int dy = y - TEXTURE_SIZE / 2;
- float value = sqrtf (dx * dx + dy * dy) * 255.0 / (TEXTURE_SIZE / 2);
- if (value > 255.0f)
- value = 255.0f;
- value = 255.0f - value;
- *(p++) = value;
- *(p++) = value;
- *(p++) = value;
- *(p++) = value;
- }
-
- tex = cogl_texture_new_from_data (TEXTURE_SIZE, TEXTURE_SIZE,
- COGL_TEXTURE_NO_SLICING,
- COGL_PIXEL_FORMAT_RGBA_8888_PRE,
- COGL_PIXEL_FORMAT_ANY,
- TEXTURE_SIZE * 4,
- data);
-
- g_free (data);
-
- return tex;
-}
-
-static void
-paint_cb (ClutterActor *stage, Data *data)
-{
- CoglMatrix old_matrix, new_matrix;
- int i;
- float diff_time;
- CoglHandle vbo;
-
- cogl_get_projection_matrix (&old_matrix);
- /* Use an orthogonal projection from -1 -> 1 in both axes */
- cogl_matrix_init_identity (&new_matrix);
- cogl_set_projection_matrix (&new_matrix);
-
- cogl_push_matrix ();
- cogl_set_modelview_matrix (&new_matrix);
-
- /* Update all of the firework's positions */
- for (i = 0; i < N_FIREWORKS; i++)
- {
- Firework *firework = data->fireworks + i;
-
- if ((fabsf (firework->x - firework->start_x) > 2.0f) ||
- firework->y < -1.0f)
- {
- firework->size = g_random_double_range (0.001f, 0.1f);
- firework->start_x = 1.0f + firework->size;
- firework->start_y = -1.0f;
- firework->initial_x_velocity = g_random_double_range (-0.1f, -2.0f);
- firework->initial_y_velocity = g_random_double_range (0.1f, 4.0f);
- g_timer_reset (firework->timer);
-
- /* Pick a random color out of six */
- if (g_random_boolean ())
- {
- memset (&firework->color, 0, sizeof (ClutterColor));
- ((guint8 *) &firework->color)[g_random_int_range (0, 3)] = 255;
- }
- else
- {
- memset (&firework->color, 255, sizeof (ClutterColor));
- ((guint8 *) &firework->color)[g_random_int_range (0, 3)] = 0;
- }
- firework->color.alpha = 255;
-
- /* Fire some of the fireworks from the other side */
- if (g_random_boolean ())
- {
- firework->start_x = -firework->start_x;
- firework->initial_x_velocity = -firework->initial_x_velocity;
- }
- }
-
- diff_time = g_timer_elapsed (firework->timer, NULL);
-
- firework->x = (firework->start_x +
- firework->initial_x_velocity * diff_time);
-
- firework->y = ((firework->initial_y_velocity * diff_time +
- 0.5f * GRAVITY * diff_time * diff_time) +
- firework->start_y);
- }
-
- diff_time = g_timer_elapsed (data->last_spark_time, NULL);
- if (diff_time < 0.0f || diff_time >= TIME_PER_SPARK)
- {
- /* Add a new spark for each firework, overwriting the oldest ones */
- for (i = 0; i < N_FIREWORKS; i++)
- {
- Spark *spark = data->sparks + data->next_spark_num;
- Firework *firework = data->fireworks + i;
-
- spark->x = (firework->x +
- g_random_double_range (-firework->size / 2.0f,
- firework->size / 2.0f));
- spark->y = (firework->y +
- g_random_double_range (-firework->size / 2.0f,
- firework->size / 2.0f));
- spark->base_color = firework->color;
-
- data->next_spark_num = (data->next_spark_num + 1) & (N_SPARKS - 1);
- }
-
- /* Update the colour of each spark */
- for (i = 0; i < N_SPARKS; i++)
- {
- float color_value;
-
- /* First spark is the oldest */
- Spark *spark = data->sparks + ((data->next_spark_num + i)
- & (N_SPARKS - 1));
-
- color_value = i / (N_SPARKS - 1.0f);
- spark->color.red = spark->base_color.red * color_value;
- spark->color.green = spark->base_color.green * color_value;
- spark->color.blue = spark->base_color.blue * color_value;
- spark->color.alpha = 255.0f * color_value;
- }
-
- g_timer_reset (data->last_spark_time);
- }
-
- vbo = cogl_vertex_buffer_new (N_SPARKS);
- cogl_vertex_buffer_add (vbo, "gl_Vertex", 2,
- COGL_ATTRIBUTE_TYPE_FLOAT, FALSE,
- sizeof (Spark),
- &data->sparks[0].x);
- cogl_vertex_buffer_add (vbo, "gl_Color", 4,
- COGL_ATTRIBUTE_TYPE_UNSIGNED_BYTE, TRUE,
- sizeof (Spark),
- &data->sparks[0].color.red);
- cogl_vertex_buffer_submit (vbo);
-
- cogl_set_source (data->material);
- cogl_vertex_buffer_draw (vbo, COGL_VERTICES_MODE_POINTS, 0, N_SPARKS);
-
- cogl_handle_unref (vbo);
-
- cogl_set_projection_matrix (&old_matrix);
- cogl_pop_matrix ();
-}
-
-static gboolean
-idle_cb (gpointer data)
-{
- clutter_actor_queue_redraw (data);
-
- return G_SOURCE_CONTINUE;
-}
-
-G_MODULE_EXPORT int
-test_cogl_point_sprites_main (int argc, char *argv[])
-{
- ClutterActor *stage;
- CoglHandle tex;
- Data data;
- GError *error = NULL;
- int i;
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return EXIT_FAILURE;
-
- data.material = cogl_material_new ();
- data.last_spark_time = g_timer_new ();
- data.next_spark_num = 0;
- cogl_material_set_point_size (data.material, TEXTURE_SIZE);
-
- tex = generate_round_texture ();
- cogl_material_set_layer (data.material, 0, tex);
- cogl_handle_unref (tex);
-
- if (!cogl_material_set_layer_point_sprite_coords_enabled (data.material,
- 0, TRUE,
- &error))
- {
- g_warning ("Failed to enable point sprite coords: %s", error->message);
- g_clear_error (&error);
- }
-
- for (i = 0; i < N_FIREWORKS; i++)
- {
- data.fireworks[i].x = -FLT_MAX;
- data.fireworks[i].y = FLT_MAX;
- data.fireworks[i].size = 0.0f;
- data.fireworks[i].timer = g_timer_new ();
- }
-
- for (i = 0; i < N_SPARKS; i++)
- {
- data.sparks[i].x = 2.0f;
- data.sparks[i].y = 2.0f;
- }
-
- stage = clutter_stage_new ();
- clutter_stage_set_color (CLUTTER_STAGE (stage), CLUTTER_COLOR_Black);
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Cogl Point Sprites");
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
- g_signal_connect_after (stage, "paint", G_CALLBACK (paint_cb), &data);
-
- clutter_actor_show (stage);
-
- clutter_threads_add_idle (idle_cb, stage);
-
- clutter_main ();
-
- cogl_object_unref (data.material);
- g_timer_destroy (data.last_spark_time);
-
- for (i = 0; i < N_FIREWORKS; i++)
- g_timer_destroy (data.fireworks[i].timer);
-
- return 0;
-}
-
-G_MODULE_EXPORT const char *
-test_cogl_point_sprites_describe (void)
-{
- return "Point sprites support in Cogl.";
-}
diff --git a/clutter/tests/interactive/test-cogl-shader-glsl.c b/clutter/tests/interactive/test-cogl-shader-glsl.c
deleted file mode 100644
index 22c47d0ee..000000000
--- a/clutter/tests/interactive/test-cogl-shader-glsl.c
+++ /dev/null
@@ -1,351 +0,0 @@
-#include <clutter/clutter.h>
-
-#include <errno.h>
-#include <stdlib.h>
-#include <glib.h>
-#include <gmodule.h>
-
-typedef struct
-{
- const char *name;
- const char *source;
-} ShaderSource;
-
-int
-test_cogl_shader_glsl_main (int argc, char *argv[]);
-
-/* a couple of boilerplate defines that are common amongst all the
- * sample shaders
- */
-
-/* FRAGMENT_SHADER_BEGIN: generate boilerplate with a local vec4 color already
- * initialized, from a sampler2D in a variable tex.
- */
-#define FRAGMENT_SHADER_VARS \
- "uniform sampler2D tex;" \
- "uniform float x_step, y_step;"
-
-#define FRAGMENT_SHADER_BEGIN \
- "void main (){" \
- " vec4 color = texture2D (tex, vec2(cogl_tex_coord_in[0]));"
-
-/* FRAGMENT_SHADER_END: apply the changed color to the output buffer correctly
- * blended with the gl specified color (makes the opacity of actors work
- * correctly).
- */
-#define FRAGMENT_SHADER_END \
- " cogl_color_out = color;" \
- " cogl_color_out = cogl_color_out * cogl_color_in;" \
- "}"
-
-static ShaderSource shaders[]=
- {
- {"brightness-contrast",
- FRAGMENT_SHADER_VARS
- "uniform float brightness, contrast;"
- FRAGMENT_SHADER_BEGIN
- " color.rgb /= color.a;"
- " color.rgb = (color.rgb - vec3(0.5, 0.5, 0.5)) * contrast + "
- "vec3 (brightness + 0.5, brightness + 0.5, brightness + 0.5);"
- " color.rgb *= color.a;"
- FRAGMENT_SHADER_END
- },
-
- {"box-blur",
- FRAGMENT_SHADER_VARS
-
- "vec4 get_rgba_rel(sampler2D tex, float dx, float dy)"
- "{"
- " return texture2D (tex, cogl_tex_coord_in[0].st "
- " + vec2(dx, dy) * 2.0);"
- "}"
-
- FRAGMENT_SHADER_BEGIN
- " float count = 1.0;"
- " color += get_rgba_rel (tex, -x_step, -y_step); count++;"
- " color += get_rgba_rel (tex, -x_step, 0.0); count++;"
- " color += get_rgba_rel (tex, -x_step, y_step); count++;"
- " color += get_rgba_rel (tex, 0.0, -y_step); count++;"
- " color += get_rgba_rel (tex, 0.0, 0.0); count++;"
- " color += get_rgba_rel (tex, 0.0, y_step); count++;"
- " color += get_rgba_rel (tex, x_step, -y_step); count++;"
- " color += get_rgba_rel (tex, x_step, 0.0); count++;"
- " color += get_rgba_rel (tex, x_step, y_step); count++;"
- " color = color / count;"
- FRAGMENT_SHADER_END
- },
-
- {"invert",
- FRAGMENT_SHADER_VARS
- FRAGMENT_SHADER_BEGIN
- " color.rgb /= color.a;"
- " color.rgb = vec3(1.0, 1.0, 1.0) - color.rgb;\n"
- " color.rgb *= color.a;"
- FRAGMENT_SHADER_END
- },
-
- {"brightness-contrast",
- FRAGMENT_SHADER_VARS
- "uniform float brightness;"
- "uniform float contrast;"
- FRAGMENT_SHADER_BEGIN
- " color.rgb /= color.a;"
- " color.r = (color.r - 0.5) * contrast + brightness + 0.5;"
- " color.g = (color.g - 0.5) * contrast + brightness + 0.5;"
- " color.b = (color.b - 0.5) * contrast + brightness + 0.5;"
- " color.rgb *= color.a;"
- FRAGMENT_SHADER_END
- },
-
- {"gray",
- FRAGMENT_SHADER_VARS
- FRAGMENT_SHADER_BEGIN
- " float avg = (color.r + color.g + color.b) / 3.0;"
- " color.r = avg;"
- " color.g = avg;"
- " color.b = avg;"
- FRAGMENT_SHADER_END
- },
-
- {"combined-mirror",
- FRAGMENT_SHADER_VARS
- FRAGMENT_SHADER_BEGIN
- " vec4 colorB = texture2D (tex, vec2(cogl_tex_coord_in[0].ts));"
- " float avg = (color.r + color.g + color.b) / 3.0;"
- " color.r = avg;"
- " color.g = avg;"
- " color.b = avg;"
- " color = (color + colorB)/2.0;"
- FRAGMENT_SHADER_END
- },
-
- {"edge-detect",
- FRAGMENT_SHADER_VARS
- "float get_avg_rel(sampler2D texB, float dx, float dy)"
- "{"
- " vec4 colorB = texture2D (texB, cogl_tex_coord_in[0].st + vec2(dx, dy));"
- " return (colorB.r + colorB.g + colorB.b) / 3.0;"
- "}"
- FRAGMENT_SHADER_BEGIN
- " mat3 sobel_h = mat3( 1.0, 2.0, 1.0,"
- " 0.0, 0.0, 0.0,"
- " -1.0, -2.0, -1.0);"
- " mat3 sobel_v = mat3( 1.0, 0.0, -1.0,"
- " 2.0, 0.0, -2.0,"
- " 1.0, 0.0, -1.0);"
- " mat3 map = mat3( get_avg_rel(tex, -x_step, -y_step),"
- " get_avg_rel(tex, -x_step, 0.0),"
- " get_avg_rel(tex, -x_step, y_step),"
- " get_avg_rel(tex, 0.0, -y_step),"
- " get_avg_rel(tex, 0.0, 0.0),"
- " get_avg_rel(tex, 0.0, y_step),"
- " get_avg_rel(tex, x_step, -y_step),"
- " get_avg_rel(tex, x_step, 0.0),"
- " get_avg_rel(tex, x_step, y_step) );"
- " mat3 gh = sobel_h * map;"
- " mat3 gv = map * sobel_v;"
- " float avgh = (gh[0][0] + gh[0][1] + gh[0][2] +"
- " gh[1][0] + gh[1][1] + gh[1][2] +"
- " gh[2][0] + gh[2][1] + gh[2][2]) / 18.0 + 0.5;"
- " float avgv = (gv[0][0] + gv[0][1] + gv[0][2] +"
- " gv[1][0] + gv[1][1] + gv[1][2] +"
- " gv[2][0] + gv[2][1] + gv[2][2]) / 18.0 + 0.5;"
- " float avg = (avgh + avgv) / 2.0;"
- " color.r = avg * color.r;"
- " color.g = avg * color.g;"
- " color.b = avg * color.b;"
- FRAGMENT_SHADER_END
- }
-};
-
-static CoglHandle redhand;
-static CoglMaterial *material;
-static unsigned int timeout_id = 0;
-static int shader_no = 0;
-
-static void
-paint_cb (ClutterActor *actor)
-{
- float stage_width = clutter_actor_get_width (actor);
- float stage_height = clutter_actor_get_height (actor);
- float image_width = cogl_texture_get_width (redhand);
- float image_height = cogl_texture_get_height (redhand);
-
- cogl_set_source (material);
- cogl_rectangle (stage_width/2.0f - image_width/2.0f,
- stage_height/2.0f - image_height/2.0f,
- stage_width/2.0f + image_width/2.0f,
- stage_height/2.0f + image_height/2.0f);
-}
-
-static void
-set_shader_num (int new_no)
-{
- CoglHandle shader;
- CoglHandle program;
- int image_width = cogl_texture_get_width (redhand);
- int image_height = cogl_texture_get_height (redhand);
- int uniform_no;
-
- g_print ("setting shaders[%i] named '%s'\n",
- new_no,
- shaders[new_no].name);
-
- shader = cogl_create_shader (COGL_SHADER_TYPE_FRAGMENT);
- cogl_shader_source (shader, shaders[new_no].source);
- cogl_shader_compile (shader);
-
- program = cogl_create_program ();
- cogl_program_attach_shader (program, shader);
- cogl_handle_unref (shader);
- cogl_program_link (program);
-
- uniform_no = cogl_program_get_uniform_location (program, "tex");
- cogl_program_set_uniform_1i (program, uniform_no, 0);
- uniform_no = cogl_program_get_uniform_location (program, "radius");
- cogl_program_set_uniform_1f (program, uniform_no, 3.0);
- uniform_no = cogl_program_get_uniform_location (program, "brightness");
- cogl_program_set_uniform_1f (program, uniform_no, 0.4);
- uniform_no = cogl_program_get_uniform_location (program, "contrast");
- cogl_program_set_uniform_1f (program, uniform_no, -1.9);
-
- uniform_no = cogl_program_get_uniform_location (program, "x_step");
- cogl_program_set_uniform_1f (program, uniform_no, 1.0f / image_width);
- uniform_no = cogl_program_get_uniform_location (program, "y_step");
- cogl_program_set_uniform_1f (program, uniform_no, 1.0f / image_height);
-
- cogl_material_set_user_program (material, program);
- cogl_handle_unref (program);
-
- shader_no = new_no;
-}
-
-static gboolean
-button_release_cb (ClutterActor *actor,
- ClutterEvent *event,
- gpointer data)
-{
- int new_no;
-
- /* Stop the automatic cycling if the user want to manually control
- * which shader to display */
- if (timeout_id)
- {
- g_source_remove (timeout_id);
- timeout_id = 0;
- }
-
- if (event->button.button == 1)
- {
- new_no = shader_no - 1;
- if (new_no < 0)
- new_no = G_N_ELEMENTS (shaders) - 1;
- }
- else
- {
- new_no = shader_no + 1;
- if (new_no >= G_N_ELEMENTS (shaders))
- new_no = 0;
- }
-
- set_shader_num (new_no);
-
- return CLUTTER_EVENT_STOP;
-}
-
-static gboolean
-key_release_cb (ClutterActor *actor,
- ClutterEvent *event,
- gpointer user_data)
-{
- guint keysym = clutter_event_get_key_symbol (event);
- ClutterModifierType mods = clutter_event_get_state (event);
-
- if (keysym == CLUTTER_KEY_q ||
- ((mods & CLUTTER_SHIFT_MASK) && keysym == CLUTTER_KEY_q))
- clutter_main_quit ();
-
- return CLUTTER_EVENT_STOP;
-}
-
-static gboolean
-timeout_cb (gpointer user_data)
-{
- shader_no++;
- if (shader_no > (G_N_ELEMENTS (shaders) - 1))
- shader_no = 0;
-
- set_shader_num (shader_no);
-
- return G_SOURCE_CONTINUE;
-}
-
-static gboolean
-idle_cb (gpointer data)
-{
- clutter_actor_queue_redraw (data);
-
- return G_SOURCE_CONTINUE;
-}
-
-static gboolean
-destroy_window_cb (ClutterStage *stage,
- ClutterEvent *event,
- gpointer user_data)
-{
- clutter_main_quit ();
-
- return CLUTTER_EVENT_STOP;
-}
-
-G_MODULE_EXPORT int
-test_cogl_shader_glsl_main (int argc, char *argv[])
-{
- ClutterActor *stage;
- char *file;
- GError *error;
- ClutterColor stage_color = { 0x61, 0x64, 0x8c, 0xff };
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- stage = clutter_stage_new ();
-
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Assembly Shader Test");
- clutter_stage_set_color (CLUTTER_STAGE (stage), &stage_color);
-
- file = g_build_filename (TESTS_DATADIR, "redhand.png", NULL);
- error = NULL;
- redhand = cogl_texture_new_from_file (file,
- COGL_TEXTURE_NO_ATLAS,
- COGL_PIXEL_FORMAT_ANY,
- &error);
- if (redhand == COGL_INVALID_HANDLE)
- g_error ("image load failed: %s", error->message);
-
- material = cogl_material_new ();
- cogl_material_set_layer (material, 0, redhand);
-
- set_shader_num (0);
- g_signal_connect_after (stage, "paint", G_CALLBACK (paint_cb), NULL);
-
- clutter_actor_set_reactive (stage, TRUE);
- g_signal_connect (stage, "button-release-event",
- G_CALLBACK (button_release_cb), NULL);
- g_signal_connect (stage, "key-release-event",
- G_CALLBACK (key_release_cb), NULL);
-
- g_signal_connect (stage, "delete-event",
- G_CALLBACK (destroy_window_cb), NULL);
-
- timeout_id = clutter_threads_add_timeout (1000, timeout_cb, NULL);
-
- clutter_threads_add_idle (idle_cb, stage);
-
- clutter_actor_show (stage);
-
- clutter_main ();
-
- return EXIT_SUCCESS;
-}
-
diff --git a/clutter/tests/interactive/test-cogl-tex-convert.c b/clutter/tests/interactive/test-cogl-tex-convert.c
deleted file mode 100644
index 0f025d703..000000000
--- a/clutter/tests/interactive/test-cogl-tex-convert.c
+++ /dev/null
@@ -1,229 +0,0 @@
-#include <glib.h>
-#include <gmodule.h>
-#include <stdlib.h>
-#include <clutter/clutter.h>
-#include <cogl/cogl.h>
-
-/* Coglbox declaration
- *--------------------------------------------------*/
-
-G_BEGIN_DECLS
-
-#define TEST_TYPE_COGLBOX test_coglbox_get_type()
-
-#define TEST_COGLBOX(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
- TEST_TYPE_COGLBOX, TestCoglbox))
-
-#define TEST_COGLBOX_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST ((klass), \
- TEST_TYPE_COGLBOX, TestCoglboxClass))
-
-#define TEST_IS_COGLBOX(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
- TEST_TYPE_COGLBOX))
-
-#define TEST_IS_COGLBOX_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE ((klass), \
- TEST_TYPE_COGLBOX))
-
-#define TEST_COGLBOX_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS ((obj), \
- TEST_TYPE_COGLBOX, TestCoglboxClass))
-
-typedef struct _TestCoglbox TestCoglbox;
-typedef struct _TestCoglboxClass TestCoglboxClass;
-typedef struct _TestCoglboxPrivate TestCoglboxPrivate;
-
-struct _TestCoglbox
-{
- ClutterActor parent;
-
- /*< private >*/
- TestCoglboxPrivate *priv;
-};
-
-struct _TestCoglboxClass
-{
- ClutterActorClass parent_class;
-
- /* padding for future expansion */
- void (*_test_coglbox1) (void);
- void (*_test_coglbox2) (void);
- void (*_test_coglbox3) (void);
- void (*_test_coglbox4) (void);
-};
-
-static GType test_coglbox_get_type (void) G_GNUC_CONST;
-
-int
-test_cogl_tex_convert_main (int argc, char *argv[]);
-
-const char *
-test_cogl_tex_convert_describe (void);
-
-G_END_DECLS
-
-/* Coglbox private declaration
- *--------------------------------------------------*/
-
-struct _TestCoglboxPrivate
-{
- CoglHandle cogl_tex_id[4];
- gint frame;
-};
-
-G_DEFINE_TYPE_WITH_PRIVATE (TestCoglbox, test_coglbox, CLUTTER_TYPE_ACTOR);
-
-#define TEST_COGLBOX_GET_PRIVATE(obj) \
-(test_coglbox_get_instance_private (TEST_COGLBOX ((obj))))
-
-/* Coglbox implementation
- *--------------------------------------------------*/
-
-static void
-test_coglbox_paint(ClutterActor *self)
-{
- TestCoglboxPrivate *priv = TEST_COGLBOX_GET_PRIVATE (self);
- gfloat texcoords[4] = { 0.0, 0.0, 1.0, 1.0 };
-
- priv = TEST_COGLBOX_GET_PRIVATE (self);
-
- cogl_set_source_color4ub (0x66, 0x66, 0xdd, 0xff);
- cogl_rectangle (0, 0, 400, 400);
-
- cogl_push_matrix ();
- cogl_set_source_texture (priv->cogl_tex_id[0]);
- cogl_rectangle_with_texture_coords (0, 0, 200, 213,
- texcoords[0], texcoords[1],
- texcoords[2], texcoords[3]);
-
- cogl_pop_matrix ();
- cogl_push_matrix ();
- cogl_translate (200, 0, 0);
- cogl_set_source_texture (priv->cogl_tex_id[1]);
- cogl_rectangle_with_texture_coords (0, 0, 200, 213,
- texcoords[0], texcoords[1],
- texcoords[2], texcoords[3]);
-
- cogl_pop_matrix ();
- cogl_push_matrix ();
- cogl_translate (0, 200, 0);
- cogl_set_source_texture (priv->cogl_tex_id[2]);
- cogl_rectangle_with_texture_coords (0, 0, 200, 213,
- texcoords[0], texcoords[1],
- texcoords[2], texcoords[3]);
-
- cogl_pop_matrix ();
- cogl_push_matrix ();
- cogl_translate (200, 200, 0);
- cogl_set_source_texture (priv->cogl_tex_id[3]);
- cogl_rectangle_with_texture_coords (0, 0, 200, 213,
- texcoords[0], texcoords[1],
- texcoords[2], texcoords[3]);
-
- cogl_pop_matrix();
-}
-
-static void
-test_coglbox_finalize (GObject *object)
-{
- G_OBJECT_CLASS (test_coglbox_parent_class)->finalize (object);
-}
-
-static void
-test_coglbox_dispose (GObject *object)
-{
- TestCoglboxPrivate *priv;
-
- priv = TEST_COGLBOX_GET_PRIVATE (object);
- cogl_handle_unref (priv->cogl_tex_id);
-
- G_OBJECT_CLASS (test_coglbox_parent_class)->dispose (object);
-}
-
-static void
-test_coglbox_init (TestCoglbox *self)
-{
- TestCoglboxPrivate *priv;
- gchar *file;
-
- self->priv = priv = TEST_COGLBOX_GET_PRIVATE(self);
-
- file = g_build_filename (TESTS_DATADIR, "redhand.png", NULL);
-
- priv->cogl_tex_id[0] =
- cogl_texture_new_from_file (file,
- COGL_TEXTURE_NONE,
- COGL_PIXEL_FORMAT_ANY,
- NULL);
-
- priv->cogl_tex_id[1] =
- cogl_texture_new_from_file (file,
- COGL_TEXTURE_NONE,
- COGL_PIXEL_FORMAT_BGRA_8888,
- NULL);
-
- priv->cogl_tex_id[2] =
- cogl_texture_new_from_file (file,
- COGL_TEXTURE_NONE,
- COGL_PIXEL_FORMAT_ARGB_8888,
- NULL);
-
- priv->cogl_tex_id[3] =
- cogl_texture_new_from_file (file,
- COGL_TEXTURE_NONE,
- COGL_PIXEL_FORMAT_G_8,
- NULL);
-
- g_free (file);
-}
-
-static void
-test_coglbox_class_init (TestCoglboxClass *klass)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
- ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
-
- gobject_class->finalize = test_coglbox_finalize;
- gobject_class->dispose = test_coglbox_dispose;
- actor_class->paint = test_coglbox_paint;
-}
-
-static ClutterActor*
-test_coglbox_new (void)
-{
- return g_object_new (TEST_TYPE_COGLBOX, NULL);
-}
-
-G_MODULE_EXPORT int
-test_cogl_tex_convert_main (int argc, char *argv[])
-{
- ClutterActor *stage;
- ClutterActor *coglbox;
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- /* Stage */
- stage = clutter_stage_new ();
- clutter_actor_set_size (stage, 400, 400);
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Cogl Texture Conversion");
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- /* Cogl Box */
- coglbox = test_coglbox_new ();
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), coglbox);
-
- clutter_actor_show_all (stage);
-
- clutter_main ();
-
- return 0;
-}
-
-G_MODULE_EXPORT const char *
-test_cogl_tex_convert_describe (void)
-{
- return "Pixel format conversion of Cogl textures.";
-}
diff --git a/clutter/tests/interactive/test-cogl-tex-polygon.c b/clutter/tests/interactive/test-cogl-tex-polygon.c
deleted file mode 100644
index 2bfc60ae6..000000000
--- a/clutter/tests/interactive/test-cogl-tex-polygon.c
+++ /dev/null
@@ -1,425 +0,0 @@
-#include <glib.h>
-#include <gmodule.h>
-#include <stdlib.h>
-#include <clutter/clutter.h>
-#include <cogl/cogl.h>
-
-/* Coglbox declaration
- *--------------------------------------------------*/
-
-G_BEGIN_DECLS
-
-#define TEST_TYPE_COGLBOX test_coglbox_get_type()
-
-#define TEST_COGLBOX(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
- TEST_TYPE_COGLBOX, TestCoglbox))
-
-#define TEST_COGLBOX_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST ((klass), \
- TEST_TYPE_COGLBOX, TestCoglboxClass))
-
-#define TEST_IS_COGLBOX(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
- TEST_TYPE_COGLBOX))
-
-#define TEST_IS_COGLBOX_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE ((klass), \
- TEST_TYPE_COGLBOX))
-
-#define TEST_COGLBOX_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS ((obj), \
- TEST_TYPE_COGLBOX, TestCoglboxClass))
-
-typedef struct _TestCoglbox TestCoglbox;
-typedef struct _TestCoglboxClass TestCoglboxClass;
-typedef struct _TestCoglboxPrivate TestCoglboxPrivate;
-
-struct _TestCoglbox
-{
- ClutterActor parent;
-
- /*< private >*/
- TestCoglboxPrivate *priv;
-};
-
-struct _TestCoglboxClass
-{
- ClutterActorClass parent_class;
-
- /* padding for future expansion */
- void (*_test_coglbox1) (void);
- void (*_test_coglbox2) (void);
- void (*_test_coglbox3) (void);
- void (*_test_coglbox4) (void);
-};
-
-static GType test_coglbox_get_type (void) G_GNUC_CONST;
-
-int
-test_cogl_tex_polygon_main (int argc, char *argv[]);
-
-const char *
-test_cogl_tex_polygon_describe (void);
-
-G_END_DECLS
-
-/* Coglbox private declaration
- *--------------------------------------------------*/
-
-struct _TestCoglboxPrivate
-{
- CoglHandle sliced_tex, not_sliced_tex;
- gint frame;
- gboolean use_sliced;
- gboolean use_linear_filtering;
-};
-
-G_DEFINE_TYPE_WITH_PRIVATE (TestCoglbox, test_coglbox, CLUTTER_TYPE_ACTOR);
-
-#define TEST_COGLBOX_GET_PRIVATE(obj) \
-((TestCoglboxPrivate *)test_coglbox_get_instance_private (TEST_COGLBOX ((obj))))
-
-/* Coglbox implementation
- *--------------------------------------------------*/
-
-static void
-test_coglbox_fade_texture (gfloat x1,
- gfloat y1,
- gfloat x2,
- gfloat y2,
- gfloat tx1,
- gfloat ty1,
- gfloat tx2,
- gfloat ty2)
-{
- CoglTextureVertex vertices[4];
- int i;
-
- vertices[0].x = x1;
- vertices[0].y = y1;
- vertices[0].z = 0;
- vertices[0].tx = tx1;
- vertices[0].ty = ty1;
- vertices[1].x = x1;
- vertices[1].y = y2;
- vertices[1].z = 0;
- vertices[1].tx = tx1;
- vertices[1].ty = ty2;
- vertices[2].x = x2;
- vertices[2].y = y2;
- vertices[2].z = 0;
- vertices[2].tx = tx2;
- vertices[2].ty = ty2;
- vertices[3].x = x2;
- vertices[3].y = y1;
- vertices[3].z = 0;
- vertices[3].tx = tx2;
- vertices[3].ty = ty1;
-
- for (i = 0; i < 4; i++)
- {
- cogl_color_init_from_4ub (&(vertices[i].color),
- 255,
- 255,
- 255,
- ((i ^ (i >> 1)) & 1) ? 0 : 128);
- cogl_color_premultiply (&(vertices[i].color));
- }
-
- cogl_polygon (vertices, 4, TRUE);
-}
-
-static void
-test_coglbox_triangle_texture (int tex_width,
- int tex_height,
- gfloat x,
- gfloat y,
- gfloat tx1,
- gfloat ty1,
- gfloat tx2,
- gfloat ty2,
- gfloat tx3,
- gfloat ty3)
-{
- CoglTextureVertex vertices[3];
-
- vertices[0].x = x + tx1 * tex_width;
- vertices[0].y = y + ty1 * tex_height;
- vertices[0].z = 0;
- vertices[0].tx = tx1;
- vertices[0].ty = ty1;
-
- vertices[1].x = x + tx2 * tex_width;
- vertices[1].y = y + ty2 * tex_height;
- vertices[1].z = 0;
- vertices[1].tx = tx2;
- vertices[1].ty = ty2;
-
- vertices[2].x = x + tx3 * tex_width;
- vertices[2].y = y + ty3 * tex_height;
- vertices[2].z = 0;
- vertices[2].tx = tx3;
- vertices[2].ty = ty3;
-
- cogl_polygon (vertices, 3, FALSE);
-}
-
-static void
-test_coglbox_paint (ClutterActor *self)
-{
- TestCoglboxPrivate *priv = TEST_COGLBOX_GET_PRIVATE (self);
- CoglHandle tex_handle = priv->use_sliced ? priv->sliced_tex
- : priv->not_sliced_tex;
- int tex_width = cogl_texture_get_width (tex_handle);
- int tex_height = cogl_texture_get_height (tex_handle);
- CoglHandle material = cogl_material_new ();
-
- cogl_material_set_layer (material, 0, tex_handle);
-
- cogl_material_set_layer_filters (material, 0,
- priv->use_linear_filtering
- ? COGL_MATERIAL_FILTER_LINEAR :
- COGL_MATERIAL_FILTER_NEAREST,
- priv->use_linear_filtering
- ? COGL_MATERIAL_FILTER_LINEAR :
- COGL_MATERIAL_FILTER_NEAREST);
-
- cogl_push_matrix ();
- cogl_translate (tex_width / 2, 0, 0);
- cogl_rotate (priv->frame, 0, 1, 0);
- cogl_translate (-tex_width / 2, 0, 0);
-
- /* Draw a hand and refect it */
- cogl_set_source (material);
- cogl_rectangle_with_texture_coords (0, 0, tex_width, tex_height,
- 0, 0, 1, 1);
- test_coglbox_fade_texture (0, tex_height,
- tex_width, (tex_height * 3 / 2),
- 0.0, 1.0,
- 1.0, 0.5);
-
- cogl_pop_matrix ();
-
- cogl_push_matrix ();
- cogl_translate (tex_width * 3 / 2 + 60, 0, 0);
- cogl_rotate (priv->frame, 0, 1, 0);
- cogl_translate (-tex_width / 2 - 10, 0, 0);
-
- /* Draw the texture split into two triangles */
- test_coglbox_triangle_texture (tex_width, tex_height,
- 0, 0,
- 0, 0,
- 0, 1,
- 1, 1);
- test_coglbox_triangle_texture (tex_width, tex_height,
- 20, 0,
- 0, 0,
- 1, 0,
- 1, 1);
-
- cogl_pop_matrix ();
-
- cogl_handle_unref (material);
-}
-
-static void
-test_coglbox_finalize (GObject *object)
-{
- G_OBJECT_CLASS (test_coglbox_parent_class)->finalize (object);
-}
-
-static void
-test_coglbox_dispose (GObject *object)
-{
- TestCoglboxPrivate *priv;
-
- priv = TEST_COGLBOX_GET_PRIVATE (object);
- cogl_handle_unref (priv->not_sliced_tex);
- cogl_handle_unref (priv->sliced_tex);
-
- G_OBJECT_CLASS (test_coglbox_parent_class)->dispose (object);
-}
-
-static void
-test_coglbox_init (TestCoglbox *self)
-{
- TestCoglboxPrivate *priv;
- GError *error = NULL;
- gchar *file;
-
- self->priv = priv = TEST_COGLBOX_GET_PRIVATE (self);
-
- priv->use_linear_filtering = FALSE;
- priv->use_sliced = FALSE;
-
- file = g_build_filename (TESTS_DATADIR, "redhand.png", NULL);
- priv->sliced_tex =
- cogl_texture_new_from_file (file,
- COGL_TEXTURE_NONE,
- COGL_PIXEL_FORMAT_ANY,
- &error);
- if (priv->sliced_tex == COGL_INVALID_HANDLE)
- {
- if (error)
- {
- g_warning ("Texture loading failed: %s", error->message);
- g_error_free (error);
- error = NULL;
- }
- else
- g_warning ("Texture loading failed: <unknown>");
- }
-
- priv->not_sliced_tex =
- cogl_texture_new_from_file (file,
- COGL_TEXTURE_NO_SLICING,
- COGL_PIXEL_FORMAT_ANY,
- &error);
- if (priv->not_sliced_tex == COGL_INVALID_HANDLE)
- {
- if (error)
- {
- g_warning ("Texture loading failed: %s", error->message);
- g_error_free (error);
- }
- else
- g_warning ("Texture loading failed: <unknown>");
- }
-
- g_free (file);
-}
-
-static void
-test_coglbox_class_init (TestCoglboxClass *klass)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
- ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
-
- gobject_class->finalize = test_coglbox_finalize;
- gobject_class->dispose = test_coglbox_dispose;
- actor_class->paint = test_coglbox_paint;
-}
-
-static ClutterActor*
-test_coglbox_new (void)
-{
- return g_object_new (TEST_TYPE_COGLBOX, NULL);
-}
-
-static void
-frame_cb (ClutterTimeline *timeline,
- gint elapsed_msecs,
- gpointer data)
-{
- TestCoglboxPrivate *priv = TEST_COGLBOX_GET_PRIVATE (data);
- gdouble progress = clutter_timeline_get_progress (timeline);
-
- priv->frame = 360.0 * progress;
- clutter_actor_queue_redraw (CLUTTER_ACTOR (data));
-}
-
-static void
-update_toggle_text (ClutterText *button, gboolean val)
-{
- clutter_text_set_text (button, val ? "Enabled" : "Disabled");
-}
-
-static gboolean
-on_toggle_click (ClutterActor *button, ClutterEvent *event,
- gboolean *toggle_val)
-{
- update_toggle_text (CLUTTER_TEXT (button), *toggle_val = !*toggle_val);
-
- return TRUE;
-}
-
-static ClutterActor *
-make_toggle (const char *label_text, gboolean *toggle_val)
-{
- ClutterActor *group = clutter_group_new ();
- ClutterActor *label = clutter_text_new_with_text ("Sans 14", label_text);
- ClutterActor *button = clutter_text_new_with_text ("Sans 14", "");
-
- clutter_actor_set_reactive (button, TRUE);
-
- update_toggle_text (CLUTTER_TEXT (button), *toggle_val);
-
- clutter_actor_set_position (button, clutter_actor_get_width (label) + 10, 0);
- clutter_container_add (CLUTTER_CONTAINER (group), label, button, NULL);
-
- g_signal_connect (button, "button-press-event", G_CALLBACK (on_toggle_click),
- toggle_val);
-
- return group;
-}
-
-G_MODULE_EXPORT int
-test_cogl_tex_polygon_main (int argc, char *argv[])
-{
- ClutterActor *stage;
- ClutterActor *coglbox;
- ClutterActor *filtering_toggle;
- ClutterActor *slicing_toggle;
- ClutterActor *note;
- ClutterTimeline *timeline;
- ClutterColor blue = { 0x30, 0x30, 0xff, 0xff };
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- /* Stage */
- stage = clutter_stage_new ();
- clutter_stage_set_color (CLUTTER_STAGE (stage), &blue);
- clutter_actor_set_size (stage, 640, 480);
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Cogl Texture Polygon");
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- /* Cogl Box */
- coglbox = test_coglbox_new ();
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), coglbox);
-
- /* Timeline for animation */
- timeline = clutter_timeline_new (6000);
- clutter_timeline_set_loop (timeline, TRUE);
- g_signal_connect (timeline, "new-frame", G_CALLBACK (frame_cb), coglbox);
- clutter_timeline_start (timeline);
-
- /* Labels for toggling settings */
- slicing_toggle = make_toggle ("Texture slicing: ",
- &(TEST_COGLBOX_GET_PRIVATE (coglbox)
- ->use_sliced));
- clutter_actor_set_position (slicing_toggle, 0,
- clutter_actor_get_height (stage)
- - clutter_actor_get_height (slicing_toggle));
- filtering_toggle = make_toggle ("Linear filtering: ",
- &(TEST_COGLBOX_GET_PRIVATE (coglbox)
- ->use_linear_filtering));
- clutter_actor_set_position (filtering_toggle, 0,
- clutter_actor_get_y (slicing_toggle)
- - clutter_actor_get_height (filtering_toggle));
- note = clutter_text_new_with_text ("Sans 10", "<- Click to change");
- clutter_actor_set_position (note,
- clutter_actor_get_width (filtering_toggle) + 10,
- (clutter_actor_get_height (stage)
- + clutter_actor_get_y (filtering_toggle)) / 2
- - clutter_actor_get_height (note) / 2);
-
- clutter_container_add (CLUTTER_CONTAINER (stage),
- slicing_toggle,
- filtering_toggle,
- note,
- NULL);
-
- clutter_actor_show (stage);
-
- clutter_main ();
-
- return 0;
-}
-
-G_MODULE_EXPORT const char *
-test_cogl_tex_polygon_describe (void)
-{
- return "Texture polygon primitive.";
-}
diff --git a/clutter/tests/interactive/test-cogl-tex-tile.c b/clutter/tests/interactive/test-cogl-tex-tile.c
deleted file mode 100644
index 09b2a445f..000000000
--- a/clutter/tests/interactive/test-cogl-tex-tile.c
+++ /dev/null
@@ -1,223 +0,0 @@
-#include <glib.h>
-#include <gmodule.h>
-#include <stdlib.h>
-#include <math.h>
-#include <clutter/clutter.h>
-#include <cogl/cogl.h>
-
-/* Coglbox declaration
- *--------------------------------------------------*/
-
-G_BEGIN_DECLS
-
-#define TEST_TYPE_COGLBOX test_coglbox_get_type()
-
-#define TEST_COGLBOX(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
- TEST_TYPE_COGLBOX, TestCoglbox))
-
-#define TEST_COGLBOX_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST ((klass), \
- TEST_TYPE_COGLBOX, TestCoglboxClass))
-
-#define TEST_IS_COGLBOX(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
- TEST_TYPE_COGLBOX))
-
-#define TEST_IS_COGLBOX_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE ((klass), \
- TEST_TYPE_COGLBOX))
-
-#define TEST_COGLBOX_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS ((obj), \
- TEST_TYPE_COGLBOX, TestCoglboxClass))
-
-typedef struct _TestCoglbox TestCoglbox;
-typedef struct _TestCoglboxClass TestCoglboxClass;
-typedef struct _TestCoglboxPrivate TestCoglboxPrivate;
-
-struct _TestCoglbox
-{
- ClutterActor parent;
-
- /*< private >*/
- TestCoglboxPrivate *priv;
-};
-
-struct _TestCoglboxClass
-{
- ClutterActorClass parent_class;
-
- /* padding for future expansion */
- void (*_test_coglbox1) (void);
- void (*_test_coglbox2) (void);
- void (*_test_coglbox3) (void);
- void (*_test_coglbox4) (void);
-};
-
-static GType test_coglbox_get_type (void) G_GNUC_CONST;
-
-int
-test_cogl_tex_tile_main (int argc, char *argv[]);
-
-const char *
-test_cogl_tex_tile_describe (void);
-
-G_END_DECLS
-
-/* Coglbox private declaration
- *--------------------------------------------------*/
-
-struct _TestCoglboxPrivate
-{
- CoglHandle cogl_tex_id;
- gdouble animation_progress;
-};
-
-G_DEFINE_TYPE_WITH_PRIVATE (TestCoglbox, test_coglbox, CLUTTER_TYPE_ACTOR);
-
-#define TEST_COGLBOX_GET_PRIVATE(obj) \
-(test_coglbox_get_instance_private (TEST_COGLBOX ((obj))))
-
-/* Coglbox implementation
- *--------------------------------------------------*/
-
-static void
-test_coglbox_paint (ClutterActor *self)
-{
- TestCoglboxPrivate *priv = TEST_COGLBOX_GET_PRIVATE (self);
- gfloat texcoords[4] = { 0.0f, 0.0f, 1.0f, 1.0f };
- gfloat angle;
- gfloat frac;
- gint t;
-
- angle = priv->animation_progress * 2 * G_PI;
-
- frac = ((priv->animation_progress <= 0.5f
- ? priv->animation_progress
- : 1.0f - priv->animation_progress) + 0.5f) * 2.0f;
-
- for (t=0; t<4; t+=2)
- {
- texcoords[t] += cos (angle);
- texcoords[t+1] += sin (angle);
-
- texcoords[t] *= frac;
- texcoords[t+1] *= frac;
- }
-
- priv = TEST_COGLBOX_GET_PRIVATE (self);
-
- cogl_push_matrix ();
-
- cogl_set_source_color4ub (0x66, 0x66, 0xdd, 0xff);
- cogl_rectangle (0, 0, 400, 400);
-
- cogl_translate (100, 100, 0);
- cogl_set_source_texture (priv->cogl_tex_id);
- cogl_rectangle_with_texture_coords (0, 0, 200, 213,
- texcoords[0], texcoords[1],
- texcoords[2], texcoords[3]);
-
- cogl_pop_matrix();
-}
-
-static void
-test_coglbox_finalize (GObject *object)
-{
- G_OBJECT_CLASS (test_coglbox_parent_class)->finalize (object);
-}
-
-static void
-test_coglbox_dispose (GObject *object)
-{
- TestCoglboxPrivate *priv;
-
- priv = TEST_COGLBOX_GET_PRIVATE (object);
- cogl_handle_unref (priv->cogl_tex_id);
-
- G_OBJECT_CLASS (test_coglbox_parent_class)->dispose (object);
-}
-
-static void
-test_coglbox_init (TestCoglbox *self)
-{
- TestCoglboxPrivate *priv;
- gchar *file;
-
- self->priv = priv = TEST_COGLBOX_GET_PRIVATE(self);
-
- file = g_build_filename (TESTS_DATADIR, "redhand.png", NULL);
- priv->cogl_tex_id = cogl_texture_new_from_file (file,
- COGL_TEXTURE_NONE,
- COGL_PIXEL_FORMAT_ANY,
- NULL);
- g_free (file);
-}
-
-static void
-test_coglbox_class_init (TestCoglboxClass *klass)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
- ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
-
- gobject_class->finalize = test_coglbox_finalize;
- gobject_class->dispose = test_coglbox_dispose;
- actor_class->paint = test_coglbox_paint;
-}
-
-static ClutterActor*
-test_coglbox_new (void)
-{
- return g_object_new (TEST_TYPE_COGLBOX, NULL);
-}
-
-static void
-frame_cb (ClutterTimeline *timeline,
- gint msecs,
- gpointer data)
-{
- TestCoglboxPrivate *priv = TEST_COGLBOX_GET_PRIVATE (data);
-
- priv->animation_progress = clutter_timeline_get_progress (timeline);
- clutter_actor_queue_redraw (CLUTTER_ACTOR (data));
-}
-
-G_MODULE_EXPORT int
-test_cogl_tex_tile_main (int argc, char *argv[])
-{
- ClutterActor *stage;
- ClutterActor *coglbox;
- ClutterTimeline *timeline;
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- /* Stage */
- stage = clutter_stage_new ();
- clutter_actor_set_size (stage, 400, 400);
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Cogl Texture Tiling");
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- /* Cogl Box */
- coglbox = test_coglbox_new ();
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), coglbox);
-
- /* Timeline for animation */
- timeline = clutter_timeline_new (6000); /* 6 second duration */
- clutter_timeline_set_loop (timeline, TRUE);
- g_signal_connect (timeline, "new-frame", G_CALLBACK (frame_cb), coglbox);
- clutter_timeline_start (timeline);
-
- clutter_actor_show_all (stage);
-
- clutter_main ();
-
- return 0;
-}
-
-G_MODULE_EXPORT const char *
-test_cogl_tex_tile_describe (void)
-{
- return "Texture tiling.";
-}
diff --git a/clutter/tests/interactive/test-cogl-vertex-buffer.c b/clutter/tests/interactive/test-cogl-vertex-buffer.c
deleted file mode 100644
index 9683e07f3..000000000
--- a/clutter/tests/interactive/test-cogl-vertex-buffer.c
+++ /dev/null
@@ -1,396 +0,0 @@
-#include <glib.h>
-#include <gmodule.h>
-#include <stdlib.h>
-#include <clutter/clutter.h>
-#include <cogl/cogl.h>
-#include <math.h>
-
-/* Defines the size and resolution of the quad mesh we morph:
- */
-#define MESH_WIDTH 100.0 /* number of quads along x axis */
-#define MESH_HEIGHT 100.0 /* number of quads along y axis */
-#define QUAD_WIDTH 5.0 /* width in pixels of a single quad */
-#define QUAD_HEIGHT 5.0 /* height in pixels of a single quad */
-
-/* Defines a sine wave that sweeps across the mesh:
- */
-#define WAVE_DEPTH ((MESH_WIDTH * QUAD_WIDTH) / 16.0) /* peak amplitude */
-#define WAVE_PERIODS 4.0
-#define WAVE_SPEED 10.0
-
-/* Defines a rippling sine wave emitted from a point:
- */
-#define RIPPLE_CENTER_X ((MESH_WIDTH / 2.0) * QUAD_WIDTH)
-#define RIPPLE_CENTER_Y ((MESH_HEIGHT / 2.0) * QUAD_HEIGHT)
-#define RIPPLE_RADIUS (MESH_WIDTH * QUAD_WIDTH)
-#define RIPPLE_DEPTH ((MESH_WIDTH * QUAD_WIDTH) / 16.0) /* peak amplitude */
-#define RIPPLE_PERIODS 4.0
-#define RIPPLE_SPEED -10.0
-
-/* Defines the width of the gaussian bell used to fade out the alpha
- * towards the edges of the mesh (starting from the ripple center):
- */
-#define GAUSSIAN_RADIUS ((MESH_WIDTH * QUAD_WIDTH) / 6.0)
-
-/* Our hues lie in the range [0, 1], and this defines how we map amplitude
- * to hues (before scaling by {WAVE,RIPPLE}_DEPTH)
- * As we are interferring two sine waves together; amplitudes lie in the
- * range [-2, 2]
- */
-#define HSL_OFFSET 0.5 /* the hue that we map an amplitude of 0 too */
-#define HSL_SCALE 0.25
-
-typedef struct _TestState
-{
- ClutterActor *dummy;
- CoglHandle buffer;
- float *quad_mesh_verts;
- guint8 *quad_mesh_colors;
- guint16 *static_indices;
- guint n_static_indices;
- CoglHandle indices;
- ClutterTimeline *timeline;
- guint frame_id;
-} TestState;
-
-int
-test_cogl_vertex_buffer_main (int argc, char *argv[]);
-
-const char *
-test_cogl_vertex_buffer_describe (void);
-
-static void
-frame_cb (ClutterTimeline *timeline,
- gint elapsed_msecs,
- TestState *state)
-{
- guint x, y;
- float period_progress = clutter_timeline_get_progress (timeline);
- float period_progress_sin = sinf (period_progress);
- float wave_shift = period_progress * WAVE_SPEED;
- float ripple_shift = period_progress * RIPPLE_SPEED;
-
- for (y = 0; y <= MESH_HEIGHT; y++)
- for (x = 0; x <= MESH_WIDTH; x++)
- {
- guint vert_index = (MESH_WIDTH + 1) * y + x;
- float *vert = &state->quad_mesh_verts[3 * vert_index];
-
- float real_x = x * QUAD_WIDTH;
- float real_y = y * QUAD_HEIGHT;
-
- float wave_offset = (float)x / (MESH_WIDTH + 1);
- float wave_angle =
- (WAVE_PERIODS * 2 * G_PI * wave_offset) + wave_shift;
- float wave_sin = sinf (wave_angle);
-
- float a_sqr = (RIPPLE_CENTER_X - real_x) * (RIPPLE_CENTER_X - real_x);
- float b_sqr = (RIPPLE_CENTER_Y - real_y) * (RIPPLE_CENTER_Y - real_y);
- float ripple_offset = sqrtf (a_sqr + b_sqr) / RIPPLE_RADIUS;
- float ripple_angle =
- (RIPPLE_PERIODS * 2 * G_PI * ripple_offset) + ripple_shift;
- float ripple_sin = sinf (ripple_angle);
-
- float h, s, l;
- guint8 *color;
-
- vert[2] = (wave_sin * WAVE_DEPTH) + (ripple_sin * RIPPLE_DEPTH);
-
- /* Burn some CPU time picking a pretty color... */
- h = (HSL_OFFSET
- + wave_sin
- + ripple_sin
- + period_progress_sin) * HSL_SCALE;
- s = 0.5;
- l = 0.25 + (period_progress_sin + 1.0) / 4.0;
- color = &state->quad_mesh_colors[4 * vert_index];
- /* A bit of a sneaky cast, but it seems safe to assume the ClutterColor
- * typedef is set in stone... */
- clutter_color_from_hls ((ClutterColor *)color, h * 360.0, l, s);
-
- color[0] = (color[0] * color[3] + 128) / 255;
- color[1] = (color[1] * color[3] + 128) / 255;
- color[2] = (color[2] * color[3] + 128) / 255;
- }
-
- cogl_vertex_buffer_add (state->buffer,
- "gl_Vertex",
- 3, /* n components */
- COGL_ATTRIBUTE_TYPE_FLOAT,
- FALSE, /* normalized */
- 0, /* stride */
- state->quad_mesh_verts);
- cogl_vertex_buffer_add (state->buffer,
- "gl_Color",
- 4, /* n components */
- COGL_ATTRIBUTE_TYPE_UNSIGNED_BYTE,
- FALSE, /* normalized */
- 0, /* stride */
- state->quad_mesh_colors);
-
- cogl_vertex_buffer_submit (state->buffer);
-
- clutter_actor_set_rotation (state->dummy,
- CLUTTER_Z_AXIS,
- 360 * period_progress,
- (MESH_WIDTH * QUAD_WIDTH) / 2,
- (MESH_HEIGHT * QUAD_HEIGHT) / 2,
- 0);
- clutter_actor_set_rotation (state->dummy,
- CLUTTER_X_AXIS,
- 360 * period_progress,
- (MESH_WIDTH * QUAD_WIDTH) / 2,
- (MESH_HEIGHT * QUAD_HEIGHT) / 2,
- 0);
-}
-
-static void
-on_paint (ClutterActor *actor, TestState *state)
-{
- cogl_set_source_color4ub (0xff, 0x00, 0x00, 0xff);
- cogl_vertex_buffer_draw_elements (state->buffer,
- COGL_VERTICES_MODE_TRIANGLE_STRIP,
- state->indices,
- 0, /* min index */
- (MESH_WIDTH + 1) *
- (MESH_HEIGHT + 1) - 1, /* max index */
- 0, /* indices offset */
- state->n_static_indices);
-}
-
-static void
-init_static_index_arrays (TestState *state)
-{
- guint n_indices;
- int x, y;
- guint16 *i;
- guint dir;
-
- /* - Each row takes (2 + 2 * MESH_WIDTH indices)
- * - Thats 2 to start the triangle strip then 2 indices to add 2 triangles
- * per mesh quad.
- * - We have MESH_HEIGHT rows
- * - It takes one extra index for linking between rows (MESH_HEIGHT - 1)
- * - A 2 x 3 mesh == 20 indices... */
- n_indices = (2 + 2 * MESH_WIDTH) * MESH_HEIGHT + (MESH_HEIGHT - 1);
- state->static_indices = g_malloc (sizeof (guint16) * n_indices);
- state->n_static_indices = n_indices;
-
-#define MESH_INDEX(X, Y) (Y) * (MESH_WIDTH + 1) + (X)
-
- i = state->static_indices;
-
- /* NB: front facing == anti-clockwise winding */
-
- i[0] = MESH_INDEX (0, 0);
- i[1] = MESH_INDEX (0, 1);
- i += 2;
-
-#define LEFT 0
-#define RIGHT 1
-
- dir = RIGHT;
-
- for (y = 0; y < MESH_HEIGHT; y++)
- {
- for (x = 0; x < MESH_WIDTH; x++)
- {
- /* Add 2 triangles per mesh quad... */
- if (dir == RIGHT)
- {
- i[0] = MESH_INDEX (x + 1, y);
- i[1] = MESH_INDEX (x + 1, y + 1);
- }
- else
- {
- i[0] = MESH_INDEX (MESH_WIDTH - x - 1, y);
- i[1] = MESH_INDEX (MESH_WIDTH - x - 1, y + 1);
- }
- i += 2;
- }
-
- /* Link rows... */
-
- if (y == (MESH_HEIGHT - 1))
- break;
-
- if (dir == RIGHT)
- {
- i[0] = MESH_INDEX (MESH_WIDTH, y + 1);
- i[1] = MESH_INDEX (MESH_WIDTH, y + 1);
- i[2] = MESH_INDEX (MESH_WIDTH, y + 2);
- }
- else
- {
- i[0] = MESH_INDEX (0, y + 1);
- i[1] = MESH_INDEX (0, y + 1);
- i[2] = MESH_INDEX (0, y + 2);
- }
- i += 3;
- dir = !dir;
- }
-
-#undef MESH_INDEX
-
- state->indices =
- cogl_vertex_buffer_indices_new (COGL_INDICES_TYPE_UNSIGNED_SHORT,
- state->static_indices,
- state->n_static_indices);
-}
-
-static float
-gaussian (float x, float y)
-{
- /* Bell width */
- float c = GAUSSIAN_RADIUS;
-
- /* Peak amplitude */
- float a = 1.0;
- /* float a = 1.0 / (c * sqrtf (2.0 * G_PI)); */
-
- /* Center offset */
- float b = 0.0;
-
- float dist;
- x = x - RIPPLE_CENTER_X;
- y = y - RIPPLE_CENTER_Y;
- dist = sqrtf (x*x + y*y);
-
- return a * exp ((- ((dist - b) * (dist - b))) / (2.0 * c * c));
-}
-
-static void
-init_quad_mesh (TestState *state)
-{
- int x, y;
- float *vert;
- guint8 *color;
-
- /* Note: we maintain the minimum number of vertices possible. This minimizes
- * the work required when we come to morph the geometry.
- *
- * We use static indices into our mesh so that we can treat the data like a
- * single triangle list and drawing can be done in one operation (Note: We
- * are using degenerate triangles at the edges to link to the next row)
- */
- state->quad_mesh_verts =
- g_malloc0 (sizeof (float) * 3 * (MESH_WIDTH + 1) * (MESH_HEIGHT + 1));
-
- state->quad_mesh_colors =
- g_malloc0 (sizeof (guint8) * 4 * (MESH_WIDTH + 1) * (MESH_HEIGHT + 1));
-
- vert = state->quad_mesh_verts;
- color = state->quad_mesh_colors;
- for (y = 0; y <= MESH_HEIGHT; y++)
- for (x = 0; x <= MESH_WIDTH; x++)
- {
- vert[0] = x * QUAD_WIDTH;
- vert[1] = y * QUAD_HEIGHT;
- vert += 3;
-
- color[3] = gaussian (x * QUAD_WIDTH,
- y * QUAD_HEIGHT) * 255.0;
- color += 4;
- }
-
- state->buffer = cogl_vertex_buffer_new ((MESH_WIDTH + 1)*(MESH_HEIGHT + 1));
- cogl_vertex_buffer_add (state->buffer,
- "gl_Vertex",
- 3, /* n components */
- COGL_ATTRIBUTE_TYPE_FLOAT,
- FALSE, /* normalized */
- 0, /* stride */
- state->quad_mesh_verts);
-
- cogl_vertex_buffer_add (state->buffer,
- "gl_Color",
- 4, /* n components */
- COGL_ATTRIBUTE_TYPE_UNSIGNED_BYTE,
- FALSE, /* normalized */
- 0, /* stride */
- state->quad_mesh_colors);
-
- cogl_vertex_buffer_submit (state->buffer);
-
- init_static_index_arrays (state);
-}
-
-/* This creates an actor that has a specific size but that does not result
- * in any drawing so we can do our own drawing using Cogl... */
-static ClutterActor *
-create_dummy_actor (guint width, guint height)
-{
- ClutterActor *group, *rect;
- ClutterColor clr = { 0xff, 0xff, 0xff, 0xff};
-
- group = clutter_group_new ();
- rect = clutter_rectangle_new_with_color (&clr);
- clutter_actor_set_size (rect, width, height);
- clutter_actor_hide (rect);
- clutter_container_add_actor (CLUTTER_CONTAINER (group), rect);
- return group;
-}
-
-static void
-stop_and_quit (ClutterActor *actor,
- TestState *state)
-{
- clutter_timeline_stop (state->timeline);
- clutter_main_quit ();
-}
-
-G_MODULE_EXPORT int
-test_cogl_vertex_buffer_main (int argc, char *argv[])
-{
- TestState state;
- ClutterActor *stage;
- gfloat stage_w, stage_h;
- gint dummy_width, dummy_height;
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- stage = clutter_stage_new ();
-
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Cogl Vertex Buffers");
- clutter_stage_set_color (CLUTTER_STAGE (stage), CLUTTER_COLOR_Black);
- g_signal_connect (stage, "destroy", G_CALLBACK (stop_and_quit), &state);
- clutter_actor_get_size (stage, &stage_w, &stage_h);
-
- dummy_width = MESH_WIDTH * QUAD_WIDTH;
- dummy_height = MESH_HEIGHT * QUAD_HEIGHT;
- state.dummy = create_dummy_actor (dummy_width, dummy_height);
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), state.dummy);
- clutter_actor_set_position (state.dummy,
- (stage_w / 2.0) - (dummy_width / 2.0),
- (stage_h / 2.0) - (dummy_height / 2.0));
-
- state.timeline = clutter_timeline_new (1000);
- clutter_timeline_set_loop (state.timeline, TRUE);
-
- state.frame_id = g_signal_connect (state.timeline,
- "new-frame",
- G_CALLBACK (frame_cb),
- &state);
-
- g_signal_connect (state.dummy, "paint", G_CALLBACK (on_paint), &state);
-
- init_quad_mesh (&state);
-
- clutter_actor_show_all (stage);
-
- clutter_timeline_start (state.timeline);
-
- clutter_main ();
-
- cogl_handle_unref (state.buffer);
- cogl_handle_unref (state.indices);
-
- return 0;
-}
-
-G_MODULE_EXPORT const char *
-test_cogl_vertex_buffer_describe (void)
-{
- return "Vertex buffers support in Cogl.";
-}
diff --git a/clutter/tests/interactive/test-content.c b/clutter/tests/interactive/test-content.c
deleted file mode 100644
index fa0ac3a2f..000000000
--- a/clutter/tests/interactive/test-content.c
+++ /dev/null
@@ -1,240 +0,0 @@
-#include <stdlib.h>
-#include <gmodule.h>
-#include <clutter/clutter.h>
-
-typedef struct _ColorContent {
- GObject parent_instance;
-
- double red;
- double green;
- double blue;
- double alpha;
-
- float padding;
-} ColorContent;
-
-typedef struct _ColorContentClass {
- GObjectClass parent_class;
-} ColorContentClass;
-
-static void clutter_content_iface_init (ClutterContentInterface *iface);
-
-GType color_content_get_type (void);
-
-int
-test_content_main (int argc, char *argv[]);
-
-const char *
-test_content_describe (void);
-
-G_DEFINE_TYPE_WITH_CODE (ColorContent, color_content, G_TYPE_OBJECT,
- G_IMPLEMENT_INTERFACE (CLUTTER_TYPE_CONTENT,
- clutter_content_iface_init))
-
-static void
-color_content_paint_content (ClutterContent *content,
- ClutterActor *actor,
- ClutterPaintNode *root)
-{
- ColorContent *self = (ColorContent *) content;
- ClutterActorBox box, content_box;
- ClutterColor color;
- PangoLayout *layout;
- PangoRectangle logical;
- ClutterPaintNode *node;
-
-#if 0
- g_debug ("Painting content [%p] "
- "{ r:%.2f, g:%.2f, b:%.2f, a:%.2f } "
- "for actor [%p] (context: [%p])",
- content,
- self->red,
- self->green,
- self->blue,
- self->alpha,
- actor, context);
-#endif
-
- clutter_actor_get_content_box (actor, &content_box);
-
- box = content_box;
- box.x1 += self->padding;
- box.y1 += self->padding;
- box.x2 -= self->padding;
- box.y2 -= self->padding;
-
- color.alpha = self->alpha * 255;
-
- color.red = self->red * 255;
- color.green = self->green * 255;
- color.blue = self->blue * 255;
-
- node = clutter_color_node_new (&color);
- clutter_paint_node_add_rectangle (node, &box);
- clutter_paint_node_add_child (root, node);
- clutter_paint_node_unref (node);
-
- color.red = (1.0 - self->red) * 255;
- color.green = (1.0 - self->green) * 255;
- color.blue = (1.0 - self->blue) * 255;
-
- layout = clutter_actor_create_pango_layout (actor, "A");
- pango_layout_get_pixel_extents (layout, NULL, &logical);
-
- node = clutter_text_node_new (layout, &color);
-
- /* top-left */
- box.x1 = clutter_actor_box_get_x (&content_box);
- box.y1 = clutter_actor_box_get_y (&content_box);
- box.x2 = box.x1 + logical.width;
- box.y2 = box.y1 + logical.height;
- clutter_paint_node_add_rectangle (node, &box);
-
- /* top-right */
- box.x1 = clutter_actor_box_get_x (&content_box)
- + clutter_actor_box_get_width (&content_box)
- - logical.width;
- box.y1 = clutter_actor_box_get_y (&content_box);
- box.x2 = box.x1 + logical.width;
- box.y2 = box.y1 + logical.height;
- clutter_paint_node_add_rectangle (node, &box);
-
- /* bottom-right */
- box.x1 = clutter_actor_box_get_x (&content_box)
- + clutter_actor_box_get_width (&content_box)
- - logical.width;
- box.y1 = clutter_actor_box_get_y (&content_box)
- + clutter_actor_box_get_height (&content_box)
- - logical.height;
- box.x2 = box.x1 + logical.width;
- box.y2 = box.y1 + logical.height;
- clutter_paint_node_add_rectangle (node, &box);
-
- /* bottom-left */
- box.x1 = clutter_actor_box_get_x (&content_box);
- box.y1 = clutter_actor_box_get_y (&content_box)
- + clutter_actor_box_get_height (&content_box)
- - logical.height;
- box.x2 = box.x1 + logical.width;
- box.y2 = box.y1 + logical.height;
- clutter_paint_node_add_rectangle (node, &box);
-
- /* center */
- box.x1 = clutter_actor_box_get_x (&content_box)
- + (clutter_actor_box_get_width (&content_box) - logical.width) / 2.0;
- box.y1 = clutter_actor_box_get_y (&content_box)
- + (clutter_actor_box_get_height (&content_box) - logical.height) / 2.0;
- box.x2 = box.x1 + logical.width;
- box.y2 = box.y1 + logical.height;
- clutter_paint_node_add_rectangle (node, &box);
-
- clutter_paint_node_add_child (root, node);
- clutter_paint_node_unref (node);
-
- g_object_unref (layout);
-}
-
-static void
-clutter_content_iface_init (ClutterContentInterface *iface)
-{
- iface->paint_content = color_content_paint_content;
-}
-
-static void
-color_content_class_init (ColorContentClass *klass)
-{
-}
-
-static void
-color_content_init (ColorContent *self)
-{
-}
-
-static ClutterContent *
-color_content_new (double red,
- double green,
- double blue,
- double alpha,
- float padding)
-{
- ColorContent *self = g_object_new (color_content_get_type (), NULL);
-
- self->red = red;
- self->green = green;
- self->blue = blue;
- self->alpha = alpha;
- self->padding = padding;
-
- return (ClutterContent *) self;
-}
-
-G_MODULE_EXPORT int
-test_content_main (int argc, char *argv[])
-{
- ClutterActor *stage, *grid;
- ClutterContent *content;
- int i, n_rects;
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return EXIT_FAILURE;
-
- stage = clutter_stage_new ();
- clutter_actor_set_name (stage, "Stage");
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Content");
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
- clutter_actor_show (stage);
-
- grid = clutter_actor_new ();
- clutter_actor_set_name (grid, "Grid");
- clutter_actor_set_margin_top (grid, 12);
- clutter_actor_set_margin_right (grid, 12);
- clutter_actor_set_margin_bottom (grid, 12);
- clutter_actor_set_margin_left (grid, 12);
- clutter_actor_set_layout_manager (grid, clutter_flow_layout_new (CLUTTER_FLOW_HORIZONTAL));
- clutter_actor_add_constraint (grid, clutter_bind_constraint_new (stage, CLUTTER_BIND_SIZE, 0.0));
- clutter_actor_add_child (stage, grid);
-
- content = color_content_new (g_random_double_range (0.0, 1.0),
- g_random_double_range (0.0, 1.0),
- g_random_double_range (0.0, 1.0),
- 1.0,
- 2.0);
-
- n_rects = g_random_int_range (12, 24);
- for (i = 0; i < n_rects; i++)
- {
- ClutterActor *box = clutter_actor_new ();
- ClutterColor bg_color = {
- g_random_int_range (0, 255),
- g_random_int_range (0, 255),
- g_random_int_range (0, 255),
- 255
- };
- char *name, *color;
-
- color = clutter_color_to_string (&bg_color);
- name = g_strconcat ("Box <", color, ">", NULL);
- clutter_actor_set_name (box, name);
-
- g_free (name);
- g_free (color);
-
- clutter_actor_set_background_color (box, &bg_color);
- clutter_actor_set_content (box, content);
- clutter_actor_set_size (box, 64, 64);
-
- clutter_actor_add_child (grid, box);
- }
-
- clutter_main ();
-
- g_object_unref (content);
-
- return EXIT_SUCCESS;
-}
-
-G_MODULE_EXPORT const char *
-test_content_describe (void)
-{
- return "A simple test for ClutterContent";
-}
diff --git a/clutter/tests/interactive/test-devices.c b/clutter/tests/interactive/test-devices.c
deleted file mode 100644
index c9644eb25..000000000
--- a/clutter/tests/interactive/test-devices.c
+++ /dev/null
@@ -1,289 +0,0 @@
-#include <stdlib.h>
-#include <gmodule.h>
-#include <clutter/clutter.h>
-
-#ifdef CLUTTER_WINDOWING_X11
-#include <clutter/x11/clutter-x11.h>
-#endif
-
-typedef struct {
- ClutterActor *stage;
-
- GHashTable *devices;
-} TestDevicesApp;
-
-int
-test_devices_main (int argc, char **argv);
-
-static const gchar *
-device_type_name (ClutterInputDevice *device)
-{
- ClutterInputDeviceType d_type;
-
- d_type = clutter_input_device_get_device_type (device);
- switch (d_type)
- {
- case CLUTTER_POINTER_DEVICE:
- return "Pointer";
-
- case CLUTTER_KEYBOARD_DEVICE:
- return "Keyboard";
-
- case CLUTTER_EXTENSION_DEVICE:
- return "Extension";
-
- case CLUTTER_PEN_DEVICE:
- return "Pen";
-
- case CLUTTER_ERASER_DEVICE:
- return "Eraser";
-
- case CLUTTER_CURSOR_DEVICE:
- return "Cursor";
-
- default:
- return "Unknown";
- }
-}
-
-static const gchar *
-axis_type_name (ClutterInputAxis axis)
-{
- switch (axis)
- {
- case CLUTTER_INPUT_AXIS_X:
- return "Absolute X";
-
- case CLUTTER_INPUT_AXIS_Y:
- return "Absolute Y";
-
- case CLUTTER_INPUT_AXIS_PRESSURE:
- return "Pressure";
-
- case CLUTTER_INPUT_AXIS_XTILT:
- return "X Tilt";
-
- case CLUTTER_INPUT_AXIS_YTILT:
- return "Y Tilt";
-
- case CLUTTER_INPUT_AXIS_WHEEL:
- return "Wheel";
-
- default:
- return "Unknown";
- }
-}
-
-static gboolean
-stage_button_event_cb (ClutterActor *actor,
- ClutterEvent *event,
- TestDevicesApp *app)
-{
- ClutterInputDevice *device;
- ClutterInputDevice *source_device;
- ClutterActor *hand = NULL;
- gdouble *axes;
- guint n_axes, i;
-
- device = clutter_event_get_device (event);
- source_device = clutter_event_get_source_device (event);
-
- hand = g_hash_table_lookup (app->devices, device);
-
- g_print ("Device: '%s' (id:%d, type: %s, source: '%s', axes: %d)\n",
- clutter_input_device_get_device_name (device),
- clutter_input_device_get_device_id (device),
- device_type_name (device),
- source_device != device
- ? clutter_input_device_get_device_name (source_device)
- : "<same>",
- clutter_input_device_get_n_axes (device));
-
- if (hand != NULL)
- {
- gfloat event_x, event_y;
-
- clutter_event_get_coords (event, &event_x, &event_y);
- clutter_actor_set_position (hand, event_x, event_y);
- }
-
- axes = clutter_event_get_axes (event, &n_axes);
- for (i = 0; i < n_axes; i++)
- {
- ClutterInputAxis axis;
-
- axis = clutter_input_device_get_axis (device, i);
- if (axis == CLUTTER_INPUT_AXIS_IGNORE)
- continue;
-
- g_print ("\tAxis[%2d][%s].value: %.2f\n",
- i,
- axis_type_name (axis),
- axes[i]);
- }
-
- return FALSE;
-}
-
-static gboolean
-stage_motion_event_cb (ClutterActor *actor,
- ClutterEvent *event,
- TestDevicesApp *app)
-{
- ClutterInputDevice *device;
- ClutterActor *hand = NULL;
-
- device = clutter_event_get_device (event);
-
- hand = g_hash_table_lookup (app->devices, device);
- if (hand != NULL)
- {
- gfloat event_x, event_y;
-
- clutter_event_get_coords (event, &event_x, &event_y);
- clutter_actor_set_position (hand, event_x, event_y);
-
- return TRUE;
- }
-
- return FALSE;
-}
-
-static void
-manager_device_added_cb (ClutterDeviceManager *manager,
- ClutterInputDevice *device,
- TestDevicesApp *app)
-{
- ClutterInputDeviceType device_type;
- ClutterActor *hand = NULL;
-
- g_print ("got a %s device '%s' with id %d\n",
- device_type_name (device),
- clutter_input_device_get_device_name (device),
- clutter_input_device_get_device_id (device));
-
- device_type = clutter_input_device_get_device_type (device);
- if (device_type == CLUTTER_POINTER_DEVICE ||
- device_type == CLUTTER_PEN_DEVICE ||
- device_type == CLUTTER_POINTER_DEVICE)
- {
- g_print ("*** enabling device '%s' ***\n",
- clutter_input_device_get_device_name (device));
-
- clutter_input_device_set_enabled (device, TRUE);
-
- hand = clutter_texture_new_from_file (TESTS_DATADIR
- G_DIR_SEPARATOR_S
- "redhand.png",
- NULL);
- g_hash_table_insert (app->devices, device, hand);
-
- clutter_container_add_actor (CLUTTER_CONTAINER (app->stage), hand);
- }
-}
-
-static void
-manager_device_removed_cb (ClutterDeviceManager *manager,
- ClutterInputDevice *device,
- TestDevicesApp *app)
-{
- ClutterInputDeviceType device_type;
- ClutterActor *hand = NULL;
-
- g_print ("removed a %s device '%s' with id %d\n",
- device_type_name (device),
- clutter_input_device_get_device_name (device),
- clutter_input_device_get_device_id (device));
-
- device_type = clutter_input_device_get_device_type (device);
- if (device_type == CLUTTER_POINTER_DEVICE ||
- device_type == CLUTTER_PEN_DEVICE ||
- device_type == CLUTTER_POINTER_DEVICE)
- {
- hand = g_hash_table_lookup (app->devices, device);
- if (hand != NULL)
- clutter_container_add_actor (CLUTTER_CONTAINER (app->stage), hand);
-
- g_hash_table_remove (app->devices, device);
- }
-}
-
-G_MODULE_EXPORT int
-test_devices_main (int argc, char **argv)
-{
- ClutterActor *stage;
- TestDevicesApp *app;
- ClutterDeviceManager *manager;
- const GSList *stage_devices, *l;
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- app = g_new0 (TestDevicesApp, 1);
- app->devices = g_hash_table_new (g_direct_hash, g_direct_equal) ;
-
- stage = clutter_stage_new ();
- clutter_actor_set_background_color (stage, CLUTTER_COLOR_LightSkyBlue);
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Devices");
- clutter_stage_hide_cursor (CLUTTER_STAGE (stage));
- g_signal_connect (stage,
- "destroy", G_CALLBACK (clutter_main_quit),
- NULL);
- g_signal_connect (stage,
- "motion-event", G_CALLBACK (stage_motion_event_cb),
- app);
- g_signal_connect (stage,
- "button-press-event", G_CALLBACK (stage_button_event_cb),
- app);
- app->stage = stage;
-
- clutter_actor_show_all (stage);
-
- manager = clutter_device_manager_get_default ();
- g_signal_connect (manager,
- "device-added", G_CALLBACK (manager_device_added_cb),
- app);
- g_signal_connect (manager,
- "device-removed", G_CALLBACK (manager_device_removed_cb),
- app);
-
- stage_devices = clutter_device_manager_peek_devices (manager);
-
- if (stage_devices == NULL)
- g_error ("No input devices found.");
-
- for (l = stage_devices; l != NULL; l = l->next)
- {
- ClutterInputDevice *device = l->data;
- ClutterInputDeviceType device_type;
- ClutterActor *hand = NULL;
-
- g_print ("got a %s device '%s' with id %d\n",
- device_type_name (device),
- clutter_input_device_get_device_name (device),
- clutter_input_device_get_device_id (device));
-
- device_type = clutter_input_device_get_device_type (device);
- if (device_type == CLUTTER_POINTER_DEVICE ||
- device_type == CLUTTER_PEN_DEVICE ||
- device_type == CLUTTER_POINTER_DEVICE)
- {
- g_print ("*** enabling device '%s' ***\n",
- clutter_input_device_get_device_name (device));
-
- clutter_input_device_set_enabled (device, TRUE);
-
- hand = clutter_texture_new_from_file (TESTS_DATADIR
- G_DIR_SEPARATOR_S
- "redhand.png",
- NULL);
- g_hash_table_insert (app->devices, device, hand);
-
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), hand);
- }
- }
-
- clutter_main ();
-
- return EXIT_SUCCESS;
-}
diff --git a/clutter/tests/interactive/test-easing.c b/clutter/tests/interactive/test-easing.c
deleted file mode 100644
index 3a66b36f9..000000000
--- a/clutter/tests/interactive/test-easing.c
+++ /dev/null
@@ -1,276 +0,0 @@
-#include <stdlib.h>
-#include <gmodule.h>
-#include <clutter/clutter.h>
-
-/* all the easing modes provided by Clutter */
-static const struct {
- const gchar *name;
- ClutterAnimationMode mode;
-} easing_modes[] = {
- { "linear", CLUTTER_LINEAR },
- { "easeInQuad", CLUTTER_EASE_IN_QUAD },
- { "easeOutQuad", CLUTTER_EASE_OUT_QUAD },
- { "easeInOutQuad", CLUTTER_EASE_IN_OUT_QUAD },
- { "easeInCubic", CLUTTER_EASE_IN_CUBIC },
- { "easeOutCubic", CLUTTER_EASE_OUT_CUBIC },
- { "easeInOutCubic", CLUTTER_EASE_IN_OUT_CUBIC },
- { "easeInQuart", CLUTTER_EASE_IN_QUART },
- { "easeOutQuart", CLUTTER_EASE_OUT_QUART },
- { "easeInOutQuart", CLUTTER_EASE_IN_OUT_QUART },
- { "easeInQuint", CLUTTER_EASE_IN_QUINT },
- { "easeOutQuint", CLUTTER_EASE_OUT_QUINT },
- { "easeInOutQuint", CLUTTER_EASE_IN_OUT_QUINT },
- { "easeInSine", CLUTTER_EASE_IN_SINE },
- { "easeOutSine", CLUTTER_EASE_OUT_SINE },
- { "easeInOutSine", CLUTTER_EASE_IN_OUT_SINE },
- { "easeInExpo", CLUTTER_EASE_IN_EXPO },
- { "easeOutExpo", CLUTTER_EASE_OUT_EXPO },
- { "easeInOutExpo", CLUTTER_EASE_IN_OUT_EXPO },
- { "easeInCirc", CLUTTER_EASE_IN_CIRC },
- { "easeOutCirc", CLUTTER_EASE_OUT_CIRC },
- { "easeInOutCirc", CLUTTER_EASE_IN_OUT_CIRC },
- { "easeInElastic", CLUTTER_EASE_IN_ELASTIC },
- { "easeOutElastic", CLUTTER_EASE_OUT_ELASTIC },
- { "easeInOutElastic", CLUTTER_EASE_IN_OUT_ELASTIC },
- { "easeInBack", CLUTTER_EASE_IN_BACK },
- { "easeOutBack", CLUTTER_EASE_OUT_BACK },
- { "easeInOutBack", CLUTTER_EASE_IN_OUT_BACK },
- { "easeInBounce", CLUTTER_EASE_IN_BOUNCE },
- { "easeOutBounce", CLUTTER_EASE_OUT_BOUNCE },
- { "easeInOutBounce", CLUTTER_EASE_IN_OUT_BOUNCE },
-};
-
-#define HELP_TEXT "Easing mode: %s (%d of %d)\n" \
- "Left click to tween\n" \
- "Right click to change the easing mode"
-
-static const gint n_easing_modes = G_N_ELEMENTS (easing_modes);
-static gint current_mode = 0;
-
-static gint duration = 1;
-static gboolean recenter = FALSE;
-
-static ClutterActor *main_stage = NULL;
-static ClutterActor *easing_mode_label = NULL;
-
-static ClutterAnimation *last_animation = NULL;
-
-int
-test_easing_main (int argc, char *argv[]);
-
-const char *
-test_easing_describe (void);
-
-/* recenter_bouncer:
- *
- * repositions (through an animation) the bouncer at the center of the stage
- */
-static void
-recenter_bouncer (ClutterAnimation *animation,
- ClutterActor *rectangle)
-{
- gfloat base_x, base_y;
- gint cur_mode;
-
- base_x = clutter_actor_get_width (main_stage) / 2;
- base_y = clutter_actor_get_height (main_stage) / 2;
-
- cur_mode = easing_modes[current_mode].mode;
-
- clutter_actor_animate (rectangle, cur_mode, 250,
- "x", base_x,
- "y", base_y,
- NULL);
-}
-
-static gboolean
-on_button_press (ClutterActor *actor,
- ClutterButtonEvent *event,
- ClutterActor *rectangle)
-{
- if (event->button == CLUTTER_BUTTON_SECONDARY)
- {
- gchar *text;
-
- /* cycle through the various easing modes */
- current_mode = (current_mode + 1 < n_easing_modes)
- ? current_mode + 1
- : 0;
-
- /* update the text of the label */
- text = g_strdup_printf (HELP_TEXT,
- easing_modes[current_mode].name,
- current_mode + 1,
- n_easing_modes);
-
- clutter_text_set_text (CLUTTER_TEXT (easing_mode_label), text);
- g_free (text);
- }
- else if (event->button == CLUTTER_BUTTON_PRIMARY)
- {
- ClutterAnimation *animation;
- ClutterAnimationMode cur_mode;
-
- cur_mode = easing_modes[current_mode].mode;
-
- /* tween the actor using the current easing mode */
- animation =
- clutter_actor_animate (rectangle, cur_mode, duration * 1000,
- "x", event->x,
- "y", event->y,
- NULL);
-
- /* if we were asked to, recenter the bouncer at the end of the
- * animation. we keep track of the animation to avoid connecting
- * the signal handler to the same Animation twice.
- */
- if (recenter && last_animation != animation)
- g_signal_connect_after (animation, "completed",
- G_CALLBACK (recenter_bouncer),
- rectangle);
-
- last_animation = animation;
- }
-
- return TRUE;
-}
-
-static gboolean
-draw_bouncer (ClutterCairoTexture *texture,
- cairo_t *cr)
-{
- const ClutterColor *bouncer_color;
- cairo_pattern_t *pattern;
- guint width, height;
- float radius;
-
- clutter_cairo_texture_get_surface_size (texture, &width, &height);
-
- radius = MAX (width, height);
-
- clutter_cairo_texture_clear (texture);
-
- cairo_arc (cr, radius / 2, radius / 2, radius / 2, 0.0, 2.0 * G_PI);
-
- bouncer_color = CLUTTER_COLOR_DarkScarletRed;
-
- pattern = cairo_pattern_create_radial (radius / 2, radius / 2, 0,
- radius, radius, radius);
- cairo_pattern_add_color_stop_rgba (pattern,
- 0,
- bouncer_color->red / 255.0,
- bouncer_color->green / 255.0,
- bouncer_color->blue / 255.0,
- bouncer_color->alpha / 255.0);
- cairo_pattern_add_color_stop_rgba (pattern,
- 0.85,
- bouncer_color->red / 255.0,
- bouncer_color->green / 255.0,
- bouncer_color->blue / 255.0,
- 0.25);
-
- cairo_set_source (cr, pattern);
- cairo_fill_preserve (cr);
-
- cairo_pattern_destroy (pattern);
-
- return TRUE;
-}
-
-static ClutterActor *
-make_bouncer (gfloat width,
- gfloat height)
-{
- ClutterActor *retval;
-
- retval = clutter_cairo_texture_new (width, height);
- g_signal_connect (retval, "draw", G_CALLBACK (draw_bouncer), NULL);
-
- clutter_actor_set_name (retval, "bouncer");
- clutter_actor_set_size (retval, width, height);
- clutter_actor_set_anchor_point (retval, width / 2, height / 2);
- clutter_actor_set_reactive (retval, TRUE);
-
- /* make sure we draw the bouncer immediately */
- clutter_cairo_texture_invalidate (CLUTTER_CAIRO_TEXTURE (retval));
-
- return retval;
-}
-
-static GOptionEntry test_easing_entries[] = {
- {
- "re-center", 'r',
- 0,
- G_OPTION_ARG_NONE, &recenter,
- "Re-center the actor when the animation ends",
- NULL
- },
- {
- "duration", 'd',
- 0,
- G_OPTION_ARG_INT, &duration,
- "Duration of the animation",
- "SECONDS"
- },
-
- { NULL }
-};
-
-G_MODULE_EXPORT int
-test_easing_main (int argc, char *argv[])
-{
- ClutterActor *stage, *rect, *label;
- gchar *text;
- gfloat stage_width, stage_height;
- GError *error = NULL;
-
- if (clutter_init_with_args (&argc, &argv,
- NULL,
- test_easing_entries,
- NULL,
- &error) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- stage = clutter_stage_new ();
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Easing Modes");
- clutter_actor_set_background_color (stage, CLUTTER_COLOR_LightSkyBlue);
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
- main_stage = stage;
-
- clutter_actor_get_size (stage, &stage_width, &stage_height);
-
- /* create the actor that we want to tween */
- rect = make_bouncer (50, 50);
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), rect);
- clutter_actor_set_position (rect, stage_width / 2, stage_height / 2);
-
- text = g_strdup_printf (HELP_TEXT,
- easing_modes[current_mode].name,
- current_mode + 1,
- n_easing_modes);
-
- label = clutter_text_new ();
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), label);
- clutter_text_set_text (CLUTTER_TEXT (label), text);
- clutter_actor_add_constraint (label, clutter_align_constraint_new (stage, CLUTTER_ALIGN_X_AXIS, 0.95));
- clutter_actor_add_constraint (label, clutter_align_constraint_new (stage, CLUTTER_ALIGN_Y_AXIS, 0.95));
- easing_mode_label = label;
-
- g_free (text);
-
- g_signal_connect (stage,
- "button-press-event", G_CALLBACK (on_button_press),
- rect);
-
- clutter_actor_show (stage);
-
- clutter_main ();
-
- return EXIT_SUCCESS;
-}
-
-G_MODULE_EXPORT const char *
-test_easing_describe (void)
-{
- return "Visualize all easing modes provided by Clutter";
-}
diff --git a/clutter/tests/interactive/test-events.c b/clutter/tests/interactive/test-events.c
deleted file mode 100644
index 013231ef8..000000000
--- a/clutter/tests/interactive/test-events.c
+++ /dev/null
@@ -1,494 +0,0 @@
-#include <gmodule.h>
-#include <clutter/clutter.h>
-#include <string.h>
-
-gboolean IsMotion = TRUE;
-
-int
-test_events_main (int argc, char *argv[]);
-
-const char *
-test_events_describe (void);
-
-static const gchar *
-get_event_type_name (const ClutterEvent *event)
-{
- switch (event->type)
- {
- case CLUTTER_BUTTON_PRESS:
- return "BUTTON PRESS";
-
- case CLUTTER_BUTTON_RELEASE:
- return "BUTTON_RELEASE";
-
- case CLUTTER_KEY_PRESS:
- return "KEY PRESS";
-
- case CLUTTER_KEY_RELEASE:
- return "KEY RELEASE";
-
- case CLUTTER_ENTER:
- return "ENTER";
-
- case CLUTTER_LEAVE:
- return "LEAVE";
-
- case CLUTTER_MOTION:
- return "MOTION";
-
- case CLUTTER_DELETE:
- return "DELETE";
-
- case CLUTTER_TOUCH_BEGIN:
- return "TOUCH BEGIN";
-
- case CLUTTER_TOUCH_UPDATE:
- return "TOUCH UPDATE";
-
- case CLUTTER_TOUCH_END:
- return "TOUCH END";
-
- case CLUTTER_TOUCH_CANCEL:
- return "TOUCH CANCEL";
-
- default:
- return "EVENT";
- }
-}
-
-static gchar *
-get_event_state_string (const ClutterEvent *event)
-{
- const char *mods[18];
- int i = 0;
- ClutterModifierType state = clutter_event_get_state (event);
-
- if (state & CLUTTER_SHIFT_MASK)
- mods[i++] = "shift";
- if (state & CLUTTER_LOCK_MASK)
- mods[i++] = "lock";
- if (state & CLUTTER_CONTROL_MASK)
- mods[i++] = "ctrl";
- if (state & CLUTTER_MOD1_MASK)
- mods[i++] = "mod1";
- if (state & CLUTTER_MOD2_MASK)
- mods[i++] = "mod2";
- if (state & CLUTTER_MOD3_MASK)
- mods[i++] = "mod3";
- if (state & CLUTTER_MOD4_MASK)
- mods[i++] = "mod4";
- if (state & CLUTTER_MOD5_MASK)
- mods[i++] = "mod5";
- if (state & CLUTTER_BUTTON1_MASK)
- mods[i++] = "btn1";
- if (state & CLUTTER_BUTTON2_MASK)
- mods[i++] = "btn2";
- if (state & CLUTTER_BUTTON3_MASK)
- mods[i++] = "btn3";
- if (state & CLUTTER_BUTTON4_MASK)
- mods[i++] = "btn4";
- if (state & CLUTTER_BUTTON5_MASK)
- mods[i++] = "btn5";
- if (state & CLUTTER_SUPER_MASK)
- mods[i++] = "super";
- if (state & CLUTTER_HYPER_MASK)
- mods[i++] = "hyper";
- if (state & CLUTTER_META_MASK)
- mods[i++] = "meta";
- if (state & CLUTTER_RELEASE_MASK)
- mods[i++] = "release";
-
- if (i == 0)
- mods[i++] = "-";
-
- mods[i] = NULL;
- return g_strjoinv (",", (char **) mods);
-}
-
-static void
-stage_state_cb (ClutterStage *stage,
- gpointer data)
-{
- gchar *detail = (gchar*)data;
-
- printf("[stage signal] %s\n", detail);
-}
-
-static gboolean
-red_button_cb (ClutterActor *actor,
- ClutterEvent *event,
- gpointer data)
-{
- ClutterActor *stage;
-
- if (IsMotion)
- IsMotion = FALSE;
- else
- IsMotion = TRUE;
-
- stage = clutter_actor_get_stage (actor);
- clutter_stage_set_motion_events_enabled (CLUTTER_STAGE (stage),
- IsMotion);
-
- g_print ("*** Per actor motion events %s ***\n",
- IsMotion ? "enabled" : "disabled");
-
- return FALSE;
-}
-
-static gboolean
-capture_cb (ClutterActor *actor,
- ClutterEvent *event,
- gpointer data)
-{
- g_print ("* captured event '%s' for type '%s' *\n",
- get_event_type_name (event),
- G_OBJECT_TYPE_NAME (actor));
-
- return FALSE;
-}
-
-static void
-key_focus_in_cb (ClutterActor *actor,
- gpointer data)
-{
- ClutterActor *focus_box = CLUTTER_ACTOR (data);
-
- if (CLUTTER_IS_STAGE (actor))
- clutter_actor_hide (focus_box);
- else
- {
- clutter_actor_set_position (focus_box,
- clutter_actor_get_x (actor) - 5,
- clutter_actor_get_y (actor) - 5);
-
- clutter_actor_set_size (focus_box,
- clutter_actor_get_width (actor) + 10,
- clutter_actor_get_height (actor) + 10);
- clutter_actor_show (focus_box);
- }
-}
-
-static void
-fill_keybuf (char *keybuf, ClutterKeyEvent *event)
-{
- char utf8[6];
- int len;
-
- /* printable character, if any (ß, ∑) */
- len = g_unichar_to_utf8 (event->unicode_value, utf8);
- utf8[len] = '\0';
- sprintf (keybuf, "'%s' ", utf8);
-
- /* key combination (<Mod1>s, <Shift><Mod1>S, <Ctrl><Mod1>Delete) */
- len = g_unichar_to_utf8 (clutter_keysym_to_unicode (event->keyval), utf8);
- utf8[len] = '\0';
-
- if (event->modifier_state & CLUTTER_SHIFT_MASK)
- strcat (keybuf, "<Shift>");
-
- if (event->modifier_state & CLUTTER_LOCK_MASK)
- strcat (keybuf, "<Lock>");
-
- if (event->modifier_state & CLUTTER_CONTROL_MASK)
- strcat (keybuf, "<Control>");
-
- if (event->modifier_state & CLUTTER_MOD1_MASK)
- strcat (keybuf, "<Mod1>");
-
- if (event->modifier_state & CLUTTER_MOD2_MASK)
- strcat (keybuf, "<Mod2>");
-
- if (event->modifier_state & CLUTTER_MOD3_MASK)
- strcat (keybuf, "<Mod3>");
-
- if (event->modifier_state & CLUTTER_MOD4_MASK)
- strcat (keybuf, "<Mod4>");
-
- if (event->modifier_state & CLUTTER_MOD5_MASK)
- strcat (keybuf, "<Mod5>");
-
- strcat (keybuf, utf8);
-}
-
-static gboolean
-input_cb (ClutterActor *actor,
- ClutterEvent *event,
- gpointer data)
-{
- ClutterActor *stage = clutter_actor_get_stage (actor);
- ClutterActor *source_actor = clutter_event_get_source (event);
- ClutterPoint position;
- gchar *state;
- gchar keybuf[128];
- gint device_id;
- gint source_device_id = 0;
-
- device_id = clutter_event_get_device_id (event);
- if (clutter_event_get_source_device (event) != NULL)
- source_device_id = clutter_input_device_get_device_id (clutter_event_get_source_device (event));
-
- state = get_event_state_string (event);
-
- switch (event->type)
- {
- case CLUTTER_KEY_PRESS:
- fill_keybuf (keybuf, &event->key);
- printf ("[%s] KEY PRESS %s",
- clutter_actor_get_name (source_actor),
- keybuf);
- break;
- case CLUTTER_KEY_RELEASE:
- fill_keybuf (keybuf, &event->key);
- printf ("[%s] KEY RELEASE %s",
- clutter_actor_get_name (source_actor),
- keybuf);
- break;
- case CLUTTER_MOTION:
- clutter_event_get_position (event, &position);
- g_print ("[%s] MOTION (coords:%.02f,%.02f device:%d/%d state:%s)",
- clutter_actor_get_name (source_actor), position.x, position.y,
- device_id, source_device_id, state);
- break;
- case CLUTTER_ENTER:
- g_print ("[%s] ENTER (from:%s device:%d/%d state:%s)",
- clutter_actor_get_name (source_actor),
- clutter_event_get_related (event) != NULL
- ? clutter_actor_get_name (clutter_event_get_related (event))
- : "<out of stage>",
- device_id, source_device_id, state);
- break;
- case CLUTTER_LEAVE:
- g_print ("[%s] LEAVE (to:%s device:%d/%d state:%s)",
- clutter_actor_get_name (source_actor),
- clutter_event_get_related (event) != NULL
- ? clutter_actor_get_name (clutter_event_get_related (event))
- : "<out of stage>",
- device_id, source_device_id, state);
- break;
- case CLUTTER_BUTTON_PRESS:
- clutter_event_get_position (event, &position);
- g_print ("[%s] BUTTON PRESS (button:%i, click count:%i coords:%.02f,%.02f device:%d/%d, state:%s)",
- clutter_actor_get_name (source_actor),
- clutter_event_get_button (event),
- clutter_event_get_click_count (event),
- position.x, position.y,
- device_id, source_device_id, state);
- break;
- case CLUTTER_BUTTON_RELEASE:
- clutter_event_get_position (event, &position);
- g_print ("[%s] BUTTON RELEASE (button:%i, click count:%i coords:%.02f,%.02f device:%d/%d state:%s)",
- clutter_actor_get_name (source_actor),
- clutter_event_get_button (event),
- clutter_event_get_click_count (event),
- position.x, position.y,
- device_id, source_device_id, state);
-
- if (source_actor == stage)
- clutter_stage_set_key_focus (CLUTTER_STAGE (stage), NULL);
- else if (source_actor == actor &&
- clutter_actor_get_parent (actor) == stage)
- clutter_stage_set_key_focus (CLUTTER_STAGE (stage), actor);
- break;
- case CLUTTER_TOUCH_BEGIN:
- clutter_event_get_position (event, &position);
- g_print ("[%s] TOUCH BEGIN (seq:%p coords:%.02f,%.02f device:%d/%d state:%s)",
- clutter_actor_get_name (source_actor),
- clutter_event_get_event_sequence (event),
- position.x, position.y,
- device_id, source_device_id, state);
- break;
- case CLUTTER_TOUCH_UPDATE:
- clutter_event_get_position (event, &position);
- g_print ("[%s] TOUCH UPDATE (seq:%p coords:%.02f,%.02f device:%d/%d state:%s)",
- clutter_actor_get_name (source_actor),
- clutter_event_get_event_sequence (event),
- position.x, position.y,
- device_id, source_device_id, state);
- break;
- case CLUTTER_TOUCH_END:
- clutter_event_get_position (event, &position);
- g_print ("[%s] TOUCH END (seq:%p coords:%.02f,%.02f device:%d/%d state:%s)",
- clutter_actor_get_name (source_actor),
- clutter_event_get_event_sequence (event),
- position.x, position.y,
- device_id, source_device_id, state);
- break;
- case CLUTTER_TOUCH_CANCEL:
- clutter_event_get_position (event, &position);
- g_print ("[%s] TOUCH CANCEL (seq:%p coords:%.02f,%.02f device:%d/%d state:%s)",
- clutter_actor_get_name (source_actor),
- clutter_event_get_event_sequence (event),
- position.x, position.y,
- device_id, source_device_id, state);
- break;
- case CLUTTER_SCROLL:
- {
- ClutterScrollDirection dir = clutter_event_get_scroll_direction (event);
-
- if (dir == CLUTTER_SCROLL_SMOOTH)
- {
- gdouble dx, dy;
- clutter_event_get_scroll_delta (event, &dx, &dy);
- g_print ("[%s] BUTTON SCROLL (direction:smooth %.02f,%.02f state:%s)",
- clutter_actor_get_name (source_actor), dx, dy, state);
- }
- else
- g_print ("[%s] BUTTON SCROLL (direction:%s state:%s)",
- clutter_actor_get_name (source_actor),
- dir == CLUTTER_SCROLL_UP ? "up" :
- dir == CLUTTER_SCROLL_DOWN ? "down" :
- dir == CLUTTER_SCROLL_LEFT ? "left" :
- dir == CLUTTER_SCROLL_RIGHT ? "right" : "?",
- state);
- }
- break;
- case CLUTTER_STAGE_STATE:
- g_print ("[%s] STAGE STATE", clutter_actor_get_name (source_actor));
- break;
- case CLUTTER_DESTROY_NOTIFY:
- g_print ("[%s] DESTROY NOTIFY", clutter_actor_get_name (source_actor));
- break;
- case CLUTTER_CLIENT_MESSAGE:
- g_print ("[%s] CLIENT MESSAGE", clutter_actor_get_name (source_actor));
- break;
- case CLUTTER_DELETE:
- g_print ("[%s] DELETE", clutter_actor_get_name (source_actor));
- break;
- case CLUTTER_TOUCHPAD_PINCH:
- g_print ("[%s] TOUCHPAD PINCH", clutter_actor_get_name (source_actor));
- break;
- case CLUTTER_TOUCHPAD_SWIPE:
- g_print ("[%s] TOUCHPAD SWIPE", clutter_actor_get_name (source_actor));
- break;
- case CLUTTER_PROXIMITY_IN:
- g_print ("[%s] PROXIMITY IN", clutter_actor_get_name (source_actor));
- break;
- case CLUTTER_PROXIMITY_OUT:
- g_print ("[%s] PROXIMITY OUT", clutter_actor_get_name (source_actor));
- break;
- case CLUTTER_PAD_BUTTON_PRESS:
- g_print ("[%s] PAD BUTTON PRESS", clutter_actor_get_name (source_actor));
- break;
- case CLUTTER_PAD_BUTTON_RELEASE:
- g_print ("[%s] PAD BUTTON RELEASE", clutter_actor_get_name (source_actor));
- break;
- case CLUTTER_PAD_STRIP:
- g_print ("[%s] PAD STRIP", clutter_actor_get_name (source_actor));
- break;
- case CLUTTER_PAD_RING:
- g_print ("[%s] PAD RING", clutter_actor_get_name (source_actor));
- break;
- case CLUTTER_NOTHING:
- default:
- return FALSE;
- }
-
- g_free (state);
-
- if (source_actor == actor)
- g_print (" *source*");
-
- g_print ("\n");
-
- return FALSE;
-}
-
-G_MODULE_EXPORT int
-test_events_main (int argc, char *argv[])
-{
- ClutterActor *stage, *actor, *focus_box, *group;
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- stage = clutter_stage_new ();
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Events");
- clutter_actor_set_name (stage, "Stage");
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
- g_signal_connect (stage, "event", G_CALLBACK (input_cb), (char *) "stage");
- g_signal_connect (stage, "activate",
- G_CALLBACK (stage_state_cb), (char *) "activate");
- g_signal_connect (stage, "deactivate",
- G_CALLBACK (stage_state_cb), (char *) "deactivate");
-
- focus_box = clutter_rectangle_new_with_color (CLUTTER_COLOR_Black);
- clutter_actor_set_name (focus_box, "Focus Box");
- clutter_container_add (CLUTTER_CONTAINER(stage), focus_box, NULL);
-
- actor = clutter_rectangle_new_with_color (CLUTTER_COLOR_Red);
- clutter_actor_set_name (actor, "Red Box");
- clutter_actor_set_size (actor, 100, 100);
- clutter_actor_set_position (actor, 100, 100);
- clutter_actor_set_reactive (actor, TRUE);
- clutter_container_add (CLUTTER_CONTAINER (stage), actor, NULL);
- g_signal_connect (actor, "event", G_CALLBACK (input_cb), (char *) "red box");
- g_signal_connect (actor, "key-focus-in", G_CALLBACK (key_focus_in_cb),
- focus_box);
- /* Toggle motion - enter/leave capture */
- g_signal_connect (actor, "button-press-event",
- G_CALLBACK (red_button_cb), NULL);
-
- clutter_stage_set_key_focus (CLUTTER_STAGE (stage), actor);
-
- actor = clutter_rectangle_new_with_color (CLUTTER_COLOR_Green);
- clutter_actor_set_name (actor, "Green Box");
- clutter_actor_set_size (actor, 100, 100);
- clutter_actor_set_position (actor, 250, 100);
- clutter_actor_set_reactive (actor, TRUE);
- clutter_container_add (CLUTTER_CONTAINER (stage), actor, NULL);
- g_signal_connect (actor, "event", G_CALLBACK (input_cb), (char *) "green box");
- g_signal_connect (actor, "key-focus-in", G_CALLBACK (key_focus_in_cb),
- focus_box);
- g_signal_connect (actor, "captured-event", G_CALLBACK (capture_cb), NULL);
-
- /* non reactive */
- actor = clutter_rectangle_new_with_color (CLUTTER_COLOR_Black);
- clutter_actor_set_name (actor, "Black Box");
- clutter_actor_set_size (actor, 400, 50);
- clutter_actor_set_position (actor, 100, 250);
- clutter_container_add (CLUTTER_CONTAINER(stage), actor, NULL);
- g_signal_connect (actor, "event", G_CALLBACK (input_cb), (char *) "blue box");
- g_signal_connect (actor, "key-focus-in", G_CALLBACK (key_focus_in_cb),
- focus_box);
- g_signal_connect (stage, "key-focus-in", G_CALLBACK (key_focus_in_cb),
- focus_box);
-
- /* non reactive group, with reactive child */
- actor = clutter_rectangle_new_with_color (CLUTTER_COLOR_Yellow);
- clutter_actor_set_name (actor, "Yellow Box");
- clutter_actor_set_size (actor, 100, 100);
- clutter_actor_set_reactive (actor, TRUE);
-
- g_signal_connect (actor, "event", G_CALLBACK (input_cb), (char *) "yellow box");
-
- /* note group not reactive */
- group = clutter_group_new ();
- clutter_container_add (CLUTTER_CONTAINER (group), actor, NULL);
- clutter_container_add (CLUTTER_CONTAINER (stage), group, NULL);
- clutter_actor_set_position (group, 100, 350);
- clutter_actor_show_all (group);
-
- /* border actor */
- actor = clutter_rectangle_new_with_color (CLUTTER_COLOR_Magenta);
- clutter_actor_set_name (actor, "Border Box");
- clutter_actor_set_size (actor, 100, 100);
- clutter_actor_set_position (actor,
- (clutter_actor_get_width (stage) - 100) / 2,
- clutter_actor_get_height (stage) - 100);
- clutter_actor_set_reactive (actor, TRUE);
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), actor);
- g_signal_connect (actor, "event", G_CALLBACK (input_cb), NULL);
-
- clutter_actor_show_all (CLUTTER_ACTOR (stage));
-
- clutter_main();
-
- return 0;
-}
-
-G_MODULE_EXPORT const char *
-test_events_describe (void)
-{
- return "Event handling and propagation.";
-}
diff --git a/clutter/tests/interactive/test-fbo.c b/clutter/tests/interactive/test-fbo.c
deleted file mode 100644
index 9ba22c79b..000000000
--- a/clutter/tests/interactive/test-fbo.c
+++ /dev/null
@@ -1,111 +0,0 @@
-#include <clutter/clutter.h>
-
-#include <errno.h>
-#include <stdlib.h>
-#include <glib.h>
-#include <gmodule.h>
-
-#define STAGE_WIDTH 800
-#define STAGE_HEIGHT 600
-
-int
-test_fbo_main (int argc, char *argv[]);
-
-const char *
-test_fbo_describe (void);
-
-static ClutterActor *
-make_source (void)
-{
- ClutterActor *source, *actor;
- GError *error = NULL;
- gchar *file;
-
- ClutterColor yellow = {0xff, 0xff, 0x00, 0xff};
-
- source = clutter_group_new ();
-
- file = g_build_filename (TESTS_DATADIR, "redhand.png", NULL);
- actor = clutter_texture_new_from_file (file, &error);
- if (!actor)
- g_error("pixbuf load failed: %s", error ? error->message : "Unknown");
-
- g_free (file);
-
- clutter_container_add_actor (CLUTTER_CONTAINER (source), actor);
-
- actor = clutter_text_new_with_text ("Sans Bold 50px", "Clutter");
-
- clutter_text_set_color (CLUTTER_TEXT (actor), &yellow);
- clutter_actor_set_y (actor, clutter_actor_get_height(source) + 5);
- clutter_container_add_actor (CLUTTER_CONTAINER (source), actor);
-
- return source;
-}
-
-G_MODULE_EXPORT int
-test_fbo_main (int argc, char *argv[])
-{
- ClutterActor *fbo;
- ClutterActor *onscreen_source;
- ClutterActor *stage;
- ClutterAnimation *animation;
- int x_pos = 200;
- int y_pos = 100;
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- if (clutter_feature_available (CLUTTER_FEATURE_OFFSCREEN) == FALSE)
- g_error("This test requires CLUTTER_FEATURE_OFFSCREEN");
-
- stage = clutter_stage_new ();
- clutter_actor_set_size (stage, STAGE_WIDTH, STAGE_HEIGHT);
- clutter_actor_set_background_color (stage, CLUTTER_COLOR_SkyBlue);
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Texture from Actor");
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- /* Create the first source */
- onscreen_source = make_source();
- clutter_actor_show_all (onscreen_source);
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), onscreen_source);
-
- y_pos = (STAGE_HEIGHT/2.0) -
- (clutter_actor_get_height (onscreen_source)/2.0);
- clutter_actor_set_position (onscreen_source, x_pos, y_pos);
- x_pos += clutter_actor_get_width (onscreen_source);
-
- animation = clutter_actor_animate (onscreen_source,
- CLUTTER_LINEAR,
- 5000, /* 1 second duration */
- "rotation-angle-y", 360.0f,
- NULL);
- clutter_animation_set_loop (animation, TRUE);
-
- /* Second hand = actor from onscreen_source */
- if ((fbo = clutter_texture_new_from_actor (onscreen_source)) == NULL)
- g_error("onscreen fbo creation failed");
-
- clutter_actor_set_position (fbo, x_pos, y_pos);
- x_pos += clutter_actor_get_width (fbo);
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), fbo);
-
- /* Third hand = actor from Second hand */
- if ((fbo = clutter_texture_new_from_actor (fbo)) == NULL)
- g_error("fbo from fbo creation failed");
-
- clutter_actor_set_position (fbo, x_pos, y_pos);
- x_pos += clutter_actor_get_width (fbo);
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), fbo);
-
- clutter_actor_show_all (stage);
- clutter_main ();
-
- return 0;
-}
-
-G_MODULE_EXPORT const char *
-test_fbo_describe (void)
-{
- return "Create a texture from an actor.";
-}
diff --git a/clutter/tests/interactive/test-grab.c b/clutter/tests/interactive/test-grab.c
deleted file mode 100644
index cb48fe6cf..000000000
--- a/clutter/tests/interactive/test-grab.c
+++ /dev/null
@@ -1,302 +0,0 @@
-#include <gmodule.h>
-#include <clutter/clutter.h>
-
-int
-test_grab_main (int argc, char *argv[]);
-
-const char *
-test_grab_describe (void);
-
-static void
-stage_state_cb (ClutterStage *stage,
- gpointer data)
-{
- gchar *detail = (gchar*)data;
-
- printf("[stage signal] %s\n", detail);
-}
-
-static gboolean
-debug_event_cb (ClutterActor *actor,
- ClutterEvent *event,
- gpointer data)
-{
- gchar keybuf[9], *source = (gchar*)data;
- int len = 0;
-
- switch (event->type)
- {
- case CLUTTER_KEY_PRESS:
- len = g_unichar_to_utf8 (clutter_keysym_to_unicode (event->key.keyval),
- keybuf);
- keybuf[len] = '\0';
- printf ("[%s] KEY PRESS '%s'", source, keybuf);
- break;
- case CLUTTER_KEY_RELEASE:
- len = g_unichar_to_utf8 (clutter_keysym_to_unicode (event->key.keyval),
- keybuf);
- keybuf[len] = '\0';
- printf ("[%s] KEY RELEASE '%s'", source, keybuf);
- break;
- case CLUTTER_MOTION:
- printf("[%s] MOTION", source);
- break;
- case CLUTTER_ENTER:
- printf("[%s] ENTER", source);
- break;
- case CLUTTER_LEAVE:
- printf("[%s] LEAVE", source);
- break;
- case CLUTTER_BUTTON_PRESS:
- printf("[%s] BUTTON PRESS (click count:%i)",
- source, event->button.click_count);
- break;
- case CLUTTER_BUTTON_RELEASE:
- printf("[%s] BUTTON RELEASE", source);
- break;
- case CLUTTER_SCROLL:
- printf("[%s] BUTTON SCROLL", source);
- break;
- case CLUTTER_STAGE_STATE:
- printf("[%s] STAGE STATE", source);
- break;
- case CLUTTER_DESTROY_NOTIFY:
- printf("[%s] DESTROY NOTIFY", source);
- break;
- case CLUTTER_CLIENT_MESSAGE:
- printf("[%s] CLIENT MESSAGE\n", source);
- break;
- case CLUTTER_DELETE:
- printf("[%s] DELETE", source);
- break;
- case CLUTTER_TOUCH_BEGIN:
- g_print ("[%s] TOUCH BEGIN", source);
- break;
- case CLUTTER_TOUCH_UPDATE:
- g_print ("[%s] TOUCH UPDATE", source);
- break;
- case CLUTTER_TOUCH_END:
- g_print ("[%s] TOUCH END", source);
- break;
- case CLUTTER_TOUCH_CANCEL:
- g_print ("[%s] TOUCH CANCEL", source);
- break;
- case CLUTTER_TOUCHPAD_PINCH:
- g_print ("[%s] TOUCHPAD PINCH", source);
- break;
- case CLUTTER_TOUCHPAD_SWIPE:
- g_print ("[%s] TOUCHPAD SWIPE", source);
- break;
- case CLUTTER_PROXIMITY_IN:
- g_print ("[%s] PROXIMITY IN", source);
- break;
- case CLUTTER_PROXIMITY_OUT:
- g_print ("[%s] PROXIMITY OUT", source);
- break;
- case CLUTTER_PAD_BUTTON_PRESS:
- g_print ("[%s] PAD BUTTON PRESS", source);
- break;
- case CLUTTER_PAD_BUTTON_RELEASE:
- g_print ("[%s] PAD BUTTON RELEASE", source);
- break;
- case CLUTTER_PAD_STRIP:
- g_print ("[%s] PAD STRIP", source);
- break;
- case CLUTTER_PAD_RING:
- g_print ("[%s] PAD RING", source);
- break;
- case CLUTTER_NOTHING:
- default:
- return FALSE;
- }
-
- if (clutter_event_get_source (event) == actor)
- printf(" *source*");
-
- printf("\n");
-
- return FALSE;
-}
-
-static gboolean
-grab_pointer_cb (ClutterActor *actor,
- ClutterEvent *event,
- gpointer data)
-{
- ClutterInputDevice *device = clutter_event_get_device (event);
-
- clutter_input_device_grab (device, actor);
- return FALSE;
-}
-
-static gboolean
-red_release_cb (ClutterActor *actor,
- ClutterEvent *event,
- gpointer data)
-{
- ClutterInputDevice *device = clutter_event_get_device (event);
-
- clutter_input_device_ungrab (device);
- return FALSE;
-}
-
-static gboolean
-blue_release_cb (ClutterActor *actor,
- ClutterEvent *event,
- gpointer data)
-{
- clutter_actor_destroy (actor);
- return FALSE;
-}
-
-static gboolean
-green_press_cb (ClutterActor *actor,
- ClutterEvent *event,
- gpointer data)
-{
- ClutterActor *stage;
- gboolean enabled;
-
- stage = clutter_actor_get_stage (actor);
- enabled = !clutter_stage_get_motion_events_enabled (CLUTTER_STAGE (stage));
-
- clutter_stage_set_motion_events_enabled (CLUTTER_STAGE (stage), enabled);
-
- g_print ("per actor motion events are now %s\n",
- enabled ? "enabled" : "disabled");
-
- return FALSE;
-}
-
-static gboolean
-toggle_grab_pointer_cb (ClutterActor *actor,
- ClutterEvent *event,
- gpointer data)
-{
- ClutterInputDevice *device = clutter_event_get_device (event);
-
- /* we only deal with the event if the source is ourself */
- if (event->button.source == actor)
- {
- if (clutter_input_device_get_grabbed_actor (device) != NULL)
- clutter_input_device_ungrab (device);
- else
- clutter_input_device_grab (device, actor);
- }
-
- return FALSE;
-}
-
-static gboolean
-cyan_press_cb (ClutterActor *actor,
- ClutterEvent *event,
- gpointer data)
-{
- ClutterDeviceManager *dm = clutter_device_manager_get_default ();
- ClutterInputDevice *device =
- clutter_device_manager_get_core_device (dm, CLUTTER_KEYBOARD_DEVICE);
-
- if (clutter_input_device_get_grabbed_actor (device) != NULL)
- clutter_input_device_ungrab (device);
- else
- clutter_input_device_grab (device, actor);
-
- return FALSE;
-}
-
-
-
-G_MODULE_EXPORT int
-test_grab_main (int argc, char *argv[])
-{
- ClutterActor *stage, *actor;
- ClutterColor rcol = { 0xff, 0, 0, 0xff},
- bcol = { 0, 0, 0xff, 0xff },
- gcol = { 0, 0xff, 0, 0xff },
- ccol = { 0, 0xff, 0xff, 0xff },
- ycol = { 0xff, 0xff, 0, 0xff };
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- g_print ("Red box: aquire grab on press, releases it on next button release\n");
- g_print ("Blue box: aquire grab on press, destroys the blue box actor on release\n");
- g_print ("Yellow box: aquire grab on press, releases grab on next press on yellow box\n");
- g_print ("Green box: toggle per actor motion events.\n\n");
- g_print ("Cyan box: toggle grab (from cyan box) for keyboard events.\n\n");
-
- stage = clutter_stage_new ();
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Grabs");
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
- g_signal_connect (stage, "event",
- G_CALLBACK (debug_event_cb), (char *) "stage");
- g_signal_connect (stage, "activate",
- G_CALLBACK (stage_state_cb), (char *) "activate");
- g_signal_connect (stage, "deactivate",
- G_CALLBACK (stage_state_cb), (char *) "deactivate");
-
- actor = clutter_rectangle_new_with_color (&rcol);
- clutter_actor_set_size (actor, 100, 100);
- clutter_actor_set_position (actor, 100, 100);
- clutter_actor_set_reactive (actor, TRUE);
- clutter_container_add (CLUTTER_CONTAINER (stage), actor, NULL);
- g_signal_connect (actor, "event", G_CALLBACK (debug_event_cb), (char *) "red box");
- g_signal_connect (actor, "button-press-event",
- G_CALLBACK (grab_pointer_cb), NULL);
- g_signal_connect (actor, "button-release-event",
- G_CALLBACK (red_release_cb), NULL);
-
- actor = clutter_rectangle_new_with_color (&ycol);
- clutter_actor_set_size (actor, 100, 100);
- clutter_actor_set_position (actor, 100, 300);
- clutter_actor_set_reactive (actor, TRUE);
- clutter_container_add (CLUTTER_CONTAINER (stage), actor, NULL);
- g_signal_connect (actor, "event", G_CALLBACK (debug_event_cb), (char *) "yellow box");
- g_signal_connect (actor, "button-press-event",
- G_CALLBACK (toggle_grab_pointer_cb), NULL);
-
- actor = clutter_rectangle_new_with_color (&bcol);
- clutter_actor_set_size (actor, 100, 100);
- clutter_actor_set_position (actor, 300, 100);
- clutter_actor_set_reactive (actor, TRUE);
- clutter_container_add (CLUTTER_CONTAINER (stage), actor, NULL);
- g_signal_connect (actor, "event",
- G_CALLBACK (debug_event_cb), (char *) "blue box");
- g_signal_connect (actor, "button-press-event",
- G_CALLBACK (grab_pointer_cb), NULL);
- g_signal_connect (actor, "button-release-event",
- G_CALLBACK (blue_release_cb), NULL);
-
- actor = clutter_rectangle_new_with_color (&gcol);
- clutter_actor_set_size (actor, 100, 100);
- clutter_actor_set_position (actor, 300, 300);
- clutter_actor_set_reactive (actor, TRUE);
- clutter_container_add (CLUTTER_CONTAINER (stage), actor, NULL);
- g_signal_connect (actor, "event",
- G_CALLBACK (debug_event_cb), (char *) "green box");
- g_signal_connect (actor, "button-press-event",
- G_CALLBACK (green_press_cb), NULL);
-
-
- actor = clutter_rectangle_new_with_color (&ccol);
- clutter_actor_set_size (actor, 100, 100);
- clutter_actor_set_position (actor, 500, 100);
- clutter_actor_set_reactive (actor, TRUE);
- clutter_container_add (CLUTTER_CONTAINER (stage), actor, NULL);
- g_signal_connect (actor, "event",
- G_CALLBACK (debug_event_cb), (char *) "cyan box");
- g_signal_connect (actor, "button-press-event",
- G_CALLBACK (cyan_press_cb), NULL);
-
- clutter_actor_show_all (CLUTTER_ACTOR (stage));
-
- clutter_main();
-
- return 0;
-}
-
-G_MODULE_EXPORT const char *
-test_grab_describe (void)
-{
- return "Examples of using actor grabs";
-}
diff --git a/clutter/tests/interactive/test-image.c b/clutter/tests/interactive/test-image.c
deleted file mode 100644
index a3dc28c26..000000000
--- a/clutter/tests/interactive/test-image.c
+++ /dev/null
@@ -1,259 +0,0 @@
-#include <stdlib.h>
-#include <gmodule.h>
-#include <gdk-pixbuf/gdk-pixbuf.h>
-#include <clutter/clutter.h>
-
-typedef struct _SolidContent {
- GObject parent_instance;
-
- double red;
- double green;
- double blue;
- double alpha;
-
- float padding;
-} SolidContent;
-
-typedef struct _SolidContentClass {
- GObjectClass parent_class;
-} SolidContentClass;
-
-static void clutter_content_iface_init (ClutterContentInterface *iface);
-
-GType solid_content_get_type (void);
-
-const char *
-test_image_describe (void);
-
-int
-test_image_main (int argc, char *argv[]);
-
-G_DEFINE_TYPE_WITH_CODE (SolidContent, solid_content, G_TYPE_OBJECT,
- G_IMPLEMENT_INTERFACE (CLUTTER_TYPE_CONTENT,
- clutter_content_iface_init))
-
-static void
-solid_content_paint_content (ClutterContent *content,
- ClutterActor *actor,
- ClutterPaintNode *root)
-{
- SolidContent *self = (SolidContent *) content;
- ClutterActorBox box, content_box;
- ClutterColor color;
- PangoLayout *layout;
- PangoRectangle logical;
- ClutterPaintNode *node;
-
-#if 0
- g_debug ("Painting content [%p] "
- "{ r:%.2f, g:%.2f, b:%.2f, a:%.2f } "
- "for actor [%p] (context: [%p])",
- content,
- self->red,
- self->green,
- self->blue,
- self->alpha,
- actor, context);
-#endif
-
- clutter_actor_get_content_box (actor, &content_box);
-
- box = content_box;
- box.x1 += self->padding;
- box.y1 += self->padding;
- box.x2 -= self->padding;
- box.y2 -= self->padding;
-
- color.alpha = self->alpha * 255;
-
- color.red = self->red * 255;
- color.green = self->green * 255;
- color.blue = self->blue * 255;
-
- node = clutter_color_node_new (&color);
- clutter_paint_node_add_rectangle (node, &box);
- clutter_paint_node_add_child (root, node);
- clutter_paint_node_unref (node);
-
- color.red = (1.0 - self->red) * 255;
- color.green = (1.0 - self->green) * 255;
- color.blue = (1.0 - self->blue) * 255;
-
- layout = clutter_actor_create_pango_layout (actor, "A");
- pango_layout_get_pixel_extents (layout, NULL, &logical);
-
- node = clutter_text_node_new (layout, &color);
-
- /* top-left */
- box.x1 = clutter_actor_box_get_x (&content_box);
- box.y1 = clutter_actor_box_get_y (&content_box);
- box.x2 = box.x1 + logical.width;
- box.y2 = box.y1 + logical.height;
- clutter_paint_node_add_rectangle (node, &box);
-
- /* top-right */
- box.x1 = clutter_actor_box_get_x (&content_box)
- + clutter_actor_box_get_width (&content_box)
- - logical.width;
- box.y1 = clutter_actor_box_get_y (&content_box);
- box.x2 = box.x1 + logical.width;
- box.y2 = box.y1 + logical.height;
- clutter_paint_node_add_rectangle (node, &box);
-
- /* bottom-right */
- box.x1 = clutter_actor_box_get_x (&content_box)
- + clutter_actor_box_get_width (&content_box)
- - logical.width;
- box.y1 = clutter_actor_box_get_y (&content_box)
- + clutter_actor_box_get_height (&content_box)
- - logical.height;
- box.x2 = box.x1 + logical.width;
- box.y2 = box.y1 + logical.height;
- clutter_paint_node_add_rectangle (node, &box);
-
- /* bottom-left */
- box.x1 = clutter_actor_box_get_x (&content_box);
- box.y1 = clutter_actor_box_get_y (&content_box)
- + clutter_actor_box_get_height (&content_box)
- - logical.height;
- box.x2 = box.x1 + logical.width;
- box.y2 = box.y1 + logical.height;
- clutter_paint_node_add_rectangle (node, &box);
-
- /* center */
- box.x1 = clutter_actor_box_get_x (&content_box)
- + (clutter_actor_box_get_width (&content_box) - logical.width) / 2.0;
- box.y1 = clutter_actor_box_get_y (&content_box)
- + (clutter_actor_box_get_height (&content_box) - logical.height) / 2.0;
- box.x2 = box.x1 + logical.width;
- box.y2 = box.y1 + logical.height;
- clutter_paint_node_add_rectangle (node, &box);
-
- clutter_paint_node_add_child (root, node);
- clutter_paint_node_unref (node);
-
- g_object_unref (layout);
-}
-
-static void
-clutter_content_iface_init (ClutterContentInterface *iface)
-{
- iface->paint_content = solid_content_paint_content;
-}
-
-static void
-solid_content_class_init (SolidContentClass *klass)
-{
-}
-
-static void
-solid_content_init (SolidContent *self)
-{
-}
-
-static ClutterContent *
-solid_content_new (double red,
- double green,
- double blue,
- double alpha,
- float padding)
-{
- SolidContent *self = g_object_new (solid_content_get_type (), NULL);
-
- self->red = red;
- self->green = green;
- self->blue = blue;
- self->alpha = alpha;
- self->padding = padding;
-
- return (ClutterContent *) self;
-}
-
-G_MODULE_EXPORT const char *
-test_image_describe (void)
-{
- return "A test with image content.";
-}
-
-G_MODULE_EXPORT int
-test_image_main (int argc, char *argv[])
-{
- ClutterActor *stage, *grid;
- ClutterContent *color, *image;
- GdkPixbuf *pixbuf;
- int i, n_rects;
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return EXIT_FAILURE;
-
- stage = clutter_stage_new ();
- clutter_actor_set_name (stage, "Stage");
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Content");
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
- clutter_actor_show (stage);
-
- grid = clutter_actor_new ();
- clutter_actor_set_name (grid, "Grid");
- clutter_actor_set_margin_top (grid, 12);
- clutter_actor_set_margin_right (grid, 12);
- clutter_actor_set_margin_bottom (grid, 12);
- clutter_actor_set_margin_left (grid, 12);
- clutter_actor_set_layout_manager (grid, clutter_flow_layout_new (CLUTTER_FLOW_HORIZONTAL));
- clutter_actor_add_constraint (grid, clutter_bind_constraint_new (stage, CLUTTER_BIND_SIZE, 0.0));
- clutter_actor_add_child (stage, grid);
-
- color = solid_content_new (g_random_double_range (0.0, 1.0),
- g_random_double_range (0.0, 1.0),
- g_random_double_range (0.0, 1.0),
- 1.0,
- 2.0);
-
- pixbuf = gdk_pixbuf_new_from_file (TESTS_DATADIR G_DIR_SEPARATOR_S "redhand.png", NULL);
- image = clutter_image_new ();
- clutter_image_set_data (CLUTTER_IMAGE (image),
- gdk_pixbuf_get_pixels (pixbuf),
- gdk_pixbuf_get_has_alpha (pixbuf)
- ? COGL_PIXEL_FORMAT_RGBA_8888
- : COGL_PIXEL_FORMAT_RGB_888,
- gdk_pixbuf_get_width (pixbuf),
- gdk_pixbuf_get_height (pixbuf),
- gdk_pixbuf_get_rowstride (pixbuf),
- NULL);
- g_object_unref (pixbuf);
-
- n_rects = g_random_int_range (12, 24);
- for (i = 0; i < n_rects; i++)
- {
- ClutterActor *box = clutter_actor_new ();
- ClutterColor bg_color = {
- g_random_int_range (0, 255),
- g_random_int_range (0, 255),
- g_random_int_range (0, 255),
- 255
- };
- char *name, *str;
-
- str = clutter_color_to_string (&bg_color);
- name = g_strconcat ("Box <", color, ">", NULL);
- clutter_actor_set_name (box, name);
-
- g_free (name);
- g_free (str);
-
- if ((i % 2) == 0)
- clutter_actor_set_content (box, color);
- else
- clutter_actor_set_content (box, image);
-
- clutter_actor_set_size (box, 64, 64);
-
- clutter_actor_add_child (grid, box);
- }
-
- clutter_main ();
-
- g_object_unref (color);
- g_object_unref (image);
-
- return EXIT_SUCCESS;
-}
diff --git a/clutter/tests/interactive/test-keyframe-transition.c b/clutter/tests/interactive/test-keyframe-transition.c
deleted file mode 100644
index ec5d0c5b5..000000000
--- a/clutter/tests/interactive/test-keyframe-transition.c
+++ /dev/null
@@ -1,114 +0,0 @@
-#include <stdlib.h>
-#include <gmodule.h>
-#include <clutter/clutter.h>
-
-static const ClutterColor colors[] = {
- { 255, 0, 0, 255 },
- { 0, 255, 0, 255 },
- { 0, 0, 255, 255 },
-};
-
-#define PADDING (64.0f)
-#define SIZE (64.0f)
-
-const char *
-test_keyframe_transition_describe (void);
-
-int
-test_keyframe_transition_main (int argc, char *argv[]);
-
-static void
-on_transition_stopped (ClutterActor *actor,
- const gchar *transition_name,
- gboolean is_finished)
-{
- g_print ("%s: transition stopped: %s (finished: %s)\n",
- clutter_actor_get_name (actor),
- transition_name,
- is_finished ? "yes" : "no");
-}
-
-G_MODULE_EXPORT const char *
-test_keyframe_transition_describe (void)
-{
- return "Demonstrate the keyframe transition.";
-}
-
-G_MODULE_EXPORT int
-test_keyframe_transition_main (int argc, char *argv[])
-{
- ClutterActor *stage;
- int i;
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return EXIT_FAILURE;
-
- stage = clutter_stage_new ();
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Keyframe Transitions");
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- for (i = 0; i < 3; i++)
- {
- ClutterTransition *transition, *group;
- ClutterActor *rect;
- float cur_x, cur_y;
- float new_x, new_y;
- gchar *name;
-
- cur_x = PADDING;
- cur_y = PADDING + ((SIZE + PADDING) * i);
-
- new_x = clutter_actor_get_width (stage) - PADDING - SIZE;
- new_y = g_random_double_range (PADDING, clutter_actor_get_height (stage) - PADDING - SIZE);
-
- name = g_strdup_printf ("rect%02d", i);
-
- rect = clutter_actor_new ();
-
- clutter_actor_set_name (rect, name);
- clutter_actor_set_background_color (rect, &colors[i]);
- clutter_actor_set_size (rect, SIZE, SIZE);
- clutter_actor_set_position (rect, PADDING, cur_y);
- clutter_actor_add_child (stage, rect);
-
- group = clutter_transition_group_new ();
- clutter_timeline_set_duration (CLUTTER_TIMELINE (group), 2000);
- clutter_timeline_set_repeat_count (CLUTTER_TIMELINE (group), 1);
- clutter_timeline_set_auto_reverse (CLUTTER_TIMELINE (group), TRUE);
-
- transition = clutter_keyframe_transition_new ("x");
- clutter_transition_set_from (transition, G_TYPE_FLOAT, cur_x);
- clutter_transition_set_to (transition, G_TYPE_FLOAT, new_x);
-
- clutter_keyframe_transition_set (CLUTTER_KEYFRAME_TRANSITION (transition),
- G_TYPE_FLOAT, 1,
- 0.5, new_x / 2.0f, CLUTTER_EASE_OUT_EXPO);
- clutter_transition_group_add_transition (CLUTTER_TRANSITION_GROUP (group), transition);
- g_object_unref (transition);
-
- transition = clutter_keyframe_transition_new ("y");
- clutter_transition_set_from (transition, G_TYPE_FLOAT, cur_y);
- clutter_transition_set_to (transition, G_TYPE_FLOAT, cur_y);
-
- clutter_keyframe_transition_set (CLUTTER_KEYFRAME_TRANSITION (transition),
- G_TYPE_FLOAT, 1,
- 0.5, new_y, CLUTTER_EASE_OUT_EXPO);
- clutter_transition_group_add_transition (CLUTTER_TRANSITION_GROUP (group), transition);
- g_object_unref (transition);
-
- clutter_actor_add_transition (rect, "rectAnimation", group);
-
- g_signal_connect (rect, "transition-stopped",
- G_CALLBACK (on_transition_stopped),
- NULL);
- g_object_unref (group);
-
- g_free (name);
- }
-
- clutter_actor_show (stage);
-
- clutter_main ();
-
- return EXIT_SUCCESS;
-}
diff --git a/clutter/tests/interactive/test-layout.c b/clutter/tests/interactive/test-layout.c
deleted file mode 100644
index 7a5b3cf2e..000000000
--- a/clutter/tests/interactive/test-layout.c
+++ /dev/null
@@ -1,693 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <gmodule.h>
-#include <cogl/cogl.h>
-
-#include <clutter/clutter.h>
-
-/* layout actor, by Lucas Rocha */
-
-#define MY_TYPE_THING (my_thing_get_type ())
-#define MY_THING(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MY_TYPE_THING, MyThing))
-#define MY_IS_THING(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MY_TYPE_THING))
-#define MY_THING_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MY_TYPE_THING, MyThingClass))
-#define MY_IS_THING_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MY_TYPE_THING))
-#define MY_THING_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MY_TYPE_THING, MyThingClass))
-
-typedef struct _MyThing MyThing;
-typedef struct _MyThingPrivate MyThingPrivate;
-typedef struct _MyThingClass MyThingClass;
-
-struct _MyThing
-{
- ClutterActor parent_instance;
-
- MyThingPrivate *priv;
-};
-
-struct _MyThingClass
-{
- ClutterActorClass parent_class;
-};
-
-enum
-{
- PROP_0,
-
- PROP_SPACING,
- PROP_PADDING,
- PROP_USE_TRANSFORMED_BOX
-};
-
-struct _MyThingPrivate
-{
- gfloat spacing;
- gfloat padding;
-
- guint use_transformed_box : 1;
-};
-
-GType my_thing_get_type (void);
-
-int
-test_layout_main (int argc, char *argv[]);
-
-const char *
-test_layout_describe (void);
-
-G_DEFINE_TYPE_WITH_PRIVATE (MyThing, my_thing, CLUTTER_TYPE_ACTOR)
-
-#define MY_THING_GET_PRIVATE(obj) \
-(G_TYPE_INSTANCE_GET_PRIVATE ((obj), MY_TYPE_THING, MyThingPrivate))
-
-static void
-my_thing_set_property (GObject *gobject,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- MyThingPrivate *priv = MY_THING (gobject)->priv;
- gboolean needs_relayout = TRUE;
-
- switch (prop_id)
- {
- case PROP_SPACING:
- priv->spacing = g_value_get_float (value);
- break;
-
- case PROP_PADDING:
- priv->padding = g_value_get_float (value);
- break;
-
- case PROP_USE_TRANSFORMED_BOX:
- priv->use_transformed_box = g_value_get_boolean (value);
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
- needs_relayout = FALSE;
- break;
- }
-
- /* setting spacing or padding queues a relayout
- because they are supposed to change the internal
- allocation of children */
- if (needs_relayout)
- clutter_actor_queue_relayout (CLUTTER_ACTOR (gobject));
-}
-
-static void
-my_thing_get_property (GObject *gobject,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- MyThingPrivate *priv = MY_THING (gobject)->priv;
-
- switch (prop_id)
- {
- case PROP_SPACING:
- g_value_set_float (value, priv->spacing);
- break;
-
- case PROP_PADDING:
- g_value_set_float (value, priv->padding);
- break;
-
- case PROP_USE_TRANSFORMED_BOX:
- g_value_set_boolean (value, priv->use_transformed_box);
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
- break;
- }
-}
-
-static void
-my_thing_get_preferred_width (ClutterActor *self,
- gfloat for_height,
- gfloat *min_width_p,
- gfloat *natural_width_p)
-{
- ClutterActorIter iter;
- ClutterActor *child;
- gfloat min_left, min_right;
- gfloat natural_left, natural_right;
-
- min_left = 0;
- min_right = 0;
- natural_left = 0;
- natural_right = 0;
-
- clutter_actor_iter_init (&iter, self);
- while (clutter_actor_iter_next (&iter, &child))
- {
- gfloat child_x, child_min, child_natural;
-
- child_x = clutter_actor_get_x (child);
-
- clutter_actor_get_preferred_size (child,
- &child_min, NULL,
- &child_natural, NULL);
-
- if (child == clutter_actor_get_first_child (self))
- {
- /* First child */
- min_left = child_x;
- natural_left = child_x;
- min_right = min_left + child_min;
- natural_right = natural_left + child_natural;
- }
- else
- {
- /* Union of extents with previous children */
- if (child_x < min_left)
- min_left = child_x;
-
- if (child_x < natural_left)
- natural_left = child_x;
-
- if (child_x + child_min > min_right)
- min_right = child_x + child_min;
-
- if (child_x + child_natural > natural_right)
- natural_right = child_x + child_natural;
- }
- }
-
- if (min_left < 0)
- min_left = 0;
-
- if (natural_left < 0)
- natural_left = 0;
-
- if (min_right < 0)
- min_right = 0;
-
- if (natural_right < 0)
- natural_right = 0;
-
- g_assert (min_right >= min_left);
- g_assert (natural_right >= natural_left);
-
- if (min_width_p)
- *min_width_p = min_right - min_left;
-
- if (natural_width_p)
- *natural_width_p = natural_right - min_left;
-}
-
-static void
-my_thing_get_preferred_height (ClutterActor *self,
- gfloat for_width,
- gfloat *min_height_p,
- gfloat *natural_height_p)
-{
- ClutterActorIter iter;
- ClutterActor *child;
- gfloat min_top, min_bottom;
- gfloat natural_top, natural_bottom;
-
- min_top = 0;
- min_bottom = 0;
- natural_top = 0;
- natural_bottom = 0;
-
- clutter_actor_iter_init (&iter, self);
- while (clutter_actor_iter_next (&iter, &child))
- {
- gfloat child_y, child_min, child_natural;
-
- child_y = clutter_actor_get_y (child);
-
- clutter_actor_get_preferred_size (child,
- NULL, &child_min,
- NULL, &child_natural);
-
- if (child == clutter_actor_get_first_child (self))
- {
- /* First child */
- min_top = child_y;
- natural_top = child_y;
- min_bottom = min_top + child_min;
- natural_bottom = natural_top + child_natural;
- }
- else
- {
- /* Union of extents with previous children */
- if (child_y < min_top)
- min_top = child_y;
-
- if (child_y < natural_top)
- natural_top = child_y;
-
- if (child_y + child_min > min_bottom)
- min_bottom = child_y + child_min;
-
- if (child_y + child_natural > natural_bottom)
- natural_bottom = child_y + child_natural;
- }
- }
-
- if (min_top < 0)
- min_top = 0;
-
- if (natural_top < 0)
- natural_top = 0;
-
- if (min_bottom < 0)
- min_bottom = 0;
-
- if (natural_bottom < 0)
- natural_bottom = 0;
-
- g_assert (min_bottom >= min_top);
- g_assert (natural_bottom >= natural_top);
-
- if (min_height_p)
- *min_height_p = min_bottom - min_top;
-
- if (natural_height_p)
- *natural_height_p = natural_bottom - min_top;
-}
-
-static void
-my_thing_allocate (ClutterActor *self,
- const ClutterActorBox *box,
- ClutterAllocationFlags flags)
-{
- MyThingPrivate *priv;
- gfloat current_x, current_y, max_row_height;
- ClutterActorIter iter;
- ClutterActor *child;
-
- clutter_actor_set_allocation (self, box, flags);
-
- priv = MY_THING (self)->priv;
-
- current_x = priv->padding;
- current_y = priv->padding;
- max_row_height = 0;
-
- /* The allocation logic here is to horizontally place children
- * side-by-side and reflow into a new row when we run out of
- * space
- */
- clutter_actor_iter_init (&iter, self);
- while (clutter_actor_iter_next (&iter, &child))
- {
- gfloat natural_width, natural_height;
- ClutterActorBox child_box;
-
- clutter_actor_get_preferred_size (child,
- NULL, NULL,
- &natural_width,
- &natural_height);
-
- /* if it fits in the current row, keep it there; otherwise
- * reflow into another row
- */
- if (current_x + natural_width > box->x2 - box->x1 - priv->padding)
- {
- current_x = priv->padding;
- current_y += max_row_height + priv->spacing;
- max_row_height = 0;
- }
-
- child_box.x1 = current_x;
- child_box.y1 = current_y;
- child_box.x2 = child_box.x1 + natural_width;
- child_box.y2 = child_box.y1 + natural_height;
-
- clutter_actor_allocate (child, &child_box, flags);
-
- /* if we take into account the transformation of the children
- * then we first check if it's transformed; then we get the
- * onscreen coordinates of the two points of the bounding box
- * of the actor (origin(x, y) and (origin + size)(x,y)) and
- * we update the coordinates and area given to the next child
- */
- if (priv->use_transformed_box)
- {
- if (clutter_actor_is_scaled (child) ||
- clutter_actor_is_rotated (child))
- {
- ClutterVertex v1 = { 0, }, v2 = { 0, };
- ClutterActorBox transformed_box = { 0, };
-
- /* origin */
- if (!(flags & CLUTTER_ABSOLUTE_ORIGIN_CHANGED))
- {
- v1.x = 0;
- v1.y = 0;
- }
- else
- {
- v1.x = box->x1;
- v1.y = box->y1;
- }
-
- clutter_actor_apply_transform_to_point (child, &v1, &v2);
- transformed_box.x1 = v2.x;
- transformed_box.y1 = v2.y;
-
- /* size */
- v1.x = natural_width;
- v1.y = natural_height;
- clutter_actor_apply_transform_to_point (child, &v1, &v2);
- transformed_box.x2 = v2.x;
- transformed_box.y2 = v2.y;
-
- natural_width = transformed_box.x2 - transformed_box.x1;
- natural_height = transformed_box.y2 - transformed_box.y1;
- }
- }
-
- /* Record the maximum child height on current row to know
- * what's the increment that should be used for the next
- * row
- */
- if (natural_height > max_row_height)
- max_row_height = natural_height;
-
- current_x += natural_width + priv->spacing;
- }
-}
-
-#define MIN_SIZE 24
-#define MAX_SIZE 64
-
-static void
-my_thing_class_init (MyThingClass *klass)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
- ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
-
- gobject_class->set_property = my_thing_set_property;
- gobject_class->get_property = my_thing_get_property;
-
- actor_class->get_preferred_width = my_thing_get_preferred_width;
- actor_class->get_preferred_height = my_thing_get_preferred_height;
- actor_class->allocate = my_thing_allocate;
-
- g_object_class_install_property (gobject_class,
- PROP_SPACING,
- g_param_spec_float ("spacing",
- "Spacing",
- "Spacing of the thing",
- 0, G_MAXFLOAT,
- 0,
- G_PARAM_READWRITE));
-
- g_object_class_install_property (gobject_class,
- PROP_PADDING,
- g_param_spec_float ("padding",
- "Padding",
- "Padding around the thing",
- 0, G_MAXFLOAT,
- 0,
- G_PARAM_READWRITE));
-
- g_object_class_install_property (gobject_class,
- PROP_USE_TRANSFORMED_BOX,
- g_param_spec_boolean ("use-transformed-box",
- "Use Transformed Box",
- "Use transformed box when allocating",
- FALSE,
- G_PARAM_READWRITE));
-}
-
-static void
-my_thing_init (MyThing *thing)
-{
- thing->priv = MY_THING_GET_PRIVATE (thing);
-}
-
-static ClutterActor *
-my_thing_new (gfloat padding,
- gfloat spacing)
-{
- return g_object_new (MY_TYPE_THING,
- "padding", padding,
- "spacing", spacing,
- NULL);
-}
-
-/* test code */
-
-static ClutterActor *box = NULL;
-static ClutterActor *icon = NULL;
-static ClutterTimeline *main_timeline = NULL;
-
-static void
-toggle_property_value (ClutterActor *actor,
- const gchar *property_name)
-{
- gboolean value;
-
- g_object_get (actor, property_name, &value, NULL);
-
- value = !value;
-
- g_object_set (box, property_name, value, NULL);
-}
-
-static void
-increase_property_value (ClutterActor *actor,
- const char *property_name)
-{
- gfloat value;
-
- g_object_get (actor, property_name, &value, NULL);
-
- value = value + 10.0;
-
- g_object_set (box, property_name, value, NULL);
-}
-
-static void
-decrease_property_value (ClutterActor *actor,
- const char *property_name)
-{
- gfloat value;
-
- g_object_get (actor, property_name, &value, NULL);
-
- value = MAX (0, value - 10.0);
-
- g_object_set (box, property_name, value, NULL);
-}
-
-static ClutterActor *
-create_item (void)
-{
- ClutterActor *clone = clutter_clone_new (icon);
-
- gint32 size = g_random_int_range (MIN_SIZE, MAX_SIZE);
-
- clutter_actor_set_size (clone, size, size);
- clutter_actor_animate_with_timeline (clone, CLUTTER_EASE_OUT_CUBIC,
- main_timeline,
- "scale-x", 2.0,
- "scale-y", 2.0,
- "fixed::scale-gravity", CLUTTER_GRAVITY_CENTER,
- NULL);
-
- return clone;
-}
-
-static gboolean
-keypress_cb (ClutterActor *actor,
- ClutterEvent *event,
- gpointer data)
-{
- switch (clutter_event_get_key_symbol (event))
- {
- case CLUTTER_KEY_q:
- clutter_main_quit ();
- break;
-
- case CLUTTER_KEY_a:
- {
- if (icon != NULL)
- {
- ClutterActor *clone = create_item ();
-
- /* Add one item to container */
- clutter_actor_add_child (box, clone);
- }
- break;
- }
-
- case CLUTTER_KEY_d:
- {
- ClutterActor *last_child;
-
- last_child = clutter_actor_get_last_child (box);
- if (last_child != NULL)
- {
- /* Remove last item on container */
- clutter_actor_remove_child (box, last_child);
- }
- break;
- }
-
- case CLUTTER_KEY_w:
- {
- decrease_property_value (box, "padding");
- break;
- }
-
- case CLUTTER_KEY_e:
- {
- increase_property_value (box, "padding");
- break;
- }
-
- case CLUTTER_KEY_r:
- {
- decrease_property_value (box, "spacing");
- break;
- }
-
- case CLUTTER_KEY_s:
- {
- toggle_property_value (box, "use-transformed-box");
- break;
- }
-
- case CLUTTER_KEY_t:
- {
- increase_property_value (box, "spacing");
- break;
- }
-
- case CLUTTER_KEY_z:
- {
- if (clutter_timeline_is_playing (main_timeline))
- clutter_timeline_pause (main_timeline);
- else
- clutter_timeline_start (main_timeline);
-
- break;
- }
-
- default:
- break;
- }
-
- return FALSE;
-}
-
-static void
-relayout_on_frame (ClutterTimeline *timeline)
-{
- gboolean use_transformed_box;
-
- /* if we care about transformations updating the layout, we need to inform
- * the layout that a transformation is happening; this is either done by
- * attaching a notification on the transformation properties or by simply
- * queuing a relayout on each frame of the timeline used to drive the
- * behaviour. for simplicity's sake, we used the latter
- */
-
- g_object_get (G_OBJECT (box),
- "use-transformed-box", &use_transformed_box,
- NULL);
-
- if (use_transformed_box)
- clutter_actor_queue_relayout (box);
-}
-
-G_MODULE_EXPORT int
-test_layout_main (int argc, char *argv[])
-{
- ClutterActor *stage, *instructions;
- gint i, size;
- GError *error = NULL;
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- stage = clutter_stage_new ();
- clutter_actor_set_size (stage, 800, 600);
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Layout");
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- main_timeline = clutter_timeline_new (2000);
- clutter_timeline_set_repeat_count (main_timeline, -1);
- clutter_timeline_set_auto_reverse (main_timeline, TRUE);
- g_signal_connect (main_timeline, "new-frame",
- G_CALLBACK (relayout_on_frame),
- NULL);
-
-
- box = my_thing_new (10, 10);
-
- clutter_actor_set_position (box, 20, 20);
- clutter_actor_set_size (box, 350, -1);
-
- icon = clutter_texture_new_from_file (TESTS_DATADIR
- G_DIR_SEPARATOR_S
- "redhand.png",
- &error);
- if (error)
- g_error ("Unable to load 'redhand.png': %s", error->message);
-
- size = g_random_int_range (MIN_SIZE, MAX_SIZE);
- clutter_actor_set_size (icon, size, size);
- clutter_actor_add_child (box, icon);
- clutter_actor_animate_with_timeline (icon, CLUTTER_EASE_OUT_CUBIC,
- main_timeline,
- "scale-x", 2.0,
- "scale-y", 2.0,
- "fixed::scale-gravity", CLUTTER_GRAVITY_CENTER,
- NULL);
-
- for (i = 1; i < 33; i++)
- {
- ClutterActor *clone = create_item ();
-
- clutter_actor_add_child (box, clone);
- }
-
- clutter_actor_add_child (stage, box);
-
- instructions = clutter_text_new_with_text (NULL,
- "<b>Instructions:</b>\n"
- "a - add a new item\n"
- "d - remove last item\n"
- "z - start/pause behaviour\n"
- "w - decrease padding\n"
- "e - increase padding\n"
- "r - decrease spacing\n"
- "t - increase spacing\n"
- "s - use transformed box\n"
- "q - quit");
-
- clutter_text_set_use_markup (CLUTTER_TEXT (instructions), TRUE);
- clutter_actor_set_position (instructions, 450, 10);
- clutter_actor_add_child (stage, instructions);
-
- g_signal_connect (stage, "key-release-event",
- G_CALLBACK (keypress_cb),
- NULL);
-
- clutter_timeline_stop (main_timeline);
-
- clutter_actor_show (stage);
-
- clutter_main ();
-
- g_object_unref (main_timeline);
-
- return EXIT_SUCCESS;
-}
-
-G_MODULE_EXPORT const char *
-test_layout_describe (void)
-{
- return "Container implementing a layout policy.";
-}
diff --git a/clutter/tests/interactive/test-main.c b/clutter/tests/interactive/test-main.c
deleted file mode 100644
index 586d6dc70..000000000
--- a/clutter/tests/interactive/test-main.c
+++ /dev/null
@@ -1,221 +0,0 @@
-#include <stdlib.h>
-#include <string.h>
-#include <glib.h>
-#include <gmodule.h>
-
-#include "test-unit-names.h"
-
-#define MAX_DESC_SIZE 72
-
-static GModule *module = NULL;
-
-static gpointer
-get_symbol_with_suffix (const char *unit_name,
- const char *suffix)
-{
- char *main_symbol_name;
- gpointer func;
-
- main_symbol_name = g_strconcat (unit_name, "_", suffix, NULL);
- main_symbol_name = g_strdelimit (main_symbol_name, "-", '_');
-
- g_module_symbol (module, main_symbol_name, &func);
-
- g_free (main_symbol_name);
-
- return func;
-}
-
-static gpointer
-get_unit_name_main (const char *unit_name)
-{
- return get_symbol_with_suffix (unit_name, "main");
-}
-static char *
-get_unit_name_description (const char *unit_name,
- gssize max_len)
-{
- const char *description;
- gpointer func;
- char *retval;
-
- func = get_symbol_with_suffix (unit_name, "describe");
- if (func == NULL)
- description = "No description found";
- else
- {
- const char *(* unit_test_describe) (void);
-
- unit_test_describe = func;
-
- description = unit_test_describe ();
- }
-
- if (max_len > 0 && strlen (description) >= max_len)
- {
- GString *buf = g_string_sized_new (max_len);
- char *newline;
-
- newline = strchr (description, '\n');
- if (newline != NULL)
- {
- g_string_append_len (buf, description,
- MIN (newline - description - 1, max_len - 3));
- }
- else
- g_string_append_len (buf, description, max_len - 3);
-
- g_string_append (buf, "...");
-
- retval = g_string_free (buf, FALSE);
- }
- else
- retval = g_strdup (description);
-
- return retval;
-}
-
-static gboolean list_all = FALSE;
-static gboolean describe = FALSE;
-static char **unit_names = NULL;
-
-static GOptionEntry entries[] = {
- {
- "describe", 'd',
- 0,
- G_OPTION_ARG_NONE, &describe,
- "Describe the interactive unit test", NULL,
- },
- {
- "list-all", 'l',
- 0,
- G_OPTION_ARG_NONE, &list_all,
- "List all available units", NULL,
- },
- {
- G_OPTION_REMAINING, 0,
- 0,
- G_OPTION_ARG_STRING_ARRAY, &unit_names,
- "The interactive unit test", "UNIT_NAME"
- },
- { NULL }
-};
-
-int
-main (int argc, char **argv)
-{
- int ret, i, n_unit_names;
- GOptionContext *context;
-
- context = g_option_context_new (" - Interactive test suite");
- g_option_context_add_main_entries (context, entries, NULL);
- g_option_context_set_help_enabled (context, TRUE);
- g_option_context_set_ignore_unknown_options (context, TRUE);
- if (!g_option_context_parse (context, &argc, &argv, NULL))
- {
- g_print ("Usage: test-interactive <unit_test>\n");
- return EXIT_FAILURE;
- }
-
- g_option_context_free (context);
-
- module = g_module_open (NULL, 0);
- if (!module)
- g_error ("*** Failed to open self for symbol lookup");
-
- ret = EXIT_SUCCESS;
-
- if (list_all)
- {
- g_print ("* Available unit tests:\n");
-
- for (i = 0; i < G_N_ELEMENTS (test_unit_names); i++)
- {
- char *str;
- gsize len;
-
- len = MAX_DESC_SIZE - strlen (test_unit_names[i]);
- str = get_unit_name_description (test_unit_names[i], len - 2);
-
- g_print (" - %s:%*s%s\n",
- test_unit_names[i],
- (int) (len - strlen (str)), " ",
- str);
-
- g_free (str);
- }
-
- ret = EXIT_SUCCESS;
- goto out;
- }
-
- if (unit_names != NULL)
- n_unit_names = g_strv_length (unit_names);
- else
- {
- g_print ("Usage: test-interactive <unit_test>\n");
- ret = EXIT_FAILURE;
- goto out;
- }
-
- for (i = 0; i < n_unit_names; i++)
- {
- const char *unit_name = unit_names[i];
- char *unit_test = NULL;
- gboolean found;
- int j;
-
- unit_test = g_path_get_basename (unit_name);
-
- found = FALSE;
- for (j = 0; j < G_N_ELEMENTS (test_unit_names); j++)
- {
- if (strcmp (test_unit_names[j], unit_test) == 0)
- {
- found = TRUE;
- break;
- }
- }
-
- if (!found)
- g_error ("*** Unit '%s' does not exist", unit_test);
-
- if (describe)
- {
- char *str;
-
- str = get_unit_name_description (unit_test, -1);
-
- g_print ("* %s:\n%s\n\n", unit_test, str);
-
- g_free (str);
-
- ret = EXIT_SUCCESS;
- }
- else
- {
- int (* unit_test_main) (int argc, char **argv);
- gpointer func;
-
- func = get_unit_name_main (unit_test);
- if (func == NULL)
- g_error ("*** Unable to find the main entry point for '%s'", unit_test);
-
- unit_test_main = func;
-
- ret = unit_test_main (n_unit_names, unit_names);
-
- g_free (unit_test);
-
- break;
- }
-
- g_free (unit_test);
- }
-
-out:
- g_module_close (module);
-
- return ret;
-}
-
diff --git a/clutter/tests/interactive/test-paint-wrapper.c b/clutter/tests/interactive/test-paint-wrapper.c
deleted file mode 100644
index 8f905cd8b..000000000
--- a/clutter/tests/interactive/test-paint-wrapper.c
+++ /dev/null
@@ -1,376 +0,0 @@
-#include <gmodule.h>
-
-#include <clutter/clutter.h>
-
-#if defined (_MSC_VER) && !defined (_USE_MATH_DEFINES)
-#define _USE_MATH_DEFINES
-#endif
-
-#include <math.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <glib.h>
-
-#ifdef CLUTTER_WINDOWING_X11
-#include "clutter/x11/clutter-x11.h"
-#endif
-
-#define NHANDS 6
-
-typedef struct SuperOH
-{
- ClutterActor **hand, *bgtex;
- ClutterActor *real_hand;
- ClutterActor *group;
- ClutterActor *stage;
-
- gint stage_width;
- gint stage_height;
- gfloat radius;
-
- ClutterBehaviour *scaler_1;
- ClutterBehaviour *scaler_2;
- ClutterTimeline *timeline;
-
- guint frame_id;
-
- gboolean *paint_guards;
-} SuperOH;
-
-static gint n_hands = NHANDS;
-static gint use_alpha = 255;
-
-static GOptionEntry super_oh_entries[] = {
- {
- "num-hands", 'n',
- 0,
- G_OPTION_ARG_INT, &n_hands,
- "Number of hands", "HANDS"
- },
- {
- "use-alpha", 'a',
- 0,
- G_OPTION_ARG_INT, &use_alpha,
- "Stage opacity", "VALUE"
- },
- { NULL }
-};
-
-int
-test_paint_wrapper_main (int argc, char *argv[]);
-
-const char *
-test_paint_wrapper_describe (void);
-
-static gboolean
-on_button_press_event (ClutterActor *actor,
- ClutterEvent *event,
- SuperOH *oh)
-{
- gfloat x, y;
-
- clutter_event_get_coords (event, &x, &y);
-
- g_print ("*** button press event (button:%d) at %.2f, %.2f ***\n",
- clutter_event_get_button (event),
- x, y);
-
- clutter_actor_hide (actor);
-
- return TRUE;
-}
-
-static gboolean
-input_cb (ClutterActor *stage,
- ClutterEvent *event,
- gpointer data)
-{
- SuperOH *oh = data;
-
- if (event->type == CLUTTER_KEY_RELEASE)
- {
- g_print ("*** key press event (key:%c) ***\n",
- clutter_event_get_key_symbol (event));
-
- if (clutter_event_get_key_symbol (event) == CLUTTER_KEY_q)
- {
- clutter_main_quit ();
-
- return TRUE;
- }
- else if (clutter_event_get_key_symbol (event) == CLUTTER_KEY_r)
- {
- gint i;
-
- for (i = 0; i < n_hands; i++)
- clutter_actor_show (oh->hand[i]);
-
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-/* Timeline handler */
-static void
-frame_cb (ClutterTimeline *timeline,
- gint msecs,
- gpointer data)
-{
- SuperOH *oh = data;
- gint i;
- float rotation = clutter_timeline_get_progress (timeline) * 360.0f;
-
- /* Rotate everything clockwise about stage center*/
-
- clutter_actor_set_rotation (oh->group,
- CLUTTER_Z_AXIS,
- rotation,
- oh->stage_width / 2,
- oh->stage_height / 2,
- 0);
-
- for (i = 0; i < n_hands; i++)
- {
- /* Rotate each hand around there centers - to get this we need
- * to take into account any scaling.
- */
- clutter_actor_set_rotation (oh->hand[i],
- CLUTTER_Z_AXIS,
- -6.0 * rotation,
- 0, 0, 0);
- }
-}
-
-static gdouble
-my_sine_wave (ClutterAlpha *alpha,
- gpointer dummy G_GNUC_UNUSED)
-{
- ClutterTimeline *timeline = clutter_alpha_get_timeline (alpha);
- gdouble progress = clutter_timeline_get_progress (timeline);
-
- return sin (progress * G_PI);
-}
-
-static void
-hand_pre_paint (ClutterActor *actor,
- gpointer user_data)
-{
- SuperOH *oh = user_data;
- gfloat w, h;
- int actor_num;
-
- for (actor_num = 0; oh->hand[actor_num] != actor; actor_num++)
- ;
-
- g_assert (oh->paint_guards[actor_num] == FALSE);
-
- clutter_actor_get_size (actor, &w, &h);
-
- cogl_set_source_color4ub (255, 0, 0, 128);
- cogl_rectangle (0, 0, w / 2, h / 2);
-
- oh->paint_guards[actor_num] = TRUE;
-}
-
-static void
-hand_post_paint (ClutterActor *actor,
- gpointer user_data)
-{
- SuperOH *oh = user_data;
- gfloat w, h;
- int actor_num;
-
- for (actor_num = 0; oh->hand[actor_num] != actor; actor_num++)
- ;
-
- g_assert (oh->paint_guards[actor_num] == TRUE);
-
- clutter_actor_get_size (actor, &w, &h);
-
- cogl_set_source_color4ub (0, 255, 0, 128);
- cogl_rectangle (w / 2, h / 2, w, h);
-
- oh->paint_guards[actor_num] = FALSE;
-}
-
-static void
-stop_and_quit (ClutterActor *actor,
- SuperOH *oh)
-{
- g_signal_handler_disconnect (oh->timeline, oh->frame_id);
- clutter_timeline_stop (oh->timeline);
-
- clutter_main_quit ();
-}
-
-G_MODULE_EXPORT int
-test_paint_wrapper_main (int argc, char *argv[])
-{
- ClutterAlpha *alpha;
- ClutterActor *stage;
- ClutterColor stage_color = { 0x61, 0x64, 0x8c, 0xff };
- SuperOH *oh;
- gint i;
- GError *error;
- ClutterActor *real_hand;
-
- error = NULL;
-
-#ifdef CLUTTER_WINDOWING_X11
- clutter_x11_set_use_argb_visual (TRUE);
-#endif
-
- if (clutter_init_with_args (&argc, &argv,
- NULL,
- super_oh_entries,
- NULL,
- &error) != CLUTTER_INIT_SUCCESS)
- {
- g_warning ("Unable to initialise Clutter:\n%s",
- error->message);
- g_error_free (error);
-
- return EXIT_FAILURE;
- }
-
- oh = g_new(SuperOH, 1);
-
- stage = clutter_stage_new ();
- clutter_actor_set_size (stage, 800, 600);
-
- if (use_alpha != 255)
- {
- clutter_stage_set_use_alpha (CLUTTER_STAGE (stage), TRUE);
- clutter_actor_set_opacity (stage, use_alpha);
- }
-
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Paint Test");
- clutter_actor_set_background_color (stage, &stage_color);
- g_signal_connect (stage, "destroy", G_CALLBACK (stop_and_quit), oh);
-
- oh->stage = stage;
-
- /* Create a timeline to manage animation */
- oh->timeline = clutter_timeline_new (6000);
- clutter_timeline_set_repeat_count (oh->timeline, -1);
-
- /* fire a callback for frame change */
- oh->frame_id =
- g_signal_connect (oh->timeline, "new-frame", G_CALLBACK (frame_cb), oh);
-
- /* Set up some behaviours to handle scaling */
- alpha = clutter_alpha_new_with_func (oh->timeline, my_sine_wave, NULL, NULL);
-
- oh->scaler_1 = clutter_behaviour_scale_new (alpha, 0.5, 0.5, 1.0, 1.0);
- oh->scaler_2 = clutter_behaviour_scale_new (alpha, 1.0, 1.0, 0.5, 0.5);
-
- real_hand = clutter_texture_new_from_file (TESTS_DATADIR
- G_DIR_SEPARATOR_S
- "redhand.png",
- &error);
- if (real_hand == NULL)
- {
- g_error ("image load failed: %s", error->message);
- return EXIT_FAILURE;
- }
-
- /* create a new group to hold multiple actors in a group */
- oh->group = clutter_group_new();
-
- oh->hand = g_new (ClutterActor*, n_hands);
-
- oh->stage_width = clutter_actor_get_width (stage);
- oh->stage_height = clutter_actor_get_height (stage);
- oh->radius = (oh->stage_width + oh->stage_height)
- / n_hands;
-
- for (i = 0; i < n_hands; i++)
- {
- gint x, y, w, h;
-
- if (i == 0)
- oh->hand[i] = real_hand;
- else
- oh->hand[i] = clutter_clone_new (real_hand);
-
- clutter_actor_set_reactive (oh->hand[i], TRUE);
-
- clutter_actor_set_size (oh->hand[i], 200, 213);
-
- /* Place around a circle */
- w = clutter_actor_get_width (oh->hand[i]);
- h = clutter_actor_get_height (oh->hand[i]);
-
- x = oh->stage_width / 2
- + oh->radius
- * cos (i * G_PI / (n_hands / 2))
- - w / 2;
-
- y = oh->stage_height / 2
- + oh->radius
- * sin (i * G_PI / (n_hands / 2))
- - h / 2;
-
- clutter_actor_set_position (oh->hand[i], x, y);
-
- clutter_actor_move_anchor_point_from_gravity (oh->hand[i],
- CLUTTER_GRAVITY_CENTER);
-
- g_signal_connect (oh->hand[i], "button-press-event",
- G_CALLBACK (on_button_press_event),
- oh);
-
- /* paint something before each hand */
- g_signal_connect (oh->hand[i],
- "paint", G_CALLBACK (hand_pre_paint),
- oh);
-
- /* paint something after each hand */
- g_signal_connect_after (oh->hand[i],
- "paint", G_CALLBACK (hand_post_paint),
- oh);
-
- /* Add to our group group */
- clutter_container_add_actor (CLUTTER_CONTAINER (oh->group), oh->hand[i]);
-
- if (i % 2)
- clutter_behaviour_apply (oh->scaler_1, oh->hand[i]);
- else
- clutter_behaviour_apply (oh->scaler_2, oh->hand[i]);
- }
-
- oh->paint_guards = g_malloc0 (sizeof (gboolean) * n_hands);
-
- /* Add the group to the stage */
- clutter_container_add_actor (CLUTTER_CONTAINER (stage),
- CLUTTER_ACTOR (oh->group));
-
- /* Show everying ( and map window ) */
- clutter_actor_show (stage);
-
- g_signal_connect (stage, "key-release-event",
- G_CALLBACK (input_cb),
- oh);
-
- /* and start it */
- clutter_timeline_start (oh->timeline);
-
- clutter_main ();
-
- g_object_unref (oh->scaler_1);
- g_object_unref (oh->scaler_2);
- g_object_unref (oh->timeline);
- g_free (oh->paint_guards);
- g_free (oh->hand);
- g_free (oh);
-
- return 0;
-}
-
-G_MODULE_EXPORT const char *
-test_paint_wrapper_describe (void)
-{
- return "Wrap an actor's paint cycle for pre and post processing.";
-}
diff --git a/clutter/tests/interactive/test-path-constraint.c b/clutter/tests/interactive/test-path-constraint.c
deleted file mode 100644
index f802ed481..000000000
--- a/clutter/tests/interactive/test-path-constraint.c
+++ /dev/null
@@ -1,137 +0,0 @@
-#include <stdlib.h>
-#include <gmodule.h>
-#include <clutter/clutter.h>
-
-#define PATH_DESCRIPTION \
- "M 0, 0 " \
- "L 0, 300 " \
- "L 300, 300 " \
- "L 300, 0 " \
- "L 0, 0"
-
-static gboolean toggled = FALSE;
-
-int
-test_path_constraint_main (int argc,
- char *argv[]);
-
-static gboolean
-on_button_press (ClutterActor *actor,
- const ClutterEvent *event,
- gpointer dummy G_GNUC_UNUSED)
-{
- if (!toggled)
- clutter_actor_animate (actor, CLUTTER_EASE_OUT_CUBIC, 500,
- "@constraints.path.offset", 1.0,
- NULL);
- else
- clutter_actor_animate (actor, CLUTTER_EASE_OUT_CUBIC, 500,
- "@constraints.path.offset", 0.0,
- NULL);
-
- toggled = !toggled;
-
- return TRUE;
-}
-
-static gchar *
-node_to_string (const ClutterPathNode *node)
-{
- GString *buffer = g_string_sized_new (256);
- gsize len = 0, i;
-
- switch (node->type)
- {
- case CLUTTER_PATH_MOVE_TO:
- g_string_append (buffer, "move-to ");
- len = 1;
- break;
-
- case CLUTTER_PATH_LINE_TO:
- g_string_append (buffer, "line-to ");
- len = 1;
- break;
-
- case CLUTTER_PATH_CURVE_TO:
- g_string_append (buffer, "curve-to ");
- len = 3;
- break;
-
- case CLUTTER_PATH_CLOSE:
- g_string_append (buffer, "close");
- len = 0;
- break;
-
- default:
- break;
- }
-
- for (i = 0; i < len; i++)
- {
- if (i == 0)
- g_string_append (buffer, "[ ");
-
- g_string_append_printf (buffer, "[ %d, %d ]",
- node->points[i].x,
- node->points[i].y);
-
- if (i == len - 1)
- g_string_append (buffer, " ]");
- }
-
- return g_string_free (buffer, FALSE);
-}
-
-static void
-on_node_reached (ClutterPathConstraint *constraint,
- ClutterActor *actor,
- guint index_)
-{
- ClutterPath *path = clutter_path_constraint_get_path (constraint);
- ClutterPathNode node;
- gchar *str;
-
- clutter_path_get_node (path, index_, &node);
-
- str = node_to_string (&node);
- g_print ("Node %d reached: %s\n", index_, str);
- g_free (str);
-}
-
-G_MODULE_EXPORT int
-test_path_constraint_main (int argc,
- char *argv[])
-{
- ClutterActor *stage, *rect;
- ClutterPath *path;
- ClutterColor rect_color = { 0xcc, 0x00, 0x00, 0xff };
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- stage = clutter_stage_new ();
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Path Constraint");
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- path = clutter_path_new ();
- clutter_path_set_description (path, PATH_DESCRIPTION);
-
- rect = clutter_rectangle_new ();
- clutter_rectangle_set_color (CLUTTER_RECTANGLE (rect), &rect_color);
- clutter_actor_set_size (rect, 128, 128);
- clutter_actor_set_reactive (rect, TRUE);
- clutter_actor_add_constraint_with_name (rect, "path", clutter_path_constraint_new (path, 0.0));
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), rect);
-
- g_signal_connect (rect, "button-press-event", G_CALLBACK (on_button_press), NULL);
- g_signal_connect (clutter_actor_get_constraint (rect, "path"),
- "node-reached",
- G_CALLBACK (on_node_reached),
- NULL);
-
- clutter_actor_show (stage);
-
- clutter_main ();
-
- return EXIT_SUCCESS;
-}
diff --git a/clutter/tests/interactive/test-rotate-zoom.c b/clutter/tests/interactive/test-rotate-zoom.c
deleted file mode 100644
index 071e454b3..000000000
--- a/clutter/tests/interactive/test-rotate-zoom.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (C) 2013 Intel Corporation
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU Lesser General Public License,
- * version 2.1, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
- * more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
- * Boston, MA 02111-1307, USA.
- *
- */
-#include <stdlib.h>
-#include <math.h>
-#include <cairo.h>
-#include <glib.h>
-#include <clutter/clutter.h>
-#include <gdk-pixbuf/gdk-pixbuf.h>
-
-#define STAGE_WIDTH 800
-#define STAGE_HEIGHT 550
-
-int
-test_rotate_zoom_main (int argc, char *argv[]);
-
-const char *
-test_rotate_zoom_describe (void);
-
-static ClutterActor *
-create_hand (void)
-{
- GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file (TESTS_DATADIR G_DIR_SEPARATOR_S "redhand.png", NULL);
- ClutterContent *image = clutter_image_new ();
- ClutterActor *actor = clutter_actor_new ();
-
- clutter_image_set_data (CLUTTER_IMAGE (image),
- gdk_pixbuf_get_pixels (pixbuf),
- gdk_pixbuf_get_has_alpha (pixbuf)
- ? COGL_PIXEL_FORMAT_RGBA_8888
- : COGL_PIXEL_FORMAT_RGB_888,
- gdk_pixbuf_get_width (pixbuf),
- gdk_pixbuf_get_height (pixbuf),
- gdk_pixbuf_get_rowstride (pixbuf),
- NULL);
- clutter_actor_set_content (actor, image);
- clutter_actor_set_size (actor,
- gdk_pixbuf_get_width (pixbuf),
- gdk_pixbuf_get_height (pixbuf));
- clutter_actor_set_reactive (actor, TRUE);
-
- g_object_unref (pixbuf);
-
- return actor;
-}
-
-G_MODULE_EXPORT int
-test_rotate_zoom_main (int argc, char *argv[])
-{
- ClutterActor *stage, *actor;
- gfloat width, height;
-
- /* initialize Clutter */
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return EXIT_FAILURE;
-
- /* create a resizable stage */
- stage = clutter_stage_new ();
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Rotate and Zoom actions");
- clutter_actor_set_size (stage, STAGE_WIDTH, STAGE_HEIGHT);
- clutter_actor_set_reactive (stage, FALSE);
- clutter_actor_show (stage);
-
- actor = create_hand ();
- clutter_actor_add_action (actor, clutter_rotate_action_new ());
- clutter_actor_add_action (actor, clutter_zoom_action_new ());
- clutter_actor_add_child (stage, actor);
-
- clutter_actor_get_size (actor, &width, &height);
- clutter_actor_set_position (actor,
- STAGE_WIDTH / 2 - width / 2,
- STAGE_HEIGHT / 2 - height / 2);
-
- clutter_main ();
-
- return EXIT_SUCCESS;
-}
-
-G_MODULE_EXPORT const char *
-test_rotate_zoom_describe (void)
-{
- return "Rotates and zooms an actor using touch events";
-}
diff --git a/clutter/tests/interactive/test-scale.c b/clutter/tests/interactive/test-scale.c
deleted file mode 100644
index f885e9ccd..000000000
--- a/clutter/tests/interactive/test-scale.c
+++ /dev/null
@@ -1,125 +0,0 @@
-#include <stdlib.h>
-#include <gmodule.h>
-#include <clutter/clutter.h>
-
-static const ClutterGravity gravities[] = {
- CLUTTER_GRAVITY_NORTH_EAST,
- CLUTTER_GRAVITY_NORTH,
- CLUTTER_GRAVITY_NORTH_WEST,
- CLUTTER_GRAVITY_WEST,
- CLUTTER_GRAVITY_SOUTH_WEST,
- CLUTTER_GRAVITY_SOUTH,
- CLUTTER_GRAVITY_SOUTH_EAST,
- CLUTTER_GRAVITY_EAST,
- CLUTTER_GRAVITY_CENTER,
- CLUTTER_GRAVITY_NONE
-};
-
-static gint gindex = 0;
-static ClutterActor *label;
-
-int
-test_scale_main (int argc, char *argv[]);
-
-const char *
-test_scale_describe (void);
-
-static void
-set_next_gravity (ClutterActor *actor)
-{
- ClutterGravity gravity = gravities[gindex];
- GEnumClass *eclass;
- GEnumValue *evalue;
-
- clutter_actor_move_anchor_point_from_gravity (actor, gravities[gindex]);
-
- eclass = g_type_class_ref (CLUTTER_TYPE_GRAVITY);
- evalue = g_enum_get_value (eclass, gravity);
- clutter_text_set_text (CLUTTER_TEXT (label), evalue->value_nick);
- g_type_class_unref (eclass);
-
- if (++gindex >= G_N_ELEMENTS (gravities))
- gindex = 0;
-}
-
-static gdouble
-my_ramp_func (ClutterAlpha *alpha,
- gpointer unused)
-{
- ClutterTimeline *timeline = clutter_alpha_get_timeline (alpha);
-
- return clutter_timeline_get_progress (timeline);
-}
-
-G_MODULE_EXPORT int
-test_scale_main (int argc, char *argv[])
-{
- ClutterActor *stage, *rect;
- ClutterColor rect_color = { 0xff, 0xff, 0xff, 0x99 };
- ClutterTimeline *timeline;
- ClutterAlpha *alpha;
- ClutterBehaviour *behave;
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- stage = clutter_stage_new ();
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Scaling");
- clutter_actor_set_background_color (stage, CLUTTER_COLOR_Black);
- clutter_actor_set_size (stage, 300, 300);
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- rect = clutter_rectangle_new_with_color (&rect_color);
- clutter_actor_set_size (rect, 100, 100);
- clutter_actor_set_position (rect, 100, 100);
-
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), rect);
-
- label = clutter_text_new_with_text ("Sans 20px", "");
- clutter_text_set_color (CLUTTER_TEXT (label), CLUTTER_COLOR_White);
- clutter_actor_set_position (label,
- clutter_actor_get_x (rect),
- clutter_actor_get_y (rect)
- + clutter_actor_get_height (rect));
-
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), label);
-
- rect_color.alpha = 0xff;
- rect = clutter_rectangle_new_with_color (&rect_color);
- clutter_actor_set_position (rect, 100, 100);
- clutter_actor_set_size (rect, 100, 100);
- set_next_gravity (rect);
-
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), rect);
-
- timeline = clutter_timeline_new (750);
- alpha = clutter_alpha_new_with_func (timeline,
- my_ramp_func,
- NULL, NULL);
-
- behave = clutter_behaviour_scale_new (alpha,
- 0.0, 0.0, /* scale start */
- 1.0, 1.0); /* scale end */
-
- clutter_behaviour_apply (behave, rect);
-
- clutter_timeline_set_repeat_count (timeline, -1);
- g_signal_connect_swapped (timeline, "completed",
- G_CALLBACK (set_next_gravity), rect);
- clutter_timeline_start (timeline);
-
- clutter_actor_show_all (stage);
-
- clutter_main();
-
- g_object_unref (timeline);
- g_object_unref (behave);
-
- return EXIT_SUCCESS;
-}
-
-G_MODULE_EXPORT const char *
-test_scale_describe (void)
-{
- return "Scaling animation and scaling center changes";
-}
diff --git a/clutter/tests/interactive/test-script-signals.json b/clutter/tests/interactive/test-script-signals.json
deleted file mode 100644
index 0d3f6bd25..000000000
--- a/clutter/tests/interactive/test-script-signals.json
+++ /dev/null
@@ -1,68 +0,0 @@
-[
- {
- "id" : "button",
- "type" : "ClutterRectangle",
-
- "width" : "16 em",
- "height" : "6 em",
-
- "color" : "rgb(255, 0, 0)",
- "opacity" : 128,
-
- "scale-gravity" : "center",
-
- "reactive" : true,
-
- "signals" : [
- {
- "name" : "button-press-event",
- "handler" : "on_button_press"
- },
- { "name" : "enter-event", "states" : "button-states", "target-state" : "hover" },
- { "name" : "leave-event", "states" : "button-states", "target-state" : "base" },
- { "name" : "button-press-event", "states" : "button-states", "target-state" : "active" },
- { "name" : "button-release-event", "states" : "button-states", "target-state" : "hover" }
- ]
- },
-
- {
- "id" : "button-states",
- "type" : "ClutterState",
-
- "duration" : 250,
-
- "transitions" : [
- {
- "source" : null,
- "target" : "base",
-
- "keys" : [
- [ "button", "opacity", "linear", 128 ],
- [ "button", "scale-x", "ease-in-cubic", 1.0 ],
- [ "button", "scale-y", "ease-in-cubic", 1.0 ],
- [ "button", "color", "linear", "rgb(255, 0, 0)" ]
- ]
- },
- {
- "source" : null,
- "target" : "hover",
-
- "keys" : [
- [ "button", "opacity", "linear", 255 ],
- [ "button", "scale-x", "ease-out-bounce", 1.4 ],
- [ "button", "scale-y", "ease-out-bounce", 1.4 ],
- [ "button", "color", "linear", "rgb(0, 255, 0)" ]
- ]
- },
- {
- "source" : null,
- "target" : "active",
-
- "keys" : [
- [ "button", "opacity", "linear", 255 ],
- [ "button", "color", "linear", "rgb(0, 0, 255)" ]
- ]
- }
- ]
- }
-]
diff --git a/clutter/tests/interactive/test-script.c b/clutter/tests/interactive/test-script.c
deleted file mode 100644
index 66c716e43..000000000
--- a/clutter/tests/interactive/test-script.c
+++ /dev/null
@@ -1,188 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-
-#include <math.h>
-
-#include <glib.h>
-#include <gmodule.h>
-#include <clutter/clutter.h>
-
-static ClutterScript *script = NULL;
-static guint merge_id = 0;
-
-int
-test_script_main (int argc, char *argv[]);
-
-static const gchar *test_unmerge =
-"["
-" {"
-" \"id\" : \"main-stage\","
-" \"type\" : \"ClutterStage\","
-" \"children\" : [ \"blue-button\" ]"
-" },"
-" {"
-" \"id\" : \"blue-button\","
-" \"type\" : \"ClutterRectangle\","
-" \"color\" : \"#0000ffff\","
-" \"x\" : 350,"
-" \"y\" : 50,"
-" \"width\" : 100,"
-" \"height\" : 100,"
-" \"visible\" : true,"
-" \"reactive\" : true"
-" }"
-"]";
-
-static const gchar *test_behaviour =
-"["
-" {"
-" \"id\" : \"main-timeline\","
-" \"type\" : \"ClutterTimeline\","
-" \"duration\" : 5000,"
-" \"loop\" : true"
-" },"
-" {"
-" \"id\" : \"sine-alpha\","
-" \"type\" : \"ClutterAlpha\","
-" \"function\" : \"sine_alpha\","
-" \"timeline\" : \"main-timeline\""
-" },"
-" {"
-" \"id\" : \"path-behaviour\","
-" \"type\" : \"ClutterBehaviourPath\","
-" \"path\" : \"M 50 50 L 100 100\","
-" \"alpha\" : {"
-" \"timeline\" : \"main-timeline\","
-" \"function\" : \"double_ramp_alpha\""
-" }"
-" },"
-" {"
-" \"id\" : \"rotate-behaviour\","
-" \"type\" : \"ClutterBehaviourRotate\","
-" \"angle-start\" : 0.0,"
-" \"angle-end\" : 360.0,"
-" \"axis\" : \"y-axis\","
-" \"alpha\" : \"sine-alpha\""
-" },"
-" {"
-" \"id\" : \"fade-behaviour\","
-" \"type\" : \"ClutterBehaviourOpacity\","
-" \"opacity-start\" : 255,"
-" \"opacity-end\" : 0,"
-" \"alpha\" : {"
-" \"id\" : \"fade-alpha\","
-" \"type\" : \"ClutterAlpha\","
-" \"timeline\" : \"main-timeline\","
-" \"mode\" : \"linear\""
-" }"
-" }"
-"]";
-
-static gboolean
-blue_button_press (ClutterActor *actor,
- ClutterButtonEvent *event,
- gpointer data)
-{
- g_print ("[*] Pressed '%s'\n", clutter_get_script_id (G_OBJECT (actor)));
- g_print ("[*] Unmerging objects with merge id: %d\n", merge_id);
-
- clutter_script_unmerge_objects (script, merge_id);
-
- return TRUE;
-}
-
-static gboolean
-red_button_press (ClutterActor *actor,
- ClutterButtonEvent *event,
- gpointer data)
-{
- GObject *timeline;
-
- g_print ("[*] Pressed '%s'\n", clutter_get_script_id (G_OBJECT (actor)));
-
- timeline = clutter_script_get_object (script, "main-timeline");
- g_assert (CLUTTER_IS_TIMELINE (timeline));
-
- if (!clutter_timeline_is_playing (CLUTTER_TIMELINE (timeline)))
- clutter_timeline_start (CLUTTER_TIMELINE (timeline));
- else
- clutter_timeline_pause (CLUTTER_TIMELINE (timeline));
-
- return TRUE;
-}
-
-G_MODULE_EXPORT int
-test_script_main (int argc, char *argv[])
-{
- GObject *stage, *blue_button, *red_button;
- GError *error = NULL;
- gchar *file;
- gint res;
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- script = clutter_script_new ();
- g_assert (CLUTTER_IS_SCRIPT (script));
-
- clutter_script_load_from_data (script, test_behaviour, -1, &error);
- if (error)
- {
- g_print ("*** Error:\n"
- "*** %s\n", error->message);
- g_error_free (error);
- g_object_unref (script);
- return EXIT_FAILURE;
- }
-
- file = g_build_filename (TESTS_DATADIR, "test-script.json", NULL);
- clutter_script_load_from_file (script, file, &error);
- if (error)
- {
- g_print ("*** Error:\n"
- "*** %s\n", error->message);
- g_error_free (error);
- g_object_unref (script);
- g_free (file);
- return EXIT_FAILURE;
- }
-
- g_free (file);
-
- merge_id = clutter_script_load_from_data (script, test_unmerge, -1, &error);
- if (error)
- {
- g_print ("*** Error:\n"
- "*** %s\n", error->message);
- g_error_free (error);
- g_object_unref (script);
- return EXIT_FAILURE;
- }
-
- clutter_script_connect_signals (script, NULL);
-
- res = clutter_script_get_objects (script,
- "main-stage", &stage,
- "red-button", &red_button,
- "blue-button", &blue_button,
- NULL);
- g_assert (res == 3);
-
- clutter_actor_show (CLUTTER_ACTOR (stage));
-
- g_signal_connect (red_button,
- "button-press-event",
- G_CALLBACK (red_button_press),
- NULL);
-
- g_signal_connect (blue_button,
- "button-press-event",
- G_CALLBACK (blue_button_press),
- NULL);
-
- clutter_main ();
-
- g_object_unref (script);
-
- return EXIT_SUCCESS;
-}
diff --git a/clutter/tests/interactive/test-script.json b/clutter/tests/interactive/test-script.json
deleted file mode 100644
index 54d4fb457..000000000
--- a/clutter/tests/interactive/test-script.json
+++ /dev/null
@@ -1,74 +0,0 @@
-{
- "My Scene" : {
- "id" : "main-stage",
- "type" : "ClutterStage",
- "title" : { "translatable" : true, "string" : "ClutterScript test" },
- "color" : "white",
- "signals" : [
- { "name" : "key-press-event", "handler" : "clutter_main_quit" },
- { "name" : "destroy", "handler" : "clutter_main_quit" }
- ],
- "children" : [
- {
- "id" : "red-button",
- "type" : "ClutterRectangle",
- "color" : "#ff0000ff",
- "x" : 50, "y" : 50, "width" : 100, "height" : 100,
- "reactive" : true,
- "rotation" : [
- { "z-axis" : [ 45.0, [ 75, 75 ] ] }
- ],
- "behaviours" : [ "fade-behaviour", "path-behaviour" ]
- },
- {
- "id" : "green-button",
- "type" : "ClutterRectangle",
- "color" : "#00ff00ff",
- "border-width" : 5,
- "border-color" : "#00cc00ff",
- "position" : [ 200.0, 50.0 ],
- "size" : { "width" : 100.0, "height" : 100.0 },
- "depth" : -200.0,
- "reactive" : true,
- "signals" : [
- { "name" : "button-press-event", "handler" : "clutter_main_quit" }
- ]
- },
- {
- "id" : "red-hand",
- "type" : "ClutterTexture",
- "filename" : "redhand.png",
- "position" : { "x" : 100.0, "y" : 100.0 },
- "width" : "20 mm",
- "keep-aspect-ratio" : true,
- "anchor-x" : "5 em",
- "anchor-y" : "5 pt",
- "opacity" : 100,
- "behaviours" : [ "rotate-behaviour", "fade-behaviour" ]
- },
- {
- "id" : "red-hand-clone",
- "type" : "ClutterClone",
- "source" : "red-hand",
- "position" : [ 250.0, 150.0 ],
- "opacity" : 100
- },
- {
- "id" : "label",
- "type" : "ClutterText",
- "x" : 50,
- "y" : 200,
- "text" : { "translatable" : true, "string" : "Clutter Script" },
- "font-name" : "Sans 24px",
- "color" : "black",
- "line-alignment" : "center",
- "line-wrap" : false,
- "ellipsize" : "none",
- "rotation" : [
- { "y-axis" : [ 60.0, [ 275, 100 ] ] },
- { "z-axis" : [ 45.0, [ 75, 75 ] ] }
- ]
- }
- ]
- }
-}
diff --git a/clutter/tests/interactive/test-scrolling.c b/clutter/tests/interactive/test-scrolling.c
deleted file mode 100644
index d4137bf14..000000000
--- a/clutter/tests/interactive/test-scrolling.c
+++ /dev/null
@@ -1,137 +0,0 @@
-#include <stdlib.h>
-#include <math.h>
-#include <gmodule.h>
-#include <clutter/clutter.h>
-
-#define RECT_WIDTH 400
-#define RECT_HEIGHT 300
-#define N_RECTS 7
-
-static const gchar *rect_color[N_RECTS] = {
- "#edd400",
- "#f57900",
- "#c17d11",
- "#73d216",
- "#3465a4",
- "#75507b",
- "#cc0000"
-};
-
-static ClutterActor *rectangle[N_RECTS];
-static ClutterActor *viewport = NULL;
-
-int
-test_scrolling_main (int argc, char *argv[]);
-
-static void
-on_drag_end (ClutterDragAction *action,
- ClutterActor *actor,
- gfloat event_x,
- gfloat event_y,
- ClutterModifierType modifiers)
-{
- gfloat viewport_x = clutter_actor_get_x (viewport);
- gfloat offset_x;
- gint child_visible;
-
- /* check if we're at the viewport edges */
- if (viewport_x > 0)
- {
- clutter_actor_save_easing_state (viewport);
- clutter_actor_set_easing_mode (viewport, CLUTTER_EASE_OUT_BOUNCE);
- clutter_actor_set_x (viewport, 0);
- clutter_actor_restore_easing_state (viewport);
- return;
- }
-
- if (viewport_x < (-1.0f * (RECT_WIDTH * (N_RECTS - 1))))
- {
- clutter_actor_save_easing_state (viewport);
- clutter_actor_set_easing_mode (viewport, CLUTTER_EASE_OUT_BOUNCE);
- clutter_actor_set_x (viewport, -1.0f * (RECT_WIDTH * (N_RECTS - 1)));
- clutter_actor_restore_easing_state (viewport);
- return;
- }
-
- /* animate the viewport to fully show the child once we pass
- * a certain threshold with the dragging action
- */
- offset_x = fabsf (viewport_x) / RECT_WIDTH + 0.5f;
- if (offset_x > (RECT_WIDTH * 0.33))
- child_visible = (int) offset_x + 1;
- else
- child_visible = (int) offset_x;
-
- /* sanity check on the children number */
- child_visible = CLAMP (child_visible, 0, N_RECTS);
-
- clutter_actor_save_easing_state (viewport);
- clutter_actor_set_x (viewport, -1.0f * RECT_WIDTH * child_visible);
- clutter_actor_restore_easing_state (viewport);
-}
-
-G_MODULE_EXPORT int
-test_scrolling_main (int argc, char *argv[])
-{
- ClutterActor *stage;
- ClutterActor *scroll;
- ClutterAction *action;
- gint i;
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- stage = clutter_stage_new ();
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Scrolling");
- clutter_actor_set_size (stage, 800, 600);
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- /* scroll: the group that contains the scrolling viewport; we set its
- * size to be the same as one rectangle, position it in the middle of
- * the stage and set it to clip its contents to the allocated size
- */
- scroll = clutter_actor_new ();
- clutter_actor_add_child (stage, scroll);
- clutter_actor_set_size (scroll, RECT_WIDTH, RECT_HEIGHT);
- clutter_actor_add_constraint (scroll, clutter_align_constraint_new (stage, CLUTTER_ALIGN_BOTH, 0.5));
- clutter_actor_set_clip_to_allocation (scroll, TRUE);
-
- /* viewport: the actual container for the children; we scroll it using
- * the Drag action constrained to the horizontal axis, and every time
- * the dragging ends we check whether we're dragging past the end of
- * the viewport
- */
- viewport = clutter_actor_new ();
- clutter_actor_set_layout_manager (viewport, clutter_box_layout_new ());
- clutter_actor_add_child (scroll, viewport);
-
- /* add dragging capabilities to the viewport; the heavy lifting is
- * all done by the DragAction itself, plus the ::drag-end signal
- * handler in our code
- */
- action = clutter_drag_action_new ();
- clutter_actor_add_action (viewport, action);
- clutter_drag_action_set_drag_axis (CLUTTER_DRAG_ACTION (action),
- CLUTTER_DRAG_X_AXIS);
- g_signal_connect (action, "drag-end", G_CALLBACK (on_drag_end), NULL);
- clutter_actor_set_reactive (viewport, TRUE);
-
- /* children of the viewport */
- for (i = 0; i < N_RECTS; i++)
- {
- ClutterColor color;
-
- clutter_color_from_string (&color, rect_color[i]);
-
- rectangle[i] = clutter_actor_new ();
- clutter_actor_set_background_color (rectangle[i], &color);
- clutter_actor_add_child (viewport, rectangle[i]);
- clutter_actor_set_size (rectangle[i], RECT_WIDTH, RECT_HEIGHT);
- }
-
- clutter_actor_show (stage);
-
- clutter_main ();
-
- return EXIT_SUCCESS;
-}
diff --git a/clutter/tests/interactive/test-shader-effects.c b/clutter/tests/interactive/test-shader-effects.c
deleted file mode 100644
index a64a0ba29..000000000
--- a/clutter/tests/interactive/test-shader-effects.c
+++ /dev/null
@@ -1,86 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <glib.h>
-#include <gmodule.h>
-
-#include <clutter/clutter.h>
-
-int
-test_shader_effects_main (int argc, char *argv[]);
-
-G_MODULE_EXPORT int
-test_shader_effects_main (int argc, char *argv[])
-{
- ClutterTimeline *timeline;
- ClutterActor *stage, *hand, *label, *rect;
- gchar *file;
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- /* Make a timeline */
- timeline = clutter_timeline_new (7692);
- clutter_timeline_set_repeat_count (timeline, -1);
-
- stage = clutter_stage_new ();
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Rotations");
- clutter_actor_set_background_color (stage, CLUTTER_COLOR_Aluminium3);
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- /* Make a hand */
- file = g_build_filename (TESTS_DATADIR, "redhand.png", NULL);
- hand = clutter_texture_new_from_file (file, NULL);
- if (!hand)
- g_error("Unable to load '%s'", file);
-
- g_free (file);
-
- clutter_actor_set_position (hand, 326, 265);
- clutter_actor_add_effect_with_name (hand, "desaturate", clutter_desaturate_effect_new (0.75));
- clutter_actor_add_effect_with_name (hand, "blur", clutter_blur_effect_new ());
- clutter_actor_animate_with_timeline (hand, CLUTTER_LINEAR, timeline,
- "@effects.desaturate.factor", 1.0,
- "rotation-angle-z", 360.0,
- "fixed::anchor-x", 86.0,
- "fixed::anchor-y", 125.0,
- "opacity", 128,
- NULL);
-
- rect = clutter_rectangle_new_with_color (CLUTTER_COLOR_DarkOrange);
- clutter_actor_add_effect_with_name (rect, "blur", clutter_blur_effect_new ());
- clutter_actor_set_position (rect, 415, 215);
- clutter_actor_set_size (rect, 150, 150);
- clutter_actor_animate_with_timeline (rect, CLUTTER_LINEAR, timeline,
- "rotation-angle-z", 360.0,
- "fixed::anchor-x", 75.0,
- "fixed::anchor-y", 75.0,
- NULL);
-
- label = clutter_text_new_with_text ("Mono 16",
- "The Wonder\n"
- "of the\n"
- "Spinning Hand");
- clutter_text_set_line_alignment (CLUTTER_TEXT (label), PANGO_ALIGN_CENTER);
- clutter_actor_set_position (label, 336, 275);
- clutter_actor_set_size (label, 500, 100);
- clutter_actor_animate_with_timeline (label, CLUTTER_LINEAR, timeline,
- "rotation-angle-z", 360.0,
- "fixed::anchor-x", 86.0,
- "fixed::anchor-y", 125.0,
- NULL);
-
- clutter_container_add (CLUTTER_CONTAINER (stage), rect, hand, label, NULL);
-
- /* start the timeline and thus the animations */
- clutter_timeline_start (timeline);
-
- clutter_actor_show_all (stage);
-
- clutter_main();
-
- g_object_unref (timeline);
-
- return 0;
-}
diff --git a/clutter/tests/interactive/test-stage-read-pixels.c b/clutter/tests/interactive/test-stage-read-pixels.c
deleted file mode 100644
index c1ace8498..000000000
--- a/clutter/tests/interactive/test-stage-read-pixels.c
+++ /dev/null
@@ -1,174 +0,0 @@
-#include <gmodule.h>
-#include <clutter/clutter.h>
-#include <string.h>
-
-#define DOT_SIZE 2
-#define TEX_SIZE 64
-
-typedef struct _CallbackData CallbackData;
-
-struct _CallbackData
-{
- ClutterActor *stage;
- ClutterActor *tex;
- ClutterActor *box;
- ClutterMotionEvent event;
- guint idle_source;
-};
-
-int
-test_stage_read_pixels_main (int argc, char **argv);
-
-const char *
-test_stage_read_pixels_describe (void);
-
-static ClutterActor *
-make_label (void)
-{
- ClutterActor *label;
- gchar *text;
- const char *argv[] = { "ls", "--help", NULL };
-
- label = clutter_text_new ();
- clutter_text_set_font_name (CLUTTER_TEXT (label), "Sans 10");
-
- if (g_spawn_sync (NULL, (char **) argv, NULL,
- G_SPAWN_STDERR_TO_DEV_NULL | G_SPAWN_SEARCH_PATH,
- NULL, NULL, &text, NULL, NULL, NULL))
- {
- clutter_text_set_text (CLUTTER_TEXT (label), text);
- g_free (text);
- }
-
- return label;
-}
-
-static ClutterActor *
-make_tex (void)
-{
- ClutterActor *tex = clutter_texture_new ();
-
- clutter_actor_set_size (tex, TEX_SIZE * 2, TEX_SIZE * 2);
-
- return tex;
-}
-
-static ClutterActor *
-make_box (void)
-{
- ClutterActor *box;
- static const ClutterColor blue = { 0x00, 0x00, 0xff, 0xff };
-
- box = clutter_rectangle_new_with_color (&blue);
- clutter_actor_set_size (box, DOT_SIZE + 2, DOT_SIZE + 2);
- clutter_actor_hide (box);
-
- return box;
-}
-
-static gboolean
-on_motion_idle (gpointer user_data)
-{
- CallbackData *data = (CallbackData *) user_data;
- guchar *pixels, *p;
- gfloat stage_width, stage_height;
- gint x, y;
-
- data->idle_source = 0;
-
- clutter_actor_get_size (data->stage, &stage_width, &stage_height);
-
- x = CLAMP (data->event.x - TEX_SIZE / 2, 0, stage_width - TEX_SIZE);
- y = CLAMP (data->event.y - TEX_SIZE / 2, 0, stage_height - TEX_SIZE);
-
- clutter_actor_set_position (data->box,
- x + TEX_SIZE / 2 - 1,
- y + TEX_SIZE / 2 - 1);
- clutter_actor_show (data->box);
-
- /* Redraw so that the layouting will be done and the box will be
- drawn in the right position */
- clutter_stage_ensure_redraw (CLUTTER_STAGE (data->stage));
-
- pixels = clutter_stage_read_pixels (CLUTTER_STAGE (data->stage),
- x, y,
- TEX_SIZE, TEX_SIZE);
-
- /* Make a red dot in the center */
- p = pixels + (TEX_SIZE / 2 - DOT_SIZE / 2) * TEX_SIZE * 4
- + (TEX_SIZE / 2 - DOT_SIZE / 2) * 4;
- for (y = 0; y < DOT_SIZE; y++)
- {
- for (x = 0; x < DOT_SIZE; x++)
- {
- *(p++) = 255;
- memset (p, 0, 3);
- p += 3;
- }
- p += TEX_SIZE * 4 - DOT_SIZE * 4;
- }
-
- /* Set all of the alpa values to full */
- for (p = pixels + TEX_SIZE * TEX_SIZE * 4; p > pixels; p -= 4)
- *(p - 1) = 255;
-
- clutter_texture_set_from_rgb_data (CLUTTER_TEXTURE (data->tex),
- pixels, TRUE,
- TEX_SIZE, TEX_SIZE,
- TEX_SIZE * 4, 4, 0, NULL);
- g_free (pixels);
-
- return FALSE;
-}
-
-static gboolean
-on_motion (ClutterActor *stage, ClutterMotionEvent *event, CallbackData *data)
-{
- /* Handle the motion event in an idle handler so that multiple
- events will be combined into one */
- if (data->idle_source == 0)
- data->idle_source = clutter_threads_add_idle (on_motion_idle, data);
-
- data->event = *event;
-
- return FALSE;
-}
-
-G_MODULE_EXPORT int
-test_stage_read_pixels_main (int argc, char **argv)
-{
- CallbackData data;
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- data.idle_source = 0;
- data.stage = clutter_stage_new ();
- clutter_stage_set_title (CLUTTER_STAGE (data.stage), "Read Pixels");
- g_signal_connect (data.stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- data.tex = make_tex ();
- data.box = make_box ();
- clutter_actor_set_position (data.tex,
- clutter_actor_get_width (data.stage)
- - clutter_actor_get_width (data.tex),
- clutter_actor_get_height (data.stage)
- - clutter_actor_get_height (data.tex));
-
- clutter_container_add (CLUTTER_CONTAINER (data.stage),
- make_label (), data.tex, data.box, NULL);
-
- g_signal_connect (data.stage, "motion-event", G_CALLBACK (on_motion), &data);
-
- clutter_actor_show (data.stage);
-
- clutter_main ();
-
- return 0;
-}
-
-G_MODULE_EXPORT const char *
-test_stage_read_pixels_describe (void)
-{
- return "Read back pixels from a Stage.";
-}
diff --git a/clutter/tests/interactive/test-stage-sizing.c b/clutter/tests/interactive/test-stage-sizing.c
deleted file mode 100644
index c4fedb956..000000000
--- a/clutter/tests/interactive/test-stage-sizing.c
+++ /dev/null
@@ -1,88 +0,0 @@
-#include <stdlib.h>
-#include <gmodule.h>
-#include <clutter/clutter.h>
-
-int
-test_stage_sizing_main (int argc, char *argv[]);
-
-const char *
-test_stage_sizing_describe (void);
-
-static gboolean
-shrink_clicked_cb (ClutterActor *stage)
-{
- gfloat width, height;
- clutter_actor_get_size (stage, &width, &height);
- clutter_actor_set_size (stage, MAX (0, width - 10.f), MAX (0, height - 10.f));
- return CLUTTER_EVENT_STOP;
-}
-
-static gboolean
-expand_clicked_cb (ClutterActor *stage)
-{
- gfloat width, height;
- clutter_actor_get_size (stage, &width, &height);
- clutter_actor_set_size (stage, width + 10.f, height + 10.f);
- return CLUTTER_EVENT_STOP;
-}
-
-G_MODULE_EXPORT int
-test_stage_sizing_main (int argc, char *argv[])
-{
- ClutterActor *stage, *rect, *label, *box;
- ClutterMargin margin = { 12.f, 12.f, 6.f, 6.f };
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- stage = clutter_stage_new ();
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Stage Sizing");
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- box = clutter_actor_new ();
- clutter_actor_set_layout_manager (box, clutter_box_layout_new ());
- clutter_actor_add_constraint (box, clutter_align_constraint_new (stage, CLUTTER_ALIGN_BOTH, 0.5));
- clutter_actor_add_child (stage, box);
-
- rect = clutter_actor_new ();
- clutter_actor_set_layout_manager (rect,
- clutter_bin_layout_new (CLUTTER_BIN_ALIGNMENT_CENTER,
- CLUTTER_BIN_ALIGNMENT_CENTER));
- clutter_actor_set_background_color (rect, CLUTTER_COLOR_SkyBlue);
- clutter_actor_set_reactive (rect, TRUE);
- g_signal_connect_swapped (rect, "button-press-event",
- G_CALLBACK (shrink_clicked_cb), stage);
- label = clutter_text_new_with_text ("Sans 16", "Shrink");
- clutter_actor_set_margin (label, &margin);
- clutter_actor_add_child (rect, label);
- clutter_actor_add_child (box, rect);
-
- rect = clutter_actor_new ();
- clutter_actor_set_layout_manager (rect,
- clutter_bin_layout_new (CLUTTER_BIN_ALIGNMENT_CENTER,
- CLUTTER_BIN_ALIGNMENT_CENTER));
- clutter_actor_set_background_color (rect, CLUTTER_COLOR_Butter);
- clutter_actor_set_reactive (rect, TRUE);
- g_signal_connect_swapped (rect, "button-press-event",
- G_CALLBACK (expand_clicked_cb), stage);
- label = clutter_text_new_with_text ("Sans 16", "Expand");
- clutter_actor_set_margin (label, &margin);
- clutter_actor_add_child (rect, label);
- clutter_actor_add_child (box, rect);
-
- clutter_stage_set_minimum_size (CLUTTER_STAGE (stage),
- clutter_actor_get_width (box),
- clutter_actor_get_height (box));
-
- clutter_actor_show (stage);
-
- clutter_main ();
-
- return EXIT_SUCCESS;
-}
-
-G_MODULE_EXPORT const char *
-test_stage_sizing_describe (void)
-{
- return "Check stage sizing policies.";
-}
diff --git a/clutter/tests/interactive/test-state-script.c b/clutter/tests/interactive/test-state-script.c
deleted file mode 100644
index 66b54b092..000000000
--- a/clutter/tests/interactive/test-state-script.c
+++ /dev/null
@@ -1,45 +0,0 @@
-#include <stdlib.h>
-
-#include <gmodule.h>
-
-#include <clutter/clutter.h>
-
-#define TEST_STATE_SCRIPT_FILE "test-script-signals.json"
-
-int
-test_state_script_main (int argc, char *argv[]);
-
-G_MODULE_EXPORT int
-test_state_script_main (int argc, char *argv[])
-{
- ClutterActor *stage, *button;
- ClutterScript *script;
- GError *error = NULL;
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return EXIT_FAILURE;
-
- script = clutter_script_new ();
- clutter_script_load_from_file (script, TEST_STATE_SCRIPT_FILE, &error);
- if (error != NULL)
- g_error ("Unable to load '%s': %s\n",
- TEST_STATE_SCRIPT_FILE,
- error->message);
-
- stage = clutter_stage_new ();
- clutter_stage_set_title (CLUTTER_STAGE (stage), "State Script");
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
- clutter_actor_show (stage);
-
- button = CLUTTER_ACTOR (clutter_script_get_object (script, "button"));
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), button);
- clutter_actor_add_constraint (button, clutter_align_constraint_new (stage, CLUTTER_ALIGN_BOTH, 0.5));
-
- clutter_script_connect_signals (script, NULL);
-
- clutter_main ();
-
- g_object_unref (script);
-
- return EXIT_SUCCESS;
-}
diff --git a/clutter/tests/interactive/test-state.c b/clutter/tests/interactive/test-state.c
deleted file mode 100644
index b6894eac5..000000000
--- a/clutter/tests/interactive/test-state.c
+++ /dev/null
@@ -1,212 +0,0 @@
-#include <stdlib.h>
-#include <math.h>
-#include <gmodule.h>
-#include <clutter/clutter.h>
-
-#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)
-
-gint
-test_state_main (gint argc,
- gchar **argv);
-
-const char *
-test_state_describe (void);
-
-static gboolean press_event (ClutterActor *actor,
- ClutterEvent *event,
- gpointer user_data)
-{
- ClutterState *state = CLUTTER_STATE (user_data);
- clutter_state_set_state (state, "right");
- return TRUE;
-}
-
-static gboolean release_event (ClutterActor *actor,
- ClutterEvent *event,
- gpointer user_data)
-{
- ClutterState *state = CLUTTER_STATE (user_data);
- clutter_state_set_state (state, "active");
- return TRUE;
-}
-
-static gboolean enter_event (ClutterActor *actor,
- ClutterEvent *event,
- gpointer user_data)
-{
- ClutterState *state = CLUTTER_STATE (user_data);
- clutter_state_set_state (state, "hover");
- return TRUE;
-}
-
-static gboolean leave_event (ClutterActor *actor,
- ClutterEvent *event,
- gpointer user_data)
-{
- ClutterState *state = CLUTTER_STATE (user_data);
- clutter_state_set_state (state, "normal");
- return TRUE;
-}
-
-static void completed (ClutterState *state,
- gpointer data)
-{
- g_print ("Completed transitioning to state: %s\n",
- clutter_state_get_state (state));
-
- if (g_str_equal (clutter_state_get_state (state), "right"))
- {
- /* skip straight to left state when reaching right */
- clutter_state_warp_to_state (state, "left");
- }
-}
-
-static ClutterActor *new_rect (gint r,
- gint g,
- gint b,
- gint a)
-{
- GError *error = NULL;
- ClutterColor *color = clutter_color_new (r, g, b, a);
- ClutterActor *group = clutter_actor_new ();
- ClutterActor *rectangle = clutter_actor_new ();
- ClutterActor *hand = NULL;
-
- gchar *file = g_build_filename (TESTS_DATADIR, "redhand.png", NULL);
-
- 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_background_color (rectangle, color);
- clutter_actor_set_size (rectangle, ACTOR_WIDTH,ACTOR_HEIGHT);
- clutter_color_free (color);
-
- clutter_actor_add_child (group, rectangle);
- clutter_actor_add_child (group, hand);
-
- return group;
-}
-
-G_MODULE_EXPORT gint
-test_state_main (gint argc,
- gchar **argv)
-{
- ClutterActor *stage;
- ClutterState *layout_state;
- gint i;
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- layout_state = clutter_state_new ();
-
- stage = clutter_stage_new ();
- clutter_actor_set_background_color (stage, CLUTTER_COLOR_Black);
- clutter_stage_set_title (CLUTTER_STAGE (stage), "State Machine");
- clutter_actor_set_size (stage, STAGE_WIDTH, STAGE_HEIGHT);
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
- g_signal_connect (stage, "button-press-event",
- G_CALLBACK (press_event), layout_state);
- g_signal_connect (stage, "button-release-event",
- G_CALLBACK (release_event), layout_state);
-
- for (i = 0; i < TOTAL; i++)
- {
- ClutterActor *actor;
- ClutterState *a_state;
-
- int row = i/COLS;
- int col = i%COLS;
-
- actor = new_rect (255 * (1.0 * col / COLS), 50,
- 255 * (1.0 * row / ROWS), 255);
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), actor);
- clutter_actor_set_position (actor, 320.0, 240.0);
- clutter_actor_set_reactive (actor, TRUE);
- clutter_actor_add_effect_with_name (actor, "fade",
- clutter_desaturate_effect_new (0.0));
-
-
- clutter_state_set (layout_state, NULL, "active",
- actor, "delayed::x", CLUTTER_LINEAR,
- ACTOR_WIDTH * 1.0 * ((TOTAL-1-i) % COLS),
- ((row*1.0/ROWS))/2, (1.0-(row*1.0/ROWS))/2,
- actor, "delayed::y", CLUTTER_LINEAR,
- ACTOR_HEIGHT * 1.0 * ((TOTAL-1-i) / COLS),
- ((row*1.0/ROWS))/2, 0.0,
- actor, "rotation-angle-x", CLUTTER_LINEAR, 0.0,
- actor, "rotation-angle-y", CLUTTER_LINEAR, 0.0,
- NULL);
-
- clutter_state_set (layout_state, NULL, "right",
- actor, "delayed::x", CLUTTER_LINEAR, STAGE_WIDTH * 1.0,
- ((row*1.0/ROWS))/2,
- (1.0-(row*1.0/ROWS))/2,
- actor, "delayed::y", CLUTTER_LINEAR, STAGE_HEIGHT * 1.0,
- ((row*1.0/ROWS))/2,
- 0.0,
- NULL);
-
- clutter_state_set (layout_state, NULL, "left",
- actor, "rotation-angle-x", CLUTTER_LINEAR, 45.0,
- actor, "rotation-angle-y", CLUTTER_LINEAR, 5.0,
- actor, "x", CLUTTER_LINEAR, 0-64.0,
- actor, "y", CLUTTER_LINEAR, 0-64.0,
- NULL);
-
- a_state = clutter_state_new ();
- g_object_set_data_full (G_OBJECT (actor), "hover-state-machine",
- a_state, g_object_unref);
- g_signal_connect (actor, "enter-event",
- G_CALLBACK (enter_event), a_state);
- g_signal_connect (actor, "leave-event",
- G_CALLBACK (leave_event), a_state);
-
- clutter_state_set (a_state, NULL, "normal",
- actor, "opacity", CLUTTER_LINEAR, 0x77,
- actor, "rotation-angle-z", CLUTTER_LINEAR, 0.0,
- actor, "@effects.fade.factor", CLUTTER_LINEAR, 0.0,
- NULL);
- clutter_state_set (a_state, NULL, "hover",
- actor, "opacity", CLUTTER_LINEAR, 0xff,
- actor, "rotation-angle-z", CLUTTER_LINEAR, 10.0,
- actor, "@effects.fade.factor", CLUTTER_LINEAR, 1.0,
- NULL);
- clutter_actor_set_opacity (actor, 0x77);
-
- clutter_state_set_duration (a_state, NULL, NULL, 500);
- }
-
- clutter_state_set_duration (layout_state, NULL, NULL, 1000);
- clutter_state_set_duration (layout_state, "active", "left", 1400);
-
- g_signal_connect (layout_state, "completed", G_CALLBACK (completed), NULL);
-
- clutter_actor_show (stage);
-
- clutter_state_warp_to_state (layout_state, "left");
- clutter_state_set_state (layout_state, "active");
-
- clutter_main ();
-
- g_object_unref (layout_state);
-
- return EXIT_SUCCESS;
-}
-
-G_MODULE_EXPORT const char *
-test_state_describe (void)
-{
- return "Animating using the State class.";
-}
diff --git a/clutter/tests/interactive/test-swipe-action.c b/clutter/tests/interactive/test-swipe-action.c
deleted file mode 100644
index 3d0877401..000000000
--- a/clutter/tests/interactive/test-swipe-action.c
+++ /dev/null
@@ -1,201 +0,0 @@
-#include <stdlib.h>
-#include <clutter/clutter.h>
-
-enum
-{
- VERTICAL = 0,
- HORIZONTAL = 1,
- BOTH = 2
-};
-
-int
-test_swipe_action_main (int argc, char *argv[]);
-
-const char *
-test_swipe_action_describe (void);
-
-static void
-swept_cb (ClutterSwipeAction *action,
- ClutterActor *actor,
- ClutterSwipeDirection direction,
- gpointer data_)
-{
- guint axis = GPOINTER_TO_UINT (data_);
- gchar *direction_str = g_strdup ("");
-
- if (axis == HORIZONTAL &&
- ((direction & CLUTTER_SWIPE_DIRECTION_UP) != 0 ||
- (direction & CLUTTER_SWIPE_DIRECTION_DOWN) != 0))
- {
- g_print ("discarding non-horizontal swipe on '%s'\n",
- clutter_actor_get_name (actor));
- return;
- }
-
- if (axis == VERTICAL &&
- ((direction & CLUTTER_SWIPE_DIRECTION_LEFT) != 0 ||
- (direction & CLUTTER_SWIPE_DIRECTION_RIGHT) != 0))
- {
- g_print ("discarding non-vertical swipe on '%s'\n",
- clutter_actor_get_name (actor));
- return;
- }
-
- if (direction & CLUTTER_SWIPE_DIRECTION_UP)
- {
- char *old_str = direction_str;
-
- direction_str = g_strconcat (direction_str, " up", NULL);
- g_free (old_str);
- }
-
- if (direction & CLUTTER_SWIPE_DIRECTION_DOWN)
- {
- char *old_str = direction_str;
-
- direction_str = g_strconcat (direction_str, " down", NULL);
- g_free (old_str);
- }
-
- if (direction & CLUTTER_SWIPE_DIRECTION_LEFT)
- {
- char *old_str = direction_str;
-
- direction_str = g_strconcat (direction_str, " left", NULL);
- g_free (old_str);
- }
-
- if (direction & CLUTTER_SWIPE_DIRECTION_RIGHT)
- {
- char *old_str = direction_str;
-
- direction_str = g_strconcat (direction_str, " right", NULL);
- g_free (old_str);
- }
-
- g_print ("swept: '%s': %s\n", clutter_actor_get_name (actor), direction_str);
-
- g_free (direction_str);
-}
-
-static void
-gesture_cancel_cb (ClutterSwipeAction *action,
- ClutterActor *actor,
- gpointer user_data)
-{
- g_debug ("gesture cancelled: '%s'", clutter_actor_get_name (actor));
-}
-
-static void
-attach_action (ClutterActor *actor, guint axis)
-{
- ClutterAction *action;
-
- action = g_object_new (CLUTTER_TYPE_SWIPE_ACTION, NULL);
- clutter_actor_add_action (actor, action);
- g_signal_connect (action, "swept", G_CALLBACK (swept_cb), GUINT_TO_POINTER (axis));
- g_signal_connect (action, "gesture-cancel", G_CALLBACK (gesture_cancel_cb), NULL);
-}
-
-G_MODULE_EXPORT int
-test_swipe_action_main (int argc, char *argv[])
-{
- ClutterActor *stage, *rect;
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- stage = clutter_stage_new ();
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Swipe action");
- clutter_actor_set_size (stage, 640, 480);
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- rect = clutter_rectangle_new_with_color (CLUTTER_COLOR_Red);
- clutter_actor_set_name (rect, "Vertical swipes");
- clutter_actor_set_size (rect, 150, 150);
- clutter_actor_set_position (rect, 10, 100);
- clutter_actor_set_reactive (rect, TRUE);
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), rect);
- attach_action (rect, VERTICAL);
-
- rect = clutter_rectangle_new_with_color (CLUTTER_COLOR_Blue);
- clutter_actor_set_name (rect, "Horizontal swipes");
- clutter_actor_set_size (rect, 150, 150);
- clutter_actor_set_position (rect, 170, 100);
- clutter_actor_set_reactive (rect, TRUE);
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), rect);
- attach_action (rect, HORIZONTAL);
-
- rect = clutter_rectangle_new_with_color (CLUTTER_COLOR_Green);
- clutter_actor_set_name (rect, "All swipes");
- clutter_actor_set_size (rect, 150, 150);
- clutter_actor_set_position (rect, 330, 100);
- clutter_actor_set_reactive (rect, TRUE);
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), rect);
- attach_action (rect, BOTH);
-
- {
- ClutterLayoutManager *layout = clutter_box_layout_new ();
- ClutterActor *box, *label;
- float offset;
-
- clutter_box_layout_set_vertical (CLUTTER_BOX_LAYOUT (layout), TRUE);
- clutter_box_layout_set_spacing (CLUTTER_BOX_LAYOUT (layout), 6);
-
- box = clutter_box_new (layout);
-
- label = clutter_text_new ();
- clutter_text_set_markup (CLUTTER_TEXT (label),
- "<b>Red</b>: vertical swipes only");
- clutter_box_layout_pack (CLUTTER_BOX_LAYOUT (layout),
- label,
- TRUE,
- TRUE, TRUE,
- CLUTTER_BOX_ALIGNMENT_START,
- CLUTTER_BOX_ALIGNMENT_CENTER);
-
- label = clutter_text_new ();
- clutter_text_set_markup (CLUTTER_TEXT (label),
- "<b>Blue</b>: horizontal swipes only");
- clutter_box_layout_pack (CLUTTER_BOX_LAYOUT (layout),
- label,
- TRUE,
- TRUE, TRUE,
- CLUTTER_BOX_ALIGNMENT_START,
- CLUTTER_BOX_ALIGNMENT_CENTER);
-
- label = clutter_text_new ();
- clutter_text_set_markup (CLUTTER_TEXT (label),
- "<b>Green</b>: both");
- clutter_box_layout_pack (CLUTTER_BOX_LAYOUT (layout),
- label,
- TRUE,
- TRUE, TRUE,
- CLUTTER_BOX_ALIGNMENT_START,
- CLUTTER_BOX_ALIGNMENT_CENTER);
-
- offset = clutter_actor_get_height (stage)
- - clutter_actor_get_height (box)
- - 12.0;
-
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), box);
- clutter_actor_add_constraint (box, clutter_bind_constraint_new (stage,
- CLUTTER_BIND_X,
- 12.0));
- clutter_actor_add_constraint (box, clutter_bind_constraint_new (stage,
- CLUTTER_BIND_Y,
- offset));
- }
-
- clutter_actor_show_all (stage);
-
- clutter_main ();
-
- return EXIT_SUCCESS;
-}
-
-G_MODULE_EXPORT const char *
-test_swipe_action_describe (void)
-{
- return "Swipe gesture recognizer.";
-}
diff --git a/clutter/tests/interactive/test-table-layout.c b/clutter/tests/interactive/test-table-layout.c
deleted file mode 100644
index 355944b06..000000000
--- a/clutter/tests/interactive/test-table-layout.c
+++ /dev/null
@@ -1,289 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <gmodule.h>
-
-#include <clutter/clutter.h>
-#include <cogl/cogl.h>
-#include <cogl-pango/cogl-pango.h>
-
-#define FONT "Sans 12"
-
-int
-test_table_layout_main (int argc, char *argv[]);
-
-const char *
-test_table_layout_describe (void);
-
-static void
-set_text (ClutterActor *actor, const gchar *text)
-{
- GList *children, *l;
-
- children = clutter_container_get_children (CLUTTER_CONTAINER (actor));
- for (l = children; l; l = g_list_next (l)) {
- if (CLUTTER_IS_TEXT (l->data)) {
- clutter_text_set_text (CLUTTER_TEXT (l->data), text);
- break;
- }
- }
- g_list_free (children);
-}
-
-static void
-toggle_expand (ClutterActor *actor, ClutterEvent *event, ClutterBox *box)
-{
- gboolean x_expand;
- gchar *label;
- ClutterLayoutManager *layout = clutter_box_get_layout_manager (box);
-
-
- clutter_layout_manager_child_get (layout, CLUTTER_CONTAINER (box), actor,
- "x-expand", &x_expand,
- NULL);
-
- x_expand = !x_expand;
-
- clutter_layout_manager_child_set (layout, CLUTTER_CONTAINER (box), actor,
- "x-expand", x_expand,
- "y-expand", x_expand,
- NULL);
-
- label = g_strdup_printf ("Expand = %d", x_expand);
- set_text (actor, label);
-
- g_free (label);
-}
-
-static const gchar *
-get_alignment_name (ClutterTableAlignment alignment)
-{
- switch (alignment)
- {
- case CLUTTER_TABLE_ALIGNMENT_START:
- return "start";
-
- case CLUTTER_TABLE_ALIGNMENT_CENTER:
- return "center";
-
- case CLUTTER_TABLE_ALIGNMENT_END:
- return "end";
- }
-
- return "undefined";
-}
-
-static void
-randomise_align (ClutterActor *actor, ClutterEvent *event, ClutterBox *box)
-{
- ClutterTableAlignment x_align, y_align;
- gchar *label;
- ClutterLayoutManager *layout;
-
- layout = clutter_box_get_layout_manager (box);
-
- x_align = (ClutterTableAlignment) g_random_int_range (0, 3);
- y_align = (ClutterTableAlignment) g_random_int_range (0, 3);
-
- clutter_layout_manager_child_set (layout, CLUTTER_CONTAINER (box), actor,
- "x-align", x_align,
- "y-align", y_align,
- NULL);
-
- label = g_strdup_printf ("Align (%s, %s)",
- get_alignment_name (x_align),
- get_alignment_name (y_align));
- set_text (actor, label);
- g_free (label);
-}
-
-static void
-toggle_visible (ClutterActor *actor, ClutterEvent *event, gpointer userdata)
-{
- clutter_actor_hide (actor);
-}
-
-gboolean drag = FALSE;
-
-static ClutterActor *
-create_cell (ClutterActor *actor, const gchar *color_str)
-{
- ClutterActor *result;
- ClutterActor *rectangle;
- ClutterColor color;
-
- result =
- clutter_box_new (clutter_bin_layout_new (CLUTTER_BIN_ALIGNMENT_FILL,
- CLUTTER_BIN_ALIGNMENT_FILL));
-
- rectangle = clutter_rectangle_new ();
- clutter_color_from_string (&color, color_str);
- clutter_rectangle_set_color (CLUTTER_RECTANGLE (rectangle), (const ClutterColor *) &color);
- clutter_color_from_string (&color, "#000f");
- clutter_rectangle_set_border_color (CLUTTER_RECTANGLE (rectangle), (const ClutterColor *) &color);
- clutter_rectangle_set_border_width (CLUTTER_RECTANGLE (rectangle), 2);
-
- clutter_actor_show (rectangle);
- clutter_actor_set_reactive (result, TRUE);
- clutter_container_add_actor (CLUTTER_CONTAINER (result), rectangle);
- clutter_box_pack (CLUTTER_BOX (result), actor,
- "x-align", CLUTTER_BIN_ALIGNMENT_CENTER,
- "y-align", CLUTTER_BIN_ALIGNMENT_CENTER,
- NULL);
-
- return result;
-}
-
-static ClutterActor *
-create_text (const gchar *label, const gchar *color)
-{
- ClutterActor *text;
- ClutterActor *result;
-
- text = clutter_text_new_with_text (FONT, label);
- clutter_actor_show (text);
-
- result = create_cell (text, color);
- clutter_actor_show (result);
-
- return result;
-}
-
-static ClutterActor *
-create_image (const gchar *file, const gchar *color)
-{
- ClutterActor *texture;
- ClutterActor *result;
-
- texture = clutter_texture_new_from_file (file, NULL);
- g_object_set (G_OBJECT (texture), "keep-aspect-ratio", TRUE, NULL);
- clutter_actor_show (texture);
-
- result = create_cell (texture, color);
- clutter_actor_show (result);
-
- return result;
-}
-
-G_MODULE_EXPORT int
-test_table_layout_main (int argc, char *argv[])
-{
- ClutterActor *stage;
- ClutterLayoutManager *layout;
- ClutterActor *actor1, *actor2, *actor3, *actor4, *actor5, *actor6, *actor7, *actor8, *actor9, *actor10;
- ClutterActor *box;
- gchar *file;
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- stage = clutter_stage_new ();
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Table Layout");
- clutter_actor_set_size (stage, 640, 480);
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- layout = clutter_table_layout_new ();
- clutter_table_layout_set_column_spacing (CLUTTER_TABLE_LAYOUT (layout), 10);
- clutter_table_layout_set_row_spacing (CLUTTER_TABLE_LAYOUT (layout), 10);
- clutter_table_layout_set_use_animations (CLUTTER_TABLE_LAYOUT (layout), TRUE);
-
- box = clutter_box_new (layout);
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), box);
- clutter_actor_add_constraint (box, clutter_bind_constraint_new (stage, CLUTTER_BIND_WIDTH, -10.0));
- clutter_actor_add_constraint (box, clutter_bind_constraint_new (stage, CLUTTER_BIND_HEIGHT, -10.0));
-
- actor1 = create_text ("label 1", "#f66f");
- file = g_build_filename (TESTS_DATADIR, "redhand.png", NULL);
- actor2 = create_image (file, "#bbcf");
- g_free (file);
- actor3 = create_text ("label 3", "#6f6f");
- actor4 = create_text ("Expand = 1", "#66ff");
- actor5 = create_text ("label 5", "#f6ff");
- actor6 = create_text ("label 6", "#6fff");
- actor7 = create_text ("Align (center, center)", "#66ff");
- actor8 = create_text ("label 8", "#ffff");
- actor9 = create_text ("label 9", "#666f");
- actor10 = create_text ("label 10", "#aaaf");
-
- clutter_table_layout_pack (CLUTTER_TABLE_LAYOUT (layout), actor1, 0, 0);
- clutter_table_layout_pack (CLUTTER_TABLE_LAYOUT (layout), actor2, 1, 0);
- clutter_table_layout_pack (CLUTTER_TABLE_LAYOUT (layout), actor3, 1, 1);
- clutter_table_layout_pack (CLUTTER_TABLE_LAYOUT (layout), actor4, 0, 2);
- clutter_table_layout_pack (CLUTTER_TABLE_LAYOUT (layout), actor5, 0, 3);
- clutter_table_layout_pack (CLUTTER_TABLE_LAYOUT (layout), actor6, 1, 3);
- clutter_table_layout_pack (CLUTTER_TABLE_LAYOUT (layout), actor7, 1, 4);
- clutter_table_layout_pack (CLUTTER_TABLE_LAYOUT (layout), actor8, 0, 4);
- clutter_table_layout_pack (CLUTTER_TABLE_LAYOUT (layout), actor9, 0, 5);
- clutter_table_layout_pack (CLUTTER_TABLE_LAYOUT (layout), actor10, 0, -1);
- clutter_table_layout_set_span (CLUTTER_TABLE_LAYOUT (layout), actor1, 1, 2);
- clutter_table_layout_set_span (CLUTTER_TABLE_LAYOUT (layout), actor7, 1, 2);
- clutter_table_layout_set_span (CLUTTER_TABLE_LAYOUT (layout), actor4, 2, 1);
-
- clutter_actor_set_size (actor1, 100, 100);
- clutter_actor_set_width (actor4, 250);
-
- clutter_layout_manager_child_set (CLUTTER_LAYOUT_MANAGER (layout),
- CLUTTER_CONTAINER (box),
- actor1,
- "x-expand", FALSE, "y-expand", FALSE,
- NULL);
- clutter_layout_manager_child_set (CLUTTER_LAYOUT_MANAGER (layout),
- CLUTTER_CONTAINER (box),
- actor4,
- "x-expand", TRUE, "y-expand", TRUE,
- "x-fill", TRUE, "y-fill", TRUE,
- NULL);
- clutter_layout_manager_child_set (CLUTTER_LAYOUT_MANAGER (layout),
- CLUTTER_CONTAINER (box),
- actor7,
- "x-expand", TRUE, "y-expand", TRUE,
- "x-fill", FALSE, "y-fill", FALSE,
- NULL);
- clutter_layout_manager_child_set (CLUTTER_LAYOUT_MANAGER (layout),
- CLUTTER_CONTAINER (box),
- actor8,
- "x-expand", FALSE, "y-expand", FALSE,
- NULL);
- clutter_layout_manager_child_set (CLUTTER_LAYOUT_MANAGER (layout),
- CLUTTER_CONTAINER (box),
- actor9,
- "x-expand", FALSE, "y-expand", FALSE,
- NULL);
-
- clutter_layout_manager_child_set (CLUTTER_LAYOUT_MANAGER (layout),
- CLUTTER_CONTAINER (box),
- actor2,
- "y-fill", FALSE,
- "x-fill", FALSE,
- NULL);
-
- clutter_actor_set_position (box, 5, 5);
-
- g_signal_connect (actor4, "button-release-event", G_CALLBACK (toggle_expand), box);
- g_signal_connect (actor7, "button-release-event", G_CALLBACK (randomise_align), box);
- g_signal_connect (actor10, "button-release-event", G_CALLBACK (toggle_visible), NULL);
-
- /* g_signal_connect (stage, "button-press-event", G_CALLBACK (button_press), */
- /* box); */
- /* g_signal_connect (stage, "motion-event", G_CALLBACK (motion_event), */
- /* box); */
- /* g_signal_connect (stage, "button-release-event", G_CALLBACK (button_release), */
- /* box); */
-
- clutter_actor_show (stage);
-
- g_debug ("table row count = %d",
- clutter_table_layout_get_row_count (CLUTTER_TABLE_LAYOUT (layout)));
- g_debug ("table column count = %d",
- clutter_table_layout_get_column_count (CLUTTER_TABLE_LAYOUT (layout)));
-
- clutter_main ();
-
- return EXIT_SUCCESS;
-}
-
-G_MODULE_EXPORT const char *
-test_table_layout_describe (void)
-{
- return "TableLayout layout manager example.";
-}
diff --git a/clutter/tests/interactive/test-text-field.c b/clutter/tests/interactive/test-text-field.c
deleted file mode 100644
index 8d203a22a..000000000
--- a/clutter/tests/interactive/test-text-field.c
+++ /dev/null
@@ -1,338 +0,0 @@
-#include <stdlib.h>
-#include <gmodule.h>
-#include <clutter/clutter.h>
-
-gint
-test_text_field_main (gint argc,
- gchar **argv);
-
-const char *
-test_text_field_describe (void);
-
-static void
-on_entry_activate (ClutterText *text,
- gpointer data)
-{
- g_print ("Text activated: %s (cursor: %d, selection at: %d)\n",
- clutter_text_get_text (text),
- clutter_text_get_cursor_position (text),
- clutter_text_get_selection_bound (text));
-}
-
-#define is_hex_digit(c) (((c) >= '0' && (c) <= '9') || \
- ((c) >= 'a' && (c) <= 'f') || \
- ((c) >= 'A' && (c) <= 'F'))
-#define to_hex_digit(c) (((c) <= '9') ? (c) - '0' : ((c) & 7) + 9)
-
-static gboolean
-on_captured_event (ClutterText *text,
- ClutterEvent *event,
- gpointer dummy G_GNUC_UNUSED)
-{
- gboolean is_unicode_mode = FALSE;
- gunichar c;
- guint keyval;
-
- if (event->type != CLUTTER_KEY_PRESS)
- return FALSE;
-
- is_unicode_mode = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (text),
- "unicode-mode"));
-
- c = clutter_event_get_key_unicode (event);
- keyval = clutter_event_get_key_symbol (event);
- if (keyval == CLUTTER_KEY_U)
- {
- if (is_unicode_mode)
- {
- GString *str = g_object_get_data (G_OBJECT (text), "unicode-str");
-
- clutter_text_set_preedit_string (text, NULL, NULL, 0);
-
- g_object_set_data (G_OBJECT (text), "unicode-mode",
- GINT_TO_POINTER (FALSE));
- g_object_set_data (G_OBJECT (text), "unicode-str",
- NULL);
-
- g_string_free (str, TRUE);
-
- return FALSE;
- }
-
- if (clutter_event_has_control_modifier (event))
- {
- PangoAttrList *attrs;
- PangoAttribute *a;
- GString *str = g_string_sized_new (5);
-
- g_string_append (str, "u");
-
- g_object_set_data (G_OBJECT (text),
- "unicode-mode",
- GINT_TO_POINTER (TRUE));
- g_object_set_data (G_OBJECT (text),
- "unicode-str",
- str);
-
- attrs = pango_attr_list_new ();
-
- a = pango_attr_underline_new (PANGO_UNDERLINE_SINGLE);
- a->start_index = 0;
- a->end_index = str->len;
- pango_attr_list_insert (attrs, a);
-
- clutter_text_set_preedit_string (text, str->str, attrs, str->len);
-
- pango_attr_list_unref (attrs);
-
- return TRUE;
- }
-
- return FALSE;
- }
- else if (is_unicode_mode && is_hex_digit (c))
- {
- GString *str = g_object_get_data (G_OBJECT (text), "unicode-str");
- PangoAttrList *attrs;
- PangoAttribute *a;
- gchar buf[8];
- gsize len;
-
- len = g_unichar_to_utf8 (c, buf);
- buf[len] = '\0';
-
- g_string_append (str, buf);
-
- g_print ("added '%s' to '%s' (len:%d)\n",
- buf,
- str->str,
- (int) str->len);
-
- attrs = pango_attr_list_new ();
-
- a = pango_attr_underline_new (PANGO_UNDERLINE_SINGLE);
- a->start_index = 0;
- a->end_index = str->len;
- pango_attr_list_insert (attrs, a);
-
- clutter_text_set_preedit_string (text, str->str, attrs, str->len);
-
- pango_attr_list_unref (attrs);
-
- return TRUE;
- }
- else if (is_unicode_mode && (keyval == CLUTTER_KEY_BackSpace))
- {
- GString *str = g_object_get_data (G_OBJECT (text), "unicode-str");
- PangoAttrList *attrs;
- PangoAttribute *a;
-
- g_string_truncate (str, str->len - 1);
-
- attrs = pango_attr_list_new ();
-
- a = pango_attr_underline_new (PANGO_UNDERLINE_SINGLE);
- a->start_index = 0;
- a->end_index = str->len;
- pango_attr_list_insert (attrs, a);
-
- clutter_text_set_preedit_string (text, str->str, attrs, str->len);
-
- pango_attr_list_unref (attrs);
-
- return TRUE;
- }
- else if (is_unicode_mode &&
- (keyval == CLUTTER_KEY_Return ||
- keyval == CLUTTER_KEY_KP_Enter ||
- keyval == CLUTTER_KEY_ISO_Enter ||
- keyval == CLUTTER_KEY_KP_Space))
- {
- GString *str = g_object_get_data (G_OBJECT (text), "unicode-str");
- const gchar *contents = clutter_text_get_text (text);
- gunichar uchar = 0;
- gchar ch;
- gint i;
-
- clutter_text_set_preedit_string (text, NULL, NULL, 0);
-
- g_object_set_data (G_OBJECT (text), "unicode-mode",
- GINT_TO_POINTER (FALSE));
- g_object_set_data (G_OBJECT (text), "unicode-str",
- NULL);
-
- for (i = 0; i < str->len; i++)
- {
- ch = str->str[i];
-
- if (is_hex_digit (ch))
- uchar += ((gunichar) to_hex_digit (ch) << ((4 - i) * 4));
- }
-
- g_assert (g_unichar_validate (uchar));
-
- g_string_overwrite (str, 0, contents);
- g_string_insert_unichar (str,
- clutter_text_get_cursor_position (text),
- uchar);
-
- i = clutter_text_get_cursor_position (text);
- clutter_text_set_text (text, str->str);
-
- if (i >= 0)
- i += 1;
- else
- i = -1;
-
- clutter_text_set_cursor_position (text, i);
- clutter_text_set_selection_bound (text, i);
-
- g_string_free (str, TRUE);
-
- return TRUE;
- }
- else
- return FALSE;
-}
-
-static ClutterActor *
-create_label (const ClutterColor *color,
- const gchar *text)
-{
- ClutterActor *retval = clutter_text_new ();
-
- clutter_text_set_color (CLUTTER_TEXT (retval), color);
- clutter_text_set_markup (CLUTTER_TEXT (retval), text);
- clutter_text_set_editable (CLUTTER_TEXT (retval), FALSE);
- clutter_text_set_selectable (CLUTTER_TEXT (retval), FALSE);
- clutter_text_set_single_line_mode (CLUTTER_TEXT (retval), TRUE);
- clutter_text_set_ellipsize (CLUTTER_TEXT (retval), PANGO_ELLIPSIZE_END);
-
- return retval;
-}
-
-static ClutterActor *
-create_entry (const ClutterColor *color,
- const gchar *text,
- PangoAttrList *attrs,
- gunichar password_char,
- gint max_length)
-{
- ClutterActor *retval = clutter_text_new_full (NULL, text, color);
- ClutterColor selection = { 0, };
- ClutterColor selected_text = { 0x00, 0x00, 0xff, 0xff };
-
- clutter_actor_set_reactive (retval, TRUE);
-
- clutter_color_darken (color, &selection);
-
- clutter_text_set_editable (CLUTTER_TEXT (retval), TRUE);
- clutter_text_set_selectable (CLUTTER_TEXT (retval), TRUE);
- clutter_text_set_activatable (CLUTTER_TEXT (retval), TRUE);
- clutter_text_set_single_line_mode (CLUTTER_TEXT (retval), TRUE);
- clutter_text_set_password_char (CLUTTER_TEXT (retval), password_char);
- clutter_text_set_cursor_color (CLUTTER_TEXT (retval), &selection);
- clutter_text_set_max_length (CLUTTER_TEXT (retval), max_length);
- clutter_text_set_selected_text_color (CLUTTER_TEXT (retval), &selected_text);
- clutter_actor_set_background_color (retval, CLUTTER_COLOR_LightGray);
- if (attrs)
- clutter_text_set_attributes (CLUTTER_TEXT (retval), attrs);
-
- g_signal_connect (retval, "activate",
- G_CALLBACK (on_entry_activate),
- NULL);
- g_signal_connect (retval, "captured-event",
- G_CALLBACK (on_captured_event),
- NULL);
-
- return retval;
-}
-
-G_MODULE_EXPORT gint
-test_text_field_main (gint argc,
- gchar **argv)
-{
- ClutterActor *stage;
- ClutterActor *box, *label, *entry;
- ClutterLayoutManager *table;
- PangoAttrList *entry_attrs;
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return EXIT_FAILURE;
-
- stage = clutter_stage_new ();
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Text Fields");
- clutter_actor_set_background_color (stage, CLUTTER_COLOR_Black);
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- table = clutter_table_layout_new ();
- clutter_table_layout_set_column_spacing (CLUTTER_TABLE_LAYOUT (table), 6);
- clutter_table_layout_set_row_spacing (CLUTTER_TABLE_LAYOUT (table), 6);
-
- box = clutter_actor_new ();
- clutter_actor_set_layout_manager (box, table);
- clutter_actor_add_constraint (box, clutter_bind_constraint_new (stage, CLUTTER_BIND_WIDTH, -24.0));
- clutter_actor_add_constraint (box, clutter_bind_constraint_new (stage, CLUTTER_BIND_HEIGHT, -24.0));
- clutter_actor_set_position (box, 12, 12);
- clutter_actor_add_child (stage, box);
-
- label = create_label (CLUTTER_COLOR_White, "<b>Input field:</b>");
- g_object_set (label, "min-width", 150.0, NULL);
- clutter_actor_add_child (box, label);
- clutter_layout_manager_child_set (table, CLUTTER_CONTAINER (box), label,
- "row", 0,
- "column", 0,
- "x-expand", FALSE,
- "y-expand", FALSE,
- NULL);
-
- entry_attrs = pango_attr_list_new ();
- pango_attr_list_insert (entry_attrs, pango_attr_underline_new (PANGO_UNDERLINE_ERROR));
- pango_attr_list_insert (entry_attrs, pango_attr_underline_color_new (65535, 0, 0));
- entry = create_entry (CLUTTER_COLOR_Black, "somme misspeeled textt", entry_attrs, 0, 0);
- clutter_actor_add_child (box, entry);
- clutter_layout_manager_child_set (table, CLUTTER_CONTAINER (box), entry,
- "row", 0,
- "column", 1,
- "x-expand", TRUE,
- "x-fill", TRUE,
- "y-expand", FALSE,
- NULL);
- clutter_actor_grab_key_focus (entry);
-
- label = create_label (CLUTTER_COLOR_White, "<b>A very long password field:</b>");
- clutter_actor_add_child (box, label);
- clutter_layout_manager_child_set (table, CLUTTER_CONTAINER (box), label,
- "row", 1,
- "column", 0,
- "x-expand", FALSE,
- "y-expand", FALSE,
- NULL);
-
- entry = create_entry (CLUTTER_COLOR_Black, "password", NULL, '*', 8);
- clutter_actor_add_child (box, entry);
- clutter_layout_manager_child_set (table, CLUTTER_CONTAINER (box), entry,
- "row", 1,
- "column", 1,
- "x-expand", TRUE,
- "x-fill", TRUE,
- "y-expand", FALSE,
- NULL);
-
- clutter_actor_show (stage);
-
- clutter_main ();
-
- return EXIT_SUCCESS;
-}
-
-G_MODULE_EXPORT const char *
-test_text_field_describe (void)
-{
- return
-"Text actor single-line and password mode support\n"
-"\n"
-"This test checks the :single-line-mode and :password-char properties of\n"
-"the ClutterText actor, plus the password hint feature and the :max-length\n"
-"property.";
-}
diff --git a/clutter/tests/interactive/test-text.c b/clutter/tests/interactive/test-text.c
deleted file mode 100644
index bbe2a1b4e..000000000
--- a/clutter/tests/interactive/test-text.c
+++ /dev/null
@@ -1,101 +0,0 @@
-#include <stdlib.h>
-
-#include <gmodule.h>
-#include <clutter/clutter.h>
-
-#define FONT "Mono Bold 24px"
-
-static const gchar *runes =
-"ᚠᛇᚻ᛫ᛒᛦᚦ᛫ᚠᚱᚩᚠᚢᚱ᛫ᚠᛁᚱᚪ᛫ᚷᛖᚻᚹᛦᛚᚳᚢᛗ\n"
-"ᛋᚳᛖᚪᛚ᛫ᚦᛖᚪᚻ᛫ᛗᚪᚾᚾᚪ᛫ᚷᛖᚻᚹᛦᛚᚳ᛫ᛗᛁᚳᛚᚢᚾ᛫ᚻᛦᛏ᛫ᛞᚫᛚᚪᚾ\n"
-"ᚷᛁᚠ᛫ᚻᛖ᛫ᚹᛁᛚᛖ᛫ᚠᚩᚱ᛫ᛞᚱᛁᚻᛏᚾᛖ᛫ᛞᚩᛗᛖᛋ᛫ᚻᛚᛇᛏᚪᚾ᛬\n";
-
-gint
-test_text_main (gint argc,
- gchar **argv);
-
-const char *
-test_text_describe (void);
-
-G_MODULE_EXPORT gint
-test_text_main (gint argc,
- gchar **argv)
-{
- ClutterActor *stage;
- ClutterActor *text, *text2;
- ClutterColor text_color = { 0x33, 0xff, 0x33, 0xff };
- ClutterColor cursor_color = { 0xff, 0x33, 0x33, 0xff };
- ClutterTextBuffer *buffer;
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- stage = clutter_stage_new ();
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Text Editing");
- clutter_actor_set_background_color (stage, CLUTTER_COLOR_Black);
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- buffer = clutter_text_buffer_new_with_text ("·", -1);
-
- text = clutter_text_new_with_buffer (buffer);
- clutter_text_set_font_name (CLUTTER_TEXT (text), FONT);
- clutter_text_set_color (CLUTTER_TEXT (text), &text_color);
-
- clutter_container_add (CLUTTER_CONTAINER (stage), text, NULL);
- clutter_actor_set_position (text, 40, 30);
- clutter_actor_set_width (text, 1024);
- clutter_text_set_line_wrap (CLUTTER_TEXT (text), TRUE);
-
- clutter_actor_set_reactive (text, TRUE);
- clutter_stage_set_key_focus (CLUTTER_STAGE (stage), text);
-
- clutter_text_set_editable (CLUTTER_TEXT (text), TRUE);
- clutter_text_set_selectable (CLUTTER_TEXT (text), TRUE);
- clutter_text_set_cursor_color (CLUTTER_TEXT (text), &cursor_color);
- clutter_text_set_selected_text_color (CLUTTER_TEXT (text), CLUTTER_COLOR_Blue);
-
- text2 = clutter_text_new_with_buffer (buffer);
- clutter_text_set_color (CLUTTER_TEXT (text2), &text_color);
- clutter_container_add (CLUTTER_CONTAINER (stage), text2, NULL);
- clutter_actor_set_position (text2, 40, 300);
- clutter_actor_set_width (text2, 1024);
- clutter_text_set_line_wrap (CLUTTER_TEXT (text2), TRUE);
-
- clutter_actor_set_reactive (text2, TRUE);
- clutter_text_set_editable (CLUTTER_TEXT (text2), TRUE);
- clutter_text_set_selectable (CLUTTER_TEXT (text2), TRUE);
- clutter_text_set_cursor_color (CLUTTER_TEXT (text2), &cursor_color);
- clutter_text_set_selected_text_color (CLUTTER_TEXT (text2), CLUTTER_COLOR_Green);
-
- if (argv[1])
- {
- GError *error = NULL;
- gchar *utf8;
-
- g_file_get_contents (argv[1], &utf8, NULL, &error);
- if (error)
- {
- utf8 = g_strconcat ("Unable to open '", argv[1], "':\n",
- error->message,
- NULL);
- g_error_free (error);
- }
-
- clutter_text_set_text (CLUTTER_TEXT (text), utf8);
- }
- else
- clutter_text_set_text (CLUTTER_TEXT (text), runes);
-
- clutter_actor_set_size (stage, 1024, 768);
- clutter_actor_show (stage);
-
- clutter_main ();
-
- return EXIT_SUCCESS;
-}
-
-G_MODULE_EXPORT const char *
-test_text_describe (void)
-{
- return "Multi-line text editing.";
-}
diff --git a/clutter/tests/interactive/test-texture-async.c b/clutter/tests/interactive/test-texture-async.c
deleted file mode 100644
index 9a5574fac..000000000
--- a/clutter/tests/interactive/test-texture-async.c
+++ /dev/null
@@ -1,160 +0,0 @@
-#include <stdlib.h>
-#include <gmodule.h>
-#include <clutter/clutter.h>
-
-enum
-{
- LOAD_SYNC,
- LOAD_DATA_ASYNC,
- LOAD_ASYNC
-};
-
-static ClutterActor *stage = NULL;
-
-const char *
-test_texture_async_describe (void);
-
-gint
-test_texture_async_main (int argc, char *argv[]);
-
-static void
-on_load_finished (ClutterTexture *texture,
- const GError *error,
- gpointer user_data)
-{
- gint load_type = GPOINTER_TO_INT (user_data);
- const gchar *load_str = NULL;
-
- switch (load_type)
- {
- case LOAD_SYNC:
- load_str = "synchronous loading";
- break;
-
- case LOAD_DATA_ASYNC:
- load_str = "asynchronous data loading";
- break;
-
- case LOAD_ASYNC:
- load_str = "asynchronous loading";
- break;
- }
-
- if (error != NULL)
- g_print ("%s failed: %s\n", load_str, error->message);
- else
- g_print ("%s successful\n", load_str);
-}
-
-static void
-size_change_cb (ClutterTexture *texture,
- gint width,
- gint height,
- gpointer user_data)
-{
- clutter_actor_set_size (user_data, width, height);
-}
-
-static
-gboolean task (gpointer user_data)
-{
- const gchar *path = user_data;
- ClutterActor *image[3];
- ClutterActor *clone[3];
- gint i;
-
- image[0] = g_object_new (CLUTTER_TYPE_TEXTURE, NULL);
- g_signal_connect (image[0], "load-finished",
- G_CALLBACK (on_load_finished),
- GINT_TO_POINTER (LOAD_SYNC));
-
- image[1] = g_object_new (CLUTTER_TYPE_TEXTURE,
- "load-data-async", TRUE,
- NULL);
- g_signal_connect (image[1], "load-finished",
- G_CALLBACK (on_load_finished),
- GINT_TO_POINTER (LOAD_DATA_ASYNC));
- image[2] = g_object_new (CLUTTER_TYPE_TEXTURE,
- "load-async", TRUE,
- NULL);
- g_signal_connect (image[2], "load-finished",
- G_CALLBACK (on_load_finished),
- GINT_TO_POINTER (LOAD_ASYNC));
-
- for (i = 0; i < 3; i++)
- {
- GError *error = NULL;
-
- clutter_texture_set_from_file (CLUTTER_TEXTURE (image[i]), path, &error);
- if (error != NULL)
- g_error ("Unable to load image at '%s': %s",
- path != NULL ? path : "<unknown>",
- error->message);
- }
-
- for (i = 0; i < 3; i++)
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), image[i]);
-
- for (i = 0; i < 3; i++)
- {
- clutter_actor_set_position (image[i], 50 + i * 100, 0 + i * 50);
- clutter_actor_set_depth (image[i], -2500);
-
- clone[i] = clutter_clone_new (image[i]);
- g_signal_connect (image[i], "size-change",
- G_CALLBACK (size_change_cb), clone[i]);
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), clone[i]);
- clutter_actor_set_position (clone[i], 50 + i * 100, 150 + i * 50 + 100);
- }
-
- for (i = 0; i < 3; i++)
- {
- clutter_actor_save_easing_state (image[i]);
- clutter_actor_set_easing_duration (image[i], 5000);
- clutter_actor_set_depth (image[i], 0);
- clutter_actor_restore_easing_state (image[i]);
- }
-
- return FALSE;
-}
-
-static void
-cleanup_task (gpointer data)
-{
-}
-
-G_MODULE_EXPORT gint
-test_texture_async_main (int argc, char *argv[])
-{
- gchar *path;
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- stage = clutter_stage_new ();
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Asynchronous Texture Loading");
- clutter_actor_set_background_color (stage, CLUTTER_COLOR_LightSkyBlue);
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- clutter_actor_show (stage);
-
- path = (argc > 1)
- ? g_strdup (argv[1])
- : g_build_filename (TESTS_DATADIR, "redhand.png", NULL);
-
- clutter_threads_add_timeout_full (G_PRIORITY_DEFAULT, 500,
- task, path,
- cleanup_task);
-
- clutter_main ();
-
- g_free (path);
-
- return EXIT_SUCCESS;
-}
-
-G_MODULE_EXPORT const char *
-test_texture_async_describe (void)
-{
- return "Texture asynchronous loading using threads";
-}
diff --git a/clutter/tests/interactive/test-texture-material.c b/clutter/tests/interactive/test-texture-material.c
deleted file mode 100644
index 90fbcf714..000000000
--- a/clutter/tests/interactive/test-texture-material.c
+++ /dev/null
@@ -1,49 +0,0 @@
-#include <stdlib.h>
-#include <glib.h>
-#include <gmodule.h>
-#include <clutter/clutter.h>
-
-int
-test_texture_material_main (int argc, char *argv[]);
-
-G_MODULE_EXPORT int
-test_texture_material_main (int argc, char *argv[])
-{
- ClutterActor *stage, *box;
- ClutterLayoutManager *manager;
- int i;
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- stage = clutter_stage_new ();
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Texture Material");
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- manager = clutter_flow_layout_new (CLUTTER_FLOW_HORIZONTAL);
- box = clutter_box_new (manager);
- clutter_actor_add_constraint (box, clutter_bind_constraint_new (stage, CLUTTER_BIND_WIDTH, -25.0));
- clutter_actor_add_constraint (box, clutter_bind_constraint_new (stage, CLUTTER_BIND_HEIGHT, -25.0));
- clutter_actor_set_position (box, 25.0, 25.0);
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), box);
-
- for (i = 0; i < 48; i++)
- {
- ClutterActor *texture = clutter_texture_new ();
-
- clutter_texture_set_load_data_async (CLUTTER_TEXTURE (texture), TRUE);
- clutter_texture_set_keep_aspect_ratio (CLUTTER_TEXTURE (texture), TRUE);
- clutter_texture_set_from_file (CLUTTER_TEXTURE (texture),
- TESTS_DATADIR "/redhand.png",
- NULL);
- clutter_actor_set_width (texture, 96);
-
- clutter_container_add_actor (CLUTTER_CONTAINER (box), texture);
- }
-
- clutter_actor_show (stage);
-
- clutter_main ();
-
- return EXIT_SUCCESS;
-}
diff --git a/clutter/tests/interactive/test-texture-quality.c b/clutter/tests/interactive/test-texture-quality.c
deleted file mode 100644
index 91c0f0dc6..000000000
--- a/clutter/tests/interactive/test-texture-quality.c
+++ /dev/null
@@ -1,122 +0,0 @@
-#include <stdlib.h>
-#include <gmodule.h>
-#include <clutter/clutter.h>
-
-gint
-test_texture_quality_main (int argc, char *argv[]);
-
-const char *
-test_texture_quality_describe (void);
-
-/* each time the timeline animating the label completes, swap the direction */
-static void
-timeline_completed (ClutterTimeline *timeline,
- gpointer user_data)
-{
- clutter_timeline_set_direction (timeline,
- !clutter_timeline_get_direction (timeline));
- clutter_timeline_start (timeline);
-}
-
-static gboolean
-change_filter (gpointer actor)
-{
- ClutterTextureQuality old_quality;
-
- old_quality = clutter_texture_get_filter_quality (actor);
- switch (old_quality)
- {
- case CLUTTER_TEXTURE_QUALITY_LOW:
- clutter_texture_set_filter_quality (actor,
- CLUTTER_TEXTURE_QUALITY_MEDIUM);
- g_print ("Setting texture rendering quality to medium\n");
- break;
- case CLUTTER_TEXTURE_QUALITY_MEDIUM:
- clutter_texture_set_filter_quality (actor,
- CLUTTER_TEXTURE_QUALITY_HIGH);
- g_print ("Setting texture rendering quality to high\n");
- break;
- case CLUTTER_TEXTURE_QUALITY_HIGH:
- clutter_texture_set_filter_quality (actor,
- CLUTTER_TEXTURE_QUALITY_LOW);
- g_print ("Setting texture rendering quality to low\n");
- break;
- }
- return TRUE;
-}
-
-G_MODULE_EXPORT gint
-test_texture_quality_main (int argc, char *argv[])
-{
- ClutterTimeline *timeline;
- ClutterAlpha *alpha;
- ClutterBehaviour *depth_behavior;
- ClutterActor *stage;
- ClutterActor *image;
- ClutterColor stage_color = { 0x12, 0x34, 0x56, 0xff };
- ClutterFog stage_fog = { 10.0, -50.0 };
- GError *error;
- gchar *file;
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- stage = clutter_stage_new ();
- clutter_actor_set_background_color (stage, &stage_color);
- clutter_stage_set_use_fog (CLUTTER_STAGE (stage), TRUE);
- clutter_stage_set_fog (CLUTTER_STAGE (stage), &stage_fog);
- g_signal_connect (stage,
- "destroy", G_CALLBACK (clutter_main_quit),
- NULL);
- g_signal_connect (stage,
- "button-press-event", G_CALLBACK (clutter_main_quit),
- NULL);
-
- if (argc < 2)
- g_print ("Hint: the redhand.png isn't a good test image for this test.\n"
- "This test can take any image file as an argument\n");
-
- file = (argc > 1)
- ? g_strdup (argv[1])
- : g_build_filename (TESTS_DATADIR, "redhand.png", NULL);
-
- error = NULL;
- image = clutter_texture_new_from_file (file, &error);
- if (error)
- g_error ("Unable to load image: %s", error->message);
-
- g_free (file);
-
- /* center the image */
- clutter_actor_set_position (image,
- (clutter_actor_get_width (stage) - clutter_actor_get_width (image))/2,
- (clutter_actor_get_height (stage) - clutter_actor_get_height (image))/2);
- clutter_container_add (CLUTTER_CONTAINER (stage), image, NULL);
-
- timeline = clutter_timeline_new (5000);
- g_signal_connect (timeline,
- "completed", G_CALLBACK (timeline_completed),
- NULL);
-
- alpha = clutter_alpha_new_full (timeline, CLUTTER_LINEAR);
- depth_behavior = clutter_behaviour_depth_new (alpha, -2500, 400);
- clutter_behaviour_apply (depth_behavior, image);
-
- clutter_actor_show (stage);
- clutter_timeline_start (timeline);
-
- clutter_threads_add_timeout (10000, change_filter, image);
-
- clutter_main ();
-
- g_object_unref (depth_behavior);
- g_object_unref (timeline);
-
- return EXIT_SUCCESS;
-}
-
-G_MODULE_EXPORT const char *
-test_texture_quality_describe (void)
-{
- return "Change the texture filtering quality.";
-}
diff --git a/clutter/tests/interactive/test-texture-slicing.c b/clutter/tests/interactive/test-texture-slicing.c
deleted file mode 100644
index 652fc3239..000000000
--- a/clutter/tests/interactive/test-texture-slicing.c
+++ /dev/null
@@ -1,131 +0,0 @@
-#include <stdlib.h>
-#include <gmodule.h>
-
-#include <clutter/clutter.h>
-
-int
-test_textures_main (int argc, char *argv[]);
-
-const char *
-test_texture_slicing_describe (void);
-
-static guchar *
-make_rgba_data (int width, int height, int bpp, int has_alpha, int *rowstride_p)
-{
-#define CHECK_SIZE 20
-
- gint x,y, rowstride, i = 0;
- guchar *pixels;
-
- g_assert(bpp == 4);
- g_assert(has_alpha == TRUE);
-
- rowstride = width * bpp;
- *rowstride_p = rowstride;
-
- pixels = g_try_malloc (height * rowstride);
- if (!pixels)
- return NULL;
-
- for (y = 0; y < height; y++)
- {
- i = 0;
- for (x = 0; x < width; x++)
- {
- guchar *p;
-
- p = pixels + y * rowstride + x * bpp;
-
- p[0] = p[1] = p[2] = 0; p[3] = 0xff;
-
- if (x && y && y % CHECK_SIZE && x % CHECK_SIZE)
- {
- if (x % CHECK_SIZE == 1)
- {
- if (++i > 3)
- i = 0;
- }
- p[i] = 0xff;
- }
- }
- }
-
- return pixels;
-}
-
-static void
-exit_on_destroy (ClutterActor *actor)
-{
- exit(EXIT_SUCCESS);
-}
-
-#define SPIN() while (g_main_context_pending (NULL)) \
- g_main_context_iteration (NULL, FALSE);
-
-G_MODULE_EXPORT int
-test_textures_main (int argc, char *argv[])
-{
- ClutterActor *texture;
- ClutterActor *stage;
- gint i, j;
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- stage = clutter_stage_new ();
- clutter_actor_show_all (CLUTTER_ACTOR (stage));
- g_signal_connect (stage, "destroy", G_CALLBACK (exit_on_destroy), NULL);
-
- SPIN();
-
- for (i=100; i<=5000; i += 100)
- for (j=0; j<4; j++)
- {
- const int width = i+j;
- const int height = i+j;
- const gboolean has_alpha = TRUE;
- const int bpp = has_alpha ? 4 : 3;
- int rowstride;
- guchar *pixels;
-
- pixels = make_rgba_data (width, height, bpp, has_alpha, &rowstride);
- if (!pixels)
- g_error("No memory for %ix%i RGBA data failed", width, height);
-
- printf("o %ix%i texture... ", width, height);
-
- texture = clutter_texture_new ();
- if (!clutter_texture_set_from_rgb_data (CLUTTER_TEXTURE (texture),
- pixels,
- has_alpha,
- width,
- height,
- rowstride,
- bpp,
- 0, NULL))
- g_error("texture creation failed");
- g_free(pixels);
-
- printf("uploaded to texture...\n");
-
- clutter_container_add (CLUTTER_CONTAINER (stage), texture, NULL);
- clutter_actor_set_size (texture, 400, 400);
- clutter_actor_show (texture);
-
- /* Hide & show to unreaise then realise the texture */
- clutter_actor_hide (texture);
- clutter_actor_show (texture);
-
- SPIN();
-
- clutter_container_remove (CLUTTER_CONTAINER (stage), texture, NULL);
- }
-
- return EXIT_SUCCESS;
-}
-
-G_MODULE_EXPORT const char *
-test_texture_slicing_describe (void)
-{
- return "Check texture slicing support in CoglTexture";
-}
diff --git a/clutter/tests/interactive/test-touch-events.c b/clutter/tests/interactive/test-touch-events.c
deleted file mode 100644
index fd23838ca..000000000
--- a/clutter/tests/interactive/test-touch-events.c
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * Copyright (C) 2012 Collabora Ltd.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU Lesser General Public License,
- * version 2.1, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
- * more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
- * Boston, MA 02111-1307, USA.
- *
- */
-#include <stdlib.h>
-#include <math.h>
-#include <cairo.h>
-#include <glib.h>
-#include <clutter/clutter.h>
-
-#define STAGE_WIDTH 800
-#define STAGE_HEIGHT 550
-#define NUM_COLORS 10
-#define NUM_ACTORS 10
-
-static GQueue events = G_QUEUE_INIT;
-static GQueue all_events = G_QUEUE_INIT;
-static gboolean new_surface = TRUE;
-
-static const ClutterColor static_colors[] = {
- { 0xff, 0x00, 0x00, 0xff }, /* red */
- { 0x80, 0x00, 0x00, 0xff }, /* dark red */
- { 0x00, 0xff, 0x00, 0xff }, /* green */
- { 0x00, 0x80, 0x00, 0xff }, /* dark green */
- { 0x00, 0x00, 0xff, 0xff }, /* blue */
- { 0x00, 0x00, 0x80, 0xff }, /* dark blue */
- { 0x00, 0xff, 0xff, 0xff }, /* cyan */
- { 0x00, 0x80, 0x80, 0xff }, /* dark cyan */
- { 0xff, 0x00, 0xff, 0xff }, /* magenta */
- { 0xff, 0xff, 0x00, 0xff }, /* yellow */
-};
-static GHashTable *sequence_to_color = NULL;
-
-int
-test_touch_events_main (int argc, char *argv[]);
-
-const char *
-test_touch_events_describe (void);
-
-static void
-canvas_paint (ClutterCairoTexture *canvas)
-{
- clutter_cairo_texture_invalidate (canvas);
-}
-
-static void
-draw_touch (ClutterEvent *event,
- cairo_t *cr)
-{
- ClutterEventSequence *sequence = clutter_event_get_event_sequence (event);
- const ClutterColor *color;
-
- color = g_hash_table_lookup (sequence_to_color, sequence);
- if (color == NULL)
- {
- color = &static_colors[g_random_int_range (0, NUM_COLORS)];
- g_hash_table_insert (sequence_to_color, (gpointer) sequence, (gpointer) color);
- }
-
- cairo_set_source_rgba (cr, color->red / 255,
- color->green / 255,
- color->blue / 255,
- color->alpha / 255);
- cairo_arc (cr, event->touch.x, event->touch.y, 5, 0, 2 * G_PI);
- cairo_fill (cr);
-}
-
-static gboolean
-draw_touches (ClutterCairoTexture *canvas,
- cairo_t *cr)
-{
- g_queue_foreach (new_surface ? &all_events : &events, (GFunc) draw_touch, cr);
- g_queue_clear (&events);
-
- new_surface = FALSE;
-
- return TRUE;
-}
-
-static cairo_surface_t *
-create_surface (ClutterCairoTexture *texture,
- guint width,
- guint height,
- gpointer user_data)
-{
- new_surface = TRUE;
-
- return NULL;
-}
-
-static gboolean
-event_cb (ClutterActor *actor, ClutterEvent *event, ClutterActor *canvas)
-{
- ClutterEvent *copy;
-
- if (event->type != CLUTTER_TOUCH_UPDATE)
- return FALSE;
-
- copy = clutter_event_copy (event);
- g_queue_push_tail (&events, copy);
- g_queue_push_tail (&all_events, copy);
- clutter_actor_queue_redraw (canvas);
-
- return TRUE;
-}
-
-static gboolean
-rect_event_cb (ClutterActor *actor, ClutterEvent *event, gpointer data)
-{
- ClutterColor color;
-
- if (event->type != CLUTTER_TOUCH_BEGIN)
- return FALSE;
-
- color = static_colors[g_random_int_range (0, NUM_COLORS)];
- clutter_rectangle_set_color (CLUTTER_RECTANGLE (actor), &color);
-
- return TRUE;
-}
-
-G_MODULE_EXPORT int
-test_touch_events_main (int argc, char *argv[])
-{
- ClutterActor *stage, *canvas;
- int i;
-
- /* initialize Clutter */
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return EXIT_FAILURE;
-
- /* create a resizable stage */
- stage = clutter_stage_new ();
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Touch events");
- clutter_actor_set_size (stage, STAGE_WIDTH, STAGE_HEIGHT);
- clutter_actor_set_reactive (stage, TRUE);
- clutter_actor_show (stage);
-
- /* our 2D canvas, courtesy of Cairo */
- canvas = clutter_cairo_texture_new (1, 1);
- g_signal_connect (canvas, "paint", G_CALLBACK (canvas_paint), NULL);
- g_signal_connect (canvas, "draw", G_CALLBACK (draw_touches), NULL);
- g_signal_connect (canvas, "create-surface", G_CALLBACK (create_surface), NULL);
- clutter_cairo_texture_set_auto_resize (CLUTTER_CAIRO_TEXTURE (canvas), TRUE);
- clutter_actor_add_constraint (canvas,
- clutter_bind_constraint_new (stage,
- CLUTTER_BIND_SIZE,
- 0));
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), canvas);
-
- g_signal_connect (stage, "event", G_CALLBACK (event_cb), canvas);
-
- for (i = 0; i < NUM_ACTORS; i++)
- {
- gfloat size = STAGE_HEIGHT / NUM_ACTORS;
- ClutterColor color = static_colors[i % NUM_COLORS];
- ClutterActor *rectangle = clutter_rectangle_new_with_color (&color);
-
- /* Test that event delivery to actors work */
- g_signal_connect (rectangle, "event", G_CALLBACK (rect_event_cb), NULL);
-
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), rectangle);
- clutter_actor_set_size (rectangle, size, size);
- clutter_actor_set_position (rectangle, 0, i * size);
- clutter_actor_set_reactive (rectangle, TRUE);
- }
-
- sequence_to_color = g_hash_table_new (NULL, NULL);
-
- clutter_main ();
-
- g_queue_foreach (&all_events, (GFunc) clutter_event_free, NULL);
- g_queue_clear (&events);
- g_queue_clear (&all_events);
- g_hash_table_destroy (sequence_to_color);
-
- return EXIT_SUCCESS;
-}
-
-G_MODULE_EXPORT const char *
-test_touch_events_describe (void)
-{
- return "Draw shapes based on touch events";
-}
diff --git a/clutter/tests/interactive/wrapper.sh.in b/clutter/tests/interactive/wrapper.sh.in
deleted file mode 100755
index 90aa4e1b6..000000000
--- a/clutter/tests/interactive/wrapper.sh.in
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-UNIT_TEST=$1
-
-shift
-
-echo "Running ./test-interactive $UNIT_TEST $@"
-echo ""
-echo "NOTE: For debugging purposes, you can run this single test as follows:"
-echo "$ libtool --mode=execute \\"
-echo " gdb --eval-command=\"b `echo $UNIT_TEST|tr '-' '_'`_main\" \\"
-echo " --args ./test-interactive $UNIT_TEST"
-
-@abs_builddir@/test-interactive $UNIT_TEST "$@"
-
diff --git a/clutter/tests/meson.build b/clutter/tests/meson.build
deleted file mode 100644
index 125d81e97..000000000
--- a/clutter/tests/meson.build
+++ /dev/null
@@ -1,5 +0,0 @@
-subdir('accessibility')
-subdir('conform')
-subdir('interactive')
-subdir('micro-bench')
-subdir('performance')
diff --git a/clutter/tests/micro-bench/.gitignore b/clutter/tests/micro-bench/.gitignore
deleted file mode 100644
index 13744d47e..000000000
--- a/clutter/tests/micro-bench/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-/test-cogl-perf
-/test-picking
-/test-random-text
-/test-text
-/test-text-perf
diff --git a/clutter/tests/micro-bench/meson.build b/clutter/tests/micro-bench/meson.build
deleted file mode 100644
index b8fe1e794..000000000
--- a/clutter/tests/micro-bench/meson.build
+++ /dev/null
@@ -1,28 +0,0 @@
-clutter_tests_micro_bench_c_args = [
- '-DG_DISABLE_SINGLE_INCLUDES',
- '-DGLIB_DISABLE_DEPRECATION_WARNINGS',
- '-DCOGL_DISABLE_DEPRECATION_WARNINGS',
- '-DCLUTTER_DISABLE_DEPRECATION_WARNINGS',
-]
-clutter_tests_micro_bench_c_args += clutter_debug_c_args
-
-clutter_tests_micro_bench_tests = [
- 'test-text',
- 'test-picking',
- 'test-text-perf',
- 'test-random-text',
- 'test-cogl-perf',
-]
-
-foreach test : clutter_tests_micro_bench_tests
- executable(test,
- sources: '@0@.c'.format(test),
- include_directories: clutter_includes,
- c_args: clutter_tests_micro_bench_c_args,
- dependencies: [
- clutter_deps,
- libmutter_clutter_dep,
- ],
- install: false,
- )
-endforeach
diff --git a/clutter/tests/micro-bench/test-cogl-perf.c b/clutter/tests/micro-bench/test-cogl-perf.c
deleted file mode 100644
index 0b92219c5..000000000
--- a/clutter/tests/micro-bench/test-cogl-perf.c
+++ /dev/null
@@ -1,158 +0,0 @@
-#include <clutter-build-config.h>
-#include <glib.h>
-#include <gmodule.h>
-#include <stdlib.h>
-#include <clutter/clutter.h>
-#include <cogl/cogl.h>
-#include <math.h>
-
-#define STAGE_WIDTH 800
-#define STAGE_HEIGHT 600
-
-gboolean run_all = FALSE;
-
-static GOptionEntry entries[] = {
- {
- "run-all", 'a',
- 0,
- G_OPTION_ARG_NONE, &run_all,
- "Run all tests", ""
- },
- { NULL }
-};
-
-typedef struct _TestState
-{
- ClutterActor *stage;
- int current_test;
-} TestState;
-
-typedef void (*TestCallback) (TestState *state);
-
-static void
-test_rectangles (TestState *state)
-{
-#define RECT_WIDTH 5
-#define RECT_HEIGHT 5
- int x;
- int y;
-
- /* Should the rectangles be randomly positioned/colored/rotated?
- *
- * It could be good to develop equivalent GL and Cairo tests so we can
- * have a sanity check for our Cogl performance.
- *
- * The color should vary to check that we correctly batch color changes
- * The use of alpha should vary so we have a variation of which rectangles
- * require blending.
- * Should this be a random variation?
- * It could be good to experiment with focibly enabling blending for
- * rectangles that don't technically need it for the sake of extending
- * batching. E.g. if you a long run of interleved rectangles with every
- * other rectangle needing blending then it may be worth enabling blending
- * for all the rectangles to avoid the state changes.
- * The modelview should change between rectangles to check the software
- * transform codepath.
- * Should we group some rectangles under the same modelview? Potentially
- * we could avoid software transform for long runs of rectangles with the
- * same modelview.
- *
- */
-
- for (y = 0; y < STAGE_HEIGHT; y += RECT_HEIGHT)
- {
- for (x = 0; x < STAGE_WIDTH; x += RECT_WIDTH)
- {
- cogl_push_matrix ();
- cogl_translate (x, y, 0);
- cogl_rotate (45, 0, 0, 1);
- cogl_set_source_color4f (1,
- (1.0f/STAGE_WIDTH)*y,
- (1.0f/STAGE_HEIGHT)*x,
- 1);
- cogl_rectangle (0, 0, RECT_WIDTH, RECT_HEIGHT);
- cogl_pop_matrix ();
- }
- }
-
- for (y = 0; y < STAGE_HEIGHT; y += RECT_HEIGHT)
- {
- for (x = 0; x < STAGE_WIDTH; x += RECT_WIDTH)
- {
- cogl_push_matrix ();
- cogl_translate (x, y, 0);
- cogl_rotate (0, 0, 0, 1);
- cogl_set_source_color4f (1,
- (1.0f/STAGE_WIDTH)*x,
- (1.0f/STAGE_HEIGHT)*y,
- (1.0f/STAGE_WIDTH)*x);
- cogl_rectangle (0, 0, RECT_WIDTH, RECT_HEIGHT);
- cogl_pop_matrix ();
- }
- }
-}
-
-TestCallback tests[] =
-{
- test_rectangles
-};
-
-static void
-on_paint (ClutterActor *actor, TestState *state)
-{
- tests[state->current_test] (state);
-}
-
-static gboolean
-queue_redraw (gpointer stage)
-{
- clutter_actor_queue_redraw (CLUTTER_ACTOR (stage));
-
- return TRUE;
-}
-
-int
-main (int argc, char *argv[])
-{
- TestState state;
- ClutterActor *stage;
- GError *error = NULL;
-
- g_setenv ("CLUTTER_VBLANK", "none", FALSE);
- g_setenv ("CLUTTER_SHOW_FPS", "1", FALSE);
-
- if (clutter_init_with_args (&argc, &argv,
- NULL,
- entries,
- NULL,
- &error) != CLUTTER_INIT_SUCCESS)
- {
- g_warning ("Unable to initialise Clutter:\n%s",
- error->message);
- g_error_free (error);
-
- return EXIT_FAILURE;
- }
-
- state.current_test = 0;
-
- state.stage = stage = clutter_stage_new ();
-
- clutter_actor_set_size (stage, STAGE_WIDTH, STAGE_HEIGHT);
- clutter_stage_set_color (CLUTTER_STAGE (stage), CLUTTER_COLOR_White);
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Cogl Performance Test");
-
- /* We want continuous redrawing of the stage... */
- clutter_threads_add_idle (queue_redraw, stage);
-
- g_signal_connect_after (stage, "paint", G_CALLBACK (on_paint), &state);
-
- clutter_actor_show (stage);
-
- clutter_main ();
-
- clutter_actor_destroy (stage);
-
- return 0;
-}
-
diff --git a/clutter/tests/micro-bench/test-picking.c b/clutter/tests/micro-bench/test-picking.c
deleted file mode 100644
index 845e600d9..000000000
--- a/clutter/tests/micro-bench/test-picking.c
+++ /dev/null
@@ -1,140 +0,0 @@
-
-#include <math.h>
-#include <stdlib.h>
-#include <clutter/clutter.h>
-
-#define N_ACTORS 100
-#define N_EVENTS 5
-
-static gint n_actors = N_ACTORS;
-static gint n_events = N_EVENTS;
-
-static GOptionEntry entries[] = {
- {
- "num-actors", 'a',
- 0,
- G_OPTION_ARG_INT, &n_actors,
- "Number of actors", "ACTORS"
- },
- {
- "num-events", 'e',
- 0,
- G_OPTION_ARG_INT, &n_events,
- "Number of events", "EVENTS"
- },
- { NULL }
-};
-
-static gboolean
-motion_event_cb (ClutterActor *actor, ClutterEvent *event, gpointer user_data)
-{
- return FALSE;
-}
-
-static void
-do_events (ClutterActor *stage)
-{
- glong i;
- static gdouble angle = 0;
-
- for (i = 0; i < n_events; i++)
- {
- angle += (2.0 * G_PI) / (gdouble)n_actors;
- while (angle > G_PI * 2.0)
- angle -= G_PI * 2.0;
-
- /* If we synthesized events, they would be motion compressed;
- * calling get_actor_at_position() doesn't have that problem
- */
- clutter_stage_get_actor_at_pos (CLUTTER_STAGE (stage),
- CLUTTER_PICK_REACTIVE,
- 256.0 + 206.0 * cos (angle),
- 256.0 + 206.0 * sin (angle));
- }
-}
-
-static void
-on_paint (ClutterActor *stage, gconstpointer *data)
-{
- do_events (stage);
-}
-
-static gboolean
-queue_redraw (gpointer stage)
-{
- clutter_actor_queue_redraw (CLUTTER_ACTOR (stage));
-
- return TRUE;
-}
-
-int
-main (int argc, char **argv)
-{
- glong i;
- gdouble angle;
- ClutterColor color = { 0x00, 0x00, 0x00, 0xff };
- ClutterActor *stage, *rect;
- GError *error = NULL;
-
- g_setenv ("CLUTTER_VBLANK", "none", FALSE);
- g_setenv ("CLUTTER_DEFAULT_FPS", "1000", FALSE);
- g_setenv ("CLUTTER_SHOW_FPS", "1", FALSE);
-
- if (clutter_init_with_args (&argc, &argv,
- NULL,
- entries,
- NULL,
- &error) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- stage = clutter_stage_new ();
- clutter_actor_set_size (stage, 512, 512);
- clutter_stage_set_color (CLUTTER_STAGE (stage), CLUTTER_COLOR_Black);
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Picking");
-
- printf ("Picking performance test with "
- "%d actors and %d events per frame\n",
- n_actors,
- n_events);
-
- for (i = n_actors - 1; i >= 0; i--)
- {
- angle = ((2.0 * G_PI) / (gdouble) n_actors) * i;
-
- color.red = (1.0 - ABS ((MAX (0, MIN (n_actors/2.0 + 0, i))) /
- (gdouble)(n_actors/4.0) - 1.0)) * 255.0;
- color.green = (1.0 - ABS ((MAX (0, MIN (n_actors/2.0 + 0,
- fmod (i + (n_actors/3.0)*2, n_actors)))) /
- (gdouble)(n_actors/4) - 1.0)) * 255.0;
- color.blue = (1.0 - ABS ((MAX (0, MIN (n_actors/2.0 + 0,
- fmod ((i + (n_actors/3.0)), n_actors)))) /
- (gdouble)(n_actors/4.0) - 1.0)) * 255.0;
-
- rect = clutter_rectangle_new_with_color (&color);
- clutter_actor_set_size (rect, 100, 100);
- clutter_actor_set_anchor_point_from_gravity (rect,
- CLUTTER_GRAVITY_CENTER);
- clutter_actor_set_position (rect,
- 256 + 206 * cos (angle),
- 256 + 206 * sin (angle));
- clutter_actor_set_reactive (rect, TRUE);
- g_signal_connect (rect, "motion-event",
- G_CALLBACK (motion_event_cb), NULL);
-
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), rect);
- }
-
- clutter_actor_show (stage);
-
- clutter_threads_add_idle (queue_redraw, stage);
-
- g_signal_connect (stage, "paint", G_CALLBACK (on_paint), NULL);
-
- clutter_main ();
-
- clutter_actor_destroy (stage);
-
- return 0;
-}
-
-
diff --git a/clutter/tests/micro-bench/test-random-text.c b/clutter/tests/micro-bench/test-random-text.c
deleted file mode 100644
index 69eb6d018..000000000
--- a/clutter/tests/micro-bench/test-random-text.c
+++ /dev/null
@@ -1,105 +0,0 @@
-#include <gmodule.h>
-#include <clutter/clutter.h>
-#include <stdlib.h>
-
-#define MAX_TEXT_LEN 10
-#define MIN_FONT_SIZE 10
-#define MAX_FONT_SIZE 30
-
-static const char * const font_names[] =
- {
- "Sans", "Sans Italic", "Serif", "Serif Bold", "Times", "Monospace"
- };
-#define FONT_NAME_COUNT 6
-
-static gboolean
-on_idle (gpointer data)
-{
- ClutterActor *stage = CLUTTER_ACTOR (data);
- int line_height = 0, xpos = 0, ypos = 0;
- int stage_width = clutter_actor_get_width (stage);
- int stage_height = clutter_actor_get_height (stage);
- char text[MAX_TEXT_LEN + 1];
- char font_name[64];
- int i;
- GList *children, *node;
- static GTimer *timer = NULL;
- static int frame_count = 0;
-
- /* Remove all of the children of the stage */
- children = clutter_container_get_children (CLUTTER_CONTAINER (stage));
- for (node = children; node; node = node->next)
- clutter_container_remove_actor (CLUTTER_CONTAINER (stage),
- CLUTTER_ACTOR (node->data));
- g_list_free (children);
-
- /* Fill the stage with new random labels */
- while (ypos < stage_height)
- {
- int text_len = rand () % MAX_TEXT_LEN + 1;
- ClutterActor *label;
-
- for (i = 0; i < text_len; i++)
- text[i] = rand () % (128 - 32) + 32;
- text[text_len] = '\0';
-
- sprintf (font_name, "%s %i",
- font_names[rand () % FONT_NAME_COUNT],
- rand () % (MAX_FONT_SIZE - MIN_FONT_SIZE) + MIN_FONT_SIZE);
-
- label = clutter_text_new_with_text (font_name, text);
-
- if (clutter_actor_get_height (label) > line_height)
- line_height = clutter_actor_get_height (label);
-
- if (xpos + clutter_actor_get_width (label) > stage_width)
- {
- xpos = 0;
- ypos += line_height;
- line_height = 0;
- }
-
- clutter_actor_set_position (label, xpos, ypos);
-
- clutter_container_add (CLUTTER_CONTAINER (stage), label, NULL);
-
- xpos += clutter_actor_get_width (label);
- }
-
- if (timer == NULL)
- timer = g_timer_new ();
- else
- {
- if (++frame_count >= 10)
- {
- printf ("10 frames in %f seconds\n",
- g_timer_elapsed (timer, NULL));
- g_timer_start (timer);
- frame_count = 0;
- }
- }
-
- return TRUE;
-}
-
-int
-main (int argc, char *argv[])
-{
- ClutterActor *stage;
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- stage = clutter_stage_new ();
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Random Text");
-
- clutter_actor_show (stage);
-
- clutter_threads_add_idle (on_idle, stage);
-
- clutter_main ();
-
- clutter_actor_destroy (stage);
-
- return 0;
-}
diff --git a/clutter/tests/micro-bench/test-text-perf.c b/clutter/tests/micro-bench/test-text-perf.c
deleted file mode 100644
index 710c83e27..000000000
--- a/clutter/tests/micro-bench/test-text-perf.c
+++ /dev/null
@@ -1,187 +0,0 @@
-#include <clutter/clutter.h>
-
-#include <stdlib.h>
-#include <string.h>
-
-#define STAGE_WIDTH 800
-#define STAGE_HEIGHT 600
-
-static int font_size;
-static int n_chars;
-static int rows, cols;
-
-static void
-on_paint (ClutterActor *actor, gconstpointer *data)
-{
- static GTimer *timer = NULL;
- static int fps = 0;
-
- if (!timer)
- {
- timer = g_timer_new ();
- g_timer_start (timer);
- }
-
- if (g_timer_elapsed (timer, NULL) >= 1)
- {
- printf ("fps=%d, strings/sec=%d, chars/sec=%d\n",
- fps,
- fps * rows * cols,
- fps * rows * cols * n_chars);
- g_timer_start (timer);
- fps = 0;
- }
-
- ++fps;
-}
-
-static gboolean
-queue_redraw (gpointer stage)
-{
- clutter_actor_queue_redraw (CLUTTER_ACTOR (stage));
-
- return G_SOURCE_CONTINUE;
-}
-
-static gunichar
-get_character (int ch)
-{
- int total_letters = 0;
- int i;
-
- static const struct
- {
- gunichar first_letter;
- int n_letters;
- }
- ranges[] =
- {
- { 'a', 26 }, /* lower case letters */
- { 'A', 26 }, /* upper case letters */
- { '0', 10 }, /* digits */
- { 0x410, 0x40 }, /* cyrillic alphabet */
- { 0x3b1, 18 } /* greek alphabet */
- };
-
- for (i = 0; i < G_N_ELEMENTS (ranges); i++)
- total_letters += ranges[i].n_letters;
-
- ch %= total_letters;
-
- for (i = 0; i < G_N_ELEMENTS (ranges) - 1; i++)
- if (ch < ranges[i].n_letters)
- return ch + ranges[i].first_letter;
- else
- ch -= ranges[i].n_letters;
-
- return ch + ranges[i].first_letter;
-}
-
-static ClutterActor *
-create_label (void)
-{
- ClutterColor label_color = { 0xff, 0xff, 0xff, 0xff };
- ClutterActor *label;
- char *font_name;
- GString *str;
- int i;
-
- font_name = g_strdup_printf ("Monospace %dpx", font_size);
-
- str = g_string_new (NULL);
- for (i = 0; i < n_chars; i++)
- g_string_append_unichar (str, get_character (i));
-
- label = clutter_text_new_with_text (font_name, str->str);
- clutter_text_set_color (CLUTTER_TEXT (label), &label_color);
-
- g_free (font_name);
- g_string_free (str, TRUE);
-
- return label;
-}
-
-int
-main (int argc, char *argv[])
-{
- ClutterActor *stage;
- ClutterActor *label;
- int w, h;
- int row, col;
- float scale = 1.0f;
-
- g_setenv ("CLUTTER_VBLANK", "none", FALSE);
- g_setenv ("CLUTTER_DEFAULT_FPS", "1000", FALSE);
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- if (argc != 3)
- {
- g_printerr ("Usage test-text-perf FONT_SIZE N_CHARS\n");
- exit (1);
- }
-
- font_size = atoi (argv[1]);
- n_chars = atoi (argv[2]);
-
- g_print ("Monospace %dpx, string length = %d\n", font_size, n_chars);
-
- stage = clutter_stage_new ();
- clutter_actor_set_size (stage, STAGE_WIDTH, STAGE_HEIGHT);
- clutter_stage_set_color (CLUTTER_STAGE (stage), CLUTTER_COLOR_Black);
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Text Performance");
-
- g_signal_connect (stage, "paint", G_CALLBACK (on_paint), NULL);
-
- label = create_label ();
- w = clutter_actor_get_width (label);
- h = clutter_actor_get_height (label);
-
- /* If the label is too big to fit on the stage then scale it so that
- it will fit */
- if (w > STAGE_WIDTH || h > STAGE_HEIGHT)
- {
- float x_scale = STAGE_WIDTH / (float) w;
- float y_scale = STAGE_HEIGHT / (float) h;
-
- if (x_scale < y_scale)
- {
- scale = x_scale;
- cols = 1;
- rows = STAGE_HEIGHT / (h * scale);
- }
- else
- {
- scale = y_scale;
- cols = STAGE_WIDTH / (w * scale);
- rows = 1;
- }
-
- g_print ("Text scaled by %f to fit on the stage\n", scale);
- }
- else
- {
- cols = STAGE_WIDTH / w;
- rows = STAGE_HEIGHT / h;
- }
-
- clutter_actor_destroy (label);
-
- for (row=0; row<rows; row++)
- for (col=0; col<cols; col++)
- {
- label = create_label();
- clutter_actor_set_scale (label, scale, scale);
- clutter_actor_set_position (label, w * col * scale, h * row * scale);
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), label);
- }
-
- clutter_actor_show_all (stage);
-
- clutter_threads_add_idle (queue_redraw, stage);
-
- clutter_main ();
-
- return 0;
-}
diff --git a/clutter/tests/micro-bench/test-text.c b/clutter/tests/micro-bench/test-text.c
deleted file mode 100644
index d79bfd65a..000000000
--- a/clutter/tests/micro-bench/test-text.c
+++ /dev/null
@@ -1,120 +0,0 @@
-#include <clutter/clutter.h>
-
-#include <stdlib.h>
-#include <string.h>
-
-#define STAGE_WIDTH 640
-#define STAGE_HEIGHT 480
-
-#define COLS 18
-#define ROWS 20
-
-static void
-on_paint (ClutterActor *actor, gconstpointer *data)
-{
- static GTimer *timer = NULL;
- static int fps = 0;
-
- if (!timer)
- {
- timer = g_timer_new ();
- g_timer_start (timer);
- }
-
- if (g_timer_elapsed (timer, NULL) >= 1)
- {
- printf ("fps: %d\n", fps);
- g_timer_start (timer);
- fps = 0;
- }
-
- ++fps;
-}
-
-static gboolean
-queue_redraw (gpointer stage)
-{
- clutter_actor_queue_redraw (CLUTTER_ACTOR (stage));
-
- return G_SOURCE_CONTINUE;
-}
-
-int
-main (int argc, char *argv[])
-{
- ClutterActor *stage;
- ClutterActor *group;
-
- g_setenv ("CLUTTER_VBLANK", "none", FALSE);
- g_setenv ("CLUTTER_DEFAULT_FPS", "1000", FALSE);
-
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
-
- stage = clutter_stage_new ();
- clutter_actor_set_size (stage, STAGE_WIDTH, STAGE_HEIGHT);
- clutter_stage_set_color (CLUTTER_STAGE (stage), CLUTTER_COLOR_Black);
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Text");
-
- group = clutter_group_new ();
- clutter_actor_set_size (group, STAGE_WIDTH, STAGE_WIDTH);
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), group);
-
- clutter_threads_add_idle (queue_redraw, stage);
-
- g_signal_connect (group, "paint", G_CALLBACK (on_paint), NULL);
-
- {
- gint row, col;
-
- for (row=0; row<ROWS; row++)
- for (col=0; col<COLS; col++)
- {
- ClutterActor *label;
- gchar font_name[64];
- gchar text[64];
- gint font_size = row+10;
- gdouble scale = 0.17 + (1.5 * col / COLS);
-
- sprintf (font_name, "Sans %ipx", font_size);
- sprintf (text, "OH");
-
- if (row==0)
- {
- sprintf (font_name, "Sans 10px");
- sprintf (text, "%1.2f", scale);
- font_size = 10;
- scale = 1.0;
- }
- if (col==0)
- {
- sprintf (font_name, "Sans 10px");
- sprintf (text, "%ipx", font_size);
- if (row == 0)
- strcpy (text, "");
- font_size = 10;
- scale = 1.0;
- }
-
- label = clutter_text_new_with_text (font_name, text);
- clutter_text_set_color (CLUTTER_TEXT (label), CLUTTER_COLOR_White);
- clutter_actor_set_position (label, (1.0*STAGE_WIDTH/COLS)*col,
- (1.0*STAGE_HEIGHT/ROWS)*row);
- /*clutter_actor_set_clip (label, 0,0, (1.0*STAGE_WIDTH/COLS),
- (1.0*STAGE_HEIGHT/ROWS));*/
- clutter_actor_set_scale (label, scale, scale);
- clutter_text_set_line_wrap (CLUTTER_TEXT (label), FALSE);
- clutter_container_add_actor (CLUTTER_CONTAINER (group), label);
- }
- }
- clutter_actor_show_all (stage);
-
- g_signal_connect (stage, "key-press-event",
- G_CALLBACK (clutter_main_quit), NULL);
-
- clutter_main();
-
- clutter_actor_destroy (stage);
-
- return 0;
-}
diff --git a/clutter/tests/performance/.gitignore b/clutter/tests/performance/.gitignore
deleted file mode 100644
index 0d50b8430..000000000
--- a/clutter/tests/performance/.gitignore
+++ /dev/null
@@ -1,7 +0,0 @@
-/test-picking
-/test-state
-/test-state-hidden
-/test-state-interactive
-/test-state-mini
-/test-state-pick
-/test-text-perf
diff --git a/clutter/tests/performance/create-report.rb b/clutter/tests/performance/create-report.rb
deleted file mode 100755
index 43defc4af..000000000
--- a/clutter/tests/performance/create-report.rb
+++ /dev/null
@@ -1,179 +0,0 @@
-#!/usr/bin/env ruby
-#
-# ruby program to generate a performance report in PDF/png over git revisions, based on work
-# originally done for gegl by pippin@gimp.org, the original program is in the public domain.
-
-require 'cairo'
-
-def cairo_surface(w,h)
- surface = Cairo::PDFSurface.new("report.pdf", w,h)
- cr = Cairo::Context.new(surface)
- yield(cr)
-end
-
-class Database
-
- def initialize()
- @vals = Hash.new
- @runs = Array.new
- @colors = [
- [0,1,0, 0.8],
- [0,1,1, 0.8],
- [1,0,0, 0.8],
- [1,0,1, 0.8],
- [1,1,0, 0.8],
- #[0.5,0.5,0.5,0.8],
- # gray doesnt have sufficient contrast against background
- [0.5,0.5,1, 0.8],
- [0.5,1,0.5, 0.8],
- [0.5,1,1, 0.8],
- [1,0.5,0.5, 0.8],
- [1,0.5,1, 0.8],
- [1,1,0.5, 0.8],
- [1,1,1, 0.8],
- ]
- @width = 1800
- @height = 500
-
- @marginlx = 10
- @marginrx = 180
- @rgap = 40
- @marginy = 10
- end
- def val_max(key)
- max=0
- @runs.each { |run|
- val = @vals[key][run]
- if val and val > max
- max = val
- end
- }
- max
- end
- def val_min(key)
- min=9999990
- @runs.each { |run|
- val = @vals[key][run]
- min = val if val and val < min
- }
- #min
- 0 # this shows the relative noise in measurements better
- end
- def add_run(run)
- @runs = @runs + [run]
- end
- def add_entry(run, name, val)
- if !@vals[name]
- @vals[name]=Hash.new
- end
- # check if there is an existing value,
- # and perhaps have different behaviors
- # associated with
- @vals[name][run] = val.to_f
- end
-
- def drawbg cr
- cr.set_source_rgba(0.2, 0.2, 0.2, 1)
- cr.paint
-
- i=0
- @runs.each { |run|
- if i % 2 == 1
- cr.move_to 1.0 * i / @runs.length * (@width - @marginlx-@marginrx) + @marginlx, 0 * (@height - @marginy*2) + @marginy
- cr.line_to 1.0 * i / @runs.length * (@width - @marginlx-@marginrx) + @marginlx, 1.0 * (@height - @marginy*2) + @marginy
- cr.rel_line_to(1.0 / @runs.length * (@width - @marginlx-@marginrx), 0)
- cr.rel_line_to(0, -(@height - @marginy*2))
-
- cr.set_source_rgba([0.25,0.25,0.25,1])
- cr.fill
- end
- i+=1
- }
- end
-
- def drawtext cr
- i = 0
- @runs.each { |run|
- y = i * 10 + 20
- while y > @height - @marginy
- y = y - @height + @marginy + 10
- end
- cr.move_to 1.0 * i / @runs.length * (@width - @marginlx-@marginrx) + @marginlx, y
-
- cr.set_source_rgba(0.6,0.6,0.6,1)
- cr.show_text(run[0..6])
- i+=1
- }
- end
-
- def draw_limits cr, key
- cr.move_to @width - @marginrx + @rgap, 20
- cr.set_source_rgba(1.0, 1.0, 1.0, 1.0)
- cr.show_text(" #{val_max(key)} ")
- cr.move_to @width - @marginrx + @rgap, @height - @marginy
- cr.show_text(" #{val_min(key)} ")
- end
-
- def draw_val cr, key, valno
- min = val_min(key)
- max = val_max(key)
-
- cr.set_source_rgba(@colors[valno])
- cr.move_to(@width - @marginrx + @rgap, valno * 14 + @marginy + 20)
- cr.show_text(key)
-
- cr.line_width = 2
- cr.new_path
-
- i = 0
- @runs.each { |run|
- val = @vals[key][run]
- if val
- cr.line_to 1.0 * (i+0.5) / @runs.length * (@width - @marginlx-@marginrx) + @marginlx,
- (1.0 - ((val-min) * 1.0 / (max - min))) * (@height - @marginy*2) + @marginy
- end
- i = i + 1
- }
- cr.stroke
- end
-
- def create_report
- cairo_surface(@width, @height) { |cr|
- drawbg cr
- valno = 0
- @vals.each { |key, value|
- draw_val cr, key, valno
- valno += 1
- }
- drawtext cr
- cr.target.write_to_png("report.png")
-
- valno = 0
- @vals.each { |key, value|
- cr.show_page
- drawbg cr
- draw_val cr, key, valno
- drawtext cr
- draw_limits cr, key
- valno += 1
- }
- }
- end
-end
-
-generator = Database.new
-
-items = File.open('jobs').each { |rev|
- rev.strip!
- generator.add_run(rev)
- filename = "reports/" + rev;
- if File.exist?(filename)
- File.open(filename).each { |line|
- if line =~ /^@ (.*):(.*)/
- generator.add_entry(rev, $1, $2)
- end
- }
- end
-}
-
-generator.create_report
diff --git a/clutter/tests/performance/joblist b/clutter/tests/performance/joblist
deleted file mode 100644
index ce046cc71..000000000
--- a/clutter/tests/performance/joblist
+++ /dev/null
@@ -1,27 +0,0 @@
-# This file lists the commits that we want to do retrospective testing
-# of, aborting the retrospective testing and adjusting this file will
-# add the commit range to be tested without having to redo the initial one
-# thus allowing a sparse distributed range to first be tested, with
-# detailed ranges added in later.
-
-master~500..master % 32 # every 32th commit, to provide context
-
-# various spans of commits around which "interesting things happen"
-
-#eeac7~1..985a4
-#6c6e93d~1..3142b15
-#0486c56..88b026
-#732eecf..8cfb158
-#b499696..b77d9a6
-#ba09e9c..7bdbbe6
-#b424bd7..c1878
-#bc58de4..d03c3a6
-#5640a6..a29623e
-#6fd2663..6ec9c32
-# 012e4ab..1a8d577 #
-#120d759~4..2235e70
-
-# ef8be9e25ebe77fc63055191cc48af53d731c108 - actor: Use paint volumes to always queue clipped redraws
-
-# 5d16000 going up, and 3b78949 going down,. was a case of clipped redraws being broken
-
diff --git a/clutter/tests/performance/makejobs.rb b/clutter/tests/performance/makejobs.rb
deleted file mode 100755
index 79499df9b..000000000
--- a/clutter/tests/performance/makejobs.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/env ruby
-
-# this ruby script generates a chronologically sorted
-
-res = ""
-input = File.read(ARGV[0])
-input = input.gsub(/#.*/, "")
-input.split("\n").each {|a|
- if a =~ /([^ ]*)\.\.([^ ]*) %(.*)/
- res += `git log #{$1}..#{$2} | grep '^commit' | sed 's/commit //' | sed -n '0~#{$3}p'`
- elsif a =~ /([^ ]*)\.\.([^ ]*)/
- res += `git log #{$1}..#{$2} | grep '^commit' | sed 's/commit //'`
- else
- res += `echo #{a}`
- end
-}
-
-all = `git log | grep '^commit' | sed 's/commit//' `
-all.split("\n").reverse.each {|a|
- if res.match(a.strip) != nil
- puts "#{a.strip}"
- end
-}
-
diff --git a/clutter/tests/performance/meson.build b/clutter/tests/performance/meson.build
deleted file mode 100644
index 1a6009bd4..000000000
--- a/clutter/tests/performance/meson.build
+++ /dev/null
@@ -1,35 +0,0 @@
-clutter_tests_performance_c_args = [
- '-DTESTS_DATA_DIR="@0@"'.format(clutter_tests_interactive_srcdir),
- '-DG_DISABLE_SINGLE_INCLUDES',
- '-DGLIB_DISABLE_DEPRECATION_WARNINGS',
- '-DCOGL_DISABLE_DEPRECATION_WARNINGS',
- '-DCLUTTER_DISABLE_DEPRECATION_WARNINGS',
-]
-
-clutter_tests_performance_c_args += clutter_debug_c_args
-
-clutter_tests_performance_tests = [
- 'test-picking',
- 'test-text-perf',
- 'test-state',
- 'test-state-interactive',
- 'test-state-hidden',
- 'test-state-mini',
- 'test-state-pick',
-]
-
-foreach test : clutter_tests_performance_tests
- executable(test,
- sources: [
- '@0@.c'.format(test),
- 'test-common.h',
- ],
- include_directories: clutter_includes,
- c_args: clutter_tests_performance_c_args,
- dependencies: [
- clutter_deps,
- libmutter_clutter_dep,
- ],
- install: false,
- )
-endforeach
diff --git a/clutter/tests/performance/test-common.h b/clutter/tests/performance/test-common.h
deleted file mode 100644
index 8c07389aa..000000000
--- a/clutter/tests/performance/test-common.h
+++ /dev/null
@@ -1,134 +0,0 @@
-#include <stdlib.h>
-#include <glib.h>
-#include <clutter/clutter.h>
-
-static GTimer *testtimer = NULL;
-static gint testframes = 0;
-static float testmaxtime = 1.0;
-
-/* initialize environment to be suitable for fps testing */
-static inline void
-clutter_perf_fps_init (void)
-{
- /* Force not syncing to vblank, we want free-running maximum FPS */
- g_setenv ("vblank_mode", "0", FALSE);
- g_setenv ("CLUTTER_VBLANK", "none", FALSE);
-
- /* also overrride internal default FPS */
- g_setenv ("CLUTTER_DEFAULT_FPS", "1000", FALSE);
-
- if (g_getenv ("CLUTTER_PERFORMANCE_TEST_DURATION"))
- testmaxtime = atof(g_getenv("CLUTTER_PERFORMANCE_TEST_DURATION"));
- else
- testmaxtime = 10.0;
-
- g_random_set_seed (12345678);
-}
-
-static void perf_stage_paint_cb (ClutterStage *stage, gpointer *data);
-static gboolean perf_fake_mouse_cb (gpointer stage);
-
-static inline void
-clutter_perf_fps_start (ClutterStage *stage)
-{
- g_signal_connect (stage, "paint", G_CALLBACK (perf_stage_paint_cb), NULL);
-}
-
-static inline void
-clutter_perf_fake_mouse (ClutterStage *stage)
-{
- clutter_threads_add_timeout (1000/60, perf_fake_mouse_cb, stage);
-}
-
-static inline void
-clutter_perf_fps_report (const gchar *id)
-{
- g_print ("\n@ %s: %.2f fps \n",
- id, testframes / g_timer_elapsed (testtimer, NULL));
-}
-
-static void perf_stage_paint_cb (ClutterStage *stage, gpointer *data)
-{
- if (!testtimer)
- testtimer = g_timer_new ();
- testframes ++;
- if (g_timer_elapsed (testtimer, NULL) > testmaxtime)
- {
- clutter_main_quit ();
- }
-}
-
-static void wrap (gfloat *value, gfloat min, gfloat max)
-{
- if (*value > max)
- *value = min;
- else if (*value < min)
- *value = max;
-}
-
-static gboolean perf_fake_mouse_cb (gpointer stage)
-{
- ClutterEvent *event = clutter_event_new (CLUTTER_MOTION);
- static ClutterInputDevice *device = NULL;
- int i;
- static float x = 0.0;
- static float y = 0.0;
- static float xd = 0.0;
- static float yd = 0.0;
- static gboolean inited = FALSE;
-
- gfloat w, h;
-
- if (!inited) /* XXX:
- force clutter to do handle our motion events,
- by forcibly updating the input device's state
- this shoudl be possible to do in a better
- manner in the future, a versioning check
- will have to be added when this is possible
- without a hack... and the means to do the
- hack is deprecated
- */
- {
- ClutterEvent *event2 = clutter_event_new (CLUTTER_ENTER);
- device = clutter_device_manager_get_core_device (clutter_device_manager_get_default (), CLUTTER_POINTER_DEVICE);
-
- event2->crossing.stage = stage;
- event2->crossing.source = stage;
- event2->crossing.x = 10;
- event2->crossing.y = 10;
- event2->crossing.related = NULL;
-
- clutter_event_set_device (event2, device);
- clutter_input_device_update_from_event (device, event2, TRUE);
-
- clutter_event_put (event2);
- clutter_event_free (event2);
- inited = TRUE;
- }
-
- clutter_actor_get_size (stage, &w, &h);
- event->motion.stage = stage;
- clutter_event_set_device (event, device);
-
- /* called about every 60fps, and do 10 picks per stage */
- for (i = 0; i < 10; i++)
- {
- event->motion.x = x;
- event->motion.y = y;
-
- clutter_event_put (event);
-
- x += xd;
- y += yd;
- xd += g_random_double_range (-0.1, 0.1);
- yd += g_random_double_range (-0.1, 0.1);
-
- wrap (&x, 0, w);
- wrap (&y, 0, h);
-
- xd = CLAMP(xd, -1.3, 1.3);
- yd = CLAMP(yd, -1.3, 1.3);
- }
- clutter_event_free (event);
- return G_SOURCE_CONTINUE;
-}
diff --git a/clutter/tests/performance/test-picking.c b/clutter/tests/performance/test-picking.c
deleted file mode 100644
index af5960026..000000000
--- a/clutter/tests/performance/test-picking.c
+++ /dev/null
@@ -1,134 +0,0 @@
-
-#include <math.h>
-#include <stdlib.h>
-#include <clutter/clutter.h>
-#include "test-common.h"
-
-#define N_ACTORS 100
-#define N_EVENTS 5
-
-static gint n_actors = N_ACTORS;
-static gint n_events = N_EVENTS;
-
-static GOptionEntry entries[] = {
- {
- "num-actors", 'a',
- 0,
- G_OPTION_ARG_INT, &n_actors,
- "Number of actors", "ACTORS"
- },
- {
- "num-events", 'e',
- 0,
- G_OPTION_ARG_INT, &n_events,
- "Number of events", "EVENTS"
- },
- { NULL }
-};
-
-static gboolean
-motion_event_cb (ClutterActor *actor, ClutterEvent *event, gpointer user_data)
-{
- return FALSE;
-}
-
-static void
-do_events (ClutterActor *stage)
-{
- glong i;
- static gdouble angle = 0;
-
- for (i = 0; i < n_events; i++)
- {
- angle += (2.0 * G_PI) / (gdouble)n_actors;
- while (angle > G_PI * 2.0)
- angle -= G_PI * 2.0;
-
- /* If we synthesized events, they would be motion compressed;
- * calling get_actor_at_position() doesn't have that problem
- */
- clutter_stage_get_actor_at_pos (CLUTTER_STAGE (stage),
- CLUTTER_PICK_REACTIVE,
- 256.0 + 206.0 * cos (angle),
- 256.0 + 206.0 * sin (angle));
- }
-}
-
-static gboolean queue_redraw (gpointer data)
-{
- ClutterActor *stage = CLUTTER_ACTOR (data);
- clutter_actor_queue_redraw (stage);
- do_events (stage);
- return TRUE;
-}
-
-int
-main (int argc, char **argv)
-{
- glong i;
- gdouble angle;
- ClutterColor color = { 0x00, 0x00, 0x00, 0xff };
- ClutterActor *stage, *rect;
-
- clutter_perf_fps_init ();
-
- if (CLUTTER_INIT_SUCCESS !=
- clutter_init_with_args (&argc, &argv,
- NULL,
- entries,
- NULL,
- NULL))
- {
- g_warning ("Failed to initialize clutter");
- return -1;
- }
-
- stage = clutter_stage_new ();
- clutter_actor_set_size (stage, 512, 512);
- clutter_stage_set_color (CLUTTER_STAGE (stage), CLUTTER_COLOR_Black);
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Picking Performance");
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- printf ("Picking performance test with "
- "%d actors and %d events per frame\n",
- n_actors,
- n_events);
-
- for (i = n_actors - 1; i >= 0; i--)
- {
- angle = ((2.0 * G_PI) / (gdouble) n_actors) * i;
-
- color.red = (1.0 - ABS ((MAX (0, MIN (n_actors/2.0 + 0, i))) /
- (gdouble)(n_actors/4.0) - 1.0)) * 255.0;
- color.green = (1.0 - ABS ((MAX (0, MIN (n_actors/2.0 + 0,
- fmod (i + (n_actors/3.0)*2, n_actors)))) /
- (gdouble)(n_actors/4) - 1.0)) * 255.0;
- color.blue = (1.0 - ABS ((MAX (0, MIN (n_actors/2.0 + 0,
- fmod ((i + (n_actors/3.0)), n_actors)))) /
- (gdouble)(n_actors/4.0) - 1.0)) * 255.0;
-
- rect = clutter_rectangle_new_with_color (&color);
- clutter_actor_set_size (rect, 100, 100);
- clutter_actor_set_anchor_point_from_gravity (rect,
- CLUTTER_GRAVITY_CENTER);
- clutter_actor_set_position (rect,
- 256 + 206 * cos (angle),
- 256 + 206 * sin (angle));
- clutter_actor_set_reactive (rect, TRUE);
- g_signal_connect (rect, "motion-event",
- G_CALLBACK (motion_event_cb), NULL);
-
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), rect);
- }
-
- clutter_actor_show (stage);
-
- clutter_perf_fps_start (CLUTTER_STAGE (stage));
- clutter_threads_add_idle (queue_redraw, stage);
- clutter_main ();
- clutter_perf_fps_report ("test-picking");
-
- return 0;
-}
-
-
diff --git a/clutter/tests/performance/test-state-hidden.c b/clutter/tests/performance/test-state-hidden.c
deleted file mode 100644
index 64911b4eb..000000000
--- a/clutter/tests/performance/test-state-hidden.c
+++ /dev/null
@@ -1,150 +0,0 @@
-#include <stdlib.h>
-#include <math.h>
-#include <gmodule.h>
-#include <clutter/clutter.h>
-#include "test-common.h"
-
-#define STAGE_WIDTH 160
-#define STAGE_HEIGHT 120
-
-#define ACTOR_WIDTH 8
-#define ACTOR_HEIGHT 8
-
-#define COLS (STAGE_WIDTH/ACTOR_WIDTH)
-#define ROWS (STAGE_HEIGHT/ACTOR_HEIGHT)
-#define TOTAL (ROWS*COLS)
-
-
-static void completed (ClutterState *state,
- gpointer data)
-{
- if (g_str_equal (clutter_state_get_state (state), "right"))
- {
- /* skip straight to left state when reaching right */
- clutter_state_warp_to_state (state, "left");
- }
- else if (g_str_equal (clutter_state_get_state (state), "active"))
- clutter_state_set_state (state, "right");
- else
- {
- clutter_state_set_state (state, "active");
- }
-}
-
-static ClutterActor *new_rect (gint r,
- gint g,
- gint b,
- gint a)
-{
- ClutterColor *color = clutter_color_new (r, g, b, a);
- ClutterActor *group = clutter_group_new ();
- ClutterActor *rectangle = clutter_rectangle_new_with_color (color);
-
- gchar *file = g_build_filename (TESTS_DATA_DIR, "redhand.png", NULL);
-
- g_free (file);
- clutter_actor_set_size (rectangle, ACTOR_WIDTH,ACTOR_HEIGHT);
- clutter_color_free (color);
- clutter_container_add (CLUTTER_CONTAINER (group), rectangle, NULL);
- return group;
-}
-
-gint
-main (gint argc,
- gchar **argv)
-{
- ClutterActor *stage;
- ClutterActor *group;
- ClutterState *layout_state;
- gint i;
-
- clutter_perf_fps_init ();
- if (CLUTTER_INIT_SUCCESS != clutter_init (&argc, &argv))
- g_error ("Failed to initialize Clutter");
-
- stage = clutter_stage_new ();
- group = clutter_group_new ();
- layout_state = clutter_state_new ();
- clutter_stage_set_title (CLUTTER_STAGE (stage), "State Performance [hidden]");
- clutter_stage_set_color (CLUTTER_STAGE (stage), CLUTTER_COLOR_Black);
- clutter_actor_set_size (stage, STAGE_WIDTH, STAGE_HEIGHT);
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- for (i=0; i<TOTAL; i++)
- {
- ClutterActor *actor;
- ClutterState *a_state;
-
- int row = i/COLS;
- int col = i%COLS;
-
- actor = new_rect (255 * ( 1.0*col/COLS), 50,
- 255 * ( 1.0*row/ROWS), 255);
- clutter_container_add_actor (CLUTTER_CONTAINER (group), actor);
- clutter_actor_set_position (actor, 320.0, 240.0);
- clutter_actor_set_reactive (actor, TRUE);
-
-
- clutter_state_set (layout_state, NULL, "active",
- actor, "delayed::x", CLUTTER_LINEAR,
- ACTOR_WIDTH * 1.0 * ((TOTAL-1-i) % COLS),
- ((row*1.0/ROWS))/2, (1.0-(row*1.0/ROWS))/2,
- actor, "delayed::y", CLUTTER_LINEAR,
- ACTOR_HEIGHT * 1.0 * ((TOTAL-1-i) / COLS),
- ((row*1.0/ROWS))/2, 0.0,
- actor, "rotation-angle-x", CLUTTER_LINEAR, 0.0,
- actor, "rotation-angle-y", CLUTTER_LINEAR, 0.0,
- NULL);
-
- clutter_state_set (layout_state, NULL, "right",
- actor, "delayed::x", CLUTTER_LINEAR, STAGE_WIDTH * 1.0,
- ((row*1.0/ROWS))/2,
- (1.0-(row*1.0/ROWS))/2,
- actor, "delayed::y", CLUTTER_LINEAR, STAGE_HEIGHT * 1.0,
- ((row*1.0/ROWS))/2,
- 0.0,
- NULL);
-
- clutter_state_set (layout_state, NULL, "left",
- actor, "rotation-angle-x", CLUTTER_LINEAR, 45.0,
- actor, "rotation-angle-y", CLUTTER_LINEAR, 5.0,
- actor, "x", CLUTTER_LINEAR, 0-64.0,
- actor, "y", CLUTTER_LINEAR, 0-64.0,
- NULL);
-
- a_state = clutter_state_new ();
- g_object_set_data_full (G_OBJECT (actor), "hover-state-machine",
- a_state, g_object_unref);
-
- clutter_state_set (a_state, NULL, "normal",
- actor, "opacity", CLUTTER_LINEAR, 0x77,
- actor, "rotation-angle-z", CLUTTER_LINEAR, 0.0,
- NULL);
- clutter_state_set (a_state, NULL, "hover",
- actor, "opacity", CLUTTER_LINEAR, 0xff,
- actor, "rotation-angle-z", CLUTTER_LINEAR, 10.0,
- NULL);
- clutter_actor_set_opacity (actor, 0x77);
-
- clutter_state_set_duration (a_state, NULL, NULL, 500);
- }
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), group);
- clutter_actor_set_opacity (group, 0);
-
- clutter_state_set_duration (layout_state, NULL, NULL, 1000);
- clutter_state_set_duration (layout_state, "active", "left", 1400);
-
- g_signal_connect (layout_state, "completed", G_CALLBACK (completed), NULL);
-
- clutter_actor_show (stage);
-
- clutter_state_warp_to_state (layout_state, "left");
- clutter_state_set_state (layout_state, "active");
-
- clutter_perf_fps_start (CLUTTER_STAGE (stage));
- clutter_main ();
- clutter_perf_fps_report ("test-state-hidden");
- g_object_unref (layout_state);
-
- return EXIT_SUCCESS;
-}
diff --git a/clutter/tests/performance/test-state-interactive.c b/clutter/tests/performance/test-state-interactive.c
deleted file mode 100644
index 375783541..000000000
--- a/clutter/tests/performance/test-state-interactive.c
+++ /dev/null
@@ -1,194 +0,0 @@
-#include <stdlib.h>
-#include <math.h>
-#include <gmodule.h>
-#include <clutter/clutter.h>
-#include "test-common.h"
-
-#define STAGE_WIDTH 800
-#define STAGE_HEIGHT 600
-
-#define ACTOR_WIDTH 64
-#define ACTOR_HEIGHT 64
-
-#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_state_set_state (state, "right");
- return TRUE;
-}
-
-static gboolean release_event (ClutterActor *actor,
- ClutterEvent *event,
- gpointer user_data)
-{
- ClutterState *state = CLUTTER_STATE (user_data);
- clutter_state_set_state (state, "active");
- return TRUE;
-}
-
-static gboolean enter_event (ClutterActor *actor,
- ClutterEvent *event,
- gpointer user_data)
-{
- ClutterState *state = CLUTTER_STATE (user_data);
- clutter_state_set_state (state, "hover");
- return TRUE;
-}
-
-static gboolean leave_event (ClutterActor *actor,
- ClutterEvent *event,
- gpointer user_data)
-{
- ClutterState *state = CLUTTER_STATE (user_data);
- clutter_state_set_state (state, "normal");
- return TRUE;
-}
-
-static void completed (ClutterState *state,
- gpointer data)
-{
- g_print ("Completed transitioning to state: %s\n",
- clutter_state_get_state (state));
-
- if (g_str_equal (clutter_state_get_state (state), "right"))
- {
- /* skip straight to left state when reaching right */
- clutter_state_warp_to_state (state, "left");
- }
-}
-
-static ClutterActor *new_rect (gint r,
- gint g,
- gint b,
- gint a)
-{
- 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_DATA_DIR, "redhand.png", NULL);
-
- 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, ACTOR_WIDTH,ACTOR_HEIGHT);
- clutter_color_free (color);
- clutter_container_add (CLUTTER_CONTAINER (group), rectangle, hand, NULL);
- return group;
-}
-
-gint
-main (gint argc,
- gchar **argv)
-{
- ClutterActor *stage;
- ClutterState *layout_state;
- gint i;
- clutter_perf_fps_init ();
- if (CLUTTER_INIT_SUCCESS != clutter_init (&argc, &argv))
- g_error ("Failed to initialize Clutter");
-
- stage = clutter_stage_new ();
- layout_state = clutter_state_new ();
- clutter_stage_set_color (CLUTTER_STAGE (stage), CLUTTER_COLOR_Black);
- clutter_stage_set_title (CLUTTER_STAGE (stage), "State Performance [interactive]");
- clutter_actor_set_size (stage, STAGE_WIDTH, STAGE_HEIGHT);
-
- g_signal_connect (stage, "button-press-event",
- G_CALLBACK (press_event), layout_state);
- g_signal_connect (stage, "button-release-event",
- G_CALLBACK (release_event), layout_state);
-
- for (i=0; i<TOTAL; i++)
- {
- ClutterActor *actor;
- ClutterState *a_state;
-
- int row = i/COLS;
- int col = i%COLS;
-
- actor = new_rect (255 * ( 1.0*col/COLS), 50,
- 255 * ( 1.0*row/ROWS), 255);
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), actor);
- clutter_actor_set_position (actor, 320.0, 240.0);
- clutter_actor_set_reactive (actor, TRUE);
-
-
- clutter_state_set (layout_state, NULL, "active",
- actor, "delayed::x", CLUTTER_LINEAR,
- ACTOR_WIDTH * 1.0 * ((TOTAL-1-i) % COLS),
- ((row*1.0/ROWS))/2, (1.0-(row*1.0/ROWS))/2,
- actor, "delayed::y", CLUTTER_LINEAR,
- ACTOR_HEIGHT * 1.0 * ((TOTAL-1-i) / COLS),
- ((row*1.0/ROWS))/2, 0.0,
- actor, "rotation-angle-x", CLUTTER_LINEAR, 0.0,
- actor, "rotation-angle-y", CLUTTER_LINEAR, 0.0,
- NULL);
-
- clutter_state_set (layout_state, NULL, "right",
- actor, "delayed::x", CLUTTER_LINEAR, STAGE_WIDTH * 1.0,
- ((row*1.0/ROWS))/2,
- (1.0-(row*1.0/ROWS))/2,
- actor, "delayed::y", CLUTTER_LINEAR, STAGE_HEIGHT * 1.0,
- ((row*1.0/ROWS))/2,
- 0.0,
- NULL);
-
- clutter_state_set (layout_state, NULL, "left",
- actor, "rotation-angle-x", CLUTTER_LINEAR, 45.0,
- actor, "rotation-angle-y", CLUTTER_LINEAR, 5.0,
- actor, "x", CLUTTER_LINEAR, 0-64.0,
- actor, "y", CLUTTER_LINEAR, 0-64.0,
- NULL);
-
- a_state = clutter_state_new ();
- g_object_set_data_full (G_OBJECT (actor), "hover-state-machine",
- a_state, g_object_unref);
- g_signal_connect (actor, "enter-event",
- G_CALLBACK (enter_event), a_state);
- g_signal_connect (actor, "leave-event",
- G_CALLBACK (leave_event), a_state);
-
- clutter_state_set (a_state, NULL, "normal",
- actor, "opacity", CLUTTER_LINEAR, 0x77,
- actor, "rotation-angle-z", CLUTTER_LINEAR, 0.0,
- NULL);
- clutter_state_set (a_state, NULL, "hover",
- actor, "opacity", CLUTTER_LINEAR, 0xff,
- actor, "rotation-angle-z", CLUTTER_LINEAR, 10.0,
- NULL);
- clutter_actor_set_opacity (actor, 0x77);
-
- clutter_state_set_duration (a_state, NULL, NULL, 500);
- }
-
- clutter_state_set_duration (layout_state, NULL, NULL, 1000);
- clutter_state_set_duration (layout_state, "active", "left", 1400);
-
- g_signal_connect (layout_state, "completed", G_CALLBACK (completed), NULL);
-
- clutter_actor_show (stage);
-
- clutter_state_warp_to_state (layout_state, "left");
- clutter_state_set_state (layout_state, "active");
-
- clutter_perf_fake_mouse (CLUTTER_STAGE (stage));
- clutter_perf_fps_start (CLUTTER_STAGE (stage));
- clutter_main ();
- clutter_perf_fps_report ("test-state-interactive");
- g_object_unref (layout_state);
-
- return EXIT_SUCCESS;
-}
diff --git a/clutter/tests/performance/test-state-mini.c b/clutter/tests/performance/test-state-mini.c
deleted file mode 100644
index 773b9d061..000000000
--- a/clutter/tests/performance/test-state-mini.c
+++ /dev/null
@@ -1,153 +0,0 @@
-#include <stdlib.h>
-#include <math.h>
-#include <gmodule.h>
-#include <clutter/clutter.h>
-#include "test-common.h"
-
-#define STAGE_WIDTH 160
-#define STAGE_HEIGHT 120
-
-#define ACTOR_WIDTH 8
-#define ACTOR_HEIGHT 8
-
-#define COLS (STAGE_WIDTH/ACTOR_WIDTH)
-#define ROWS (STAGE_HEIGHT/ACTOR_HEIGHT)
-#define TOTAL (ROWS*COLS)
-
-
-static void completed (ClutterState *state,
- gpointer data)
-{
- if (g_str_equal (clutter_state_get_state (state), "right"))
- {
- /* skip straight to left state when reaching right */
- clutter_state_warp_to_state (state, "left");
- }
- else if (g_str_equal (clutter_state_get_state (state), "active"))
- clutter_state_set_state (state, "right");
- else
- {
- clutter_state_set_state (state, "active");
- }
-}
-
-static ClutterActor *new_rect (gint r,
- gint g,
- gint b,
- gint a)
-{
- 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_DATA_DIR, "redhand.png", NULL);
-
- 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, ACTOR_WIDTH,ACTOR_HEIGHT);
- clutter_color_free (color);
- clutter_container_add (CLUTTER_CONTAINER (group), rectangle, hand, NULL);
- return group;
-}
-
-gint
-main (gint argc,
- gchar **argv)
-{
- ClutterActor *stage;
- ClutterState *layout_state;
- gint i;
-
- clutter_perf_fps_init ();
- if (CLUTTER_INIT_SUCCESS != clutter_init (&argc, &argv))
- g_error ("Failed to initialize Clutter");
-
- stage = clutter_stage_new ();
- layout_state = clutter_state_new ();
- clutter_stage_set_title (CLUTTER_STAGE (stage), "State Performance [mini]");
- clutter_stage_set_color (CLUTTER_STAGE (stage), CLUTTER_COLOR_Black);
- clutter_actor_set_size (stage, STAGE_WIDTH, STAGE_HEIGHT);
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- for (i=0; i<TOTAL; i++)
- {
- ClutterActor *actor;
- ClutterState *a_state;
-
- int row = i/COLS;
- int col = i%COLS;
-
- actor = new_rect (255 * ( 1.0*col/COLS), 50,
- 255 * ( 1.0*row/ROWS), 255);
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), actor);
- clutter_actor_set_position (actor, 320.0, 240.0);
- clutter_actor_set_reactive (actor, TRUE);
-
-
- clutter_state_set (layout_state, NULL, "active",
- actor, "delayed::x", CLUTTER_LINEAR,
- ACTOR_WIDTH * 1.0 * ((TOTAL-1-i) % COLS),
- ((row*1.0/ROWS))/2, (1.0-(row*1.0/ROWS))/2,
- actor, "delayed::y", CLUTTER_LINEAR,
- ACTOR_HEIGHT * 1.0 * ((TOTAL-1-i) / COLS),
- ((row*1.0/ROWS))/2, 0.0,
- actor, "rotation-angle-x", CLUTTER_LINEAR, 0.0,
- actor, "rotation-angle-y", CLUTTER_LINEAR, 0.0,
- NULL);
-
- clutter_state_set (layout_state, NULL, "right",
- actor, "delayed::x", CLUTTER_LINEAR, STAGE_WIDTH * 1.0,
- ((row*1.0/ROWS))/2,
- (1.0-(row*1.0/ROWS))/2,
- actor, "delayed::y", CLUTTER_LINEAR, STAGE_HEIGHT * 1.0,
- ((row*1.0/ROWS))/2,
- 0.0,
- NULL);
-
- clutter_state_set (layout_state, NULL, "left",
- actor, "rotation-angle-x", CLUTTER_LINEAR, 45.0,
- actor, "rotation-angle-y", CLUTTER_LINEAR, 5.0,
- actor, "x", CLUTTER_LINEAR, 0-64.0,
- actor, "y", CLUTTER_LINEAR, 0-64.0,
- NULL);
-
- a_state = clutter_state_new ();
- g_object_set_data_full (G_OBJECT (actor), "hover-state-machine",
- a_state, g_object_unref);
-
- clutter_state_set (a_state, NULL, "normal",
- actor, "opacity", CLUTTER_LINEAR, 0x77,
- actor, "rotation-angle-z", CLUTTER_LINEAR, 0.0,
- NULL);
- clutter_state_set (a_state, NULL, "hover",
- actor, "opacity", CLUTTER_LINEAR, 0xff,
- actor, "rotation-angle-z", CLUTTER_LINEAR, 10.0,
- NULL);
- clutter_actor_set_opacity (actor, 0x77);
-
- clutter_state_set_duration (a_state, NULL, NULL, 500);
- }
-
- clutter_state_set_duration (layout_state, NULL, NULL, 1000);
- clutter_state_set_duration (layout_state, "active", "left", 1400);
-
- g_signal_connect (layout_state, "completed", G_CALLBACK (completed), NULL);
-
- clutter_actor_show (stage);
-
- clutter_state_warp_to_state (layout_state, "left");
- clutter_state_set_state (layout_state, "active");
-
- clutter_perf_fps_start (CLUTTER_STAGE (stage));
- clutter_main ();
- clutter_perf_fps_report ("test-state-mini");
- g_object_unref (layout_state);
-
- return EXIT_SUCCESS;
-}
diff --git a/clutter/tests/performance/test-state-pick.c b/clutter/tests/performance/test-state-pick.c
deleted file mode 100644
index 0dc450a64..000000000
--- a/clutter/tests/performance/test-state-pick.c
+++ /dev/null
@@ -1,159 +0,0 @@
-#include <stdlib.h>
-#include <math.h>
-#include <gmodule.h>
-#include <clutter/clutter.h>
-#include "test-common.h"
-
-static gint times = 16;
-
-#define STAGE_WIDTH 800
-#define STAGE_HEIGHT 600
-
-#define ACTOR_WIDTH 64
-#define ACTOR_HEIGHT 64
-
-#define COLS (STAGE_WIDTH/ACTOR_WIDTH)
-#define ROWS (STAGE_HEIGHT/ACTOR_HEIGHT)
-#define TOTAL (ROWS*COLS)
-
-
-static void completed (ClutterState *state,
- gpointer data)
-{
- if (g_str_equal (clutter_state_get_state (state), "right"))
- {
- /* skip straight to left state when reaching right */
- clutter_state_warp_to_state (state, "left");
- }
- else if (g_str_equal (clutter_state_get_state (state), "active"))
- clutter_state_set_state (state, "right");
- else
- {
- clutter_state_set_state (state, "active");
- }
- times --;
- if (times <=0)
- clutter_main_quit ();
-}
-
-static ClutterActor *new_rect (gint r,
- gint g,
- gint b,
- gint a)
-{
- 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_DATA_DIR, "redhand.png", NULL);
-
- 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, ACTOR_WIDTH,ACTOR_HEIGHT);
- clutter_color_free (color);
- clutter_container_add (CLUTTER_CONTAINER (group), rectangle, hand, NULL);
- return group;
-}
-
-gint
-main (gint argc,
- gchar **argv)
-{
- ClutterActor *stage;
- ClutterState *layout_state;
- gint i;
-
- clutter_perf_fps_init ();
- if (CLUTTER_INIT_SUCCESS != clutter_init (&argc, &argv))
- g_error ("Failed to initialize Clutter");
-
- stage = clutter_stage_new ();
- layout_state = clutter_state_new ();
- clutter_stage_set_color (CLUTTER_STAGE (stage), CLUTTER_COLOR_Black);
- clutter_stage_set_title (CLUTTER_STAGE (stage), "State Performance [pick]");
- clutter_actor_set_size (stage, STAGE_WIDTH, STAGE_HEIGHT);
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- for (i=0; i<TOTAL; i++)
- {
- ClutterActor *actor;
- ClutterState *a_state;
-
- int row = i/COLS;
- int col = i%COLS;
-
- actor = new_rect (255 * ( 1.0*col/COLS), 50,
- 255 * ( 1.0*row/ROWS), 255);
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), actor);
- clutter_actor_set_position (actor, 320.0, 240.0);
- clutter_actor_set_reactive (actor, TRUE);
-
-
- clutter_state_set (layout_state, NULL, "active",
- actor, "delayed::x", CLUTTER_LINEAR,
- ACTOR_WIDTH * 1.0 * ((TOTAL-1-i) % COLS),
- ((row*1.0/ROWS))/2, (1.0-(row*1.0/ROWS))/2,
- actor, "delayed::y", CLUTTER_LINEAR,
- ACTOR_HEIGHT * 1.0 * ((TOTAL-1-i) / COLS),
- ((row*1.0/ROWS))/2, 0.0,
- actor, "rotation-angle-x", CLUTTER_LINEAR, 0.0,
- actor, "rotation-angle-y", CLUTTER_LINEAR, 0.0,
- NULL);
-
- clutter_state_set (layout_state, NULL, "right",
- actor, "delayed::x", CLUTTER_LINEAR, STAGE_WIDTH * 1.0,
- ((row*1.0/ROWS))/2,
- (1.0-(row*1.0/ROWS))/2,
- actor, "delayed::y", CLUTTER_LINEAR, STAGE_HEIGHT * 1.0,
- ((row*1.0/ROWS))/2,
- 0.0,
- NULL);
-
- clutter_state_set (layout_state, NULL, "left",
- actor, "rotation-angle-x", CLUTTER_LINEAR, 45.0,
- actor, "rotation-angle-y", CLUTTER_LINEAR, 5.0,
- actor, "x", CLUTTER_LINEAR, 0-64.0,
- actor, "y", CLUTTER_LINEAR, 0-64.0,
- NULL);
-
- a_state = clutter_state_new ();
- g_object_set_data_full (G_OBJECT (actor), "hover-state-machine",
- a_state, g_object_unref);
-
- clutter_state_set (a_state, NULL, "normal",
- actor, "opacity", CLUTTER_LINEAR, 0x77,
- actor, "rotation-angle-z", CLUTTER_LINEAR, 0.0,
- NULL);
- clutter_state_set (a_state, NULL, "hover",
- actor, "opacity", CLUTTER_LINEAR, 0xff,
- actor, "rotation-angle-z", CLUTTER_LINEAR, 10.0,
- NULL);
- clutter_actor_set_opacity (actor, 0x77);
-
- clutter_state_set_duration (a_state, NULL, NULL, 500);
- }
-
- clutter_state_set_duration (layout_state, NULL, NULL, 1000);
- clutter_state_set_duration (layout_state, "active", "left", 1400);
-
- g_signal_connect (layout_state, "completed", G_CALLBACK (completed), NULL);
-
- clutter_actor_show (stage);
-
- clutter_state_warp_to_state (layout_state, "left");
- clutter_state_set_state (layout_state, "active");
-
- clutter_perf_fake_mouse (CLUTTER_STAGE (stage));
- clutter_perf_fps_start (CLUTTER_STAGE (stage));
- clutter_main ();
- clutter_perf_fps_report ("test-state-pick");
- g_object_unref (layout_state);
-
- return EXIT_SUCCESS;
-}
diff --git a/clutter/tests/performance/test-state.c b/clutter/tests/performance/test-state.c
deleted file mode 100644
index 7b0778cb4..000000000
--- a/clutter/tests/performance/test-state.c
+++ /dev/null
@@ -1,158 +0,0 @@
-#include <stdlib.h>
-#include <math.h>
-#include <gmodule.h>
-#include <clutter/clutter.h>
-#include "test-common.h"
-
-static gint times = 16;
-
-#define STAGE_WIDTH 800
-#define STAGE_HEIGHT 600
-
-#define ACTOR_WIDTH 64
-#define ACTOR_HEIGHT 64
-
-#define COLS (STAGE_WIDTH/ACTOR_WIDTH)
-#define ROWS (STAGE_HEIGHT/ACTOR_HEIGHT)
-#define TOTAL (ROWS*COLS)
-
-
-static void completed (ClutterState *state,
- gpointer data)
-{
- if (g_str_equal (clutter_state_get_state (state), "right"))
- {
- /* skip straight to left state when reaching right */
- clutter_state_warp_to_state (state, "left");
- }
- else if (g_str_equal (clutter_state_get_state (state), "active"))
- clutter_state_set_state (state, "right");
- else
- {
- clutter_state_set_state (state, "active");
- }
- times --;
- if (times <=0)
- clutter_main_quit ();
-}
-
-static ClutterActor *new_rect (gint r,
- gint g,
- gint b,
- gint a)
-{
- 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_DATA_DIR, "redhand.png", NULL);
-
- 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, ACTOR_WIDTH,ACTOR_HEIGHT);
- clutter_color_free (color);
- clutter_container_add (CLUTTER_CONTAINER (group), rectangle, hand, NULL);
- return group;
-}
-
-gint
-main (gint argc,
- gchar **argv)
-{
- ClutterActor *stage;
- ClutterState *layout_state;
- gint i;
-
- clutter_perf_fps_init ();
- if (CLUTTER_INIT_SUCCESS != clutter_init (&argc, &argv))
- g_error ("Failed to initialize Clutter");
-
- stage = clutter_stage_new ();
- layout_state = clutter_state_new ();
- clutter_stage_set_color (CLUTTER_STAGE (stage), CLUTTER_COLOR_Black);
- clutter_stage_set_title (CLUTTER_STAGE (stage), "State Performance");
- clutter_actor_set_size (stage, STAGE_WIDTH, STAGE_HEIGHT);
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- for (i=0; i<TOTAL; i++)
- {
- ClutterActor *actor;
- ClutterState *a_state;
-
- int row = i/COLS;
- int col = i%COLS;
-
- actor = new_rect (255 * ( 1.0*col/COLS), 50,
- 255 * ( 1.0*row/ROWS), 255);
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), actor);
- clutter_actor_set_position (actor, 320.0, 240.0);
- clutter_actor_set_reactive (actor, TRUE);
-
-
- clutter_state_set (layout_state, NULL, "active",
- actor, "delayed::x", CLUTTER_LINEAR,
- ACTOR_WIDTH * 1.0 * ((TOTAL-1-i) % COLS),
- ((row*1.0/ROWS))/2, (1.0-(row*1.0/ROWS))/2,
- actor, "delayed::y", CLUTTER_LINEAR,
- ACTOR_HEIGHT * 1.0 * ((TOTAL-1-i) / COLS),
- ((row*1.0/ROWS))/2, 0.0,
- actor, "rotation-angle-x", CLUTTER_LINEAR, 0.0,
- actor, "rotation-angle-y", CLUTTER_LINEAR, 0.0,
- NULL);
-
- clutter_state_set (layout_state, NULL, "right",
- actor, "delayed::x", CLUTTER_LINEAR, STAGE_WIDTH * 1.0,
- ((row*1.0/ROWS))/2,
- (1.0-(row*1.0/ROWS))/2,
- actor, "delayed::y", CLUTTER_LINEAR, STAGE_HEIGHT * 1.0,
- ((row*1.0/ROWS))/2,
- 0.0,
- NULL);
-
- clutter_state_set (layout_state, NULL, "left",
- actor, "rotation-angle-x", CLUTTER_LINEAR, 45.0,
- actor, "rotation-angle-y", CLUTTER_LINEAR, 5.0,
- actor, "x", CLUTTER_LINEAR, 0-64.0,
- actor, "y", CLUTTER_LINEAR, 0-64.0,
- NULL);
-
- a_state = clutter_state_new ();
- g_object_set_data_full (G_OBJECT (actor), "hover-state-machine",
- a_state, g_object_unref);
-
- clutter_state_set (a_state, NULL, "normal",
- actor, "opacity", CLUTTER_LINEAR, 0x77,
- actor, "rotation-angle-z", CLUTTER_LINEAR, 0.0,
- NULL);
- clutter_state_set (a_state, NULL, "hover",
- actor, "opacity", CLUTTER_LINEAR, 0xff,
- actor, "rotation-angle-z", CLUTTER_LINEAR, 10.0,
- NULL);
- clutter_actor_set_opacity (actor, 0x77);
-
- clutter_state_set_duration (a_state, NULL, NULL, 500);
- }
-
- clutter_state_set_duration (layout_state, NULL, NULL, 1000);
- clutter_state_set_duration (layout_state, "active", "left", 1400);
-
- g_signal_connect (layout_state, "completed", G_CALLBACK (completed), NULL);
-
- clutter_actor_show (stage);
-
- clutter_state_warp_to_state (layout_state, "left");
- clutter_state_set_state (layout_state, "active");
-
- clutter_perf_fps_start (CLUTTER_STAGE (stage));
- clutter_main ();
- clutter_perf_fps_report ("test-state");
- g_object_unref (layout_state);
-
- return EXIT_SUCCESS;
-}
diff --git a/clutter/tests/performance/test-text-perf.c b/clutter/tests/performance/test-text-perf.c
deleted file mode 100644
index bf08a4810..000000000
--- a/clutter/tests/performance/test-text-perf.c
+++ /dev/null
@@ -1,167 +0,0 @@
-#include <clutter/clutter.h>
-
-#include <stdlib.h>
-#include <string.h>
-#include "test-common.h"
-
-#define STAGE_WIDTH 800
-#define STAGE_HEIGHT 600
-
-static int font_size;
-static int n_chars;
-static int rows, cols;
-
-static gboolean
-queue_redraw (gpointer stage)
-{
- clutter_actor_queue_redraw (CLUTTER_ACTOR (stage));
-
- return G_SOURCE_CONTINUE;
-}
-
-static gunichar
-get_character (int ch)
-{
- int total_letters = 0;
- int i;
-
- static const struct
- {
- gunichar first_letter;
- int n_letters;
- }
- ranges[] =
- {
- { 'a', 26 }, /* lower case letters */
- { 'A', 26 }, /* upper case letters */
- { '0', 10 }, /* digits */
- { 0x410, 0x40 }, /* cyrillic alphabet */
- { 0x3b1, 18 } /* greek alphabet */
- };
-
- for (i = 0; i < G_N_ELEMENTS (ranges); i++)
- total_letters += ranges[i].n_letters;
-
- ch %= total_letters;
-
- for (i = 0; i < G_N_ELEMENTS (ranges) - 1; i++)
- if (ch < ranges[i].n_letters)
- return ch + ranges[i].first_letter;
- else
- ch -= ranges[i].n_letters;
-
- return ch + ranges[i].first_letter;
-}
-
-static ClutterActor *
-create_label (void)
-{
- ClutterColor label_color = { 0xff, 0xff, 0xff, 0xff };
- ClutterActor *label;
- char *font_name;
- GString *str;
- int i;
-
- font_name = g_strdup_printf ("Monospace %dpx", font_size);
-
- str = g_string_new (NULL);
- for (i = 0; i < n_chars; i++)
- g_string_append_unichar (str, get_character (i));
-
- label = clutter_text_new_with_text (font_name, str->str);
- clutter_text_set_color (CLUTTER_TEXT (label), &label_color);
-
- g_free (font_name);
- g_string_free (str, TRUE);
-
- return label;
-}
-
-int
-main (int argc, char *argv[])
-{
- ClutterActor *stage;
- ClutterColor stage_color = { 0x00, 0x00, 0x00, 0xff };
- ClutterActor *label;
- int w, h;
- int row, col;
- float scale = 1.0f;
-
- clutter_perf_fps_init ();
-
- if (CLUTTER_INIT_SUCCESS != clutter_init (&argc, &argv))
- g_error ("Failed to initialize Clutter");
-
- if (argc != 3)
- {
- //g_printerr ("Usage test-text-perf FONT_SIZE N_CHARS\n");
- //exit (1);
- font_size = 30;
- n_chars = 400;
- }
- else
- {
- font_size = atoi (argv[1]);
- n_chars = atoi (argv[2]);
- }
-
- g_print ("Monospace %dpx, string length = %d\n", font_size, n_chars);
-
- stage = clutter_stage_new ();
- clutter_actor_set_size (stage, STAGE_WIDTH, STAGE_HEIGHT);
- clutter_stage_set_color (CLUTTER_STAGE (stage), &stage_color);
- clutter_stage_set_title (CLUTTER_STAGE (stage), "Text Performance");
- g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
-
- label = create_label ();
- w = clutter_actor_get_width (label);
- h = clutter_actor_get_height (label);
-
- /* If the label is too big to fit on the stage then scale it so that
- it will fit */
- if (w > STAGE_WIDTH || h > STAGE_HEIGHT)
- {
- float x_scale = STAGE_WIDTH / (float) w;
- float y_scale = STAGE_HEIGHT / (float) h;
-
- if (x_scale < y_scale)
- {
- scale = x_scale;
- cols = 1;
- rows = STAGE_HEIGHT / (h * scale);
- }
- else
- {
- scale = y_scale;
- cols = STAGE_WIDTH / (w * scale);
- rows = 1;
- }
-
- g_print ("Text scaled by %f to fit on the stage\n", scale);
- }
- else
- {
- cols = STAGE_WIDTH / w;
- rows = STAGE_HEIGHT / h;
- }
-
- clutter_actor_destroy (label);
-
- for (row=0; row<rows; row++)
- for (col=0; col<cols; col++)
- {
- label = create_label();
- clutter_actor_set_scale (label, scale, scale);
- clutter_actor_set_position (label, w * col * scale, h * row * scale);
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), label);
- }
-
- clutter_actor_show_all (stage);
-
- clutter_perf_fps_start (CLUTTER_STAGE (stage));
- clutter_threads_add_idle (queue_redraw, stage);
- clutter_main ();
- clutter_perf_fps_report ("test-text-perf");
-
- return 0;
-}