Optional: topmost hit under (x,y) in media px (relative to the pane plot).
Adopt the layers under this one, front to back: the order they paint in,
reversed. From then on this layer paints the handles of all of them and
answers hitTest for all of them, and the adopted layers paint bodies
only. Handles have to live up here: a selected drawing under the series
would otherwise have its handles buried under the candles, and a handle
you cannot see is a handle you cannot grab. Pass null to release.
The drawings this layer paints and answers for. The hit boxes kept for the previous list all go, so a drawing edited in place must be handed over again, as the controller does after every edit, for a hover to see where it now is.
The drawing under the pointer. Its handles paint at a lighter weight than a selection's, as the hint that it can be grabbed. Repaints only from the layer that paints handles: the adopted bottom layer keeps the id for its own bookkeeping and asks for nothing, since its repaint costs the series.
Size the grab targets for the device in use. Touch doubles the radii; a
mouse or a pen keeps the desktop sizes. The render context may carry the
same fact (pointerType), and when it does that wins per call, so a
first touch on a fresh chart is already sized right.
The point the magnet will snap the next click to, or null when it is not pulling. Painted as a hollow ring so the user sees the anchor land before committing to it.
Drawings overlay the price range; they never drive it.