public HexAdornmentLayerImpl(WpfHexView hexView, HexLayerKind layerKind, MetadataAndOrder <IAdornmentLayersMetadata> info) { canvas = new Canvas(); HexView = hexView ?? throw new ArgumentNullException(nameof(hexView)); this.layerKind = layerKind; Info = info; adornmentLayerElements = new List <HexAdornmentLayerElementImpl>(); }
HexAdornmentLayerImpl Create(MetadataAndOrder <IAdornmentLayersMetadata> info) { var layer = new HexAdornmentLayerImpl(wpfHexView, layerKind, info); int index = GetInsertIndex(info); adornmentLayers.Insert(index, layer); Children.Insert(index, layer.VisualElement); return(layer); }
public HexAdornmentLayer GetAdornmentLayer(MetadataAndOrder <IAdornmentLayersMetadata> info) { var layer = adornmentLayers.FirstOrDefault(a => a.Info.Metadata == info.Metadata); if (layer is null) { layer = Create(info); } return(layer); }
int GetInsertIndex(MetadataAndOrder <IAdornmentLayersMetadata> info) { for (int i = 0; i < adornmentLayers.Count; i++) { if (info.Order < adornmentLayers[i].Info.Order) { return(i); } } return(adornmentLayers.Count); }