The original local shape (same object identity as region.shape).
Outer-ellipse center (target-local).
Inner rect (target-local) — the cutout. Typically the selection's AABB.
OptionalminBandPx?: numberMinimum band thickness outside the inner rect, in screen
pixels. The framework widens rx/ry to at least
innerHalfExtent + minBandPx / meanScale(view.scale) for both
paint and hit-test.
This exists because the clamp has to know the view and the
affordance doesn't: ChromeState carries no scale. Expressing the
floor in world units instead (which is what the rotate ring used
to do) makes the band shrink on screen as you zoom in, until the
ring around a small shape is too thin to hover.
Outer-ellipse semi-axes (target-local).
World-space mapping of shape. For point, only x/y are set.
For rect, all four fields are set.
Context passed to a region's
paint.kind === 'custom'draw callback. Provides both the world-space anchor (already transformed) and the original local shape, for affordances that want to do additional geometry themselves.