Merge branch 'timeline-no-fps' into 1.0-integration

This commit is contained in:
Neil Roberts 2009-06-05 12:20:41 +01:00
commit 3ee093e356
31 changed files with 324 additions and 914 deletions

View File

@ -603,9 +603,7 @@ clutter_ease_out_quad (ClutterAlpha *alpha,
gpointer dummy G_GNUC_UNUSED) gpointer dummy G_GNUC_UNUSED)
{ {
ClutterTimeline *timeline = alpha->priv->timeline; ClutterTimeline *timeline = alpha->priv->timeline;
gdouble t = clutter_timeline_get_current_frame (timeline); gdouble p = clutter_timeline_get_progress (timeline);
gdouble d = clutter_timeline_get_n_frames (timeline);
gdouble p = t / d;
return -1.0 * p * (p - 2); return -1.0 * p * (p - 2);
} }
@ -615,8 +613,8 @@ clutter_ease_in_out_quad (ClutterAlpha *alpha,
gpointer dummy G_GNUC_UNUSED) gpointer dummy G_GNUC_UNUSED)
{ {
ClutterTimeline *timeline = alpha->priv->timeline; ClutterTimeline *timeline = alpha->priv->timeline;
gdouble t = clutter_timeline_get_current_frame (timeline); gdouble t = clutter_timeline_get_elapsed_time (timeline);
gdouble d = clutter_timeline_get_n_frames (timeline); gdouble d = clutter_timeline_get_duration (timeline);
gdouble p = t / (d / 2); gdouble p = t / (d / 2);
if (p < 1) if (p < 1)
@ -632,9 +630,7 @@ clutter_ease_in_cubic (ClutterAlpha *alpha,
gpointer dummy G_GNUC_UNUSED) gpointer dummy G_GNUC_UNUSED)
{ {
ClutterTimeline *timeline = alpha->priv->timeline; ClutterTimeline *timeline = alpha->priv->timeline;
gdouble t = clutter_timeline_get_current_frame (timeline); gdouble p = clutter_timeline_get_progress (timeline);
gdouble d = clutter_timeline_get_n_frames (timeline);
gdouble p = t / d;
return p * p * p; return p * p * p;
} }
@ -644,8 +640,8 @@ clutter_ease_out_cubic (ClutterAlpha *alpha,
gpointer dummy G_GNUC_UNUSED) gpointer dummy G_GNUC_UNUSED)
{ {
ClutterTimeline *timeline = alpha->priv->timeline; ClutterTimeline *timeline = alpha->priv->timeline;
gdouble t = clutter_timeline_get_current_frame (timeline); gdouble t = clutter_timeline_get_elapsed_time (timeline);
gdouble d = clutter_timeline_get_n_frames (timeline); gdouble d = clutter_timeline_get_duration (timeline);
gdouble p = t / d - 1; gdouble p = t / d - 1;
return p * p * p + 1; return p * p * p + 1;
@ -656,8 +652,8 @@ clutter_ease_in_out_cubic (ClutterAlpha *alpha,
gpointer dummy G_GNUC_UNUSED) gpointer dummy G_GNUC_UNUSED)
{ {
ClutterTimeline *timeline = alpha->priv->timeline; ClutterTimeline *timeline = alpha->priv->timeline;
gdouble t = clutter_timeline_get_current_frame (timeline); gdouble t = clutter_timeline_get_elapsed_time (timeline);
gdouble d = clutter_timeline_get_n_frames (timeline); gdouble d = clutter_timeline_get_duration (timeline);
gdouble p = t / (d / 2); gdouble p = t / (d / 2);
if (p < 1) if (p < 1)
@ -673,9 +669,7 @@ clutter_ease_in_quart (ClutterAlpha *alpha,
gpointer dummy G_GNUC_UNUSED) gpointer dummy G_GNUC_UNUSED)
{ {
ClutterTimeline *timeline = alpha->priv->timeline; ClutterTimeline *timeline = alpha->priv->timeline;
gdouble t = clutter_timeline_get_current_frame (timeline); gdouble p = clutter_timeline_get_progress (timeline);
gdouble d = clutter_timeline_get_n_frames (timeline);
gdouble p = t / d;
return p * p * p * p; return p * p * p * p;
} }
@ -685,8 +679,8 @@ clutter_ease_out_quart (ClutterAlpha *alpha,
gpointer dummy G_GNUC_UNUSED) gpointer dummy G_GNUC_UNUSED)
{ {
ClutterTimeline *timeline = alpha->priv->timeline; ClutterTimeline *timeline = alpha->priv->timeline;
gdouble t = clutter_timeline_get_current_frame (timeline); gdouble t = clutter_timeline_get_elapsed_time (timeline);
gdouble d = clutter_timeline_get_n_frames (timeline); gdouble d = clutter_timeline_get_duration (timeline);
gdouble p = t / d - 1; gdouble p = t / d - 1;
return -1.0 * (p * p * p * p - 1); return -1.0 * (p * p * p * p - 1);
@ -697,8 +691,8 @@ clutter_ease_in_out_quart (ClutterAlpha *alpha,
gpointer dummy G_GNUC_UNUSED) gpointer dummy G_GNUC_UNUSED)
{ {
ClutterTimeline *timeline = alpha->priv->timeline; ClutterTimeline *timeline = alpha->priv->timeline;
gdouble t = clutter_timeline_get_current_frame (timeline); gdouble t = clutter_timeline_get_elapsed_time (timeline);
gdouble d = clutter_timeline_get_n_frames (timeline); gdouble d = clutter_timeline_get_duration (timeline);
gdouble p = t / (d / 2); gdouble p = t / (d / 2);
if (p < 1) if (p < 1)
@ -714,9 +708,7 @@ clutter_ease_in_quint (ClutterAlpha *alpha,
gpointer dummy G_GNUC_UNUSED) gpointer dummy G_GNUC_UNUSED)
{ {
ClutterTimeline *timeline = alpha->priv->timeline; ClutterTimeline *timeline = alpha->priv->timeline;
gdouble t = clutter_timeline_get_current_frame (timeline); gdouble p = clutter_timeline_get_progress (timeline);
gdouble d = clutter_timeline_get_n_frames (timeline);
gdouble p = t / d;
return p * p * p * p * p; return p * p * p * p * p;
} }
@ -726,8 +718,8 @@ clutter_ease_out_quint (ClutterAlpha *alpha,
gpointer dummy G_GNUC_UNUSED) gpointer dummy G_GNUC_UNUSED)
{ {
ClutterTimeline *timeline = alpha->priv->timeline; ClutterTimeline *timeline = alpha->priv->timeline;
gdouble t = clutter_timeline_get_current_frame (timeline); gdouble t = clutter_timeline_get_elapsed_time (timeline);
gdouble d = clutter_timeline_get_n_frames (timeline); gdouble d = clutter_timeline_get_duration (timeline);
gdouble p = t / d - 1; gdouble p = t / d - 1;
return p * p * p * p * p + 1; return p * p * p * p * p + 1;
@ -738,8 +730,8 @@ clutter_ease_in_out_quint (ClutterAlpha *alpha,
gpointer dummy G_GNUC_UNUSED) gpointer dummy G_GNUC_UNUSED)
{ {
ClutterTimeline *timeline = alpha->priv->timeline; ClutterTimeline *timeline = alpha->priv->timeline;
gdouble t = clutter_timeline_get_current_frame (timeline); gdouble t = clutter_timeline_get_elapsed_time (timeline);
gdouble d = clutter_timeline_get_n_frames (timeline); gdouble d = clutter_timeline_get_duration (timeline);
gdouble p = t / (d / 2); gdouble p = t / (d / 2);
if (p < 1) if (p < 1)
@ -755,8 +747,8 @@ clutter_ease_in_sine (ClutterAlpha *alpha,
gpointer dummy G_GNUC_UNUSED) gpointer dummy G_GNUC_UNUSED)
{ {
ClutterTimeline *timeline = alpha->priv->timeline; ClutterTimeline *timeline = alpha->priv->timeline;
gdouble t = clutter_timeline_get_current_frame (timeline); gdouble t = clutter_timeline_get_elapsed_time (timeline);
gdouble d = clutter_timeline_get_n_frames (timeline); gdouble d = clutter_timeline_get_duration (timeline);
return -1.0 * cos (t / d * G_PI_2) + 1.0; return -1.0 * cos (t / d * G_PI_2) + 1.0;
} }
@ -766,8 +758,8 @@ clutter_ease_out_sine (ClutterAlpha *alpha,
gpointer dummy G_GNUC_UNUSED) gpointer dummy G_GNUC_UNUSED)
{ {
ClutterTimeline *timeline = alpha->priv->timeline; ClutterTimeline *timeline = alpha->priv->timeline;
gdouble t = clutter_timeline_get_current_frame (timeline); gdouble t = clutter_timeline_get_elapsed_time (timeline);
gdouble d = clutter_timeline_get_n_frames (timeline); gdouble d = clutter_timeline_get_duration (timeline);
return sin (t / d * G_PI_2); return sin (t / d * G_PI_2);
} }
@ -777,8 +769,8 @@ clutter_ease_in_out_sine (ClutterAlpha *alpha,
gpointer dummy G_GNUC_UNUSED) gpointer dummy G_GNUC_UNUSED)
{ {
ClutterTimeline *timeline = alpha->priv->timeline; ClutterTimeline *timeline = alpha->priv->timeline;
gdouble t = clutter_timeline_get_current_frame (timeline); gdouble t = clutter_timeline_get_elapsed_time (timeline);
gdouble d = clutter_timeline_get_n_frames (timeline); gdouble d = clutter_timeline_get_duration (timeline);
return -0.5 * (cos (G_PI * t / d) - 1); return -0.5 * (cos (G_PI * t / d) - 1);
} }
@ -788,8 +780,8 @@ clutter_ease_in_expo (ClutterAlpha *alpha,
gpointer dummy G_GNUC_UNUSED) gpointer dummy G_GNUC_UNUSED)
{ {
ClutterTimeline *timeline = alpha->priv->timeline; ClutterTimeline *timeline = alpha->priv->timeline;
gdouble t = clutter_timeline_get_current_frame (timeline); gdouble t = clutter_timeline_get_elapsed_time (timeline);
gdouble d = clutter_timeline_get_n_frames (timeline); gdouble d = clutter_timeline_get_duration (timeline);
return (t == 0) ? 0.0 : pow (2, 10 * (t / d - 1)); return (t == 0) ? 0.0 : pow (2, 10 * (t / d - 1));
} }
@ -799,8 +791,8 @@ clutter_ease_out_expo (ClutterAlpha *alpha,
gpointer dummy G_GNUC_UNUSED) gpointer dummy G_GNUC_UNUSED)
{ {
ClutterTimeline *timeline = alpha->priv->timeline; ClutterTimeline *timeline = alpha->priv->timeline;
gdouble t = clutter_timeline_get_current_frame (timeline); gdouble t = clutter_timeline_get_elapsed_time (timeline);
gdouble d = clutter_timeline_get_n_frames (timeline); gdouble d = clutter_timeline_get_duration (timeline);
return (t == d) ? 1.0 : -pow (2, -10 * t / d) + 1; return (t == d) ? 1.0 : -pow (2, -10 * t / d) + 1;
} }
@ -810,8 +802,8 @@ clutter_ease_in_out_expo (ClutterAlpha *alpha,
gpointer dummy G_GNUC_UNUSED) gpointer dummy G_GNUC_UNUSED)
{ {
ClutterTimeline *timeline = alpha->priv->timeline; ClutterTimeline *timeline = alpha->priv->timeline;
gdouble t = clutter_timeline_get_current_frame (timeline); gdouble t = clutter_timeline_get_elapsed_time (timeline);
gdouble d = clutter_timeline_get_n_frames (timeline); gdouble d = clutter_timeline_get_duration (timeline);
gdouble p; gdouble p;
if (t == 0) if (t == 0)
@ -835,9 +827,7 @@ clutter_ease_in_circ (ClutterAlpha *alpha,
gpointer dummy G_GNUC_UNUSED) gpointer dummy G_GNUC_UNUSED)
{ {
ClutterTimeline *timeline = alpha->priv->timeline; ClutterTimeline *timeline = alpha->priv->timeline;
gdouble t = clutter_timeline_get_current_frame (timeline); gdouble p = clutter_timeline_get_progress (timeline);
gdouble d = clutter_timeline_get_n_frames (timeline);
gdouble p = t / d;
return -1.0 * (sqrt (1 - p * p) - 1); return -1.0 * (sqrt (1 - p * p) - 1);
} }
@ -847,8 +837,8 @@ clutter_ease_out_circ (ClutterAlpha *alpha,
gpointer dummy G_GNUC_UNUSED) gpointer dummy G_GNUC_UNUSED)
{ {
ClutterTimeline *timeline = alpha->priv->timeline; ClutterTimeline *timeline = alpha->priv->timeline;
gdouble t = clutter_timeline_get_current_frame (timeline); gdouble t = clutter_timeline_get_elapsed_time (timeline);
gdouble d = clutter_timeline_get_n_frames (timeline); gdouble d = clutter_timeline_get_duration (timeline);
gdouble p = t / d - 1; gdouble p = t / d - 1;
return sqrt (1 - p * p); return sqrt (1 - p * p);
@ -859,8 +849,8 @@ clutter_ease_in_out_circ (ClutterAlpha *alpha,
gpointer dummy G_GNUC_UNUSED) gpointer dummy G_GNUC_UNUSED)
{ {
ClutterTimeline *timeline = alpha->priv->timeline; ClutterTimeline *timeline = alpha->priv->timeline;
gdouble t = clutter_timeline_get_current_frame (timeline); gdouble t = clutter_timeline_get_elapsed_time (timeline);
gdouble d = clutter_timeline_get_n_frames (timeline); gdouble d = clutter_timeline_get_duration (timeline);
gdouble p = t / (d / 2); gdouble p = t / (d / 2);
if (p < 1) if (p < 1)
@ -876,8 +866,8 @@ clutter_ease_in_elastic (ClutterAlpha *alpha,
gpointer dummy G_GNUC_UNUSED) gpointer dummy G_GNUC_UNUSED)
{ {
ClutterTimeline *timeline = alpha->priv->timeline; ClutterTimeline *timeline = alpha->priv->timeline;
gdouble t = clutter_timeline_get_current_frame (timeline); gdouble t = clutter_timeline_get_elapsed_time (timeline);
gdouble d = clutter_timeline_get_n_frames (timeline); gdouble d = clutter_timeline_get_duration (timeline);
gdouble p = d * .3; gdouble p = d * .3;
gdouble s = p / 4; gdouble s = p / 4;
gdouble q = t / d; gdouble q = t / d;
@ -895,8 +885,8 @@ clutter_ease_out_elastic (ClutterAlpha *alpha,
gpointer dummy G_GNUC_UNUSED) gpointer dummy G_GNUC_UNUSED)
{ {
ClutterTimeline *timeline = alpha->priv->timeline; ClutterTimeline *timeline = alpha->priv->timeline;
gdouble t = clutter_timeline_get_current_frame (timeline); gdouble t = clutter_timeline_get_elapsed_time (timeline);
gdouble d = clutter_timeline_get_n_frames (timeline); gdouble d = clutter_timeline_get_duration (timeline);
gdouble p = d * .3; gdouble p = d * .3;
gdouble s = p / 4; gdouble s = p / 4;
gdouble q = t / d; gdouble q = t / d;
@ -912,8 +902,8 @@ clutter_ease_in_out_elastic (ClutterAlpha *alpha,
gpointer dummy G_GNUC_UNUSED) gpointer dummy G_GNUC_UNUSED)
{ {
ClutterTimeline *timeline = alpha->priv->timeline; ClutterTimeline *timeline = alpha->priv->timeline;
gdouble t = clutter_timeline_get_current_frame (timeline); gdouble t = clutter_timeline_get_elapsed_time (timeline);
gdouble d = clutter_timeline_get_n_frames (timeline); gdouble d = clutter_timeline_get_duration (timeline);
gdouble p = d * (.3 * 1.5); gdouble p = d * (.3 * 1.5);
gdouble s = p / 4; gdouble s = p / 4;
gdouble q = t / (d / 2); gdouble q = t / (d / 2);
@ -942,9 +932,7 @@ clutter_ease_in_back (ClutterAlpha *alpha,
gpointer dummy G_GNUC_UNUSED) gpointer dummy G_GNUC_UNUSED)
{ {
ClutterTimeline *timeline = alpha->priv->timeline; ClutterTimeline *timeline = alpha->priv->timeline;
gdouble t = clutter_timeline_get_current_frame (timeline); gdouble p = clutter_timeline_get_progress (timeline);
gdouble d = clutter_timeline_get_n_frames (timeline);
gdouble p = t / d;
return p * p * ((1.70158 + 1) * p - 1.70158); return p * p * ((1.70158 + 1) * p - 1.70158);
} }
@ -954,8 +942,8 @@ clutter_ease_out_back (ClutterAlpha *alpha,
gpointer dummy G_GNUC_UNUSED) gpointer dummy G_GNUC_UNUSED)
{ {
ClutterTimeline *timeline = alpha->priv->timeline; ClutterTimeline *timeline = alpha->priv->timeline;
gdouble t = clutter_timeline_get_current_frame (timeline); gdouble t = clutter_timeline_get_elapsed_time (timeline);
gdouble d = clutter_timeline_get_n_frames (timeline); gdouble d = clutter_timeline_get_duration (timeline);
gdouble p = t / d - 1; gdouble p = t / d - 1;
return p * p * ((1.70158 + 1) * p + 1.70158) + 1; return p * p * ((1.70158 + 1) * p + 1.70158) + 1;
@ -966,8 +954,8 @@ clutter_ease_in_out_back (ClutterAlpha *alpha,
gpointer dummy G_GNUC_UNUSED) gpointer dummy G_GNUC_UNUSED)
{ {
ClutterTimeline *timeline = alpha->priv->timeline; ClutterTimeline *timeline = alpha->priv->timeline;
gdouble t = clutter_timeline_get_current_frame (timeline); gdouble t = clutter_timeline_get_elapsed_time (timeline);
gdouble d = clutter_timeline_get_n_frames (timeline); gdouble d = clutter_timeline_get_duration (timeline);
gdouble p = t / (d / 2); gdouble p = t / (d / 2);
gdouble s = 1.70158 * 1.525; gdouble s = 1.70158 * 1.525;
@ -1019,8 +1007,8 @@ clutter_ease_in_bounce (ClutterAlpha *alpha,
gpointer dummy G_GNUC_UNUSED) gpointer dummy G_GNUC_UNUSED)
{ {
ClutterTimeline *timeline = alpha->priv->timeline; ClutterTimeline *timeline = alpha->priv->timeline;
gdouble t = clutter_timeline_get_current_frame (timeline); gdouble t = clutter_timeline_get_elapsed_time (timeline);
gdouble d = clutter_timeline_get_n_frames (timeline); gdouble d = clutter_timeline_get_duration (timeline);
return ease_in_bounce_internal (t, d); return ease_in_bounce_internal (t, d);
} }
@ -1030,8 +1018,8 @@ clutter_ease_out_bounce (ClutterAlpha *alpha,
gpointer dummy G_GNUC_UNUSED) gpointer dummy G_GNUC_UNUSED)
{ {
ClutterTimeline *timeline = alpha->priv->timeline; ClutterTimeline *timeline = alpha->priv->timeline;
gdouble t = clutter_timeline_get_current_frame (timeline); gdouble t = clutter_timeline_get_elapsed_time (timeline);
gdouble d = clutter_timeline_get_n_frames (timeline); gdouble d = clutter_timeline_get_duration (timeline);
return ease_out_bounce_internal (t, d); return ease_out_bounce_internal (t, d);
} }
@ -1041,8 +1029,8 @@ clutter_ease_in_out_bounce (ClutterAlpha *alpha,
gpointer dummy G_GNUC_UNUSED) gpointer dummy G_GNUC_UNUSED)
{ {
ClutterTimeline *timeline = alpha->priv->timeline; ClutterTimeline *timeline = alpha->priv->timeline;
gdouble t = clutter_timeline_get_current_frame (timeline); gdouble t = clutter_timeline_get_elapsed_time (timeline);
gdouble d = clutter_timeline_get_n_frames (timeline); gdouble d = clutter_timeline_get_duration (timeline);
if (t < d / 2) if (t < d / 2)
return ease_in_bounce_internal (t * 2, d) * 0.5; return ease_in_bounce_internal (t * 2, d) * 0.5;

File diff suppressed because it is too large Load Diff

View File

@ -112,17 +112,12 @@ struct _ClutterTimelineClass
GType clutter_timeline_get_type (void) G_GNUC_CONST; GType clutter_timeline_get_type (void) G_GNUC_CONST;
ClutterTimeline *clutter_timeline_new (guint n_frames, ClutterTimeline *clutter_timeline_new (guint msecs);
guint fps);
ClutterTimeline *clutter_timeline_new_for_duration (guint msecs);
ClutterTimeline *clutter_timeline_clone (ClutterTimeline *timeline); ClutterTimeline *clutter_timeline_clone (ClutterTimeline *timeline);
guint clutter_timeline_get_duration (ClutterTimeline *timeline); guint clutter_timeline_get_duration (ClutterTimeline *timeline);
void clutter_timeline_set_duration (ClutterTimeline *timeline, void clutter_timeline_set_duration (ClutterTimeline *timeline,
guint msecs); guint msecs);
guint clutter_timeline_get_speed (ClutterTimeline *timeline);
void clutter_timeline_set_speed (ClutterTimeline *timeline,
guint fps);
ClutterTimelineDirection clutter_timeline_get_direction (ClutterTimeline *timeline); ClutterTimelineDirection clutter_timeline_get_direction (ClutterTimeline *timeline);
void clutter_timeline_set_direction (ClutterTimeline *timeline, void clutter_timeline_set_direction (ClutterTimeline *timeline,
ClutterTimelineDirection direction); ClutterTimelineDirection direction);
@ -134,32 +129,25 @@ void clutter_timeline_set_loop (ClutterTimeline *timeli
gboolean clutter_timeline_get_loop (ClutterTimeline *timeline); gboolean clutter_timeline_get_loop (ClutterTimeline *timeline);
void clutter_timeline_rewind (ClutterTimeline *timeline); void clutter_timeline_rewind (ClutterTimeline *timeline);
void clutter_timeline_skip (ClutterTimeline *timeline, void clutter_timeline_skip (ClutterTimeline *timeline,
guint n_frames); guint msecs);
void clutter_timeline_advance (ClutterTimeline *timeline, void clutter_timeline_advance (ClutterTimeline *timeline,
guint frame_num); guint msecs);
gint clutter_timeline_get_current_frame (ClutterTimeline *timeline); guint clutter_timeline_get_elapsed_time (ClutterTimeline *timeline);
gdouble clutter_timeline_get_progress (ClutterTimeline *timeline); gdouble clutter_timeline_get_progress (ClutterTimeline *timeline);
CoglFixed clutter_timeline_get_progressx (ClutterTimeline *timeline); CoglFixed clutter_timeline_get_progressx (ClutterTimeline *timeline);
void clutter_timeline_set_n_frames (ClutterTimeline *timeline,
guint n_frames);
guint clutter_timeline_get_n_frames (ClutterTimeline *timeline);
gboolean clutter_timeline_is_playing (ClutterTimeline *timeline); gboolean clutter_timeline_is_playing (ClutterTimeline *timeline);
void clutter_timeline_set_delay (ClutterTimeline *timeline, void clutter_timeline_set_delay (ClutterTimeline *timeline,
guint msecs); guint msecs);
guint clutter_timeline_get_delay (ClutterTimeline *timeline); guint clutter_timeline_get_delay (ClutterTimeline *timeline);
guint clutter_timeline_get_delta (ClutterTimeline *timeline, guint clutter_timeline_get_delta (ClutterTimeline *timeline);
guint *msecs);
void clutter_timeline_add_marker_at_frame (ClutterTimeline *timeline,
const gchar *marker_name,
guint frame_num);
void clutter_timeline_add_marker_at_time (ClutterTimeline *timeline, void clutter_timeline_add_marker_at_time (ClutterTimeline *timeline,
const gchar *marker_name, const gchar *marker_name,
guint msecs); guint msecs);
void clutter_timeline_remove_marker (ClutterTimeline *timeline, void clutter_timeline_remove_marker (ClutterTimeline *timeline,
const gchar *marker_name); const gchar *marker_name);
gchar ** clutter_timeline_list_markers (ClutterTimeline *timeline, gchar ** clutter_timeline_list_markers (ClutterTimeline *timeline,
gint frame_num, gint msecs,
gsize *n_markers) G_GNUC_MALLOC; gsize *n_markers) G_GNUC_MALLOC;
gboolean clutter_timeline_has_marker (ClutterTimeline *timeline, gboolean clutter_timeline_has_marker (ClutterTimeline *timeline,
const gchar *marker_name); const gchar *marker_name);

View File

@ -532,18 +532,13 @@ clutter_stage_add
ClutterTimeline ClutterTimeline
ClutterTimelineClass ClutterTimelineClass
clutter_timeline_new clutter_timeline_new
clutter_timeline_new_for_duration
clutter_timeline_clone clutter_timeline_clone
<SUBSECTION> <SUBSECTION>
clutter_timeline_set_speed
clutter_timeline_get_speed
clutter_timeline_set_duration clutter_timeline_set_duration
clutter_timeline_get_duration clutter_timeline_get_duration
clutter_timeline_set_loop clutter_timeline_set_loop
clutter_timeline_get_loop clutter_timeline_get_loop
clutter_timeline_set_n_frames
clutter_timeline_get_n_frames
clutter_timeline_set_delay clutter_timeline_set_delay
clutter_timeline_get_delay clutter_timeline_get_delay
ClutterTimelineDirection ClutterTimelineDirection
@ -557,14 +552,13 @@ clutter_timeline_stop
clutter_timeline_rewind clutter_timeline_rewind
clutter_timeline_skip clutter_timeline_skip
clutter_timeline_advance clutter_timeline_advance
clutter_timeline_get_current_frame clutter_timeline_get_elapsed_time
clutter_timeline_get_delta clutter_timeline_get_delta
clutter_timeline_get_progress clutter_timeline_get_progress
clutter_timeline_get_progressx clutter_timeline_get_progressx
clutter_timeline_is_playing clutter_timeline_is_playing
<SUBSECTION> <SUBSECTION>
clutter_timeline_add_marker_at_frame
clutter_timeline_add_marker_at_time clutter_timeline_add_marker_at_time
clutter_timeline_has_marker clutter_timeline_has_marker
clutter_timeline_list_markers clutter_timeline_list_markers

View File

@ -7,10 +7,8 @@ test_conformance_SOURCES = \
test-conform-common.c \ test-conform-common.c \
test-conform-common.h \ test-conform-common.h \
\ \
test-timeline-dup-frames.c \
test-timeline-interpolate.c \ test-timeline-interpolate.c \
test-timeline-rewind.c \ test-timeline-rewind.c \
test-timeline-smoothness.c \
test-timeline.c \ test-timeline.c \
test-vertex-buffer-contiguous.c \ test-vertex-buffer-contiguous.c \
test-vertex-buffer-interleved.c \ test-vertex-buffer-interleved.c \

View File

@ -85,11 +85,8 @@ main (int argc, char **argv)
shared_state->argv_addr = &argv; shared_state->argv_addr = &argv;
TEST_CONFORM_SIMPLE ("/timeline", test_timeline); TEST_CONFORM_SIMPLE ("/timeline", test_timeline);
TEST_CONFORM_SKIP (!g_test_slow (), "/timeline", test_timeline_dup_frames);
TEST_CONFORM_SKIP (!g_test_slow (), "/timeline", test_timeline_dup_frames);
TEST_CONFORM_SKIP (!g_test_slow (), "/timeline", test_timeline_interpolate); TEST_CONFORM_SKIP (!g_test_slow (), "/timeline", test_timeline_interpolate);
TEST_CONFORM_SKIP (!g_test_slow (), "/timeline", test_timeline_rewind); TEST_CONFORM_SKIP (!g_test_slow (), "/timeline", test_timeline_rewind);
TEST_CONFORM_SKIP (!g_test_slow (), "/timeline", test_timeline_smoothness);
TEST_CONFORM_SIMPLE ("/picking", test_pick); TEST_CONFORM_SIMPLE ("/picking", test_pick);

View File

@ -1,134 +0,0 @@
#include <stdlib.h>
#include <glib.h>
#include <clutter/clutter.h>
#include "test-conform-common.h"
/* We use a nice slow timeline for this test since we
* dont want the timeouts to interpolate the timeline
* forward multiple frames */
#define TEST_TIMELINE_FPS 10
#define TEST_TIMELINE_FRAME_COUNT 20
typedef struct _TestState
{
ClutterTimeline *timeline;
gint prev_frame;
gint completion_count;
gint passed;
guint source_id;
GTimeVal prev_tick;
gulong msecs_delta;
} TestState;
static void
new_frame_cb (ClutterTimeline *timeline,
gint frame_num,
TestState *state)
{
gint current_frame = clutter_timeline_get_current_frame (state->timeline);
if (state->prev_frame
!= clutter_timeline_get_current_frame (state->timeline))
{
g_test_message ("timeline previous frame=%-4i "
"actual frame=%-4i (OK)\n",
state->prev_frame,
current_frame);
}
else
{
g_test_message ("timeline previous frame=%-4i "
"actual frame=%-4i (FAILED)\n",
state->prev_frame,
current_frame);
state->passed = FALSE;
}
state->prev_frame = current_frame;
}
static void
completed_cb (ClutterTimeline *timeline,
TestState *state)
{
state->completion_count++;
if (state->completion_count == 2)
{
if (state->passed)
{
g_test_message ("Passed\n");
clutter_main_quit ();
}
else
{
g_test_message ("Failed\n");
exit (EXIT_FAILURE);
}
}
}
static gboolean
frame_tick (gpointer data)
{
TestState *state = data;
GTimeVal cur_tick = { 0, };
gulong msecs;
g_get_current_time (&cur_tick);
if (state->prev_tick.tv_sec == 0)
state->prev_tick = cur_tick;
msecs = (cur_tick.tv_sec - state->prev_tick.tv_sec) * 1000
+ (cur_tick.tv_usec - state->prev_tick.tv_usec) / 1000;
if (clutter_timeline_is_playing (state->timeline))
clutter_timeline_advance_delta (state->timeline, msecs);
state->msecs_delta = msecs;
state->prev_tick = cur_tick;
return TRUE;
}
void
test_timeline_dup_frames (TestConformSimpleFixture *fixture,
gconstpointer data)
{
TestState state;
state.timeline =
clutter_timeline_new (TEST_TIMELINE_FRAME_COUNT,
TEST_TIMELINE_FPS);
clutter_timeline_set_loop (state.timeline, TRUE);
g_signal_connect (G_OBJECT(state.timeline),
"new-frame",
G_CALLBACK(new_frame_cb),
&state);
g_signal_connect (G_OBJECT(state.timeline),
"completed",
G_CALLBACK(completed_cb),
&state);
state.prev_frame = -1;
state.completion_count = 0;
state.passed = TRUE;
state.prev_tick.tv_sec = 0;
state.prev_tick.tv_usec = 0;
state.msecs_delta = 0;
state.source_id =
clutter_threads_add_frame_source (60, frame_tick, &state);
clutter_timeline_start (state.timeline);
clutter_main();
g_source_remove (state.source_id);
g_object_unref (state.timeline);
}

View File

@ -9,7 +9,7 @@
* will interpolate the number frames that should have * will interpolate the number frames that should have
* passed between timeouts. */ * passed between timeouts. */
#define TEST_TIMELINE_FPS 1000 #define TEST_TIMELINE_FPS 1000
#define TEST_TIMELINE_FRAME_COUNT 5000 #define TEST_TIMELINE_DURATION 5000
/* We are at the mercy of the system scheduler so this /* We are at the mercy of the system scheduler so this
* may not be a very reliable tolerance. */ * may not be a very reliable tolerance. */
@ -42,7 +42,7 @@ new_frame_cb (ClutterTimeline *timeline,
g_get_current_time (&current_time); g_get_current_time (&current_time);
current_frame = clutter_timeline_get_current_frame (state->timeline); current_frame = clutter_timeline_get_elapsed_time (state->timeline);
msec_diff = (current_time.tv_sec - state->start_time.tv_sec) * 1000; msec_diff = (current_time.tv_sec - state->start_time.tv_sec) * 1000;
msec_diff += (current_time.tv_usec - state->start_time.tv_usec)/1000; msec_diff += (current_time.tv_usec - state->start_time.tv_usec)/1000;
@ -50,13 +50,13 @@ new_frame_cb (ClutterTimeline *timeline,
/* If we expect to have interpolated past the end of the timeline /* If we expect to have interpolated past the end of the timeline
* we keep track of the overflow so we can determine when * we keep track of the overflow so we can determine when
* the next timeout will happen. We then clip expected_frames * the next timeout will happen. We then clip expected_frames
* to TEST_TIMELINE_FRAME_COUNT since clutter-timeline * to TEST_TIMELINE_DURATION since clutter-timeline
* semantics guaranty this frame is always signaled before * semantics guaranty this frame is always signaled before
* looping */ * looping */
if (state->expected_frame > TEST_TIMELINE_FRAME_COUNT) if (state->expected_frame > TEST_TIMELINE_DURATION)
{ {
loop_overflow = state->expected_frame - TEST_TIMELINE_FRAME_COUNT; loop_overflow = state->expected_frame - TEST_TIMELINE_DURATION;
state->expected_frame = TEST_TIMELINE_FRAME_COUNT; state->expected_frame = TEST_TIMELINE_DURATION;
} }
if (current_frame >= (state->expected_frame-TEST_ERROR_TOLERANCE) if (current_frame >= (state->expected_frame-TEST_ERROR_TOLERANCE)
@ -99,10 +99,10 @@ new_frame_cb (ClutterTimeline *timeline,
g_usleep (1000000); g_usleep (1000000);
} }
if (current_frame >= TEST_TIMELINE_FRAME_COUNT) if (current_frame >= TEST_TIMELINE_DURATION)
{ {
state->expected_frame += loop_overflow; state->expected_frame += loop_overflow;
state->expected_frame -= TEST_TIMELINE_FRAME_COUNT; state->expected_frame -= TEST_TIMELINE_DURATION;
g_test_message ("End of timeline reached: " g_test_message ("End of timeline reached: "
"Wrapping expected frame too %i\n", "Wrapping expected frame too %i\n",
state->expected_frame); state->expected_frame);
@ -165,8 +165,7 @@ test_timeline_interpolate (TestConformSimpleFixture *fixture,
TestState state; TestState state;
state.timeline = state.timeline =
clutter_timeline_new (TEST_TIMELINE_FRAME_COUNT, clutter_timeline_new (TEST_TIMELINE_DURATION);
TEST_TIMELINE_FPS);
clutter_timeline_set_loop (state.timeline, TRUE); clutter_timeline_set_loop (state.timeline, TRUE);
g_signal_connect (G_OBJECT(state.timeline), g_signal_connect (G_OBJECT(state.timeline),
"new-frame", "new-frame",

View File

@ -4,8 +4,7 @@
#include "test-conform-common.h" #include "test-conform-common.h"
#define TEST_TIMELINE_FPS 10 #define TEST_TIMELINE_DURATION 500
#define TEST_TIMELINE_FRAME_COUNT 5
#define TEST_WATCHDOG_KICK_IN_SECONDS 10 #define TEST_WATCHDOG_KICK_IN_SECONDS 10
typedef struct _TestState typedef struct _TestState
@ -42,9 +41,9 @@ new_frame_cb (ClutterTimeline *timeline,
gint frame_num, gint frame_num,
TestState *state) TestState *state)
{ {
gint current_frame = clutter_timeline_get_current_frame (timeline); gint elapsed_time = clutter_timeline_get_elapsed_time (timeline);
if (current_frame == TEST_TIMELINE_FRAME_COUNT) if (elapsed_time == TEST_TIMELINE_DURATION)
{ {
g_test_message ("new-frame signal recieved (end of timeline)\n"); g_test_message ("new-frame signal recieved (end of timeline)\n");
g_test_message ("Rewinding timeline\n"); g_test_message ("Rewinding timeline\n");
@ -53,7 +52,7 @@ new_frame_cb (ClutterTimeline *timeline,
} }
else else
{ {
if (current_frame == 0) if (elapsed_time == 0)
{ {
g_test_message ("new-frame signal recieved (start of timeline)\n"); g_test_message ("new-frame signal recieved (start of timeline)\n");
} }
@ -101,8 +100,7 @@ test_timeline_rewind (TestConformSimpleFixture *fixture,
TestState state; TestState state;
state.timeline = state.timeline =
clutter_timeline_new (TEST_TIMELINE_FRAME_COUNT, clutter_timeline_new (TEST_TIMELINE_DURATION);
TEST_TIMELINE_FPS);
g_signal_connect (G_OBJECT(state.timeline), g_signal_connect (G_OBJECT(state.timeline),
"new-frame", "new-frame",
G_CALLBACK(new_frame_cb), G_CALLBACK(new_frame_cb),

View File

@ -1,147 +0,0 @@
#include <stdlib.h>
#include <glib.h>
#include <clutter/clutter.h>
#include "test-conform-common.h"
#define TEST_TIMELINE_FPS 10
#define TEST_TIMELINE_FRAME_COUNT 20
#define TEST_ERROR_TOLERANCE 5
typedef struct _TestState
{
ClutterTimeline *timeline;
GTimeVal start_time;
GTimeVal prev_frame_time;
guint frame;
gint completion_count;
gint passed;
guint source_id;
GTimeVal prev_tick;
gulong msecs_delta;
} TestState;
static void
new_frame_cb (ClutterTimeline *timeline,
gint frame_num,
TestState *state)
{
GTimeVal current_time;
glong total_elapsed_ms;
glong frame_elapsed_ms = 0;
gchar *bump = "";
g_get_current_time (&current_time);
total_elapsed_ms = (current_time.tv_sec - state->start_time.tv_sec) * 1000;
total_elapsed_ms += (current_time.tv_usec - state->start_time.tv_usec)/1000;
if (state->frame>0)
{
frame_elapsed_ms =
(current_time.tv_sec - state->prev_frame_time.tv_sec) * 1000;
frame_elapsed_ms +=
(current_time.tv_usec - state->prev_frame_time.tv_usec)/1000;
if (ABS(frame_elapsed_ms - (1000/TEST_TIMELINE_FPS))
> TEST_ERROR_TOLERANCE)
{
state->passed = FALSE;
bump = " (BUMP)";
}
}
g_test_message ("timeline frame=%-2d total elapsed=%-4li(ms) "
"since last frame=%-4li(ms)%s\n",
clutter_timeline_get_current_frame(state->timeline),
total_elapsed_ms,
frame_elapsed_ms,
bump);
state->prev_frame_time = current_time;
state->frame++;
}
static void
completed_cb (ClutterTimeline *timeline,
TestState *state)
{
state->completion_count++;
if (state->completion_count == 2)
{
if (state->passed)
{
g_test_message ("Passed\n");
clutter_main_quit ();
}
else
{
g_test_message ("Failed\n");
exit (EXIT_FAILURE);
}
}
}
static gboolean
frame_tick (gpointer data)
{
TestState *state = data;
GTimeVal cur_tick = { 0, };
gulong msecs;
g_get_current_time (&cur_tick);
if (state->prev_tick.tv_sec == 0)
state->prev_tick = cur_tick;
msecs = (cur_tick.tv_sec - state->prev_tick.tv_sec) * 1000
+ (cur_tick.tv_usec - state->prev_tick.tv_usec) / 1000;
if (clutter_timeline_is_playing (state->timeline))
clutter_timeline_advance_delta (state->timeline, msecs);
state->msecs_delta = msecs;
state->prev_tick = cur_tick;
return TRUE;
}
void
test_timeline_smoothness (TestConformSimpleFixture *fixture,
gconstpointer data)
{
TestState state;
state.timeline =
clutter_timeline_new (TEST_TIMELINE_FRAME_COUNT,
TEST_TIMELINE_FPS);
clutter_timeline_set_loop (state.timeline, TRUE);
g_signal_connect (G_OBJECT(state.timeline),
"new-frame",
G_CALLBACK(new_frame_cb),
&state);
g_signal_connect (G_OBJECT(state.timeline),
"completed",
G_CALLBACK(completed_cb),
&state);
state.frame = 0;
state.completion_count = 0;
state.passed = TRUE;
state.prev_tick.tv_sec = 0;
state.prev_tick.tv_usec = 0;
state.msecs_delta = 0;
state.source_id =
clutter_threads_add_frame_source (60, frame_tick, &state);
g_get_current_time (&state.start_time);
clutter_timeline_start (state.timeline);
clutter_main();
g_source_remove (state.source_id);
g_object_unref (state.timeline);
}

View File

@ -15,6 +15,7 @@
for. */ for. */
#define FRAME_COUNT 10 #define FRAME_COUNT 10
#define FPS 30
typedef struct _TimelineData TimelineData; typedef struct _TimelineData TimelineData;
@ -53,13 +54,21 @@ timeline_complete_cb (ClutterTimeline *timeline,
static void static void
timeline_new_frame_cb (ClutterTimeline *timeline, timeline_new_frame_cb (ClutterTimeline *timeline,
gint frame_no, gint msec,
TimelineData *data) TimelineData *data)
{ {
/* Calculate an approximate frame number from the duration with
rounding */
int frame_no = ((msec * FRAME_COUNT + (FRAME_COUNT * 1000 / FPS) / 2)
/ (FRAME_COUNT * 1000 / FPS));
if (g_test_verbose ()) if (g_test_verbose ())
g_print ("%i: Doing frame %d, delta = %i\n", g_print ("%i: Doing frame %d, delta = %i\n",
data->timeline_num, frame_no, data->timeline_num, frame_no,
clutter_timeline_get_delta (timeline, NULL)); clutter_timeline_get_delta (timeline));
g_assert (frame_no >= 0 && frame_no <= FRAME_COUNT);
data->frame_hit_count[frame_no]++; data->frame_hit_count[frame_no]++;
} }
@ -72,7 +81,7 @@ timeline_marker_reached_cb (ClutterTimeline *timeline,
if (g_test_verbose ()) if (g_test_verbose ())
g_print ("%i: Marker '%s' (%d) reached, delta = %i\n", g_print ("%i: Marker '%s' (%d) reached, delta = %i\n",
data->timeline_num, marker_name, frame_num, data->timeline_num, marker_name, frame_num,
clutter_timeline_get_delta (timeline, NULL)); clutter_timeline_get_delta (timeline));
data->markers_hit = g_slist_prepend (data->markers_hit, data->markers_hit = g_slist_prepend (data->markers_hit,
g_strdup (marker_name)); g_strdup (marker_name));
} }
@ -128,7 +137,7 @@ check_timeline (ClutterTimeline *timeline,
if (check_missed_frames) if (check_missed_frames)
{ {
for (i = 0; i < FRAME_COUNT; i++) for (i = 0; i < FRAME_COUNT; i++)
if (data->frame_hit_count[i + frame_offset] != 1) if (data->frame_hit_count[i + frame_offset] < 1)
missed_frame_count++; missed_frame_count++;
if (missed_frame_count) if (missed_frame_count)
@ -230,16 +239,19 @@ test_timeline (TestConformSimpleFixture *fixture,
counter = g_new0 (FrameCounter, 1); counter = g_new0 (FrameCounter, 1);
source_id = clutter_threads_add_frame_source (60, frame_tick, counter); source_id = clutter_threads_add_frame_source (FPS, frame_tick, counter);
timeline_data_init (&data_1, 1); timeline_data_init (&data_1, 1);
timeline_1 = clutter_timeline_new (FRAME_COUNT, 30); timeline_1 = clutter_timeline_new (FRAME_COUNT * 1000 / FPS);
clutter_timeline_add_marker_at_frame (timeline_1, "foo", 5); clutter_timeline_add_marker_at_time (timeline_1, "foo", 5 * 1000 / FPS);
clutter_timeline_add_marker_at_frame (timeline_1, "bar", 5); clutter_timeline_add_marker_at_time (timeline_1, "bar", 5 * 1000 / FPS);
clutter_timeline_add_marker_at_frame (timeline_1, "baz", 5); clutter_timeline_add_marker_at_time (timeline_1, "baz", 5 * 1000 / FPS);
clutter_timeline_add_marker_at_frame (timeline_1, "near-end-marker", 9); clutter_timeline_add_marker_at_time (timeline_1, "near-end-marker",
clutter_timeline_add_marker_at_frame (timeline_1, "end-marker", 10); 9 * 1000 / FPS);
markers = clutter_timeline_list_markers (timeline_1, 5, &n_markers); clutter_timeline_add_marker_at_time (timeline_1, "end-marker",
10 * 1000 / FPS);
markers = clutter_timeline_list_markers (timeline_1, 5 * 1000 / FPS,
&n_markers);
g_assert (markers != NULL); g_assert (markers != NULL);
g_assert (n_markers == 3); g_assert (n_markers == 3);
g_strfreev (markers); g_strfreev (markers);
@ -248,7 +260,7 @@ test_timeline (TestConformSimpleFixture *fixture,
timeline_data_init (&data_2, 2); timeline_data_init (&data_2, 2);
timeline_2 = clutter_timeline_clone (timeline_1); timeline_2 = clutter_timeline_clone (timeline_1);
clutter_timeline_add_marker_at_frame (timeline_2, "bar", 2); clutter_timeline_add_marker_at_time (timeline_2, "bar", 2 * 1000 / FPS);
markers = clutter_timeline_list_markers (timeline_2, -1, &n_markers); markers = clutter_timeline_list_markers (timeline_2, -1, &n_markers);
g_assert (markers != NULL); g_assert (markers != NULL);
g_assert (n_markers == 1); g_assert (n_markers == 1);
@ -260,10 +272,12 @@ test_timeline (TestConformSimpleFixture *fixture,
timeline_data_init (&data_3, 3); timeline_data_init (&data_3, 3);
timeline_3 = clutter_timeline_clone (timeline_1); timeline_3 = clutter_timeline_clone (timeline_1);
clutter_timeline_set_direction (timeline_3, CLUTTER_TIMELINE_BACKWARD); clutter_timeline_set_direction (timeline_3, CLUTTER_TIMELINE_BACKWARD);
clutter_timeline_add_marker_at_frame (timeline_3, "foo", 5); clutter_timeline_add_marker_at_time (timeline_3, "foo", 5 * 1000 / FPS);
clutter_timeline_add_marker_at_frame (timeline_3, "baz", 8); clutter_timeline_add_marker_at_time (timeline_3, "baz", 8 * 1000 / FPS);
clutter_timeline_add_marker_at_frame (timeline_3, "near-end-marker", 1); clutter_timeline_add_marker_at_time (timeline_3, "near-end-marker",
clutter_timeline_add_marker_at_frame (timeline_3, "end-marker", 0); 1 * 1000 / FPS);
clutter_timeline_add_marker_at_time (timeline_3, "end-marker",
0 * 1000 / FPS);
counter->timelines = g_slist_prepend (counter->timelines, timeline_3); counter->timelines = g_slist_prepend (counter->timelines, timeline_3);

View File

@ -105,12 +105,13 @@ frame_cb (ClutterTimeline *timeline,
{ {
SuperOH *oh = data; SuperOH *oh = data;
gint i; gint i;
float rotation = clutter_timeline_get_progress (timeline) * 360.0f;
/* Rotate everything clockwise about stage center*/ /* Rotate everything clockwise about stage center*/
clutter_actor_set_rotation (oh->group, clutter_actor_set_rotation (oh->group,
CLUTTER_Z_AXIS, CLUTTER_Z_AXIS,
frame_num, rotation,
oh->stage_width / 2, oh->stage_width / 2,
oh->stage_height / 2, oh->stage_height / 2,
0); 0);
@ -126,7 +127,7 @@ frame_cb (ClutterTimeline *timeline,
*/ */
clutter_actor_set_rotation (oh->hand[i], clutter_actor_set_rotation (oh->hand[i],
CLUTTER_Z_AXIS, CLUTTER_Z_AXIS,
-6.0 * frame_num, -6.0 * rotation,
0, 0, 0); 0, 0, 0);
} }
} }
@ -178,7 +179,7 @@ test_actor_clone_main (int argc, char *argv[])
oh = g_new (SuperOH, 1); oh = g_new (SuperOH, 1);
/* Create a timeline to manage animation */ /* Create a timeline to manage animation */
oh->timeline = clutter_timeline_new (360, 60); oh->timeline = clutter_timeline_new (6000);
clutter_timeline_set_loop (oh->timeline, TRUE); clutter_timeline_set_loop (oh->timeline, TRUE);
/* fire a callback for frame change */ /* fire a callback for frame change */

View File

@ -98,17 +98,18 @@ input_cb (ClutterActor *stage,
/* Timeline handler */ /* Timeline handler */
static void static void
frame_cb (ClutterTimeline *timeline, frame_cb (ClutterTimeline *timeline,
gint frame_num, gint msecs,
gpointer data) gpointer data)
{ {
SuperOH *oh = data; SuperOH *oh = data;
gint i; gint i;
float rotation = clutter_timeline_get_progress (timeline) * 360.0f;
/* Rotate everything clockwise about stage center*/ /* Rotate everything clockwise about stage center*/
clutter_actor_set_rotation (oh->group, clutter_actor_set_rotation (oh->group,
CLUTTER_Z_AXIS, CLUTTER_Z_AXIS,
frame_num, rotation,
oh->stage_width / 2, oh->stage_width / 2,
oh->stage_height / 2, oh->stage_height / 2,
0); 0);
@ -120,7 +121,7 @@ frame_cb (ClutterTimeline *timeline,
*/ */
clutter_actor_set_rotation (oh->hand[i], clutter_actor_set_rotation (oh->hand[i],
CLUTTER_Z_AXIS, CLUTTER_Z_AXIS,
-6.0 * frame_num, -6.0 * rotation,
0, 0, 0); 0, 0, 0);
} }
} }
@ -172,7 +173,7 @@ test_actors_main (int argc, char *argv[])
oh->stage = stage; oh->stage = stage;
/* Create a timeline to manage animation */ /* Create a timeline to manage animation */
oh->timeline = clutter_timeline_new (360, 60); oh->timeline = clutter_timeline_new (6000);
clutter_timeline_set_loop (oh->timeline, TRUE); clutter_timeline_set_loop (oh->timeline, TRUE);
/* fire a callback for frame change */ /* fire a callback for frame change */

View File

@ -164,7 +164,7 @@ test_behave_main (int argc, char *argv[])
clutter_container_add (CLUTTER_CONTAINER (group), rect, hand, NULL); clutter_container_add (CLUTTER_CONTAINER (group), rect, hand, NULL);
/* Make a timeline */ /* Make a timeline */
timeline = clutter_timeline_new_for_duration (4000); /* num frames, fps */ timeline = clutter_timeline_new (4000); /* num frames, fps */
clutter_timeline_set_loop (timeline, TRUE); clutter_timeline_set_loop (timeline, TRUE);
g_signal_connect (timeline, g_signal_connect (timeline,
"completed", G_CALLBACK (timeline_completed), "completed", G_CALLBACK (timeline_completed),

View File

@ -9,8 +9,6 @@
#include <clutter/clutter.h> #include <clutter/clutter.h>
#include <cogl/cogl.h> #include <cogl/cogl.h>
#define TIMELINE_FRAME_COUNT 200
typedef struct _TestMultiLayerMaterialState typedef struct _TestMultiLayerMaterialState
{ {
ClutterActor *group; ClutterActor *group;
@ -45,9 +43,7 @@ material_rectangle_paint (ClutterActor *actor, gpointer data)
TestMultiLayerMaterialState *state = data; TestMultiLayerMaterialState *state = data;
cogl_set_source (state->material); cogl_set_source (state->material);
cogl_rectangle_with_multitexture_coords (0, 0, cogl_rectangle_with_multitexture_coords (0, 0, 200, 200,
TIMELINE_FRAME_COUNT,
TIMELINE_FRAME_COUNT,
state->tex_coords, state->tex_coords,
12); 12);
} }
@ -119,7 +115,7 @@ test_cogl_multitexture_main (int argc, char *argv[])
clutter_container_add_actor (CLUTTER_CONTAINER(stage), clutter_container_add_actor (CLUTTER_CONTAINER(stage),
state->group); state->group);
timeline = clutter_timeline_new (TIMELINE_FRAME_COUNT, 26 /* fps */); timeline = clutter_timeline_new (7692);
clutter_timeline_set_loop (timeline, TRUE); clutter_timeline_set_loop (timeline, TRUE);
g_signal_connect (timeline, "new-frame", G_CALLBACK (frame_cb), state); g_signal_connect (timeline, "new-frame", G_CALLBACK (frame_cb), state);

View File

@ -81,8 +81,8 @@ static PaintFunc paint_func []=
static void static void
paint_cb (ClutterActor *self, ClutterTimeline *tl) paint_cb (ClutterActor *self, ClutterTimeline *tl)
{ {
gint paint_index = (clutter_timeline_get_current_frame (tl) gint paint_index = (clutter_timeline_get_progress (tl)
% G_N_ELEMENTS (paint_func)); * G_N_ELEMENTS (paint_func));
cogl_push_matrix (); cogl_push_matrix ();
@ -108,8 +108,7 @@ test_cogl_primitives_main (int argc, char *argv[])
clutter_init(&argc, &argv); clutter_init(&argc, &argv);
/* One frame for each paint function at one frame per second */ tl = clutter_timeline_new (G_N_ELEMENTS (paint_func) * 1000);
tl = clutter_timeline_new (G_N_ELEMENTS (paint_func), 1);
clutter_timeline_set_loop (tl, TRUE); clutter_timeline_set_loop (tl, TRUE);
clutter_timeline_start (tl); clutter_timeline_start (tl);

View File

@ -375,7 +375,7 @@ test_cogl_tex_polygon_main (int argc, char *argv[])
clutter_container_add_actor (CLUTTER_CONTAINER (stage), coglbox); clutter_container_add_actor (CLUTTER_CONTAINER (stage), coglbox);
/* Timeline for animation */ /* Timeline for animation */
timeline = clutter_timeline_new (360, 60); /* num frames, fps */ timeline = clutter_timeline_new (6000);
clutter_timeline_set_loop (timeline, TRUE); clutter_timeline_set_loop (timeline, TRUE);
g_signal_connect (timeline, "new-frame", G_CALLBACK (frame_cb), coglbox); g_signal_connect (timeline, "new-frame", G_CALLBACK (frame_cb), coglbox);
clutter_timeline_start (timeline); clutter_timeline_start (timeline);

View File

@ -198,7 +198,7 @@ test_cogl_tex_tile_main (int argc, char *argv[])
clutter_container_add_actor (CLUTTER_CONTAINER (stage), coglbox); clutter_container_add_actor (CLUTTER_CONTAINER (stage), coglbox);
/* Timeline for animation */ /* Timeline for animation */
timeline = clutter_timeline_new (360, 60); /* num frames, fps */ timeline = clutter_timeline_new (6000); /* num frames, fps */
clutter_timeline_set_loop (timeline, TRUE); clutter_timeline_set_loop (timeline, TRUE);
g_signal_connect (timeline, "new-frame", G_CALLBACK (frame_cb), coglbox); g_signal_connect (timeline, "new-frame", G_CALLBACK (frame_cb), coglbox);
clutter_timeline_start (timeline); clutter_timeline_start (timeline);

View File

@ -59,8 +59,7 @@ frame_cb (ClutterTimeline *timeline,
TestState *state) TestState *state)
{ {
guint x, y; guint x, y;
guint n_frames = clutter_timeline_get_n_frames (timeline); float period_progress = clutter_timeline_get_progress (timeline);
float period_progress = ((float)frame_num / (float)n_frames) * 2.0 * G_PI;
float period_progress_sin = sinf (period_progress); float period_progress_sin = sinf (period_progress);
float wave_shift = period_progress * WAVE_SPEED; float wave_shift = period_progress * WAVE_SPEED;
float ripple_shift = period_progress * RIPPLE_SPEED; float ripple_shift = period_progress * RIPPLE_SPEED;
@ -354,7 +353,7 @@ test_cogl_vertex_buffer_main (int argc, char *argv[])
(stage_geom.width / 2.0) - (dummy_width / 2.0), (stage_geom.width / 2.0) - (dummy_width / 2.0),
(stage_geom.height / 2.0) - (dummy_height / 2.0)); (stage_geom.height / 2.0) - (dummy_height / 2.0));
state.timeline = clutter_timeline_new (360, 60); state.timeline = clutter_timeline_new (6000);
clutter_timeline_set_loop (state.timeline, TRUE); clutter_timeline_set_loop (state.timeline, TRUE);
g_signal_connect (state.timeline, g_signal_connect (state.timeline,
"new-frame", "new-frame",

View File

@ -157,7 +157,7 @@ test_depth_main (int argc, char *argv[])
clutter_container_add_actor (CLUTTER_CONTAINER (stage), label); clutter_container_add_actor (CLUTTER_CONTAINER (stage), label);
/* 3 seconds, at 60 fps */ /* 3 seconds, at 60 fps */
timeline = clutter_timeline_new (180, 60); timeline = clutter_timeline_new (3000);
g_signal_connect (timeline, g_signal_connect (timeline,
"completed", G_CALLBACK (timeline_completed), "completed", G_CALLBACK (timeline_completed),
NULL); NULL);

View File

@ -755,7 +755,7 @@ test_layout_main (int argc, char *argv[])
clutter_color_from_string (&bg_color, "Red"); clutter_color_from_string (&bg_color, "Red");
main_timeline = clutter_timeline_new_for_duration (2000); main_timeline = clutter_timeline_new (2000);
clutter_timeline_set_loop (main_timeline, TRUE); clutter_timeline_set_loop (main_timeline, TRUE);
g_signal_connect (main_timeline, "new-frame", g_signal_connect (main_timeline, "new-frame",
G_CALLBACK (relayout_on_frame), G_CALLBACK (relayout_on_frame),

View File

@ -72,7 +72,7 @@ on_button_press (ClutterActor *actor,
win_title = g_strdup_printf ("Stage:%p", new_stage); win_title = g_strdup_printf ("Stage:%p", new_stage);
clutter_stage_set_title (CLUTTER_STAGE(new_stage), win_title); clutter_stage_set_title (CLUTTER_STAGE(new_stage), win_title);
timeline = clutter_timeline_new_for_duration (2000); timeline = clutter_timeline_new (2000);
clutter_timeline_set_loop (timeline, TRUE); clutter_timeline_set_loop (timeline, TRUE);
alpha = clutter_alpha_new_full (timeline, CLUTTER_LINEAR); alpha = clutter_alpha_new_full (timeline, CLUTTER_LINEAR);

View File

@ -88,17 +88,18 @@ input_cb (ClutterStage *stage,
/* Timeline handler */ /* Timeline handler */
static void static void
frame_cb (ClutterTimeline *timeline, frame_cb (ClutterTimeline *timeline,
gint frame_num, gint msecs,
gpointer data) gpointer data)
{ {
SuperOH *oh = (SuperOH *)data; SuperOH *oh = (SuperOH *)data;
gint i; gint i;
float rotation = clutter_timeline_get_progress (timeline) * 360.0f;
/* Rotate everything clockwise about stage center*/ /* Rotate everything clockwise about stage center*/
clutter_actor_set_rotation (CLUTTER_ACTOR (oh->group), clutter_actor_set_rotation (CLUTTER_ACTOR (oh->group),
CLUTTER_Z_AXIS, CLUTTER_Z_AXIS,
frame_num, rotation,
CLUTTER_STAGE_WIDTH () / 2, CLUTTER_STAGE_WIDTH () / 2,
CLUTTER_STAGE_HEIGHT () / 2, CLUTTER_STAGE_HEIGHT () / 2,
0); 0);
@ -116,7 +117,7 @@ frame_cb (ClutterTimeline *timeline,
* unit based functions to fix. * unit based functions to fix.
*/ */
clutter_actor_set_rotation (oh->hand[i], CLUTTER_Z_AXIS, clutter_actor_set_rotation (oh->hand[i], CLUTTER_Z_AXIS,
- 6.0 * frame_num, 0, 0, 0); - 6.0 * rotation, 0, 0, 0);
} }
} }
@ -208,7 +209,7 @@ test_paint_wrapper_main (int argc, char *argv[])
oh = g_new(SuperOH, 1); oh = g_new(SuperOH, 1);
/* Create a timeline to manage animation */ /* Create a timeline to manage animation */
timeline = clutter_timeline_new (360, 60); /* num frames, fps */ timeline = clutter_timeline_new (6000);
clutter_timeline_set_loop (timeline, TRUE); clutter_timeline_set_loop (timeline, TRUE);
/* fire a callback for frame change */ /* fire a callback for frame change */

View File

@ -233,7 +233,7 @@ test_pixmap_main (int argc, char **argv)
clutter_actor_set_position (stage, 0, 150); clutter_actor_set_position (stage, 0, 150);
clutter_stage_set_color (CLUTTER_STAGE (stage), &gry); clutter_stage_set_color (CLUTTER_STAGE (stage), &gry);
timeline = clutter_timeline_new (60*5, 60); timeline = clutter_timeline_new (5000);
g_signal_connect (timeline, g_signal_connect (timeline,
"completed", G_CALLBACK (timeline_completed), "completed", G_CALLBACK (timeline_completed),
NULL); NULL);

View File

@ -44,7 +44,7 @@ test_rotate_main (int argc, char *argv[])
clutter_container_add_actor (CLUTTER_CONTAINER (stage), label); clutter_container_add_actor (CLUTTER_CONTAINER (stage), label);
/* Make a timeline */ /* Make a timeline */
timeline = clutter_timeline_new (200, 26); /* num frames, fps */ timeline = clutter_timeline_new (7692); /* num frames, fps */
clutter_timeline_set_loop (timeline, TRUE); clutter_timeline_set_loop (timeline, TRUE);
/* Set an alpha func to power behaviour */ /* Set an alpha func to power behaviour */

View File

@ -86,7 +86,7 @@ test_scale_main (int argc, char *argv[])
clutter_group_add (CLUTTER_GROUP (stage), rect); clutter_group_add (CLUTTER_GROUP (stage), rect);
timeline = clutter_timeline_new_for_duration (750); timeline = clutter_timeline_new (750);
alpha = clutter_alpha_new_with_func (timeline, alpha = clutter_alpha_new_with_func (timeline,
my_ramp_func, my_ramp_func,
NULL, NULL); NULL, NULL);

View File

@ -61,28 +61,28 @@ test_score_main (int argc, char **argv)
clutter_init (&argc, &argv); clutter_init (&argc, &argv);
timeline_1 = clutter_timeline_new_for_duration (1000); timeline_1 = clutter_timeline_new (1000);
g_object_set_data_full (G_OBJECT (timeline_1), g_object_set_data_full (G_OBJECT (timeline_1),
"timeline-name", g_strdup ("Timeline 1"), "timeline-name", g_strdup ("Timeline 1"),
g_free); g_free);
timeline_2 = clutter_timeline_new_for_duration (1000); timeline_2 = clutter_timeline_new (1000);
clutter_timeline_add_marker_at_time (timeline_2, "foo", 500); clutter_timeline_add_marker_at_time (timeline_2, "foo", 500);
g_object_set_data_full (G_OBJECT (timeline_2), g_object_set_data_full (G_OBJECT (timeline_2),
"timeline-name", g_strdup ("Timeline 2"), "timeline-name", g_strdup ("Timeline 2"),
g_free); g_free);
timeline_3 = clutter_timeline_new_for_duration (1000); timeline_3 = clutter_timeline_new (1000);
g_object_set_data_full (G_OBJECT (timeline_3), g_object_set_data_full (G_OBJECT (timeline_3),
"timeline-name", g_strdup ("Timeline 3"), "timeline-name", g_strdup ("Timeline 3"),
g_free); g_free);
timeline_4 = clutter_timeline_new_for_duration (1000); timeline_4 = clutter_timeline_new (1000);
g_object_set_data_full (G_OBJECT (timeline_4), g_object_set_data_full (G_OBJECT (timeline_4),
"timeline-name", g_strdup ("Timeline 4"), "timeline-name", g_strdup ("Timeline 4"),
g_free); g_free);
timeline_5 = clutter_timeline_new_for_duration (1000); timeline_5 = clutter_timeline_new (1000);
g_object_set_data_full (G_OBJECT (timeline_5), g_object_set_data_full (G_OBJECT (timeline_5),
"timeline-name", g_strdup ("Timeline 5"), "timeline-name", g_strdup ("Timeline 5"),
g_free); g_free);

View File

@ -61,7 +61,7 @@ static gboolean task (gpointer foo)
for (i=0; i<3; i++) for (i=0; i<3; i++)
{ {
timeline = clutter_timeline_new (60*5, 60); timeline = clutter_timeline_new (5000);
alpha = clutter_alpha_new_full (timeline, CLUTTER_LINEAR); alpha = clutter_alpha_new_full (timeline, CLUTTER_LINEAR);
depth_behavior = clutter_behaviour_depth_new (alpha, -2500, 0); depth_behavior = clutter_behaviour_depth_new (alpha, -2500, 0);
clutter_behaviour_apply (depth_behavior, image[i]); clutter_behaviour_apply (depth_behavior, image[i]);

View File

@ -77,7 +77,7 @@ test_texture_quality_main (int argc, char *argv[])
(clutter_actor_get_height (stage) - clutter_actor_get_height (image))/2); (clutter_actor_get_height (stage) - clutter_actor_get_height (image))/2);
clutter_container_add (CLUTTER_CONTAINER (stage), image, NULL); clutter_container_add (CLUTTER_CONTAINER (stage), image, NULL);
timeline = clutter_timeline_new (60*5, 60); timeline = clutter_timeline_new (5000);
g_signal_connect (timeline, g_signal_connect (timeline,
"completed", G_CALLBACK (timeline_completed), "completed", G_CALLBACK (timeline_completed),
NULL); NULL);

View File

@ -211,7 +211,7 @@ test_threads_main (int argc, char *argv[])
rect, progress_rect, rect, progress_rect,
NULL); NULL);
timeline = clutter_timeline_new (150, 50); timeline = clutter_timeline_new (3000);
clutter_timeline_set_loop (timeline, TRUE); clutter_timeline_set_loop (timeline, TRUE);
alpha = clutter_alpha_new_full (timeline, CLUTTER_LINEAR); alpha = clutter_alpha_new_full (timeline, CLUTTER_LINEAR);

View File

@ -36,7 +36,7 @@ test_viewport_main (int argc, char *argv[])
clutter_container_add_actor (CLUTTER_CONTAINER (stage), hand); clutter_container_add_actor (CLUTTER_CONTAINER (stage), hand);
/* Make a timeline */ /* Make a timeline */
timeline = clutter_timeline_new (200, 26); /* num frames, fps */ timeline = clutter_timeline_new (7692);
clutter_timeline_set_loop (timeline, TRUE); clutter_timeline_set_loop (timeline, TRUE);
/* Set an alpha func to power behaviour */ /* Set an alpha func to power behaviour */