using System;
using System.Drawing;
using System.Globalization;
using System.IO;
namespace LensAdjustmentTool.Configuration
{
public static class AppSettings
{
public const int ExpectedFrameWidth = 3072;
public const int ExpectedFrameHeight = 2048;
public const double ApertureTarget = 225.0;
public static readonly Rectangle FocusRoi =
new Rectangle(2135, 800, 400, 600);
public static readonly Rectangle ApertureDisplayRoi =
new Rectangle(860, 625, 1280, 960);
public static readonly Rectangle ApertureCalculationRoi =
new Rectangle(950, 1150, 128, 128);
public const int ApertureRoiMoveStep = 5;
public static Rectangle ApertureCalculationRoiRelativeToDisplay =>
new Rectangle(
ApertureCalculationRoi.X - ApertureDisplayRoi.X,
ApertureCalculationRoi.Y - ApertureDisplayRoi.Y,
ApertureCalculationRoi.Width,
ApertureCalculationRoi.Height);
public const int SinkBufferCount = 5;
public const int UiRefreshIntervalMs = 33;
public const string DeviceProfileRelativePath = @"Config\DFK33UX178.xml";
public const string ExpectedDeviceNameFragment = "DFK 33UX178";
}
public sealed class ApertureRoiSettingsStore
{
private const string FileName = "ApertureRoi.txt";
private string FilePath => Path.Combine(AppDomain.CurrentDomain.BaseDirectory, FileName);
public Rectangle? Load()
{
if (!File.Exists(FilePath))
return null;
string text = File.ReadAllText(FilePath).Trim();
string[] parts = text.Split(',');
if (parts.Length != 4)
return null;
int x;
int y;
int width;
int height;
if (!int.TryParse(parts[0], NumberStyles.Integer, CultureInfo.InvariantCulture, out x) ||
!int.TryParse(parts[1], NumberStyles.Integer, CultureInfo.InvariantCulture, out y) ||
!int.TryParse(parts[2], NumberStyles.Integer, CultureInfo.InvariantCulture, out width) ||
!int.TryParse(parts[3], NumberStyles.Integer, CultureInfo.InvariantCulture, out height))
{
return null;
}
return new Rectangle(x, y, width, height);
}
public void Save(Rectangle roi)
{
string text = string.Join(",",
roi.X.ToString(CultureInfo.InvariantCulture),
roi.Y.ToString(CultureInfo.InvariantCulture),
roi.Width.ToString(CultureInfo.InvariantCulture),
roi.Height.ToString(CultureInfo.InvariantCulture));
File.WriteAllText(FilePath, text);
}
}
}