Skip to main content

ScaleFn

Type Alias ScaleFn 

Source
pub type ScaleFn<Msg> = Arc<dyn Fn(GesturePhase, f32, f32, f32) -> Option<Msg> + Send + Sync>;
Expand description

Handler de gesto de escala (pinch-to-zoom). Recibe (phase, factor, focal_x, focal_y):

  • factor: cambio de escala incremental y multiplicativo desde el evento anterior — 1.0 = sin cambio, >1.0 agranda (zoom in), <1.0 achica (zoom out). El caller acumula con mi_zoom *= factor y, si quiere, lo clampa a su rango. En Begin/End el factor es 1.0.
  • focal_x/focal_y: punto focal del gesto relativo a la esquina superior-izquierda del rect del nodo (mismo espacio que los handlers *_at). Es el punto que debe quedar fijo bajo el cursor al hacer zoom — el caller lo usa para zoomear “hacia el cursor” en vez de hacia el centro. En Ctrl+rueda es la posición del cursor; en trackpad, idem.

Devolver Some(Msg) dispara una transición; None ignora el evento. El runtime lo resuelve con hit_test_scale: el nodo más al frente bajo el cursor que declare un on_scale consume el gesto. Es la base del zoom de los canvases (pineal/cosmos/nakui).

Aliased Type§

pub struct ScaleFn<Msg> { /* private fields */ }