mirror of
https://github.com/brl/mutter.git
synced 2024-12-23 19:42:05 +00:00
interactive: Remove test-project
The test-project test case was an old test that was barely working after landing the size allocation API in Clutter 0.8. It has never been fixed, and it's been of relative use ever since.
This commit is contained in:
parent
8ae47eb79c
commit
1515a9f989
@ -9,7 +9,6 @@ UNIT_TESTS = \
|
||||
test-actors.c \
|
||||
test-actor-clone.c \
|
||||
test-behave.c \
|
||||
test-project.c \
|
||||
test-rotate.c \
|
||||
test-depth.c \
|
||||
test-threads.c \
|
||||
|
@ -1,229 +0,0 @@
|
||||
#include <clutter/clutter.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <gmodule.h>
|
||||
|
||||
static ClutterActor *main_stage, *rect, *p[5];
|
||||
|
||||
static void
|
||||
init_handles (void)
|
||||
{
|
||||
gint i;
|
||||
ClutterVertex v[4];
|
||||
ClutterVertex v1, v2;
|
||||
ClutterColor blue = { 0, 0, 0xff, 0xff };
|
||||
|
||||
clutter_actor_get_abs_allocation_vertices (rect, v);
|
||||
for (i = 0; i < 4; ++i)
|
||||
{
|
||||
p[i] = clutter_rectangle_new_with_color (&blue);
|
||||
clutter_actor_set_size (p[i], 5, 5);
|
||||
clutter_actor_set_position (p[i], 0, 0);
|
||||
clutter_group_add (CLUTTER_GROUP (main_stage), p[i]);
|
||||
|
||||
clutter_actor_set_position (p[i],
|
||||
v[i].x - clutter_actor_get_width (p[i]) / 2,
|
||||
v[i].y - clutter_actor_get_height (p[i]) / 2);
|
||||
|
||||
clutter_actor_raise_top (p[i]);
|
||||
|
||||
clutter_actor_show (p[i]);
|
||||
}
|
||||
|
||||
v1.x = clutter_actor_get_width (rect) / 2;
|
||||
v1.y = clutter_actor_get_height (rect) / 2;
|
||||
v1.z = 0;
|
||||
|
||||
clutter_actor_apply_transform_to_point (rect, &v1, &v2);
|
||||
p[4] = clutter_rectangle_new_with_color (&blue);
|
||||
clutter_actor_set_size (p[4], 5, 5);
|
||||
clutter_actor_set_position (p[4], 0, 0);
|
||||
clutter_group_add (CLUTTER_GROUP (main_stage), p[4]);
|
||||
clutter_actor_set_position (p[4],
|
||||
v2.x - clutter_actor_get_width (p[4]) / 2,
|
||||
v2.y - clutter_actor_get_height (p[4]) / 2);
|
||||
|
||||
clutter_actor_raise_top (p[4]);
|
||||
|
||||
clutter_actor_show (p[4]);
|
||||
}
|
||||
|
||||
static void
|
||||
place_handles (void)
|
||||
{
|
||||
gint i;
|
||||
ClutterVertex v[4];
|
||||
ClutterVertex v1, v2;
|
||||
|
||||
clutter_actor_get_abs_allocation_vertices (rect, v);
|
||||
for (i = 0; i < 4; ++i)
|
||||
{
|
||||
clutter_actor_set_position (p[i],
|
||||
v[i].x - clutter_actor_get_width (p[i])/2,
|
||||
v[i].y - clutter_actor_get_height (p[i])/2);
|
||||
}
|
||||
|
||||
v1.x = clutter_actor_get_width (rect) / 2;
|
||||
v1.y = clutter_actor_get_height (rect) / 2;
|
||||
v1.z = 0;
|
||||
|
||||
clutter_actor_apply_transform_to_point (rect, &v1, &v2);
|
||||
clutter_actor_set_position (p[4],
|
||||
v2.x - clutter_actor_get_width (p[4])/2,
|
||||
v2.y - clutter_actor_get_height (p[4])/2);
|
||||
}
|
||||
|
||||
#define M(m,row,col) (m)[col*4+row]
|
||||
|
||||
static gint
|
||||
find_handle_index (ClutterActor * a)
|
||||
{
|
||||
gint i;
|
||||
for (i = 0; i < sizeof(p)/sizeof(p[0]); ++i)
|
||||
if (p[i] == a)
|
||||
return i;
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
on_event (ClutterStage *stage,
|
||||
ClutterEvent *event,
|
||||
gpointer user_data)
|
||||
{
|
||||
static ClutterActor * dragging = NULL;
|
||||
|
||||
switch (event->type)
|
||||
{
|
||||
case CLUTTER_BUTTON_PRESS:
|
||||
{
|
||||
ClutterActor *actor;
|
||||
gfloat x, y;
|
||||
|
||||
clutter_event_get_coords (event, &x, &y);
|
||||
|
||||
actor = clutter_stage_get_actor_at_pos (stage,
|
||||
CLUTTER_PICK_ALL,
|
||||
x, y);
|
||||
|
||||
if (actor != CLUTTER_ACTOR (stage))
|
||||
{
|
||||
if (actor != rect)
|
||||
dragging = actor;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case CLUTTER_MOTION:
|
||||
{
|
||||
if (dragging)
|
||||
{
|
||||
ClutterActorBox box1, box2;
|
||||
gfloat x, y;
|
||||
gfloat xp, yp;
|
||||
gint i;
|
||||
|
||||
i = find_handle_index (dragging);
|
||||
|
||||
if (i < 0)
|
||||
break;
|
||||
|
||||
clutter_event_get_coords (event, &x, &y);
|
||||
|
||||
clutter_actor_get_allocation_box (dragging, &box1);
|
||||
clutter_actor_get_allocation_box (rect, &box2);
|
||||
|
||||
xp = (x - 3) - box1.x1;
|
||||
yp = (y - 3) - box1.y1;
|
||||
|
||||
if (i == 4)
|
||||
{
|
||||
g_debug ("moving box by %f, %f", xp, yp);
|
||||
clutter_actor_move_by (rect, xp, yp);
|
||||
}
|
||||
else
|
||||
{
|
||||
g_debug ("adjusting box by %f, %f, handle %d", xp, yp, i);
|
||||
|
||||
switch (i)
|
||||
{
|
||||
case 0:
|
||||
box2.x1 += xp;
|
||||
box2.y1 += yp;
|
||||
break;
|
||||
case 1:
|
||||
box2.x2 += xp;
|
||||
box2.y1 += yp;
|
||||
break;
|
||||
case 2:
|
||||
box2.x1 += xp;
|
||||
box2.y2 += yp;
|
||||
break;
|
||||
case 3:
|
||||
box2.x2 += xp;
|
||||
box2.y2 += yp;
|
||||
break;
|
||||
}
|
||||
|
||||
/* FIXME this is just plain wrong, to allocate directly
|
||||
* like this
|
||||
*/
|
||||
clutter_actor_allocate (rect, &box2, TRUE);
|
||||
}
|
||||
|
||||
place_handles ();
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case CLUTTER_BUTTON_RELEASE:
|
||||
{
|
||||
dragging = NULL;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
G_MODULE_EXPORT int
|
||||
test_project_main (int argc, char *argv[])
|
||||
{
|
||||
ClutterActor *label;
|
||||
|
||||
ClutterColor stage_color = { 0x0, 0x0, 0x0, 0xff },
|
||||
white = { 0xff, 0xff, 0xff, 0xff };
|
||||
|
||||
clutter_init (&argc, &argv);
|
||||
|
||||
main_stage = clutter_stage_get_default ();
|
||||
|
||||
clutter_stage_set_color (CLUTTER_STAGE (main_stage), &stage_color);
|
||||
clutter_actor_set_size (main_stage, 640, 480);
|
||||
|
||||
rect = clutter_rectangle_new_with_color (&white);
|
||||
clutter_actor_set_size (rect, 320, 240);
|
||||
clutter_actor_set_position (rect, 180, 120);
|
||||
clutter_actor_set_rotation (rect, CLUTTER_Y_AXIS, 60, 0, 0, 0);
|
||||
clutter_group_add (CLUTTER_GROUP (main_stage), rect);
|
||||
|
||||
label = clutter_text_new_with_text ("Mono 8pt", "Drag the blue rectangles");
|
||||
clutter_text_set_color (CLUTTER_TEXT (label), &white);
|
||||
|
||||
clutter_actor_set_position (label, 10, 10);
|
||||
clutter_group_add (CLUTTER_GROUP (main_stage), label);
|
||||
|
||||
clutter_actor_show_all (main_stage);
|
||||
|
||||
g_signal_connect (main_stage, "event", G_CALLBACK (on_event), NULL);
|
||||
|
||||
init_handles ();
|
||||
|
||||
clutter_main();
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
Loading…
Reference in New Issue
Block a user