globalToGraph method

GraphPosition globalToGraph(
  1. ScreenPosition globalPosition
)

Converts a global screen position to graph coordinates.

This method handles the full conversion from global screen coordinates (e.g., from gesture events) to graph coordinates, accounting for:

  • Canvas position on screen (via canvasKey's RenderBox)
  • Viewport pan offset
  • Viewport zoom level

Use this method when you have a global position (like details.globalPosition from a gesture callback) and need to convert it to graph coordinates.

Parameters:

  • globalPosition: Position in global screen coordinates

Returns: The corresponding position in graph coordinates as GraphPosition

Implementation

GraphPosition globalToGraph(ScreenPosition globalPosition) {
  // Convert global to canvas-local using the canvas's RenderBox
  final renderBox =
      canvasKey.currentContext?.findRenderObject() as RenderBox?;
  final canvasLocal =
      renderBox?.globalToLocal(globalPosition.offset) ??
      globalPosition.offset;
  // Then convert canvas-local to graph coordinates
  return viewport.toGraph(ScreenPosition(canvasLocal));
}