#include void frame_cb (ClutterTimeline *timeline, gint frame_num, gpointer data) { ClutterElement *label = (ClutterElement*)data; clutter_element_set_depth(label, -400 + (frame_num * 40)); clutter_element_set_opacity (label, 255 - frame_num ); } int main (int argc, char *argv[]) { ClutterTimeline *timeline; ClutterElement *label; ClutterElement *stage; gchar *text; gsize size; ClutterColor stage_color = { 0x00, 0x00, 0x00, 0xff }; ClutterColor label_color = { 0x11, 0xdd, 0x11, 0xaa }; clutter_init (&argc, &argv); stage = clutter_stage_get_default (); if (!g_file_get_contents ("test-text.c", &text, &size, NULL)) g_error("g_file_get_contents() of test-text.c failed"); clutter_element_set_size (stage, 800, 600); clutter_stage_set_color (CLUTTER_STAGE (stage), &stage_color); label = clutter_label_new_with_text ("Mono 8", text); clutter_label_set_color (CLUTTER_LABEL (label), &label_color); clutter_group_add (CLUTTER_GROUP (stage), label); clutter_group_show_all (CLUTTER_GROUP (stage)); timeline = clutter_timeline_new (400, 60); /* num frames, fps */ g_object_set(timeline, "loop", TRUE, 0); /* have it loop */ g_signal_connect(timeline, "new-frame", G_CALLBACK (frame_cb), label); /* and start it */ clutter_timeline_start (timeline); g_signal_connect (stage, "key-press-event", G_CALLBACK (clutter_main_quit), NULL); g_object_unref (stage); clutter_main(); return 0; }