Class SubLayerStackItem
- Namespace
- EncDotNet.S100.Datasets.Pipelines.Interoperability
- Assembly
- EncDotNet.S100.Core.dll
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).
public sealed record SubLayerStackItem : IEquatable<SubLayerStackItem>
- Inheritance
-
SubLayerStackItem
- Implements
- Inherited Members
Constructors
SubLayerStackItem(StackPayload, S98DisplayPlane, int, string, string?, string?)
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).
public SubLayerStackItem(StackPayload Payload, S98DisplayPlane Plane, int WithinPlanePriority, string SourceDatasetId, string? SourceFeatureType = null, string? ExtensionId = null)
Parameters
PayloadStackPayloadThe Mapsui-free portrayal slice to draw (vector instructions or a coverage sub-layer). S-98 suppression may replace this with a filtered payload.
PlaneS98DisplayPlaneThe S-98 display plane this sub-layer lives in (S-98 Annex A §4.4.1 + §A-3.2.1.1). Assigned by the producing processor, possibly overridden by an Interoperability Catalogue rule.
WithinPlanePriorityintIntra-plane ordering hint, ascending — lower draws first. For vector products this is the S-100 Part 9 §10
drawingPriority; for coverage products a processor-chosen integer (e.g. arrows above colour band).SourceDatasetIdstringStable identifier for the source dataset (typically the file name or exchange-set relative path). Used as the stable-sort tiebreaker and the suppression join key against LoadedDatasetInfo.
SourceFeatureTypestringOptional feature type code when the item is a per-feature-type slice (e.g. the S-101 area / line split). Null for whole-layer items.
ExtensionIdstringOptional IC-declared custom plane identifier (S-98 Annex A §A-3.2.1.1). When set, the authority slots the item by the catalogue's
orderrather than byPlane. Always null for PR-L1.
Properties
ExtensionId
Optional IC-declared custom plane identifier (S-98 Annex A §A-3.2.1.1).
When set, the authority slots the item by the catalogue's order
rather than by Plane. Always null for PR-L1.
public string? ExtensionId { get; init; }
Property Value
Payload
The Mapsui-free portrayal slice to draw (vector instructions or a coverage sub-layer). S-98 suppression may replace this with a filtered payload.
public StackPayload Payload { get; init; }
Property Value
Plane
The S-98 display plane this sub-layer lives in (S-98 Annex A §4.4.1 + §A-3.2.1.1). Assigned by the producing processor, possibly overridden by an Interoperability Catalogue rule.
public S98DisplayPlane Plane { get; init; }
Property Value
SourceDatasetId
Stable identifier for the source dataset (typically the file name or exchange-set relative path). Used as the stable-sort tiebreaker and the suppression join key against LoadedDatasetInfo.
public string SourceDatasetId { get; init; }
Property Value
SourceFeatureType
Optional feature type code when the item is a per-feature-type slice (e.g. the S-101 area / line split). Null for whole-layer items.
public string? SourceFeatureType { get; init; }
Property Value
SourceScaleDenominator
The source cell's ranking scale denominator — its compilation scale where
the product declares one, otherwise its coarsest intended display-scale
denominator; a proxy for its navigational-purpose (usage) band, used to break ties between
overlapping cells of different scales within the same
Plane and WithinPlanePriority. A
smaller denominator means a larger-scale (finer) cell, which
must paint on top of a smaller-scale (coarser) cell of the same
feature content (S-101 FC §3.1.1 DataCoverage.minimumDisplayScale;
S-57 DSPM compilation scale CSCL, S-57 Appendix B.1 §7.3.1.1). Without
this the tie falls through to dataset load order, which is
non-deterministic under viewport-driven lazy loading (issue #464).
null when the producing dataset carries no usable
cell-wide scale (e.g. GML and coverage products); such items are treated
as coarsest and preserve their relative load order among themselves.
public int? SourceScaleDenominator { get; init; }
Property Value
- int?
Remarks
Kept as an init-only property rather than a primary-constructor parameter so appending it does not change the generated constructor signature — that keeps the public record binary-compatible with callers compiled against the earlier six-parameter constructor.
WithinPlanePriority
Intra-plane ordering hint, ascending — lower draws first. For vector
products this is the S-100 Part 9 §10 drawingPriority; for coverage
products a processor-chosen integer (e.g. arrows above colour band).
public int WithinPlanePriority { get; init; }