The RAW authored gain (intensity/offset, uncomposed) of the node that owns
the chain target's display window in the Layers panel: the nearest
layer=true node on its root→target chain (the shape
collectAncestorNodes returns, or SceneNodeIndex.ancestorChain), the
target itself included. undefined when no node on the chain is a layer.
The panel reads a non-identity gain on a LAYER as that layer's absolute window
(layer-state.tscomputeDisplayRange), whereas on a non-layer ancestor the
same gain is a multiplier on the data range. resolveColormapWindow needs to
know which of the two a composed gain came from to build the window the panel
will push.
The RAW authored gain (
intensity/offset, uncomposed) of the node that owns the chain target's display window in the Layers panel: the nearestlayer=truenode on its root→target chain (the shape collectAncestorNodes returns, orSceneNodeIndex.ancestorChain), the target itself included.undefinedwhen no node on the chain is a layer.The panel reads a non-identity gain on a LAYER as that layer's absolute window (
layer-state.tscomputeDisplayRange), whereas on a non-layer ancestor the same gain is a multiplier on the data range.resolveColormapWindowneeds to know which of the two a composed gain came from to build the window the panel will push.