Guest User

Untitled

a guest
Jul 15th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.91 KB | None | 0 0
  1. #include <clutter/clutter.h>
  2. #include <stdlib.h>
  3.  
  4. static gboolean
  5. on_stage_keypress (ClutterStage *stage, ClutterEvent *event, gpointer data)
  6. {
  7. //g_print("Key pressed: %d\n", clutter_event_get_key_code(event));
  8. if(clutter_event_get_key_code(event) == 66) //Escape
  9. clutter_main_quit();
  10. return TRUE;
  11. }
  12.  
  13. static gboolean
  14. start_stop_drag (ClutterActor *actor, ClutterEvent *event, gpointer data)
  15. {
  16. gboolean *dragging = data;
  17. *dragging = !*dragging;
  18. if(*dragging)
  19. g_print("Arrastrando\n");
  20. else
  21. g_print("No arrastrando\n");
  22. return TRUE;
  23. }
  24.  
  25. static gboolean
  26. drag_actor (ClutterActor *actor, ClutterEvent *event, gpointer data)
  27. {
  28. gfloat x=0, y=0;
  29. gboolean *dragging = data;
  30. if(*dragging) {
  31. clutter_event_get_coords(event, &x, &y);
  32. clutter_actor_set_position(actor, x, y);
  33. }
  34. return TRUE;
  35. }
  36.  
  37. int main (int argc, char *argv[])
  38. {
  39. ClutterColor stage_colour = { 0x00, 0x00, 0x00, 0xff};
  40.  
  41. clutter_init(&argc, &argv);
  42.  
  43. //Stage
  44. gfloat st_w = 640, st_h = 480;
  45.  
  46. ClutterActor *stage = clutter_stage_get_default ();
  47.  
  48. //clutter_stage_set_fullscreen(CLUTTER_STAGE(stage), TRUE);
  49. clutter_actor_set_size (stage, st_w, st_h);
  50. clutter_stage_set_color (CLUTTER_STAGE(stage), &stage_colour);
  51.  
  52. clutter_actor_show (stage);
  53.  
  54. //Salir
  55. gfloat icon_w = 64, icon_h = 64;
  56. ClutterActor *exit = clutter_texture_new_from_file ("system-log-out.svg", NULL);
  57. clutter_container_add_actor (CLUTTER_CONTAINER(stage), exit);
  58. clutter_actor_set_anchor_point (exit, icon_w, 0);
  59. clutter_actor_set_position (exit, CLUTTER_STAGE_WIDTH(), 0.0);
  60. clutter_actor_set_size (exit, icon_w, icon_h);
  61. clutter_actor_set_reactive (exit, TRUE);
  62. clutter_actor_show (exit);
  63.  
  64. //Carita
  65. ClutterActor *omg = clutter_texture_new_from_file("face-surprise.svg", NULL);
  66. clutter_container_add_actor (CLUTTER_CONTAINER(stage), omg);
  67. clutter_actor_set_size (omg, icon_w, icon_h);
  68. clutter_actor_set_anchor_point (omg, icon_w/2, icon_h/2);
  69. clutter_actor_set_position (omg, CLUTTER_STAGE_WIDTH()/2, CLUTTER_STAGE_HEIGHT()/2);
  70. clutter_actor_set_reactive (omg, TRUE);
  71. clutter_actor_show(omg);
  72.  
  73. gboolean omg_dragging = FALSE;
  74.  
  75. //Señales!
  76. g_signal_connect (exit, "button-press-event",
  77. G_CALLBACK (clutter_main_quit), NULL);
  78. g_signal_connect (stage, "key-press-event",
  79. G_CALLBACK (on_stage_keypress), NULL);
  80. g_signal_connect (omg, "button-press-event",
  81. G_CALLBACK(start_stop_drag), &omg_dragging);
  82. g_signal_connect (omg, "button-release-event",
  83. G_CALLBACK(start_stop_drag), &omg_dragging);
  84. g_signal_connect (omg, "motion-event",
  85. G_CALLBACK(drag_actor), &omg_dragging);
  86.  
  87. g_print("Default FPSs: %d\n", clutter_get_default_frame_rate());
  88.  
  89. clutter_main();
  90.  
  91. return EXIT_SUCCESS;
  92. }
Add Comment
Please, Sign In to add comment