public HexAdornmentLayerElementImpl(VSTE.AdornmentPositioningBehavior behavior, HexBufferSpan?visualSpan, object tag, UIElement adornment, VSTE.AdornmentRemovedCallback removedCallback)
 {
     Adornment       = adornment;
     Behavior        = behavior;
     RemovedCallback = removedCallback;
     Tag             = tag;
     VisualSpan      = visualSpan;
 }
Beispiel #2
0
 /// <summary>
 /// Adds an adornment. Returns true if the adornment was added.
 /// </summary>
 /// <param name="behavior">Positioning behavior</param>
 /// <param name="line">Line</param>
 /// <param name="tag">Tag</param>
 /// <param name="adornment">Adornment</param>
 /// <param name="removedCallback">Called when the adornment is removed</param>
 /// <returns></returns>
 public bool AddAdornment(VSTE.AdornmentPositioningBehavior behavior, HexBufferLine line, object tag, UIElement adornment, VSTE.AdornmentRemovedCallback removedCallback)
 {
     if (line == null)
     {
         throw new ArgumentNullException(nameof(line));
     }
     return(AddAdornment(behavior, line.BufferSpan, tag, adornment, removedCallback));
 }
Beispiel #3
0
        public override bool AddAdornment(VSTE.AdornmentPositioningBehavior behavior, HexBufferSpan?visualSpan, object?tag, UIElement adornment, VSTE.AdornmentRemovedCallback?removedCallback)
        {
            if (adornment is null)
            {
                throw new ArgumentNullException(nameof(adornment));
            }
            if (visualSpan is not null && visualSpan.Value.IsDefault)
            {
                throw new ArgumentException();
            }
            if (visualSpan is null && behavior == VSTE.AdornmentPositioningBehavior.TextRelative)
            {
                throw new ArgumentNullException(nameof(visualSpan));
            }
            if ((uint)behavior > (uint)VSTE.AdornmentPositioningBehavior.TextRelative)
            {
                throw new ArgumentOutOfRangeException(nameof(behavior));
            }
            if (layerKind != HexLayerKind.Normal)
            {
                if (behavior != VSTE.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 || HexView.HexViewLines.IntersectsBufferSpan(visualSpan.Value);

            if (canAdd)
            {
                var layerElem = new HexAdornmentLayerElementImpl(behavior, visualSpan, tag, adornment, removedCallback);
                canvas.Children.Add(layerElem.Adornment);
                adornmentLayerElements.Add(layerElem);
            }
            return(canAdd);
        }
Beispiel #4
0
 /// <summary>
 /// Adds an adornment. Returns true if the adornment was added.
 /// </summary>
 /// <param name="behavior">Positioning behavior</param>
 /// <param name="visualSpan">Span</param>
 /// <param name="tag">Tag</param>
 /// <param name="adornment">Adornment</param>
 /// <param name="removedCallback">Called when the adornment is removed</param>
 /// <returns></returns>
 public abstract bool AddAdornment(VSTE.AdornmentPositioningBehavior behavior, HexBufferSpan?visualSpan, object tag, UIElement adornment, VSTE.AdornmentRemovedCallback removedCallback);