BezierPath is more than a serialization container. It also carries enough
information to support editing-oriented lookup.
Before appending the path data for a logical spline segment, Spline.Render()
calls BezierPath.Mark(i).
That means HitTest() can report not only a distance, but also the originating
segment index through BestMark.
BezierPath.HitTest(x, y):
This approximation is sufficient for:
DemoSpline uses this workflow to decide where pointer interaction should land
on a rendered curve, even though the reusable package itself stays UI-free.