panZoom method

void panZoom({
  1. required DiagramPoint fromFocalPoint,
  2. required DiagramPoint toFocalPoint,
  3. 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,
      ),
    ),
  );
}