globalToGraph method
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));
}