Beispiel #1
0
            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;
 }