that's opposite of how other layers render?
Ah, but other layers don't make objects disappear that conflict/overlap with each other. If they did, you'd probably want a "bottom up priority" system for clipping in vector layers as well. Let's take vector layers as an example. Suppose Layer A has many areas and Layer B has many areas. Layer A is above Layer B. OK. Suppose Layer A has a few big areas that completely cover some smaller areas in Layer B. Because A is above B, you don't see the covered areas in B at all. You don't even know you have a problem with some of the B areas being totally hidden by A areas. How would you handle that with a clipping rule? If you say "Because A is higher, whatever is in A clips any conflicting area in B," that's simply saying what the visual effect is from A being higher, and thus covering, B. There's little point to having overlap resolution between layers if all you do is simply apply the visual effect you automatically get from A being higher than B. If you're going to have an overlap resolution rule with multiple layers for vector objects, such a rule adds more to the party if it does something the default "higher layers cover lower layers" visual effect doesn't already do. An overlap rule between layers adds value if it prioritizes lower layers, because then if an object in A conflicts with an object in B by covering the B object the A object gets clipped, and you get something you don't get with the default visual effect: you can see those B objects which otherwise would be hidden by A objects. Now generalize that thought experiment to labels. Big labels, especially those with boxes, can easily totally hide labels in lower layers. If the overlap clipping priority is the same as the layer stack visual effect where upper things cover lower things, then the clipping benefit is less. If, in contrast, the overlap clipping priority is bottom up, you get the benefit of revealing lower labels that otherwise could be hidden by higher overlapping layers. That's one reason for using bottom up priority. The other reason for doing it is speed. Taking the time to compute rendering on something that later is all or partially hidden is a waste, and you can get inaccurate rendering results using many threads when using top down clipping on overlays (alas, the margin of this paper is too narrow to write out the proof...) using only a single pass. To ensure accurate rendering with many threads using top down clipping you'd need at least two and possibly more passes depending on how many layers are in play. That could immediately divide by two the speed of rendering, which could easily become perceptable with larger data. But even for small data where speed might be a don't care, the value of surfacing hidden labels using bottom up priority is still a factor. In any event, asthe recent video shows, it takes but a fraction of a second to drag a label higher to set rendering priority however you want it in the stack.
|