panZoom method
void
panZoom({
- required DiagramPoint fromFocalPoint,
- required DiagramPoint toFocalPoint,
- required double scaleFactor,
Publishes one camera state for a combined pan and pinch sample.
Implementation
void panZoom({
required DiagramPoint fromFocalPoint,
required DiagramPoint toFocalPoint,
required double scaleFactor,
}) {
final current = state;
final worldFocalPoint = current.screenToWorld(fromFocalPoint);
final zoom = (current.zoom * scaleFactor).clamp(
current.minZoom,
current.maxZoom,
);
final offset =
toFocalPoint -
DiagramPoint(
current.viewportSize.width / 2,
current.viewportSize.height / 2,
);
setState(
current.copyWith(
zoom: zoom,
center: DiagramPoint(
worldFocalPoint.x - offset.x / zoom,
worldFocalPoint.y - offset.y / zoom,
),
),
);
}