public HexAdornmentLayerElementImpl(VSTE.AdornmentPositioningBehavior behavior, HexBufferSpan?visualSpan, object tag, UIElement adornment, VSTE.AdornmentRemovedCallback removedCallback) { Adornment = adornment; Behavior = behavior; RemovedCallback = removedCallback; Tag = tag; VisualSpan = visualSpan; }
/// <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)); }
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); }
/// <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);