Table of Contents

Namespace EncDotNet.S100.Datasets.Pipelines.Interoperability

Classes

CoverageStackPayload

A coverage sub-layer payload: one CoverageSubLayerBase slice (colour band, arrow overlay, or station glyphs) of a dataset's CoveragePortrayalResult.

DefaultDisplayPlaneAuthority

Mapsui-free default-plane authority over an IProductPlaneTable, whose built-in entries follow S-98 Main §9.2.1 / MSC.530(106)/Rev.1 §Appendix 2 "priority of information". This is the authoritative GetDefaultPlane(string, string?) implementation; the Mapsui-typed cross-dataset stack authority delegates its own plane lookups here so there is a single table.

DisplayPlaneAuthorityProvider

The default IDisplayPlaneAuthorityProvider: exposes the default-plane authority of a ProductRegistry (DisplayPlanes) and never raises CurrentChanged (the plane table is policy-invariant).

FeatureTagKeys

Well-known keys set on Mapsui IFeature instances by dataset processors so that the S-98 interoperability rule engine can filter features without re-running the portrayal pipeline.

InteroperabilityAuthority

Default IInteroperabilityAuthority implementation. Resolves the per-product default plane through an IDisplayPlaneAuthority (the product registry's table, derived from S-98 Main §9.2.1 / MSC.530(106)/Rev.1 §Appendix 2 "priority of information"); sorts entries by (Plane, WithinPlanePriority, scale denominator descending, input order).

InteroperabilityAuthorityProvider

Mutable default IInteroperabilityAuthorityProvider: holds a single IInteroperabilityAuthority reference that the host can swap at runtime (e.g. via a settings binding). The initial authority is required at construction time — hosts inject the chosen policy via DI; there is no static fallback.

LayerStackBuilder

Collects each loaded dataset's SubLayerStackItem values and sorts the whole stack via an IInteroperabilityAuthority. The builder is a thin orchestration layer; the actual policy lives in the authority.

LayerStackEntry

The Mapsui-side pairing of a built Mapsui.Layers.ILayer with its renderer-neutral SubLayerStackItem. Since issue #398 the S-98 ordering / suppression engine operates on SubLayerStackItem (in the Mapsui-free Datasets.Pipelines assembly); this wrapper lets the viewer keep a stable CurrentStackEntries shape while the actual sort / suppression decision lives once, on the neutral item.

LayerStackProjector

Maps the renderer-neutral, S-98-ordered / suppressed SubLayerStackItem list produced by the engine (Build(IInteroperabilityAuthority, IReadOnlyList<IReadOnlyList<SubLayerStackItem>>) + ApplyRules(IReadOnlyList<SubLayerStackItem>, IReadOnlyList<LoadedDatasetInfo>, MarinerSettings?, IReadOnlyCollection<S98InteroperabilityRule>?)) back onto the Mapsui Mapsui.Layers.ILayer objects the viewer paints, without re-running the expensive display-list rasterisation for suppressed layers.

LoadOrderInteroperabilityAuthority

Strict dataset-by-dataset IInteroperabilityAuthority: preserves the order in which Build(IInteroperabilityAuthority, IReadOnlyList<IReadOnlyList<SubLayerStackItem>>) presents entries (top-of-UI dataset wins) and ignores the S-98 display plane entirely.

LoadedDatasetInfo

Identifies a currently-loaded dataset to the S-98 interoperability rule engine. Carries the minimum information a rule needs to decide whether it should fire: which product spec the dataset conforms to and whether the dataset is currently active for display.

S98DefaultRules

The inter-product rules shipped in PR-L2 (S-98 Edition 2.0.0), plus the SoundCharts weather rules R_101_WX_B_ClipWeatherFillsToWater and R_111_WX_B_HideModelCurrentsUnderS111. Three rules (R_101_102_A, R_104_A, R_111_A) are pure plane-assignment properties already satisfied by the default plane table; they carry an identity Effect and exist as named property anchors for tests. R_101_124_A is the analogous Level-0 derivation for S-124. The Level-2 rule R_101_102_B_SuppressDepthFeatures is the only one with a non-identity effect — it removes the S-101 DepthArea and DepthContour features inside an active S-102 dataset's coverage from the stack, honouring the MSC.232(82) §5.8 safety-contour exception.

S98InteroperabilityRule

One S-98 inter-product rule: a guarded transformation of the sorted layer stack. PR-L2 ships five rules (see S98DefaultRules); future PRs may load additional rules from a parsed Interoperability Catalogue.

S98RuleContext

Inputs to a single S98InteroperabilityRule evaluation: the set of currently-loaded datasets plus optional mariner state (used by rules whose effect depends on viewer settings, e.g. the safety-contour exception to R-101-102-B).

S98SuppressionPolicy

The single source of truth for the S-98 R-101-102-B depth-feature suppression decision: which S-101 skin-of-the-earth feature types an active S-102 bathymetric surface replaces, and the MSC.232(82) §5.8 safety-contour exception that keeps the mariner's safety contour visible.

StackPayload

The renderer-neutral payload carried by a SubLayerStackItem: the Mapsui-free portrayal slice a renderer (the headless Skia compositor or the Mapsui viewer) turns into a drawable layer. Keeping the payload on the stack item — rather than a pre-built Mapsui ILayer — is what lets the S-98 ordering / suppression engine live in this (Mapsui-free) assembly and be shared by every renderer (issue #398).

SubLayerStackItem

One sub-layer's slot in the S-98 cross-dataset stack — the renderer-neutral successor to the Mapsui-tied LayerStackEntry. A SubLayerStackItem carries everything the IInteroperabilityAuthority needs to order and suppress sub-layers across all loaded datasets, plus a StackPayload a renderer turns into a drawable layer, with no dependency on any rendering backend (issue #398).

SyntheticStackPayload

A placeholder payload for a prebuilt layer that has no Mapsui-free portrayal slice — used only by the viewer's legacy fallback path when a processor hands the dataset loader raw layers without S-98 stack metadata. It carries just a stable key so a renderer can recover the associated layer; it is never produced by the headless composite path and is never suppressed.

VectorStackPayload

A vector sub-layer payload: one VectorSubLayer slice of a dataset's VectorPortrayalResult. S-98 depth-feature suppression (R-101-102-B) rewrites the SubLayer's drawing instructions in place of the old Mapsui IFeature filtering, so the decision lives once, on the encoding-neutral instruction list.

Interfaces

IDisplayPlaneAuthority

Mapsui-free contract for resolving the default S-98 display plane of a (product, feature-or-layer-kind) pair. This is the only part of the cross-dataset interoperability authority that dataset processors need (to stamp a plane onto each portrayal sub-layer); the Mapsui-typed stack sorting and suppression live in the Mapsui renderer package.

IDisplayPlaneAuthorityProvider

Resolves the currently active IDisplayPlaneAuthority on each consult. Dataset processors depend on this provider so a host can swap the default-plane policy without rebuilding the pipeline.

IInteroperabilityAuthority

Cross-dataset interoperability decision point: assigns a default S-98 display plane to a (product, feature-or-layer-kind) pair and sorts the global stack of SubLayerStackItem values into S-98-shaped paint order.

IInteroperabilityAuthorityProvider

Resolves the currently active IInteroperabilityAuthority on each consult.

IProductPlaneTable

A per-product table of default S-98 display planes. The product registry (ProductRegistry in EncDotNet.S100.Datasets.Pipelines) implements it from each registration's DefaultPlanes trait, so the table lives with the products rather than in a switch here.