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
IFeatureinstances 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.Pipelinesassembly); this wrapper lets the viewer keep a stableCurrentStackEntriesshape 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
DepthAreaandDepthContourfeatures 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
IFeaturefiltering, 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 (
ProductRegistryinEncDotNet.S100.Datasets.Pipelines) implements it from each registration'sDefaultPlanestrait, so the table lives with the products rather than in aswitchhere.