using Lattice.Core.Geometry; namespace Lattice.UI.DragDrop.Abstractions; /// /// Хост для отображения визуальных элементов перетаскивания. /// /// /// /// Интерфейс предоставляет абстракцию для управления визуальными элементами /// перетаскивания в различных UI-фреймворках (WPF, Avalonia, MAUI и т.д.). /// /// /// Реализация должна обеспечивать корректное отображение визуальных элементов /// поверх других элементов UI и их своевременное удаление при завершении операций. /// /// public interface IDragDropHost { /// /// Показывает визуальное представление перетаскиваемого элемента. /// /// Визуальное представление элемента для перетаскивания. /// Начальная позиция визуального элемента в экранных координатах. /// /// /// Метод должен отобразить переданный визуальный элемент в указанной позиции. /// Визуальный элемент должен следовать за курсором мыши при обновлении через . /// /// /// Визуальный элемент должен отображаться поверх всех других элементов интерфейса. /// /// void ShowDragVisual(object dragVisual, Point position); /// /// Обновляет позицию визуального представления перетаскивания. /// /// Визуальное представление, позиция которого должна быть обновлена. /// Новая позиция в экранных координатах. /// /// Метод должен обновлять позицию уже отображаемого визуального элемента /// с минимальной задержкой для плавного перемещения. /// void UpdateDragVisualPosition(object dragVisual, Point position); /// /// Скрывает визуальное представление перетаскивания. /// /// Визуальное представление для скрытия. /// /// После вызова этого метода визуальный элемент должен быть полностью /// удален из визуального дерева и его ресурсы освобождены. /// void HideDragVisual(object dragVisual); /// /// Показывает визуальную обратную связь для цели сброса. /// /// Элемент обратной связи для отображения. /// /// /// Метод должен отобразить элемент обратной связи (например, подсветку, рамку или индикатор позиции) /// для визуального указания возможности сброса на целевой элемент. /// /// /// Элемент обратной связи должен отображаться поверх целевого элемента, но под перетаскиваемым визуальным элементом. /// /// void ShowDropAdorner(IDropVisualAdorner adorner); /// /// Скрывает визуальную обратную связь для цели сброса. /// /// Элемент обратной связи для скрытия. /// /// После вызова этого метода элемент обратной связи должен быть /// удален из визуального дерева и его ресурсы освобождены. /// void HideDropAdorner(IDropVisualAdorner adorner); }