1# llimphi-motion
2
3*Read this in English: [README.md](README.md).*
4
5Animaciones simples sobre el bucle Elm de Llimphi.
6
7Llimphi es Elm puro: `update(msg) -> model`. Para animar un valor en
8el tiempo (un alpha que sube de 0 a 1, una posición que se desliza)
9la app guarda un `Tween` en su modelo y pide al `Handle` que le
10dispatchee un `Msg::Tick` periódicamente (cada ~16 ms) hasta que la
11animación termine. Cada `update` lee `tween.value()` y la `view` la
12pinta.
13
14Esta crate es deliberadamente chiquita:
15- `Lerp` — interpolación lineal genérica (impls para `f32`,
16 `(f32, f32)` y `Color`).
17- `Tween` — interpolación temporizada con easing entre dos valores.
18- `animate` — helper que arranca un loop de ticks autosuficiente
19 sobre un `Handle`.
20
21Las duraciones y easings canónicos viven en `llimphi_theme::motion`.
22
23## Patrón típico
24```ignore
25use llimphi_motion::{Tween, animate};
26use llimphi_theme::motion;
27
28enum Msg { ToastShow, Tick, ToastHidden }
29struct Model { toast_alpha: Tween<f32> }
30
31// update:
32Msg::ToastShow => {
33 model.toast_alpha = Tween::new(0.0, 1.0, motion::NORMAL, motion::ease_out_cubic);
34 animate(handle, motion::NORMAL, || Msg::Tick);
35 model
36}
37Msg::Tick => {
38 // El loop interno terminará solo cuando el tween esté done;
39 // la `view` ya lee el alpha actual sin más.
40 model
41}
42
43// view:
44toast_view().alpha(model.toast_alpha.value())
45```
46
47---
48
49Parte de **llimphi** — ver [llimphi](../LEEME.md).
LEEME.md
llimphi-motion
Read this in English: README.md.
Animaciones simples sobre el bucle Elm de Llimphi.
Llimphi es Elm puro: update(msg) -> model. Para animar un valor en
el tiempo (un alpha que sube de 0 a 1, una posición que se desliza)
la app guarda un Tween en su modelo y pide al Handle que le
dispatchee un Msg::Tick periódicamente (cada ~16 ms) hasta que la
animación termine. Cada update lee tween.value() y la view la
pinta.
Esta crate es deliberadamente chiquita:
Lerp — interpolación lineal genérica (impls para f32,
(f32, f32) y Color).
Tween — interpolación temporizada con easing entre dos valores.
animate — helper que arranca un loop de ticks autosuficiente
sobre un Handle.
Las duraciones y easings canónicos viven en llimphi_theme::motion.
Patrón típico
use llimphi_motion::{Tween, animate};
use llimphi_theme::motion;
enum Msg { ToastShow, Tick, ToastHidden }
struct Model { toast_alpha: Tween<f32> }
// update:
Msg::ToastShow => {
model.toast_alpha = Tween::new(0.0, 1.0, motion::NORMAL, motion::ease_out_cubic);
animate(handle, motion::NORMAL, || Msg::Tick);
model
}
Msg::Tick => {
// El loop interno terminará solo cuando el tween esté done;
// la `view` ya lee el alpha actual sin más.
model
}
// view:
toast_view().alpha(model.toast_alpha.value())
Parte de llimphi — ver llimphi.