using Lattice.Core.DragDrop.Models;
using Lattice.Core.Geometry;
namespace Lattice.UI.DragDrop.Abstractions;
///
/// Визуальный элемент, показывающий обратную связь при наведении на цель сброса.
///
///
///
/// Интерфейс предоставляет абстракцию для визуальных индикаторов, которые
/// показывают пользователю возможность сброса данных на целевом элементе.
///
///
/// Реализации могут предоставлять различные типы визуальной обратной связи:
/// подсветку элемента, отображение индикатора позиции, изменение курсора и т.д.
///
///
public interface IDropVisualAdorner
{
///
/// Показывает визуальную обратную связь для цели сброса.
///
/// Информация о потенциальном сбросе, включая данные и позицию.
/// Границы целевого элемента в экранных координатах.
///
///
/// Метод должен отобразить визуальную обратную связь, соответствующую типу данных
/// и контексту сброса. Обратная связь должна явно указывать на возможность
/// сброса и ожидаемый эффект (копирование, перемещение и т.д.).
///
///
/// Обратная связь должна учитывать свойства
/// и для кастомизации отображения.
///
///
void Show(DropInfo dropInfo, Rect targetBounds);
///
/// Обновляет позицию и состояние визуальной обратной связи.
///
/// Текущая информация о сбросе, включая обновленную позицию и состояние.
///
/// Метод вызывается при каждом перемещении курсора над целью и должен
/// обновлять визуальную обратную связь в соответствии с новой позицией
/// и состоянием операции.
///
void Update(DropInfo dropInfo);
///
/// Скрывает визуальную обратную связь.
///
///
/// Метод должен скрыть и очистить все визуальные элементы обратной связи.
/// После вызова этого метода ресурсы могут быть освобождены или переиспользованы
/// для следующих операций.
///
void Hide();
}