using System.Windows;
namespace TeamAAS.Vision
{
///
/// 视觉引擎契约:任何实现了本接口的类都视为一个可用视觉引擎
/// (VisionPro / VM / Halcon ...)。环境里有哪些引擎,设置页就列出哪些,一键切换。
///
/// 分层约定:
/// - 本契约只依赖 WPF 基础类型,不依赖任何引擎 SDK(Cognex/VM/Halcon);
/// - 具体引擎实现放在各引擎插件类库中(如 Plugins.Vpp),SDK 只被插件引用;
/// - 宿主(主程序/Core)只通过 与本接口访问引擎,
/// 绝不直接引用引擎插件内部类型 —— 引擎可整体替换。
///
public interface IVisualEngine
{
/// 引擎显示名(设置页引擎列表与配置持久化用),如 "VisionPro"。
string EngineName { get; }
///
/// 主页多画面视图:内置画面框布局、双击放大。宿主把它放入主页画面区。
///
FrameworkElement GetMainView();
///
/// 按画面数量与排列方式重建主页多画面布局。
/// arrange:1=水平最优行列,2=垂直最优行列。
/// frameCount=0 表示无画面(宿主画面区留空)。
///
void ApplyHomeLayout(int frameCount, int arrange);
/// 标定视图(标定向导的图像操作区,随当前引擎切换)。
FrameworkElement GetCalibrationView();
/// 设置指定画面框的标题(画面名称);index 越界时静默忽略。
void SetFrameCaption(int index, string name);
/// 设置指定画面框的状态圆点显隐;index 越界时静默忽略。
void SetFrameDotVisible(int index, bool visible);
}
}