DisplayList Class

Definition

The device-independent, fully resolved sequence of drawing operations a page's content produces, which every backend consumes through Replay(IRenderingBackend). Build one with CreateDisplayList().

public sealed class DisplayList

Remarks

A struct-based operation buffer: operations are records in one array, paths are stored once per distinct path (verbs and points in shared arrays) and colours once per run of equal colours, so building costs a fixed number of arrays per page and replaying allocates nothing. Fonts, images and colour spaces are resolved before an operation enters the list; the list never reads the file again (a replay touches only the list), so it can be cached and replayed many times, for example per tile and zoom, where Replay(IRenderingBackend, PdfRectangle) skips the paints a tile does not reach. Converting its colours goes through Document, which must still be open for that.

Today the list carries the graphics state stack (ISO 32000-2 §8.4.2), transforms (§8.3.2), path fills with their colour (§8.5.3, §8.6), strokes with their colour and line parameters (§8.4.3, §8.5.3.2), path clips (§8.5.4, including form bounding boxes, §8.10.1), images with their masks (§8.9, §11.6.5, DisplayImage, decoded once per image XObject), stencil masks (§8.9.6.2, DisplayImageMask), text as glyph runs (§9.4.3, §9.3.6, GlyphRun: font program, glyph ids, text matrices, outlines interned once per program and glyph) and shadings, from sh and as shading patterns on fills and strokes (§8.7.4, DisplayShading), tiling patterns on fills and strokes, each cell a display list of its own (§8.7.3, DisplayTilingPattern), constant alpha and blend modes (SetCompositing(Double, Double, BlendMode), §11.6.3, §11.6.4.4), transparency groups (§11.4, DisplayGroup: group XObjects, the page group and the implicit group of a combined fill and stroke) and annotations' appearances (§12.5.5, DisplayAnnotation; a list holds the page's content, annotation and form-field layers as DisplayLayers asks). Type 3 glyphs (§9.6.4) are in it as what their descriptions paint, under each glyph's transform and, for a d1 glyph, in the colours of the text that shows it; each description is interpreted once per font, code and inherited graphics state in a list and replayed at every show. Text clips (§9.3.6) reach backends as path clips of the glyph outlines. Overprint control and halftones reach them as SetDeviceParameters(in DisplayDeviceParameters) (transfer functions travel with each colour). Soft masks in the graphics state (§11.5, §11.6.5.1) reach them through SetSoftMask(in DisplaySoftMask) and SoftMask, each mask's group a list of its own (DisplaySoftMask), built once per mask.

Immutable once built: any number of threads may replay the same list at once, each into its own backend.

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

Properties (2)

Methods (6)