Table of Contents

Class InputCoordinatesAdapter

Namespace
FlowGraph.Avalonia.Input
Assembly
FlowGraph.Avalonia.dll

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

viewport ViewportState

The viewport state for coordinate transforms.

rootPanel Panel

The root panel (untransformed container).

mainCanvas Canvas

The main canvas (transformed container).

directRenderer DirectCanvasRenderer

The direct renderer, if in direct rendering mode.

Properties

IsDirectRenderingMode

Whether we're currently in Direct Rendering mode.

public bool IsDirectRenderingMode { get; }

Property Value

bool

Zoom

Gets the current zoom level.

public double Zoom { get; }

Property Value

double

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

e PointerEventArgs

The 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

e PointerEventArgs

The 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

ViewportRect

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

CanvasRect

ToCanvas(ViewportPoint)

Converts a viewport point to canvas coordinates.

public CanvasPoint ToCanvas(ViewportPoint viewport)

Parameters

viewport ViewportPoint

Returns

CanvasPoint

ToCanvas(ViewportVector)

Converts a viewport vector (delta) to canvas space.

public CanvasVector ToCanvas(ViewportVector viewportDelta)

Parameters

viewportDelta ViewportVector

Returns

CanvasVector

ToViewport(CanvasPoint)

Converts a canvas point to viewport coordinates.

public ViewportPoint ToViewport(CanvasPoint canvas)

Parameters

canvas CanvasPoint

Returns

ViewportPoint

ToViewport(CanvasVector)

Converts a canvas vector (delta) to viewport space.

public ViewportVector ToViewport(CanvasVector canvasDelta)

Parameters

canvasDelta CanvasVector

Returns

ViewportVector