Namespace EncDotNet.S100.Renderers.Mapsui
Classes
- DiskPatternClipCache
Disk-backed IPatternClipCache: persists each computed S-101 pattern-fill priority clip result (see MapsuiDisplayListRenderer's PatternPriorityClipper) as a WKB sidecar file so that the cold first open of a previously-seen cell — including after a process restart — skips the multi-second NetTopologySuite overlay.
- GeographicPickQuery
A renderer-neutral geographic pick request for PickAsync(GeographicPickQuery, CancellationToken).
- InMemoryPatternClipCache
In-memory, single-slot IPatternClipCache: it remembers only the most recently computed key and its clipped pattern geometry.
- InstrumentedMemoryLayer
Mapsui.Layers.MemoryLayer subclass that records per-frame timing and selectivity metrics each time Mapsui asks for the layer's visible features. Used by MapsuiDisplayListRenderer so we can quantify how much of a render frame is spent in the layer's extent-filter loop versus downstream Skia drawing — i.e. whether a spatial index (e.g. an STRtree-backed provider) would actually help real-world S-100 datasets.
- IsolineRenderer
Draws an IsolineStyle in screen space each frame, so dashes and label spacing stay the same at every zoom.
- IsolineStyle
The Mapsui style carrying an IsolineScene; drawn by IsolineRenderer. Attach it to one feature covering the scene's extent so Mapsui fetches it whenever the extent is in view.
- MachineProfile
Computes the default tiled-renderer resource budgets for a PerformanceProfile, including the hardware-derived Auto tier. All members are deterministic given the (cores, RAM) inputs, so the tier mapping is unit-testable without touching the real machine.
- MapSessionCurrentTimeEventArgs
Carries the new global map clock value after a MapsuiDatasetLayerSession clock change.
- MapSessionDatasetRenderEventArgs
Describes a MapsuiDatasetLayerSession dataset render lifecycle event (started or completed).
- MapSessionDatasetRenderFailedEventArgs
Describes a MapsuiDatasetLayerSession dataset render that failed while the session was refreshing other datasets and therefore swallowed the error to keep them rendering.
- MapsuiCoverageArrowRenderer
Renders oriented symbols (e.g. S-111 current arrows) from a StyledCoverageLayer as a ThinnedSymbolLayer: one vector Mapsui.Layers.PointFeature per grid cell that survives zoom-dependent thinning. Each feature carries a Mapsui Mapsui.Styles.ImageStyle that wraps the bundled SVG symbol via the
"svg-content://"URI scheme so Mapsui re-rasterises the symbol at the active screen DPI on every viewport change.
- MapsuiCoverageRenderer
Renders a StyledCoverageLayer to a Mapsui Mapsui.Layers.ILayer by reprojecting each grid node to EPSG:3857 (Web Mercator) and producing a georeferenced raster overlay.
- MapsuiDatasetLayerSession
Owns the ordinary lifecycle of processor-rendered dataset layers in a Mapsui map.
- MapsuiDatasetRenderer
Converts a dataset processor's Mapsui-free portrayal output (IVectorPortrayalSource / ICoveragePortrayalSource) into a Mapsui-typed MapsuiDatasetResult. This is the Mapsui-aware half of the portrayal-output seam: the processor (in the headless-facing
EncDotNet.S100.Datasets.Pipelinesassembly) builds an immutable snapshot of the dataset's portrayal, and this renderer rasterises it intoILayers, owning every Mapsui type (NTS pattern clipping, feature tagging, out-of-scale-band cap, coverage / arrow / glyph layer build).
- MapsuiDatasetResult
Result of converting a dataset processor's Mapsui-free portrayal output (
IVectorPortrayalSource/ICoveragePortrayalSource) into Mapsui layers. Produced by MapsuiDatasetRenderer.
- MapsuiDisplayListRenderer
Renders an S-100 Part 9 drawing-instruction display list into a Mapsui Mapsui.Layers.ILayer by resolving feature geometry from an IFeatureGeometryProvider, projecting to EPSG:3857, and applying styles derived from the instruction properties.
- MapsuiLayerBands
Owns the ordered basemap, dataset, overlay, and tool layer bands of a Mapsui.Map.
- MapsuiMapDatasetSnapshot
Immutable snapshot of one dataset managed by a MapsuiDatasetLayerSession.
- MapsuiMapNavigator
Provides the focused S-100 map navigation conveniences used by interactive Mapsui hosts.
- MapsuiMapTimeSnapshot
Immutable aggregate time state for the datasets registered with a MapsuiDatasetLayerSession.
- MapsuiMapTimedDataset
A registered dataset that has time samples, and the span they cover.
- MapsuiProjectedDatasetLayer
Associates one host-projected Mapsui layer with its source dataset and portrayal sub-layer.
- MapsuiRenderAssetCache
Per-palette cache of processed-SVG symbol entries and rasterised pattern tiles produced by MapsuiDisplayListRenderer.
- MapsuiTimeSelection
The time rule shared by the session's time policy and SampleAt(DateTime): which sample a dataset draws at a clock value, or none when nothing lies within its tolerance (#706).
- OverlapSuppression
Computes and attaches per-cell screen-space clip contributions for cross-cell scale-band overlap suppression ("larger-scale-in", issue #438 Phase 2). For each cell it gathers every loaded, strictly-finer cell whose coverage overlaps it and attaches those finer coverages (via EncDotNet.S100.Renderers.Mapsui.CoverageClip) so the renderer subtracts each — but only while the finer cell is itself visible at the live resolution — from the coarser cell's drawable region. Holes are preserved, so a coarser cell still shows through gaps between finer cells, and the subtraction relaxes as finer cells zoom out of their scale band.
- OverlapSuppressionCell
One loaded chart cell's contribution to cross-cell scale-band overlap suppression (issue #438 Phase 2): its base-chart layers, its EPSG:3857 data coverage footprint, the scale-band denominator used to decide which cells are "finer" (smaller denominator = larger scale), and the denominator from which each finer cell's zoom-out cutoff is derived (the resolution past which it stops drawing, so it must stop suppressing — computed per finer cell in CollectFinerCoverages(OverlapSuppressionCell, IReadOnlyList<OverlapSuppressionCell>)).
- OverscaleCell
A single overscaled cell in the current view: the cell's name and its overscale factor (how many times finer the display scale is than the cell's compilation scale, e.g.
4.6= "4.6×").
- OverscaleCellInput
One loaded, drawing chart cell's contribution to overscale evaluation (issue #441, S-52 / S-101 overscale indication): its display name, its EPSG:3857 data-coverage footprint, and its compilation-scale denominator (the finest scale the cell was compiled for, S-101 FC §3.1.1
DataCoverage.maximumDisplayScale; S-57 DSPM compilation scale).
- OverscaleCurtain
Computes the on-chart overscale-curtain regions for the current view (issue #441, Form A — the classic S-52
AP(OVERSC01)vertical-line "curtain"). This is the geometric companion to OverscaleEvaluator: the evaluator answers whether and by how much each cell is overscaled (for the status-bar indicator); this class answers where the curtain pattern should be painted.
- OverscaleCurtainRegionCache
A memoising ComputeRegions(IReadOnlyList<OverscaleCellInput>, double) for a caller that recomputes the curtain on every zoom step over a mostly unchanged set of cells (issue #691).
- OverscaleCurtainRenderer
Renders OverscaleCurtainStyle by drawing evenly spaced vertical lines, anchored to a fixed world origin, clipped to the styled polygon — the S-52 / S-101 overscale "curtain" (issue #441,
AP(OVERSC01)Form A).
- OverscaleCurtainStyle
Mapsui style marking a polygon to be filled with the S-52 / S-101 overscale "curtain" (issue #441,
AP(OVERSC01)Form A): a set of evenly spaced, world-anchored vertical lines drawn over a region displayed beyond its compilation scale. Rendered by OverscaleCurtainRenderer.
- OverscaleEvaluator
Computes per-cell overscale for the current viewport (issue #441). A chart cell is overscaled when the mariner has zoomed in past the finest scale the cell was compiled for (its CompilationScaleDenominator): the chart is magnified beyond the detail it actually contains. Because compilation scale is a per-cell property, a single view can hold cells overscaled by different amounts (and cells not overscaled at all); this evaluator reports each overscaled cell and the worst offender for the status-bar indicator.
- OverscaleRegion
One overscaled cell's on-chart overscale "curtain" region (issue #441, S-52 / S-101
AP(OVERSC01)overscale indication, Form A): the cell's name, its overscale factor, and the EPSG:3857 (Web Mercator) area over which the curtain pattern should be painted.
- OverscaleReport
The result of evaluating overscale across the loaded cells in the current view (issue #441): the overscaled cells (worst first) and the worst factor.
- RenderingOptimizations
Central, mutable configuration for the Mapsui vector-rendering optimizations surfaced in the viewer's
Settings → Mapsection.
- S100DatasetExtentIndicatorLayer
A reusable Mapsui overlay layer that outlines the extents of loaded datasets which have zoomed out of scale. A host adds Layer to its
Map.Layersonce, then calls Show(IEnumerable<S100DatasetExtentIndicator>) as datasets, visibility, or zoom-cutoffs change; Clear() empties it.
- S100DatasetExtentIndicatorStyle
Appearance for the reusable S100DatasetExtentIndicatorLayer: the accent colour and the dashed-hairline weights used to trace a dataset extent.
- S100MapExtensions
Extension entry point that attaches a reusable S-100 subsystem to a Mapsui.Map.
- S100MapsuiOptions
Captures Mapsui-specific S-100 rendering configuration for a renderer or map session.
- S100MapsuiRendering
Initializes the custom Mapsui style and layer renderers required to portray S-100 map layers.
- S100MapsuiServiceCollectionExtensions
IServiceCollection helpers for registering the reusable S-100 Mapsui session with Microsoft dependency injection. Using DI is optional — hosts can compose a session manually with AddS100(Map, S100MapsuiOptions?).
- S100OverscaleCurtainLayer
A reusable Mapsui overlay layer that paints the on-chart overscale "curtain" (issue #441, S-52 / S-101
AP(OVERSC01)Form A) — a subtle pattern of evenly spaced vertical lines — over the regions of loaded cells that are being displayed beyond their compilation scale. A host adds Layer to itsMap.Layersonce, then calls Show(IEnumerable<OverscaleRegion>) as the loaded cells or the viewport zoom change; Clear() empties it.
- S100Pick
One resolved result of PickAsync(GeographicPickQuery, CancellationToken) — a vector feature or a coverage sample found at the query point, already ranked against the session's S-98 paint stack.
- S100PickHighlightLayer
A reusable Mapsui overlay layer that outlines a picked feature's geometry — the drawing complement to PickAsync(GeographicPickQuery, CancellationToken). A host adds Layer to its
Map.Layersonce, then calls Show(S100Pick?) (or an overload) as picks change to highlight the hit; Clear() removes the highlight.
- S100PickHighlightStyle
Appearance for the reusable S100PickHighlightLayer: the accent colour and stroke/fill weights used to outline a picked feature.
- S100ValidationFindingLayer
A reusable Mapsui overlay layer that plots a dataset's spatially-located validation findings: a severity-coloured marker for a point finding and a translucent severity-coloured box for a bounding-box finding. A host adds Layer to its
Map.Layersonce, then calls Show(IEnumerable<S100ValidationFinding>) as the selected dataset (or its findings) change; Clear() empties it.
- S100ValidationFindingStyle
Appearance for the reusable S100ValidationFindingLayer: the per-severity accent colours plus the marker/outline weights used to plot a dataset's spatially-located validation findings.
- S100VectorSceneRenderer
The TiledScene ("B") render subsystem, Phase 1: a Mapsui custom layer renderer that draws the chart base plane by rasterising the backend-agnostic VectorScene IR directly — bypassing Mapsui's feature / style / layer walk entirely — on a worker thread, then compositing the result on the UI/render thread as a single translated SKImage blit. See
docs/design/S100-Render-Subsystem-Design.md(§3, §4, Phase 1).
- S100VectorTileRenderer
The TiledScene ("B") render subsystem, Phase 2: a Mapsui custom layer renderer that draws the chart base plane as a pyramid of cached tiles rasterised from the backend-agnostic VectorScene IR on worker threads, then composited on the UI/render thread. It generalises the Phase 1 single-surface renderer (S100VectorSceneRenderer) by partitioning the over-render margin into an origin-anchored EncDotNet.S100.Renderers.Mapsui.TileGrid so a constant-zoom pan reuses every interior tile and only rasterises the newly-exposed perimeter — making pan cost scale with perimeter, not viewport area (
docs/design/S100-Render-Subsystem-Design.md§3.2–§3.5).
- ThinnedSymbolLayer
A Mapsui layer of scaled point symbols (S-111 current arrows) that thins itself for the zoom it is drawn at. Each time Mapsui asks for the visible features, the layer runs SymbolThinning for the current resolution and returns only the symbols that keep the required on-screen spacing, so arrow density stays legible from a whole-bay view down to a harbour.
- WorldCopyMemoryLayer
A Mapsui.Layers.MemoryLayer whose features also draw at the adjacent world copies (EncDotNet.S100.Renderers.Mapsui.WorldCopies), so overlays tied to chart data (pick highlights, extent outlines, the overscale curtain, validation findings) follow the chart wherever it is drawn (issue #773). A tile-rendered dataset layer whose features only carry pick identity uses it too, so a click on a copy of the chart hits its features. Hosts use it for their own overlays of chart data in EPSG:3857.
Structs
- MapsuiMapTimeSegment
A closed global-clock interval over which at least one map dataset can portray data.
- S100DatasetExtentIndicator
One dataset extent indicator: the EPSG:3857 (web-mercator) extent of a loaded dataset together with the coarsest resolution at which that dataset's content still draws. The accent border is shown only when the viewport is zoomed out past MinVisibleResolution — i.e. exactly when the dataset itself has dropped out of scale — giving a mariner a target to zoom toward.
- S100ValidationFinding
One spatially-located validation finding: its ValidationSeverity plus the geographic location(s) it flags. A finding may carry a Point, a BoundingBox, both, or neither — a finding with no spatial information contributes nothing to the overlay.
Interfaces
- IPatternClipCache
Caches the result of the S-101 pattern-fill priority clip (MapsuiDisplayListRenderer's PatternPriorityClipper) so that re-renders which do not change the clip inputs — most importantly Day/Dusk/Night palette switches — skip the expensive NetTopologySuite overlay work.
- IS100DatasetLoader
Loads datasets into an IS100MapSession from a file path, building the processor with the host-supplied DatasetPipelineFactory.
- IS100MapLayerHost
The host-facing layer bands of an IS100MapSession: the basemap below the datasets, the overlay band above them, and the topmost tool band. A host attaches its own decoration layers — basemaps, pick highlights, extent indicators, measure tools — through this surface so they keep their z-order relative to the session's dataset layers as datasets are added and removed.
- IS100MapQuery
Reusable geographic query surface over a MapsuiDatasetLayerSession's currently-shown datasets.
- IS100MapSession
An explicitly owned S-100 subsystem attached to a Mapsui.Map. Composes and owns the reusable dataset-layer session, processor ownership, renderer, layer bands, and navigation convenience; disposing it releases all of them. Obtain one with AddS100(Map, S100MapsuiOptions?).
- IS100MapSessionFactory
Creates an IS100MapSession for a runtime Mapsui.Map, resolving its dependencies (CRS transform factory and options) from a DI container. Register it with AddS100Mapsui(IServiceCollection, Func<IServiceProvider, S100MapsuiOptions>?).
Enums
- MapSessionRenderKind
Classifies the operation that triggered a MapsuiDatasetLayerSession dataset render, carried by its lifecycle events.
- MapsuiTimeSelectionKind
How a time-aware dataset picks the sample it draws for the clock.
- PerformanceProfile
Selects how the tiled render subsystem's resource budgets (in-memory / GPU / disk tile caches) default when no explicit environment variable or persisted user value pins them.
- VectorSceneMode
Selects the base-plane scene mode: the tiled base plane (Phase 2) or the single-surface arm (Phase 1). See
docs/design/S100-Render-Subsystem-Design.md.