Example #1
0
/**
 * clutter_score_rewind:
 * @score: A #ClutterScore
 *
 * Rewinds a #ClutterScore to its initial state.
 *
 * Since: 0.6
 */
void
clutter_score_rewind (ClutterScore *score)
{
  gboolean was_playing;

  g_return_if_fail (CLUTTER_IS_SCORE (score));

  was_playing = clutter_score_is_playing (score);

  clutter_score_stop (score);

  if (was_playing)
    clutter_score_start (score);
}
Example #2
0
int main(int argc, char ** argv)
{
  ClutterColor stage_color = {0x00, 0x00, 0x00, 0xFF}; // Black
  ClutterColor rect_color = {0x00, 0xFF, 0xFF, 0xFF}; // Purple

  clutter_init(&argc, &argv);

  ClutterActor * stage = clutter_stage_get_default();
  clutter_actor_set_size(stage, 200, 200);
  clutter_stage_set_color(CLUTTER_STAGE(stage), &stage_color);

  rect = clutter_rectangle_new_with_color(&rect_color);
  clutter_actor_set_size(rect, 70, 70);
  clutter_actor_set_position(rect, 50, 100);
  clutter_container_add_actor(CLUTTER_CONTAINER(stage), rect);
  clutter_actor_show(rect);

  clutter_actor_show(stage);

  ClutterScore * score = clutter_score_new();
  clutter_score_set_loop(score, TRUE);

  ClutterTimeline * rtimeline = clutter_timeline_new(10, //frames
    120 //fps
  );
  g_signal_connect(rtimeline, "new-frame", 
    G_CALLBACK(on_timeline_rotation_new_frame), NULL);
  clutter_score_append(score, NULL, rtimeline);

  ClutterTimeline * mtimeline = clutter_timeline_new(10, //frames
    120 //fps
  );
  g_signal_connect(mtimeline, "new-frame", 
    G_CALLBACK(on_timeline_move_new_frame), NULL);
  clutter_score_append(score, rtimeline, mtimeline);

  clutter_score_start(score);

  clutter_main();

  g_object_unref(rtimeline);
  g_object_unref(mtimeline);
  g_object_unref(score);

  return EXIT_SUCCESS;
}
Example #3
0
static void
on_timeline_completed (ClutterTimeline   *timeline,
                       ClutterScoreEntry *entry)
{
  ClutterScorePrivate *priv = entry->score->priv;

  g_hash_table_remove (priv->running_timelines,
                       GUINT_TO_POINTER (entry->id));

  g_signal_handler_disconnect (timeline, entry->complete_id);
  entry->complete_id = 0;

  CLUTTER_NOTE (SCHEDULER, "timeline [%p] ('%lu') completed", 
		entry->timeline,
                entry->id);

  g_signal_emit (entry->score, score_signals[TIMELINE_COMPLETED], 0,
                 entry->timeline);

  /* start every child */
  if (entry->node->children)
    {
      g_node_children_foreach (entry->node,
                               G_TRAVERSE_ALL,
                               start_children_entries,
                               NULL);
    }

  /* score has finished - fire 'completed' signal */
  if (g_hash_table_size (priv->running_timelines) == 0)
    {
      CLUTTER_NOTE (SCHEDULER, "looks like we finished");
      
      g_signal_emit (entry->score, score_signals[COMPLETED], 0);

      clutter_score_stop (entry->score);
      
      if (priv->loop)
        clutter_score_start (entry->score);
    }
}