using System.Windows;
using System.Windows.Controls;
using Plugins.Halcon.Views;
using TeamAAS.Vision;
namespace Plugins.Halcon.Engines
{
///
/// HALCON 视觉引擎:实现 契约,由 VisualEngineManager 反射探测后
/// 出现在设置页引擎列表,可一键切换。主页多画面基于 (HALCON 画面框网格),
/// 与 VisionProEngine / VisionMasterEngine 对等——HALCON SDK 只被本插件引用,宿主仅通过接口访问。
///
public class HalconEngine : IVisualEngine
{
public string EngineName => "Vision";
public FrameworkElement GetMainView() => UCDispHalcon.Instance;
public void ApplyHomeLayout(int frameCount, int arrange)
{
// RowColNumber:{画面总数, 排列方式}——内部按最优行列铺设 HalconWindow 网格;0=清空画面区
UCDispHalcon.Instance.RowColNumber = new[] { frameCount, arrange };
}
///
/// 标定视图:一个 HALCON 画面框(可显示标定图像、交互绘制 ROI)。
/// 标定向导随当前引擎切换到此视图。
///
public FrameworkElement GetCalibrationView()
{
var win = new HalconWindow(1);
win.SetCaption("HALCON 标定");
return new Border
{
Background = System.Windows.Media.Brushes.Transparent,
Child = win
};
}
public void SetFrameCaption(int index, string name)
{
if (index < 0 || UCDispHalcon.Instance.halconWindow.Count <= index) return;
UCDispHalcon.Instance.halconWindow[index].SetCaption(name);
}
public void SetFrameDotVisible(int index, bool visible)
{
if (index < 0 || UCDispHalcon.Instance.halconWindow.Count <= index) return;
UCDispHalcon.Instance.halconWindow[index].SetStatusDotVisible(visible);
}
}
}