diff --git a/source/Dtos/SavedOptions.cs b/source/Dtos/SavedOptions.cs
index bf34976..5908c73 100644
--- a/source/Dtos/SavedOptions.cs
+++ b/source/Dtos/SavedOptions.cs
@@ -4,6 +4,11 @@
{
public int Version { get; set; } = 1;
+ public string Format { get; set; } = "suzumagnifier";
+
+ public bool ReadOnly { get; set; } = false;
+
+
public bool AutoStart { get; set; }
public bool HighQuality { get; set; }
@@ -16,10 +21,9 @@
public int CrosshairSize { get; set; }
- public Color CrosshairColour { get; set; }
+ public string? CrosshairColour { get; set; }
public bool ShowAlwaysOnTop { get; set; }
-
}
}
diff --git a/source/Form1.Designer.cs b/source/Form1.Designer.cs
index c8d7973..d165d64 100644
--- a/source/Form1.Designer.cs
+++ b/source/Form1.Designer.cs
@@ -44,8 +44,6 @@
toolStripSeparator3 = new ToolStripSeparator();
resetToolStripMenuItem = new ToolStripMenuItem();
toolStripMenuItem9 = new ToolStripMenuItem();
- showToolStripMenuItem = new ToolStripMenuItem();
- toolStripSeparator5 = new ToolStripSeparator();
sizeToolStripMenuItem = new ToolStripMenuItem();
smallToolStripMenuItem = new ToolStripMenuItem();
mediumToolStripMenuItem = new ToolStripMenuItem();
@@ -67,6 +65,8 @@
aboutToolStripMenuItem = new ToolStripMenuItem();
toolStripSeparator6 = new ToolStripSeparator();
exitiToolStripMenuItem = new ToolStripMenuItem();
+ toolStripMenuItem11 = new ToolStripMenuItem();
+ toolStripSeparator7 = new ToolStripSeparator();
contextMenuStrip1.SuspendLayout();
SuspendLayout();
//
@@ -115,14 +115,14 @@
// fasterToolStripMenuItem
//
fasterToolStripMenuItem.Name = "fasterToolStripMenuItem";
- fasterToolStripMenuItem.Size = new Size(180, 22);
+ fasterToolStripMenuItem.Size = new Size(100, 22);
fasterToolStripMenuItem.Text = "&Fast";
fasterToolStripMenuItem.Click += fastToolStripMenuItem_Click;
//
// highToolStripMenuItem
//
highToolStripMenuItem.Name = "highToolStripMenuItem";
- highToolStripMenuItem.Size = new Size(180, 22);
+ highToolStripMenuItem.Size = new Size(100, 22);
highToolStripMenuItem.Text = "&High";
highToolStripMenuItem.Click += highToolStripMenuItem_Click;
//
@@ -165,27 +165,15 @@
//
// toolStripMenuItem9
//
- toolStripMenuItem9.DropDownItems.AddRange(new ToolStripItem[] { showToolStripMenuItem, toolStripSeparator5, sizeToolStripMenuItem, colourToolStripMenuItem });
+ toolStripMenuItem9.DropDownItems.AddRange(new ToolStripItem[] { sizeToolStripMenuItem, colourToolStripMenuItem });
toolStripMenuItem9.Image = Resource1.crosshair;
toolStripMenuItem9.Name = "toolStripMenuItem9";
toolStripMenuItem9.Size = new Size(204, 22);
toolStripMenuItem9.Text = "Crosshair";
//
- // showToolStripMenuItem
- //
- showToolStripMenuItem.Name = "showToolStripMenuItem";
- showToolStripMenuItem.Size = new Size(180, 22);
- showToolStripMenuItem.Text = "Show";
- showToolStripMenuItem.Click += showToolStripMenuItem_Click;
- //
- // toolStripSeparator5
- //
- toolStripSeparator5.Name = "toolStripSeparator5";
- toolStripSeparator5.Size = new Size(177, 6);
- //
// sizeToolStripMenuItem
//
- sizeToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { smallToolStripMenuItem, mediumToolStripMenuItem, largeToolStripMenuItem });
+ sizeToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { toolStripMenuItem11, toolStripSeparator7, smallToolStripMenuItem, mediumToolStripMenuItem, largeToolStripMenuItem });
sizeToolStripMenuItem.Name = "sizeToolStripMenuItem";
sizeToolStripMenuItem.Size = new Size(180, 22);
sizeToolStripMenuItem.Text = "Size";
@@ -329,6 +317,18 @@
exitiToolStripMenuItem.Text = "E&xit";
exitiToolStripMenuItem.Click += exitiToolStripMenuItem_Click;
//
+ // toolStripMenuItem11
+ //
+ toolStripMenuItem11.Name = "toolStripMenuItem11";
+ toolStripMenuItem11.Size = new Size(180, 22);
+ toolStripMenuItem11.Text = "None";
+ toolStripMenuItem11.Click += toolStripMenuItem11_Click;
+ //
+ // toolStripSeparator7
+ //
+ toolStripSeparator7.Name = "toolStripSeparator7";
+ toolStripSeparator7.Size = new Size(177, 6);
+ //
// Form1
//
AutoScaleDimensions = new SizeF(96F, 96F);
@@ -364,10 +364,8 @@
private ToolStripMenuItem resetToolStripMenuItem;
private ToolStripSeparator toolStripSeparator4;
private ToolStripMenuItem toolStripMenuItem9;
- private ToolStripMenuItem showToolStripMenuItem;
private ToolStripMenuItem sizeToolStripMenuItem;
private ToolStripMenuItem colourToolStripMenuItem;
- private ToolStripSeparator toolStripSeparator5;
private ToolStripMenuItem smallToolStripMenuItem;
private ToolStripMenuItem mediumToolStripMenuItem;
private ToolStripMenuItem largeToolStripMenuItem;
@@ -382,5 +380,7 @@
private ToolStripMenuItem viewHelpToolStripMenuItem;
private ToolStripMenuItem aboutToolStripMenuItem;
private ToolStripSeparator toolStripSeparator6;
+ private ToolStripMenuItem toolStripMenuItem11;
+ private ToolStripSeparator toolStripSeparator7;
}
}
diff --git a/source/Form1.cs b/source/Form1.cs
index 9461cac..e871a05 100644
--- a/source/Form1.cs
+++ b/source/Form1.cs
@@ -28,7 +28,7 @@ namespace SuzuMagnifier
private readonly System.Windows.Forms.Timer _timer = new();
private Bitmap? _bitmap;
- private string jsonfigFilename;
+ private string _jsonfigFilename;
public Form1()
@@ -53,27 +53,31 @@ namespace SuzuMagnifier
var args = GetCommandLine()!;
- jsonfigFilename = args.Where(x => (x.Key.Equals("o") || x.Key.Equals("open"))).Select(x => x.Value).FirstOrDefault();
- if (string.IsNullOrWhiteSpace(jsonfigFilename))
+ _jsonfigFilename = args.Where(x => (x.Key.Equals("o") || x.Key.Equals("open"))).Select(x => x.Value).FirstOrDefault();
+ if (string.IsNullOrWhiteSpace(_jsonfigFilename))
{
- jsonfigFilename = Path.ChangeExtension(Application.ExecutablePath, "jsonfig");
+ _jsonfigFilename = Path.ChangeExtension(Application.ExecutablePath, "jsonfig");
}
- if (System.IO.File.Exists(jsonfigFilename))
+ if (System.IO.File.Exists(_jsonfigFilename))
{
- var newSettings = await LoadSettings(jsonfigFilename);
- if (newSettings == null)
+ this.SavedOptions = await LoadSettings(_jsonfigFilename);
+
+ this.TopMost = this.SavedOptions!.ShowAlwaysOnTop;
+ this.HighQuality = this.SavedOptions.HighQuality;
+ this.ZoomFactor = this.SavedOptions.ZoomFactor;
+ this.UpdateFrequency = this.SavedOptions.UpdateFrequency;
+ this.CrosshairSize = this.SavedOptions.CrosshairSize;
+
+ if (!string.IsNullOrWhiteSpace(this.SavedOptions.CrosshairColour))
{
- newSettings = new SavedOptions();
+ this.CrosshairColour = ColorTranslator.FromHtml(this.SavedOptions!.CrosshairColour);
}
- this.TopMost = newSettings.ShowAlwaysOnTop;
- this.HighQuality = newSettings.HighQuality;
- this.ZoomFactor = newSettings.ZoomFactor;
- //this.UpdateFrequency = newSettings.UpdateFrequency;
- this.ShowCrosshair = newSettings.ShowCrosshair;
- this.CrosshairSize = newSettings.CrosshairSize;
- this.CrosshairColour = newSettings.CrosshairColour;
+ if (this.SavedOptions!.AutoStart)
+ {
+ _timer.Start();
+ }
}
}
@@ -116,7 +120,7 @@ namespace SuzuMagnifier
g.DrawImage(_bitmap, this.ClientRectangle);
// Draw center crosshair
- if (this.ShowCrosshair)
+ if (this.CrosshairSize > 0)
{
var cx = Divide(this.Width, 2);
var cy = Divide(this.Height, 2);
@@ -181,10 +185,15 @@ namespace SuzuMagnifier
{
base.OnFormClosing(e);
+ if (this.SavedOptions.ReadOnly)
+ {
+ return;
+ }
+
var result = MessageBox.Show("Do you want to save settings to file?", "Save Settings?", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
- var result2 = await SaveSettings(jsonfigFilename);
+ var result2 = await SaveSettings(_jsonfigFilename);
if (result2)
{
return;
@@ -205,58 +214,20 @@ namespace SuzuMagnifier
}
+ [Browsable(false), EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
+ public SavedOptions SavedOptions { get => field ?? new SavedOptions(); private set => field = value; }
+
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public bool HighQuality { get; set; } = false;
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
- public int ZoomFactor
- {
- get => field;
- set
- {
- if (value < 0)
- {
- field = 1;
- return;
- }
-
- if (value > 20)
- {
- field = 20;
- return;
- }
-
- field = value;
- }
- } = 2;
+ public int ZoomFactor { get => field; set => field = Math.Clamp(value, 1, 20); } = 2;
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public int UpdateFrequency { get; set; } = 33;
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
- public bool ShowCrosshair { get; set; } = true;
-
- [Browsable(false), EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
- public int CrosshairSize
- {
- get => field;
- set
- {
- if (value < 5)
- {
- field = 5;
- return;
- }
-
- if (value > 200)
- {
- field = 200;
- return;
- }
-
- field = value;
- }
- } = 20;
+ public int CrosshairSize { get => field; set => field = Math.Clamp(value, 0, 200); } = 20;
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public Color CrosshairColour { get; set; } = Color.FromArgb(255, 255, 0);
@@ -269,18 +240,20 @@ namespace SuzuMagnifier
toolStripMenuItem5.Checked = this.TopMost;
- showToolStripMenuItem.Checked = this.ShowCrosshair;
+ toolStripMenuItem11.Checked = (this.CrosshairSize == 0);
smallToolStripMenuItem.Checked = (this.CrosshairSize == 10);
mediumToolStripMenuItem.Checked = (this.CrosshairSize == 20);
largeToolStripMenuItem.Checked = (this.CrosshairSize == 50);
- agentaToolStripMenuItem.Checked = this.CrosshairColour == Color.FromArgb(255, 0, 255);
- cyanToolStripMenuItem.Checked = this.CrosshairColour == Color.FromArgb(0, 255, 255);
- yellowToolStripMenuItem.Checked = this.CrosshairColour == Color.FromArgb(255, 255, 0);
- greenToolStripMenuItem.Checked = this.CrosshairColour == Color.FromArgb(0, 255, 0);
- redToolStripMenuItem.Checked = this.CrosshairColour == Color.FromArgb(255, 0, 0);
- blackToolStripMenuItem.Checked = this.CrosshairColour == Color.FromArgb(0, 0, 0);
- whiteToolStripMenuItem.Checked = this.CrosshairColour == Color.FromArgb(255, 255, 255);
+ resetToolStripMenuItem.Checked = (this.ZoomFactor == 1);
+
+ agentaToolStripMenuItem.Checked = (this.CrosshairColour == Color.FromArgb(255, 0, 255));
+ cyanToolStripMenuItem.Checked = (this.CrosshairColour == Color.FromArgb(0, 255, 255));
+ yellowToolStripMenuItem.Checked = (this.CrosshairColour == Color.FromArgb(255, 255, 0));
+ greenToolStripMenuItem.Checked = (this.CrosshairColour == Color.FromArgb(0, 255, 0));
+ redToolStripMenuItem.Checked = (this.CrosshairColour == Color.FromArgb(255, 0, 0));
+ blackToolStripMenuItem.Checked = (this.CrosshairColour == Color.FromArgb(0, 0, 0));
+ whiteToolStripMenuItem.Checked = (this.CrosshairColour == Color.FromArgb(255, 255, 255));
fasterToolStripMenuItem.Checked = !this.HighQuality;
fasterToolStripMenuItem.Enabled = this.HighQuality;
@@ -525,17 +498,17 @@ namespace SuzuMagnifier
}
///
- /// Crosshair, toggle
+ /// Crosshair, size, off
///
///
///
- private void showToolStripMenuItem_Click(object sender, EventArgs e)
+ private void toolStripMenuItem11_Click(object sender, EventArgs e)
{
- this.ShowCrosshair = !this.ShowCrosshair;
+ this.CrosshairSize = 0;
}
///
- /// Croisshair, size, small
+ /// Crosshair, size, small
///
///
///
@@ -545,7 +518,7 @@ namespace SuzuMagnifier
}
///
- /// Croisshair, size, medium
+ /// Crosshair, size, medium
///
///
///
@@ -555,7 +528,7 @@ namespace SuzuMagnifier
}
///
- /// Croisshair, size, large
+ /// Crosshair, size, large
///
///
///
@@ -662,32 +635,38 @@ namespace SuzuMagnifier
return null;
}
+ SavedOptions response;
try
{
- return System.Text.Json.JsonSerializer.Deserialize(sourceCode);
+ response = System.Text.Json.JsonSerializer.Deserialize(sourceCode);
}
catch (Exception)
{
return null;
}
+
+ if (!response!.Format.Equals(Resource1.FileFormat, StringComparison.CurrentCultureIgnoreCase))
+ {
+ return null;
+ }
+
+ return response;
}
private async Task SaveSettings(string filename)
{
- var result = new SavedOptions();
- result.AutoStart = false;
- result.HighQuality = this.HighQuality;
- result.ZoomFactor = this.ZoomFactor;
- result.UpdateFrequency = this.UpdateFrequency;
- result.ShowCrosshair = this.ShowCrosshair;
- result.CrosshairSize = this.CrosshairSize;
- result.CrosshairColour = this.CrosshairColour;
- result.ShowAlwaysOnTop = this.TopMost;
+ //_savedOptions.AutoStart = false;
+ this.SavedOptions.HighQuality = this.HighQuality;
+ this.SavedOptions.ZoomFactor = this.ZoomFactor;
+ this.SavedOptions.UpdateFrequency = this.UpdateFrequency;
+ this.SavedOptions.CrosshairSize = this.CrosshairSize;
+ this.SavedOptions.CrosshairColour = $"#{this.CrosshairColour.R:X2}{this.CrosshairColour.G:X2}{this.CrosshairColour.B:X2}";
+ this.SavedOptions.ShowAlwaysOnTop = this.TopMost;
string sourceCode = "";
try
{
- sourceCode = System.Text.Json.JsonSerializer.Serialize(result);
+ sourceCode = System.Text.Json.JsonSerializer.Serialize(this.SavedOptions);
}
catch (Exception)
{
diff --git a/source/Resource1.Designer.cs b/source/Resource1.Designer.cs
index fb877ce..0334797 100644
--- a/source/Resource1.Designer.cs
+++ b/source/Resource1.Designer.cs
@@ -79,6 +79,15 @@ namespace SuzuMagnifier {
}
}
+ ///
+ /// Looks up a localized string similar to suzumagnifier.
+ ///
+ internal static string FileFormat {
+ get {
+ return ResourceManager.GetString("FileFormat", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized resource of type System.Drawing.Bitmap.
///
diff --git a/source/Resource1.resx b/source/Resource1.resx
index ef1aff2..2a8eef4 100644
--- a/source/Resource1.resx
+++ b/source/Resource1.resx
@@ -124,6 +124,9 @@
Resources\crosshair.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ suzumagnifier
+
Resources\fullscreen.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
diff --git a/source/SuzuMagnifier.csproj b/source/SuzuMagnifier.csproj
index ee25419..75a2d69 100644
--- a/source/SuzuMagnifier.csproj
+++ b/source/SuzuMagnifier.csproj
@@ -6,7 +6,7 @@
true
enable
Suzu Magnifier
- 0.1.0.148
+ 0.1.0.202
Suzu Magnifier
Hi, I'm Ray
Ray Lam
@@ -15,11 +15,11 @@
true
- none
+ full
- none
+ full