public AdornmentInfo GetAdornmentInfo(IntraTextAdornmentTaggerDisplayMode mode) { switch (mode) { case IntraTextAdornmentTaggerDisplayMode.HideOriginalText_WithoutLastLineBreak: { var affinity = Span.Length > 0 ? null : Affinity; return(new AdornmentInfo(Span, affinity)); } case IntraTextAdornmentTaggerDisplayMode.DoNotHideOriginalText_BeforeLastLineBreak: { SnapshotPoint start; if (!Affinity.HasValue || Affinity.Value == PositionAffinity.Predecessor) { start = Span.Start; } else { start = Span.End; } var adornmentSpan = new SnapshotSpan(start, 0); return(new AdornmentInfo(adornmentSpan, Affinity)); } default: throw new InvalidOperationException($"Unknown {nameof(IntraTextAdornmentTaggerDisplayMode)}: '{mode}'."); } }
/// <param name="adornmentAffinity">Determines whether adornments based on data tags with zero-length spans /// will stick with preceding or succeeding text characters.</param> protected IntraTextAdornmentTagTransformer( IWpfTextView textView, ITagAggregator <TDataTag> dataTagger, IntraTextAdornmentTaggerDisplayMode mode, PositionAffinity adornmentAffinity = PositionAffinity.Successor) : base(textView) { this.AdornmentAffinity = adornmentAffinity; this.DataTagger = dataTagger; this.DataTagger.TagsChanged += HandleDataTagsChanged; Mode = mode; }