mirror of
https://github.com/brl/mutter.git
synced 2025-08-10 18:34:42 +00:00
cookbook: Added simple pointer motion example
Added a simple pointer motion example which just reports on the stage and actor-relative coordinates of the pointer as it moves.
This commit is contained in:
@@ -11,6 +11,7 @@ noinst_PROGRAMS = \
|
|||||||
layouts-stacking \
|
layouts-stacking \
|
||||||
layouts-stacking-diff-sized-actors \
|
layouts-stacking-diff-sized-actors \
|
||||||
events-mouse-scroll \
|
events-mouse-scroll \
|
||||||
|
events-pointer-motion \
|
||||||
events-pointer-motion-crossing \
|
events-pointer-motion-crossing \
|
||||||
events-pointer-motion-scribbler \
|
events-pointer-motion-scribbler \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
@@ -42,6 +43,7 @@ textures_sub_texture_SOURCES = textures-sub-texture.c
|
|||||||
layouts_stacking_SOURCES = layouts-stacking.c
|
layouts_stacking_SOURCES = layouts-stacking.c
|
||||||
layouts_stacking_diff_sized_actors_SOURCES = layouts-stacking-diff-sized-actors.c
|
layouts_stacking_diff_sized_actors_SOURCES = layouts-stacking-diff-sized-actors.c
|
||||||
events_mouse_scroll_SOURCES = events-mouse-scroll.c
|
events_mouse_scroll_SOURCES = events-mouse-scroll.c
|
||||||
|
events_pointer_motion_SOURCES = events-pointer-motion.c
|
||||||
events_pointer_motion_crossing_SOURCES = events-pointer-motion-crossing.c
|
events_pointer_motion_crossing_SOURCES = events-pointer-motion-crossing.c
|
||||||
events_pointer_motion_scribbler_SOURCES = events-pointer-motion-scribbler.c
|
events_pointer_motion_scribbler_SOURCES = events-pointer-motion-scribbler.c
|
||||||
|
|
||||||
|
56
doc/cookbook/examples/events-pointer-motion.c
Normal file
56
doc/cookbook/examples/events-pointer-motion.c
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
#include <clutter/clutter.h>
|
||||||
|
|
||||||
|
static const ClutterColor stage_color = { 0x33, 0x33, 0x55, 0xff };
|
||||||
|
static const ClutterColor rectangle_color = { 0xaa, 0x99, 0x00, 0xff };
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
_pointer_moved_cb (ClutterActor *actor,
|
||||||
|
ClutterEvent *event,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
ClutterMotionEvent *motion_event = (ClutterMotionEvent *)event;
|
||||||
|
|
||||||
|
gfloat stage_x = motion_event->x;
|
||||||
|
gfloat stage_y = motion_event->y;
|
||||||
|
|
||||||
|
gfloat actor_x, actor_y;
|
||||||
|
clutter_actor_transform_stage_point (actor,
|
||||||
|
stage_x, stage_y,
|
||||||
|
&actor_x, &actor_y);
|
||||||
|
|
||||||
|
g_debug ("pointer @ stage x %.0f, y %.0f; actor x %.0f, y %.0f",
|
||||||
|
stage_x, stage_y,
|
||||||
|
actor_x, actor_y);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc, char *argv[])
|
||||||
|
{
|
||||||
|
ClutterActor *stage;
|
||||||
|
ClutterActor *rectangle;
|
||||||
|
|
||||||
|
clutter_init (&argc, &argv);
|
||||||
|
|
||||||
|
stage = clutter_stage_get_default ();
|
||||||
|
clutter_actor_set_size (stage, 400, 400);
|
||||||
|
clutter_stage_set_color (CLUTTER_STAGE (stage), &stage_color);
|
||||||
|
|
||||||
|
rectangle = clutter_rectangle_new_with_color (&rectangle_color);
|
||||||
|
clutter_actor_set_size (rectangle, 300, 300);
|
||||||
|
clutter_actor_set_position (rectangle, 50, 50);
|
||||||
|
clutter_actor_set_reactive (rectangle, TRUE);
|
||||||
|
|
||||||
|
clutter_container_add_actor (CLUTTER_CONTAINER (stage), rectangle);
|
||||||
|
|
||||||
|
g_signal_connect (rectangle,
|
||||||
|
"motion-event",
|
||||||
|
G_CALLBACK (_pointer_moved_cb),
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
clutter_actor_show (stage);
|
||||||
|
|
||||||
|
clutter_main ();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Reference in New Issue
Block a user