using System.Threading.Tasks;
using System.Windows;
using TeamAAS.Camera.Images;
namespace TeamAAS.Vision.Calibration.Interfaces
{
///
/// 标定视觉取点契约:由各视觉引擎插件(VisionPro/VM/Halcon)实现,
/// 让标定算法与具体视觉库解耦——算法只"给图取点",引擎可整体替换。
///
/// 分层约定:
/// - 契约只依赖通用图像类 与 WPF 基础类型,不依赖任何引擎 SDK;
/// - 具体实现放在各引擎插件类库(如 Plugins.Vpp),SDK 只被插件引用;
/// - 算法服务通过 VisualEngineManager.Instance.Current as ICalibrationVisionProvider 取用;
/// 未实现本接口的引擎可回退到手动标定页。
///
public interface ICalibrationVisionProvider
{
/// 标定图像操作区(标定向导嵌入,随引擎切换)。
FrameworkElement GetCalibrationView();
///
/// 在图像上运行当前标定工具,返回找到的特征点(像素坐标)。
/// found=false 表示未找到;px/py 为像素坐标;angle 为特征朝向(度,无则 0)。
///
Task<(bool found, double px, double py, double angle)> FindCalibPoint(GenImage image);
///
/// 畸变校正(可选)。默认实现原样返回;需要棋盘格校正的引擎自行实现。
///
Task Undistort(GenImage image);
/// 当前标定工具的运行时句柄(引擎私有对象)。
object CurrentTool { get; }
/// 当前标定工具的持久化引用(如 .vpp 路径)。
string ToolRef { get; set; }
/// 从持久化引用加载标定工具;引用为空时加载引擎默认标定工具模板。
void LoadTool(string toolRef);
/// 将当前标定工具保存到指定目录,返回可供 持久化的引用。
string SaveTool(string directory);
}
}