IStreamFilter Interface

Definition

A stream filter: the codec for one encoding a stream's Filter entry can name. The filter extension point: every engine holds one filter per name, the managed defaults unless UseFilter(IStreamFilter) replaced or added one.

public interface IStreamFilter

Remarks

ISO 32000-2 §7.4.1. A document decodes a stream by running the filters its Filter entry names, in order, each one over the previous one's output (§7.3.8.2, Table 5). The pipeline around the filters, not the filters, handles everything shared: reading Filter and DecodeParms, the inline-image abbreviations of §8.9.7 Table 92, the predictor functions of §7.4.4.4 after any filter named LZWDecode or FlateDecode (a replacement for either gets them too and must not apply them itself), the Crypt filter of §7.4.10 (handled by the security handler, never by a registered filter), the decoded-length limit (MaxDecodedStreamLength), and converting any exception other than a strict-mode DiagnosticException into a diagnostic.

Thread safety: one instance serves every document of every thread of the engines it is registered with. An implementation keeps no state between calls; everything a decode needs lives in locals, pooled buffers or the FilterContext.

Leniency: on malformed data a filter writes what it can decode, reports one diagnostic per kind of deviation through Report(String, DiagnosticSeverity, String), and returns. In strict mode Report(String, DiagnosticSeverity, String) throws, which ends the decode.

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

Properties (1)

Methods (1)