double ease_out_in_quad(double t, double b, double c, double d, const std::vector<double>& params) { if (t < d / 2) return ease_out_quad(t * 2, b, c / 2, d, params); return ease_in_quad(t * 2 - d, b + c / 2, c / 2, d, params); }
static void gtk_revealer_animate_step (GtkRevealer *revealer, gint64 now) { GtkRevealerPrivate *priv = gtk_revealer_get_instance_private (revealer); gdouble t; t = 1.0; if (now < priv->end_time) t = (now - priv->start_time) / (gdouble) (priv->end_time - priv->start_time); t = ease_out_quad (t, 1.0); gtk_revealer_set_position (revealer, priv->source_pos + (t * (priv->target_pos - priv->source_pos))); }