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
Implementation
Offset globalToGraph(Offset globalPosition) {
// Convert global to canvas-local using the canvas's RenderBox
final renderBox =
canvasKey.currentContext?.findRenderObject() as RenderBox?;
final canvasLocal =
renderBox?.globalToLocal(globalPosition) ?? globalPosition;
// Then convert canvas-local to graph coordinates
return viewport.screenToGraph(canvasLocal);
}