namespace OINA.Extender.WPF.Testharness
{
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using OINA.Extender;
using OINA.Extender.Acquisition.Ed;
using OINA.Extender.Acquisition.Image;
using OINA.Extender.Acquisition.Quant;
using OINA.Extender.DetectorControl;
using OINA.Extender.MonitorControl;
using OINA.Extender.Processing;
using OINA.Extender.Processing.Ed;
using OINA.Extender.Processing.Quant;
///
/// OI Helper Static Class
///
public static class OIHelper
{
///
/// IEdSpectrumAcquisitionController object
///
private static IEdSpectrumAcquisitionController edSpectrumController;
///
/// Controller for quant calibration
///
private static IQuantCalibrationController quantCalibrationController;
///
/// Settings for quant calibration
///
private static IQuantCalibrationSettings quantCalibrationSettings;
///
/// IEdSpectrumSettings object
///
private static IEdSpectrumSettings edSpectrumSettings;
///
/// IEdSpectrumProcessing object
///
private static IEdSpectrumProcessing edSpectrumProcessing;
///
/// IAutoIdSettings object
///
private static IAutoIdSettings edAutoIdSettings;
///
/// Semquantsettings object
///
private static ISEMQuantSettings semQuantSettings;
///
/// IMonitoringController object
///
private static IMonitoringController monitoringController;
///
/// IImageAcquisitionController object
///
private static IImageAcquisitionController imageController;
///
/// IImageSettings object
///
private static IImageAcquisitionSettings imageAcquisitionSettings;
///
/// IEdDetectorControl object
///
private static IEdDetectorControl edDetectorControl;
///
/// Gets EdSpectrum Acquisition Controller
///
public static IEdSpectrumAcquisitionController EdSpectrumAcquisitionController
{
get
{
if (edSpectrumController == null)
{
edSpectrumController = AcquireFactory.CreateEdSpectrumServer();
}
return edSpectrumController;
}
}
///
/// Gets QuantCalibrationController Controller
///
public static IQuantCalibrationController QuantCalibrationController
{
get
{
if (quantCalibrationController == null)
{
quantCalibrationController = AcquireFactory.CreateQuantCalibrationController();
}
return quantCalibrationController;
}
}
///
/// Gets QuantCalibrationSettings Settings
///
public static IQuantCalibrationSettings QuantCalibrationSettings
{
get
{
if (quantCalibrationSettings == null)
{
quantCalibrationSettings = AcquireFactory.CreateQuantCalibrationSettings();
}
return quantCalibrationSettings;
}
}
///
/// Gets EdSpectrum Settings
///
public static IEdSpectrumSettings EdSpectrumSettings
{
get
{
if (edSpectrumSettings == null)
{
edSpectrumSettings = AcquireFactory.CreateEdSpectrumSettings();
}
return edSpectrumSettings;
}
}
///
/// Gets EdSpectrum Processing
///
public static IEdSpectrumProcessing EdSpectrumProcessing
{
get
{
if (edSpectrumProcessing == null)
{
edSpectrumProcessing = ProcessingFactory.CreateSpectrumProcessing();
}
return edSpectrumProcessing;
}
}
///
/// Gets AutoId Settings
///
public static IAutoIdSettings AutoIdSettings
{
get
{
if (edAutoIdSettings == null)
{
edAutoIdSettings = ProcessingFactory.CreateAutoIdSettings();
}
return edAutoIdSettings;
}
}
///
/// Gets SEM Quant Settings
///
public static ISEMQuantSettings SEMQuantSettings
{
get
{
if (semQuantSettings == null)
{
semQuantSettings = ProcessingFactory.CreateSEMQuantSettings();
}
return semQuantSettings;
}
}
///
/// Gets Monitoring Controller
///
public static IMonitoringController MonitoringController
{
get
{
if (monitoringController == null)
{
monitoringController = AcquireFactory.CreateMonitorControl();
}
return monitoringController;
}
}
///
/// Gets Image Acquisition Controller
///
public static IImageAcquisitionController ImageAcquisitionController
{
get
{
if (imageController == null)
{
imageController = AcquireFactory.CreateImageServer();
}
return imageController;
}
}
///
/// Gets Image Acquisition Settings
///
public static IImageAcquisitionSettings ImageSettings
{
get
{
if (imageAcquisitionSettings == null)
{
imageAcquisitionSettings = AcquireFactory.CreateImageSettings();
}
return imageAcquisitionSettings;
}
}
///
/// Gets Image Acquisition Settings
///
public static IEdDetectorControl EDDetectorControl
{
get
{
if (edDetectorControl == null)
{
edDetectorControl = AcquireFactory.CreateEdDetectorControl()[0];
}
return edDetectorControl;
}
}
///
/// Read a file to a byte array
///
/// file path
/// byte[] data
public static byte[] FileToByteArray(string filePath)
{
if (!File.Exists(filePath))
{
throw new System.InvalidOperationException("File does not exists!");
}
FileStream fs = File.OpenRead(filePath);
{
byte[] data = new byte[fs.Length];
fs.Read(data, 0, (int)fs.Length);
fs.Close();
return data;
}
}
///
/// Save a byte array to a file
///
/// file path
/// data
public static void ByteArrayToFile(string filePath, byte[] data)
{
// If file already exists, delete it.
if (File.Exists(filePath))
{
File.Delete(filePath);
}
using (FileStream fs = File.Create(filePath))
{
fs.Write(data, 0, data.Length);
}
}
///
/// Gets a collection of scan sizes that are allowed by the pixel sizes of the ScanCapabilities.
///
/// The Minimum Pixel Size
/// The Maximum Pixel Size
/// An ICollection[double] of the scan sizes
internal static ICollection GetScanSizes(double minimumPixelSize, double maximumPixelSize)
{
var scanSizesCollection = new Collection();
int minScanSize = (int)(1d / maximumPixelSize),
maxScanSize = (int)(1d / minimumPixelSize);
int scanSize = minScanSize;
while (scanSize <= maxScanSize)
{
scanSizesCollection.Add(scanSize);
scanSize *= 2;
}
return scanSizesCollection;
}
}
}