using Hawkeye.VisionBuilder.UI.Sources.Emulation; using Hawkeye.VisionBuilder.UI.Sources.Hawkeye; using Hawkeye.VisionBuilder.UI.Sources.Raspberry.Libcamera; using Inspectron.Camera.UEye; using Ninject; using Ninject.Extensions.ChildKernel; using VisionBuilder.UI.Common; using VisionBuilder.UI.Common.Processing; namespace VisionBuilder.UI.Camera; public static class ModuleExtensions { public static IChildKernel RegisterCamera(this IChildKernel self, string cameraName) { self.Bind().ToConstant(new CameraSettings(cameraName)); self.Bind().ToConstant(new EmulationSettings(cameraName)); self.Bind().ToConstant(new HawkeyeSettings(cameraName)); self.Bind().ToConstant(new IDSImageSourceSettings(cameraName)); self.Bind().ToConstant(new LibcameraCaptureSettings(cameraName)); self.Bind().ToSelf().InSingletonScope(); return self; } private static void BindCameras(CameraSettings cameraSettings, IChildKernel kernel) { switch (cameraSettings.CameraSource) { case CameraSettings.EImageSource.Emulation: kernel.Bind().To().InSingletonScope(); break; case CameraSettings.EImageSource.Hawkeye: kernel.Bind().To().InSingletonScope(); break; case CameraSettings.EImageSource.IDS: kernel.Bind().To().InSingletonScope(); break; case CameraSettings.EImageSource.Libcamera: kernel.Bind().To().InSingletonScope(); break; case CameraSettings.EImageSource.Basler: break; default: throw new ArgumentOutOfRangeException(); } } public static IChildKernel UseCamera(this IChildKernel self) { var cameraSettings = self.Get(); BindCameras(cameraSettings, self); return self; } }