ProgressiveZoom Class

Definition

Zooms a viewer progressively: each zoom step shows at once, drawn from the tiles already on the surface (stretched or shrunk, over each page's paper, so nothing goes blank), keeps the anchor (the pointer or the pinch centre) on the same page point, and once the zoom settles has the TileScheduler render sharp tiles at the settled scale in time-sliced frames, evicting the tiles of the old scale as the new ones cover the pages.

public sealed class ProgressiveZoom

Remarks

Spec #33 viewer capability 2. Framework-neutral and single-threaded (no timers, tasks or threads, so it runs on the browser's one thread): the shell, or the input model of spec viewer capability 14, calls SetViewport(in Viewport) for scrolls and resizes, ZoomBy(Double, Double, Double)/ZoomTo(Double, Double, Double) for zoom steps (bracketed by BeginGesture() and EndGesture() for a pinch or an animation), and once per frame RunFrame(TimeSpan) then GetFrame(Span<FramePart>), drawing the parts in order.

While a zoom is in progress no tile renders: intermediate scales would be thrown away. Steps outside an explicit gesture (mouse wheel, keyboard) settle once they pause for SettleDelay; a gesture settles when it ends. The zoom is held within MinZoom and MaxZoom. Steps, frames and GetFrame(Span<FramePart>) allocate nothing once the scheduler's buffers have grown to the viewport.

Tip: use kind:method, kind:property, kind:ctor. Press Esc to clear.

Constructors (1)

Properties (5)

Methods (7)