/** * clutter_timeline_rewind: * @timeline: A #ClutterTimeline * * Rewinds #ClutterTimeline to the first frame if its direction is * %CLUTTER_TIMELINE_FORWARD and the last frame if it is * %CLUTTER_TIMELINE_BACKWARD. */ void clutter_timeline_rewind (ClutterTimeline *timeline) { ClutterTimelinePrivate *priv; g_return_if_fail (CLUTTER_IS_TIMELINE (timeline)); priv = timeline->priv; if (priv->direction == CLUTTER_TIMELINE_FORWARD) clutter_timeline_advance (timeline, 0); else if (priv->direction == CLUTTER_TIMELINE_BACKWARD) clutter_timeline_advance (timeline, priv->duration); }
void mx_toggle_set_active (MxToggle *toggle, gboolean active) { MxTogglePrivate *priv; g_return_if_fail (MX_IS_TOGGLE (toggle)); priv = toggle->priv; if (priv->active != active || (priv->position > 0 && priv->position < 1)) { ClutterTimeline *timeline; priv->active = active; if (active) mx_stylable_set_style_pseudo_class (MX_STYLABLE (toggle), "checked"); else mx_stylable_set_style_pseudo_class (MX_STYLABLE (toggle), NULL); g_object_notify (G_OBJECT (toggle), "active"); /* don't run an animation if the actor is not mapped */ if (!CLUTTER_ACTOR_IS_MAPPED (CLUTTER_ACTOR (toggle))) { priv->position = (active) ? 1 : 0; return; } timeline = clutter_alpha_get_timeline (priv->alpha); if (active) clutter_timeline_set_direction (timeline, CLUTTER_TIMELINE_FORWARD); else clutter_timeline_set_direction (timeline, CLUTTER_TIMELINE_BACKWARD); if (clutter_timeline_is_playing (timeline)) return; clutter_timeline_rewind (timeline); if (priv->drag_offset > -1) { clutter_alpha_set_mode (priv->alpha, CLUTTER_LINEAR); clutter_timeline_advance (timeline, priv->position * 300); } else { clutter_alpha_set_mode (priv->alpha, CLUTTER_EASE_IN_OUT_CUBIC); } clutter_timeline_start (timeline); } }
void mex_tile_set_important (MexTile *tile, gboolean important) { MexTilePrivate *priv; g_return_if_fail (MEX_IS_TILE (tile)); priv = tile->priv; if (priv->important != important) { priv->important = important; g_object_notify (G_OBJECT (tile), "important"); mx_stylable_set_style_class (MX_STYLABLE (tile), important ? "Important" : NULL); if (clutter_timeline_is_playing (priv->timeline)) clutter_timeline_set_direction (priv->timeline, important ? CLUTTER_TIMELINE_FORWARD : CLUTTER_TIMELINE_BACKWARD); else { if (CLUTTER_ACTOR_IS_MAPPED (tile)) { clutter_timeline_rewind (priv->timeline); clutter_timeline_start (priv->timeline); } else { clutter_timeline_advance (priv->timeline, DURATION); mex_tile_important_new_frame_cb (priv->timeline, 0, tile); mex_tile_timeline_completed_cb (priv->timeline, tile); } } } }