- labels: 100901 -->
- milestone: 113523 -->
OverlayView::AdjustForZoom is a method that resizes
fixed-size graphics before doing a zoom, so that they
will remain a constant size after the zoom. This is
often a requirement for graphics on a map, or other
iconic display where it doesn't make sense to zoom
the icons as much as the rest of the graphics. This
feature is rarely used, and it would be nice if it
the existence of any non-identity value could be
detected at the top of the graphics tree, instead of
the current state which traverses the whole tree doing
nothing at each leaf.
There is a similar ::AdjustForPan mechanism for fixed
location graphics, and it too is rarely used. Both of
these have a small linear cost increase.
Often I have worried that it had greater than a small
proportional cost, when directly comparing the
performance of idraw to drawtool. But after much
investigation I find the biggest differences in drawing
performances (when repeatedly zooming/de-zooming, an
unnatural activity) can be traced to two things: 1)
the double-buffering of drawtool, which doubles the
drawing cost (but more than doubles the perceived cost,
because the eye sees no progress until the very end),
and 2) number of vertical lines in the current canvas.
drawtool by default comes up with more lines than idraw
(because the toolbox is taller given the default
fonts), and that directly impacts the time to draw a
complex graphic.