Table of Contents

Interface IInputCoordinates

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

Provides coordinate information for input handling in a rendering-mode agnostic way.

This interface abstracts away the differences between Visual Tree and Direct Rendering modes, providing a consistent API for input states to work with coordinates. All interaction logic should use this interface rather than directly accessing MainCanvas or RootPanel.

Key principle: Interaction code should work in canvas coordinates. This interface ensures that pointer positions are correctly converted regardless of rendering mode.

public interface IInputCoordinates

Examples

public override StateTransitionResult HandlePointerMoved(InputStateContext context, PointerEventArgs e)
{
    // Get canvas position - works in both rendering modes
    CanvasPoint canvasPos = context.Coordinates.GetPointerCanvasPosition(e);

    // Use for hit testing, snapping, etc.
    var snapTarget = FindSnapTarget(canvasPos);

    // Get viewport position for auto-pan edge detection
    ViewportPoint viewportPos = context.Coordinates.GetPointerViewportPosition(e);
    if (viewportPos.IsNearEdge(context.Coordinates.GetViewportBounds(), edgeDistance))
    {
        // Trigger auto-pan
    }
}

Properties

Zoom

Gets the current zoom level.

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
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
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.

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
CanvasRect GetVisibleCanvasRect()

Returns

CanvasRect

ToCanvas(ViewportPoint)

Converts a viewport point to canvas coordinates.

CanvasPoint ToCanvas(ViewportPoint viewport)

Parameters

viewport ViewportPoint

Returns

CanvasPoint

ToCanvas(ViewportVector)

Converts a viewport vector (delta) to canvas space.

CanvasVector ToCanvas(ViewportVector viewportDelta)

Parameters

viewportDelta ViewportVector

Returns

CanvasVector

ToViewport(CanvasPoint)

Converts a canvas point to viewport coordinates.

ViewportPoint ToViewport(CanvasPoint canvas)

Parameters

canvas CanvasPoint

Returns

ViewportPoint

ToViewport(CanvasVector)

Converts a canvas vector (delta) to viewport space.

ViewportVector ToViewport(CanvasVector canvasDelta)

Parameters

canvasDelta CanvasVector

Returns

ViewportVector