public ICube?TryGetElementBounds(IVisualElement element) { lock (_renderLock) { if (RenderPositions.TryGetValue(element, out var c)) { return(c); } return(default);
public IEnumerable <IRenderedVisual> GetElementsAt <TPoint>(TPoint point2D) where TPoint : IPoint2D { lock (_renderLock) { foreach (var kvp in RenderPositions.Where(p => p.Value.Contains(point2D)) .OrderByDescending(p => p.Value.Depth)) { if (kvp.Key is IContentContainer container && container.Content != null) { yield return(new RenderedVisual(container.Content, kvp.Value)); } yield return(new RenderedVisual(kvp.Key, kvp.Value)); } } }
public IEnumerable <IRenderedVisual <IHandleInput <T> > > GetRenderedVisualsForMouseInput <T, TPoint>( TPoint point2D, InputAction inputAction) where T : IInputEventArgs where TPoint : IPoint2D { lock (_renderLock) { foreach (var kvp in RenderPositions.Where(p => p.Value.Contains(point2D)) .OrderByDescending(p => p.Value.Depth)) { if (!(kvp.Key is IHandleInput interactive) || (interactive.HandlesActions & inputAction) != inputAction || !(interactive is IHandleInput <T> inputHandler)) { continue; } yield return(new RenderedVisual <IHandleInput <T> >(inputHandler, kvp.Value)); } } }