Class InputCoordinatesAdapter
Implementation of IInputCoordinates that abstracts away rendering mode differences for coordinate handling.
This adapter automatically detects the current rendering mode and uses the appropriate coordinate conversion strategy:
- Visual Tree mode: GetPosition(MainCanvas) already returns canvas coordinates
- Direct Rendering mode: GetPosition(RootPanel) returns viewport coordinates, requires transform
public sealed class InputCoordinatesAdapter : IInputCoordinates
- Inheritance
-
InputCoordinatesAdapter
- Implements
- Inherited Members
Constructors
InputCoordinatesAdapter(ViewportState, Panel?, Canvas?, DirectCanvasRenderer?)
Creates a new InputCoordinatesAdapter.
public InputCoordinatesAdapter(ViewportState viewport, Panel? rootPanel, Canvas? mainCanvas, DirectCanvasRenderer? directRenderer)
Parameters
viewportViewportStateThe viewport state for coordinate transforms.
rootPanelPanelThe root panel (untransformed container).
mainCanvasCanvasThe main canvas (transformed container).
directRendererDirectCanvasRendererThe direct renderer, if in direct rendering mode.
Properties
IsDirectRenderingMode
Whether we're currently in Direct Rendering mode.
public bool IsDirectRenderingMode { get; }
Property Value
Zoom
Gets the current zoom level.
public double Zoom { get; }
Property Value
Methods
GetPointerCanvasPosition(PointerEventArgs)
Gets the current pointer position in canvas coordinates.
This is the primary method for getting pointer position during interactions. Use for hit testing, node positioning, edge endpoints, selection bounds, etc.
Works correctly regardless of rendering mode:
- Visual Tree mode: Uses GetPosition(MainCanvas) which applies inverse transform
- Direct Rendering mode: Uses GetPosition(RootPanel) + manual inverse transform
public CanvasPoint GetPointerCanvasPosition(PointerEventArgs e)
Parameters
ePointerEventArgsThe pointer event.
Returns
- CanvasPoint
Pointer position in canvas coordinates.
GetPointerViewportPosition(PointerEventArgs)
Gets the current pointer position in viewport coordinates.
Use for operations that work in screen space:
- Auto-pan edge detection
- Fixed overlay positioning
- Tooltip placement
public ViewportPoint GetPointerViewportPosition(PointerEventArgs e)
Parameters
ePointerEventArgsThe pointer event.
Returns
- ViewportPoint
Pointer position in viewport coordinates.
GetViewportBounds()
Gets the viewport bounds (size of the visible area).
Returns a rect at (0,0) with the viewport's width and height. Use for auto-pan edge detection.
public ViewportRect GetViewportBounds()
Returns
GetVisibleCanvasRect()
Gets the visible area in canvas coordinates.
This represents the portion of the canvas that is currently visible in the viewport. Useful for:
- Viewport culling during rendering
- Determining if a node is visible
- Calculating visible bounds for layout operations
public CanvasRect GetVisibleCanvasRect()
Returns
ToCanvas(ViewportPoint)
Converts a viewport point to canvas coordinates.
public CanvasPoint ToCanvas(ViewportPoint viewport)
Parameters
viewportViewportPoint
Returns
ToCanvas(ViewportVector)
Converts a viewport vector (delta) to canvas space.
public CanvasVector ToCanvas(ViewportVector viewportDelta)
Parameters
viewportDeltaViewportVector
Returns
ToViewport(CanvasPoint)
Converts a canvas point to viewport coordinates.
public ViewportPoint ToViewport(CanvasPoint canvas)
Parameters
canvasCanvasPoint
Returns
ToViewport(CanvasVector)
Converts a canvas vector (delta) to viewport space.
public ViewportVector ToViewport(CanvasVector canvasDelta)
Parameters
canvasDeltaCanvasVector