onCanvasPointerSignal method

void onCanvasPointerSignal(
  1. PointerSignalEvent event
)

Implementation

void onCanvasPointerSignal(PointerSignalEvent event) {
  if (event is PointerScrollEvent) {
    double scaleChange = event.scrollDelta.dy < 0
        ? (1 / canvasReader.state.mouseScaleSpeed)
        : (canvasReader.state.mouseScaleSpeed);

    scaleChange = keepScaleInBounds(scaleChange, canvasReader.state.scale);

    if (scaleChange == 0.0) {
      return;
    }

    double previousScale = canvasReader.state.scale;

    canvasWriter.state.updateScale(scaleChange);

    var focalPoint = (event.localPosition - canvasReader.state.position);
    var focalPointScaled =
        focalPoint * (canvasReader.state.scale / previousScale);

    canvasWriter.state.updatePosition(focalPoint - focalPointScaled);
    canvasWriter.state.updateCanvas();
  }
}