Example #1
0
        public bool AddAdornment(AdornmentPositioningBehavior behavior, SnapshotSpan?visualSpan, object tag, AdornmentElement element, AdornmentRemovedCallback removedCallback)
        {
            if (element == null)
            {
                throw new ArgumentNullException("element");
            }
            if (_isOverlayLayer && behavior != AdornmentPositioningBehavior.OwnerControlled)
            {
                throw new ArgumentOutOfRangeException("behavior", "Only AdornmentPositioningBehavior.OwnerControlled is supported");
            }
            if (IsTextRelative(behavior) && !visualSpan.HasValue)
            {
                throw new ArgumentNullException("visualSpan");
            }

            bool visible = true;

            if (visualSpan.HasValue)
            {
                //Does the visual span intersect anything visible?
                visible = _view.TextViewLines.IntersectsBufferSpan(visualSpan.Value);
            }

            if (visible)
            {
                AdornmentAndData data = new AdornmentAndData(behavior, visualSpan, tag, element, removedCallback);
                _elements.Add(data);
                Children.Add(element);
            }

            return(visible);
        }
		public AdornmentLayerElement(AdornmentPositioningBehavior behavior, SnapshotSpan? visualSpan, object tag, UIElement adornment, AdornmentRemovedCallback removedCallback) {
			Adornment = adornment;
			Behavior = behavior;
			RemovedCallback = removedCallback;
			Tag = tag;
			VisualSpan = visualSpan;
		}
Example #3
0
 public AdornmentLayerElement(AdornmentPositioningBehavior behavior, SnapshotSpan?visualSpan, object tag, UIElement adornment, AdornmentRemovedCallback removedCallback)
 {
     Adornment       = adornment;
     Behavior        = behavior;
     RemovedCallback = removedCallback;
     Tag             = tag;
     VisualSpan      = visualSpan;
 }
Example #4
0
 public AdornmentAndData(AdornmentPositioningBehavior behavior, SnapshotSpan?visualSpan, object tag, AdornmentElement element, AdornmentRemovedCallback removedCallback)
 {
     _behavior        = behavior;
     _visualSpan      = visualSpan;
     _tag             = tag;
     _element         = element;
     _removedCallback = removedCallback;
 }
Example #5
0
		public bool AddAdornment(AdornmentPositioningBehavior behavior, SnapshotSpan? visualSpan, object tag, UIElement adornment, AdornmentRemovedCallback removedCallback) {
			if (adornment == null)
				throw new ArgumentNullException(nameof(adornment));
			if (visualSpan == null && behavior == AdornmentPositioningBehavior.TextRelative)
				throw new ArgumentNullException(nameof(visualSpan));
			if ((uint)behavior > (uint)AdornmentPositioningBehavior.TextRelative)
				throw new ArgumentOutOfRangeException(nameof(behavior));
			if (layerKind != LayerKind.Normal) {
				if (behavior != AdornmentPositioningBehavior.OwnerControlled)
					throw new ArgumentOutOfRangeException(nameof(behavior), "Special layers must use AdornmentPositioningBehavior.OwnerControlled");
				if (visualSpan != null)
					throw new ArgumentOutOfRangeException(nameof(visualSpan), "Special layers must use a null visual span");
			}
			bool canAdd = visualSpan == null || TextView.TextViewLines.IntersectsBufferSpan(visualSpan.Value);
			if (canAdd) {
				var layerElem = new AdornmentLayerElement(behavior, visualSpan, tag, adornment, removedCallback);
				layerElem.OnLayoutChanged(TextView.TextSnapshot);
				Children.Add(layerElem.Adornment);
				adornmentLayerElements.Add(layerElem);
			}
			return canAdd;
		}
Example #6
0
        public bool AddAdornment(AdornmentPositioningBehavior behavior, SnapshotSpan?visualSpan, object tag, UIElement adornment, AdornmentRemovedCallback?removedCallback)
        {
            if (adornment is null)
            {
                throw new ArgumentNullException(nameof(adornment));
            }
            if (visualSpan is null && behavior == AdornmentPositioningBehavior.TextRelative)
            {
                throw new ArgumentNullException(nameof(visualSpan));
            }
            if ((uint)behavior > (uint)AdornmentPositioningBehavior.TextRelative)
            {
                throw new ArgumentOutOfRangeException(nameof(behavior));
            }
            if (layerKind != LayerKind.Normal)
            {
                if (behavior != AdornmentPositioningBehavior.OwnerControlled)
                {
                    throw new ArgumentOutOfRangeException(nameof(behavior), "Special layers must use AdornmentPositioningBehavior.OwnerControlled");
                }
                if (visualSpan is not null)
                {
                    throw new ArgumentOutOfRangeException(nameof(visualSpan), "Special layers must use a null visual span");
                }
            }
            bool canAdd = visualSpan is null || TextView.TextViewLines.IntersectsBufferSpan(visualSpan.Value);

            if (canAdd)
            {
                var layerElem = new AdornmentLayerElement(behavior, visualSpan, tag, adornment, removedCallback);
                layerElem.OnLayoutChanged(TextView.TextSnapshot);
                Children.Add(layerElem.Adornment);
                adornmentLayerElements.Add(layerElem);
            }
            return(canAdd);
        }
 public bool AddAdornment(AdornmentPositioningBehavior behavior, SnapshotSpan? visualSpan, object tag, UIElement adornment, AdornmentRemovedCallback removedCallback) {
     throw new NotImplementedException();
 }
Example #8
0
 public bool AddAdornment(AdornmentPositioningBehavior behavior, SnapshotSpan?visualSpan, object tag, UIElement adornment, AdornmentRemovedCallback removedCallback)
 {
     throw new NotImplementedException();
 }
Example #9
0
 public static bool IsTextRelative(AdornmentPositioningBehavior behavior)
 {
     return((behavior == AdornmentPositioningBehavior.TextRelative) ||
            (behavior == (AdornmentPositioningBehavior)(AdornmentPositioningBehavior2.TextRelativeVerticalOnly)));
 }