* (Add) Tool - Calculator: Convert millimeters to pixels
* (Add) Tool - Calculator: Find the optimal "Ligth-Off Delay"
* (Add) Internal abstraction of display size to all file formats
* (Add) Default demo file that loads on startup when no file is specified (this can be disable/enabled on settings)
This commit is contained in:
Tiago Conceição
2020-10-14 18:41:30 +01:00
parent 4230f8753d
commit 89f5df35a8
41 changed files with 1957 additions and 49 deletions
+3
View File
@@ -271,6 +271,9 @@
<setting name="LayerRepairRemoveIslandsRecursiveIterations" serializeAs="String">
<value>4</value>
</setting>
<setting name="LoadDemoFileOnStartup" serializeAs="String">
<value>True</value>
</setting>
</UVtools.GUI.Properties.Settings>
</userSettings>
</configuration>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,201 @@
/*
* GNU AFFERO GENERAL PUBLIC LICENSE
* Version 3, 19 November 2007
* Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
* Everyone is permitted to copy and distribute verbatim copies
* of this license document, but changing it is not allowed.
*/
using System;
using System.Drawing;
using System.Globalization;
using UVtools.Core;
using UVtools.Core.FileFormats;
using UVtools.Core.Operations;
namespace UVtools.GUI.Controls.Tools
{
public partial class CtrlToolCalculator : CtrlToolWindowContent
{
public OperationCalculator Operation { get; }
public CtrlToolCalculator()
{
InitializeComponent();
Operation = new OperationCalculator
{
CalcMillimetersToPixels = new OperationCalculator.MillimetersToPixels(Program.SlicerFile.Resolution, Program.SlicerFile.Display),
CalcLightOffDelay = new OperationCalculator.LightOffDelayC(
(decimal) Program.SlicerFile.LiftHeight, (decimal) Program.SlicerFile.BottomLiftHeight,
(decimal) Program.SlicerFile.LiftSpeed, (decimal) Program.SlicerFile.BottomLiftSpeed,
(decimal) Program.SlicerFile.RetractSpeed, (decimal)Program.SlicerFile.RetractSpeed)
};
SetOperation(Operation);
tpMillimetersToPixels.Tag = Operation.CalcMillimetersToPixels;
tpLightOffDelay.Tag = Operation.CalcMillimetersToPixels;
lbMMtoPixelsDescription.Text = Operation.CalcMillimetersToPixels.Description;
lbMMtoPixelsDescription.Text += $"\n\nFormula: {Operation.CalcMillimetersToPixels.Formula}";
lbMMtoPixelsDescription.MaximumSize = new Size(Width - 20, 0);
lbLightOffDelayDescription.Text = Operation.CalcLightOffDelay.Description;
lbLightOffDelayDescription.Text += $"\n\nFormula: {Operation.CalcLightOffDelay.Formula}";
lbLightOffDelayDescription.MaximumSize = new Size(Width - 20, 0);
nmMMtoPXResolutionX.Value = Program.SlicerFile.ResolutionX;
nmMMtoPXResolutionY.Value = Program.SlicerFile.ResolutionY;
nmMMtoPXDisplayWidth.Value = (decimal) Program.SlicerFile.DisplayWidth;
nmMMtoPXDisplayHeight.Value = (decimal) Program.SlicerFile.DisplayHeight;
nmMMtoPXInputMillimeters.Value = Operation.CalcMillimetersToPixels.Millimeters;
Operation.CalcMillimetersToPixels.PropertyChanged += (sender, e) =>
{
if(e.PropertyName == nameof(Operation.CalcMillimetersToPixels.PixelsX)
|| e.PropertyName == nameof(Operation.CalcMillimetersToPixels.PixelsY))
CalculateMillimetersToPixels();
};
nmLightOffDelayLiftHeight.Value = (decimal) Program.SlicerFile.LiftHeight;
nmLightOffDelayBottomLiftHeight.Value = (decimal) Program.SlicerFile.BottomLiftHeight;
nmLightOffDelayLiftSpeed.Value = (decimal) Program.SlicerFile.LiftSpeed;
nmLightOffDelayBottomLiftSpeed.Value = (decimal) Program.SlicerFile.BottomLiftSpeed;
nmLightOffDelayBottomRetract.Value = nmLightOffDelayRetract.Value = (decimal) Program.SlicerFile.RetractSpeed;
nmLightOffDelayWaitTime.Value = Operation.CalcLightOffDelay.WaitTime;
nmLightOffDelayBottomWaitTime.Value = Operation.CalcLightOffDelay.BottomWaitTime;
lbLightOffDelayCurrentValue.Text = $"Current value: {Program.SlicerFile.LayerOffTime}";
lbLightOffDelayCurrentBottomValue.Text = $"Current value: {Program.SlicerFile.BottomLayerOffTime}";
Operation.CalcLightOffDelay.PropertyChanged += (sender, e) =>
{
if (e.PropertyName == nameof(Operation.CalcLightOffDelay.LightOffDelay)
|| e.PropertyName == nameof(Operation.CalcLightOffDelay.BottomLightOffDelay))
CalculateLightOffDelay();
};
CalculateMillimetersToPixels();
CalculateLightOffDelay();
}
private void CalculateMillimetersToPixels()
{
tbMMtoPXResultPixelsPerMillimeterX.Text = Operation.CalcMillimetersToPixels.PixelsPerMillimeterX.ToString(CultureInfo.InvariantCulture);
tbMMtoPXResultPixelsPerMillimeterY.Text = Operation.CalcMillimetersToPixels.PixelsPerMillimeterY.ToString(CultureInfo.InvariantCulture);
tbMMtoPXResultPixelsX.Text = Operation.CalcMillimetersToPixels.PixelsX.ToString(CultureInfo.InvariantCulture);
tbMMtoPXResultPixelsY.Text = Operation.CalcMillimetersToPixels.PixelsY.ToString(CultureInfo.InvariantCulture);
}
private void CalculateLightOffDelay()
{
tbLightOffDelay.Text = Operation.CalcLightOffDelay.LightOffDelay.ToString(CultureInfo.InvariantCulture);
tbLightOffDelayBottom.Text = Operation.CalcLightOffDelay.BottomLightOffDelay.ToString(CultureInfo.InvariantCulture);
}
private void EventValueChanged(object sender, EventArgs e)
{
// Millimeters to pixels
if (ReferenceEquals(sender, nmMMtoPXResolutionX))
{
Operation.CalcMillimetersToPixels.ResolutionX = (uint) nmMMtoPXResolutionX.Value;
return;
}
if (ReferenceEquals(sender, nmMMtoPXResolutionY))
{
Operation.CalcMillimetersToPixels.ResolutionY = (uint)nmMMtoPXResolutionY.Value;
return;
}
if (ReferenceEquals(sender, nmMMtoPXDisplayWidth))
{
Operation.CalcMillimetersToPixels.DisplayWidth = nmMMtoPXDisplayWidth.Value;
return;
}
if (ReferenceEquals(sender, nmMMtoPXDisplayHeight))
{
Operation.CalcMillimetersToPixels.DisplayHeight = nmMMtoPXDisplayHeight.Value;
return;
}
if (ReferenceEquals(sender, nmMMtoPXInputMillimeters))
{
Operation.CalcMillimetersToPixels.Millimeters = nmMMtoPXInputMillimeters.Value;
return;
}
// Light-Off Delay
if (ReferenceEquals(sender, nmLightOffDelayLiftHeight))
{
Operation.CalcLightOffDelay.LiftHeight = nmLightOffDelayLiftHeight.Value;
return;
}
if (ReferenceEquals(sender, nmLightOffDelayBottomLiftHeight))
{
Operation.CalcLightOffDelay.BottomLiftHeight = nmLightOffDelayBottomLiftHeight.Value;
return;
}
if (ReferenceEquals(sender, nmLightOffDelayLiftSpeed))
{
Operation.CalcLightOffDelay.LiftSpeed = nmLightOffDelayLiftSpeed.Value;
return;
}
if (ReferenceEquals(sender, nmLightOffDelayBottomLiftSpeed))
{
Operation.CalcLightOffDelay.BottomLiftSpeed = nmLightOffDelayBottomLiftSpeed.Value;
return;
}
if (ReferenceEquals(sender, nmLightOffDelayRetract))
{
nmLightOffDelayBottomRetract.Value = Operation.CalcLightOffDelay.RetractSpeed = nmLightOffDelayRetract.Value;
return;
}
if (ReferenceEquals(sender, nmLightOffDelayBottomRetract))
{
Operation.CalcLightOffDelay.BottomRetractSpeed = nmLightOffDelayBottomRetract.Value;
return;
}
if (ReferenceEquals(sender, nmLightOffDelayWaitTime))
{
Operation.CalcLightOffDelay.WaitTime = nmLightOffDelayWaitTime.Value;
return;
}
if (ReferenceEquals(sender, nmLightOffDelayBottomWaitTime))
{
Operation.CalcLightOffDelay.BottomWaitTime = nmLightOffDelayBottomWaitTime.Value;
return;
}
}
private void EventClick(object sender, EventArgs e)
{
if (ReferenceEquals(sender, btnLightOffDelaySetParameter))
{
Program.SlicerFile.LiftHeight = (float) Operation.CalcLightOffDelay.LiftHeight;
Program.SlicerFile.LiftSpeed = (float) Operation.CalcLightOffDelay.LiftSpeed;
Program.SlicerFile.RetractSpeed = (float) Operation.CalcLightOffDelay.RetractSpeed;
Program.SlicerFile.LayerOffTime = (float) Operation.CalcLightOffDelay.LightOffDelay;
Program.FrmMain.CanSave = true;
lbLightOffDelayCurrentValue.Text = $"Current value: {Program.SlicerFile.LayerOffTime}";
return;
}
if (ReferenceEquals(sender, btnLightOffDelaySetBottomParameter))
{
Program.SlicerFile.BottomLiftHeight = (float)Operation.CalcLightOffDelay.BottomLiftHeight;
Program.SlicerFile.BottomLiftSpeed = (float)Operation.CalcLightOffDelay.BottomLiftSpeed;
Program.SlicerFile.BottomLayerOffTime = (float)Operation.CalcLightOffDelay.BottomLightOffDelay;
Program.FrmMain.CanSave = true;
lbLightOffDelayCurrentBottomValue.Text = $"Current value: {Program.SlicerFile.BottomLayerOffTime}";
return;
}
}
}
}
@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>
+15 -2
View File
@@ -187,6 +187,7 @@
this.cbLayerRepairLayersIslands = new System.Windows.Forms.CheckBox();
this.pnActions = new System.Windows.Forms.Panel();
this.toolTip = new System.Windows.Forms.ToolTip(this.components);
this.cbLoadDemoFileOnStartup = new System.Windows.Forms.CheckBox();
this.groupBox3.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.nmResinTrapBinaryThreshold)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.nmResinTrapMaximumPixelBrightnessToDrain)).BeginInit();
@@ -782,7 +783,7 @@
this.groupBox5.Controls.Add(this.label27);
this.groupBox5.Controls.Add(this.tbFileSaveNamePreffix);
this.groupBox5.Dock = System.Windows.Forms.DockStyle.Top;
this.groupBox5.Location = new System.Drawing.Point(3, 93);
this.groupBox5.Location = new System.Drawing.Point(3, 123);
this.groupBox5.Name = "groupBox5";
this.groupBox5.Size = new System.Drawing.Size(655, 276);
this.groupBox5.TabIndex = 54;
@@ -1020,12 +1021,13 @@
//
// groupBox4
//
this.groupBox4.Controls.Add(this.cbLoadDemoFileOnStartup);
this.groupBox4.Controls.Add(this.cbStartMaximized);
this.groupBox4.Controls.Add(this.cbCheckForUpdatesOnStartup);
this.groupBox4.Dock = System.Windows.Forms.DockStyle.Top;
this.groupBox4.Location = new System.Drawing.Point(3, 3);
this.groupBox4.Name = "groupBox4";
this.groupBox4.Size = new System.Drawing.Size(655, 90);
this.groupBox4.Size = new System.Drawing.Size(655, 120);
this.groupBox4.TabIndex = 15;
this.groupBox4.TabStop = false;
this.groupBox4.Text = "Startup";
@@ -2332,6 +2334,16 @@
this.toolTip.ToolTipIcon = System.Windows.Forms.ToolTipIcon.Info;
this.toolTip.ToolTipTitle = "Information";
//
// cbLoadDemoFileOnStartup
//
this.cbLoadDemoFileOnStartup.AutoSize = true;
this.cbLoadDemoFileOnStartup.Location = new System.Drawing.Point(6, 79);
this.cbLoadDemoFileOnStartup.Name = "cbLoadDemoFileOnStartup";
this.cbLoadDemoFileOnStartup.Size = new System.Drawing.Size(361, 22);
this.cbLoadDemoFileOnStartup.TabIndex = 8;
this.cbLoadDemoFileOnStartup.Text = "Loads a demo file on startup if no file was specified";
this.cbLoadDemoFileOnStartup.UseVisualStyleBackColor = true;
//
// FrmSettings
//
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
@@ -2561,5 +2573,6 @@
private System.Windows.Forms.CheckBox cbOverhangIndependentFromIslands;
private System.Windows.Forms.NumericUpDown nmOverhangErodeIterations;
private System.Windows.Forms.Label label48;
private System.Windows.Forms.CheckBox cbLoadDemoFileOnStartup;
}
}
+4 -2
View File
@@ -38,8 +38,9 @@ namespace UVtools.GUI.Forms
try
{
// General
cbCheckForUpdatesOnStartup.Checked = Settings.Default.CheckForUpdatesOnStartup;
cbStartMaximized.Checked = Settings.Default.StartMaximized;
cbCheckForUpdatesOnStartup.Checked = Settings.Default.CheckForUpdatesOnStartup;
cbLoadDemoFileOnStartup.Checked = Settings.Default.LoadDemoFileOnStartup;
cbDefaultOpenFileExtension.SelectedIndex = Settings.Default.DefaultOpenFileExtension;
tbFileOpenDefaultDirectory.Text = Settings.Default.FileOpenDefaultDirectory;
tbFileSaveDefaultDirectory.Text = Settings.Default.FileSaveDefaultDirectory;
@@ -235,8 +236,9 @@ namespace UVtools.GUI.Forms
if (ReferenceEquals(sender, btnSave))
{
// General
Settings.Default.CheckForUpdatesOnStartup = cbCheckForUpdatesOnStartup.Checked;
Settings.Default.StartMaximized = cbStartMaximized.Checked;
Settings.Default.CheckForUpdatesOnStartup = cbCheckForUpdatesOnStartup.Checked;
Settings.Default.LoadDemoFileOnStartup = cbLoadDemoFileOnStartup.Checked;
Settings.Default.DefaultOpenFileExtension = (byte) cbDefaultOpenFileExtension.SelectedIndex;
Settings.Default.FileOpenDefaultDirectory = tbFileOpenDefaultDirectory.Text;
Settings.Default.FileSaveDefaultDirectory = tbFileSaveDefaultDirectory.Text;
+5
View File
@@ -184,6 +184,11 @@ namespace UVtools.GUI.Forms
btnOk.Enabled = content.ButtonOkEnabled;
//content.AutoSize = true;
if (string.IsNullOrEmpty(content.ButtonOkText))
{
btnOk.Visible = false;
}
if (!content.CanROI)
{
pnROI.Visible = false;
+20 -7
View File
@@ -63,6 +63,7 @@ namespace UVtools.GUI
new OperationMenuItem(new OperationPattern(), Resources.pattern_16x16),
new OperationMenuItem(new OperationLayerReHeight(), Resources.ladder_16x16),
new OperationMenuItem(new OperationChangeResolution(), Resources.resize_16x16),
new OperationMenuItem(new OperationCalculator(), Resources.calculator_16x16),
};
public static readonly OperationMenuItem[] LayerActions = {
@@ -135,6 +136,12 @@ namespace UVtools.GUI
// Track last open tab for when PixelEditor tab is removed.
public TabPage ControlLeftLastTab { get; set; }
public bool CanSave
{
get => menuFileSave.Enabled;
set => menuFileSave.Enabled = value;
}
public uint SavesCount { get; set; }
private bool SupressLayerZoomEvent { get; set; }
@@ -329,6 +336,11 @@ namespace UVtools.GUI
base.OnShown(e);
AddLog("UVtools Start");
ProcessFile(Program.Args);
if (SlicerFile is null && Settings.Default.LoadDemoFileOnStartup)
{
ProcessFile(About.DemoFile);
}
}
protected override void OnKeyPress(KeyPressEventArgs e)
@@ -824,7 +836,7 @@ namespace UVtools.GUI
SlicerFile.SetThumbnail(i, fileOpen.FileName);
pbThumbnail.Image = SlicerFile.Thumbnails[i].ToBitmap();
SlicerFile.RequireFullEncode = true;
menuFileSave.Enabled = true;
CanSave = true;
}
}
@@ -1169,7 +1181,7 @@ namespace UVtools.GUI
//ShowLayer(); // It will call latter so its a extra call
UpdateIssuesInfo();
menuFileSave.Enabled = true;
CanSave = true;
return;
}
@@ -1872,6 +1884,7 @@ namespace UVtools.GUI
void ProcessFile(string fileName, uint actualLayer = 0)
{
if (!File.Exists(fileName)) return;
Clear();
var fileNameOnly = Path.GetFileName(fileName);
@@ -2106,7 +2119,7 @@ namespace UVtools.GUI
if (task.Result)
{
SavesCount++;
menuFileSave.Enabled = false;
CanSave = false;
UpdateTitle();
}
@@ -3547,7 +3560,7 @@ namespace UVtools.GUI
pbLayer.Invalidate();
//pbLayer.Update();
//pbLayer.Refresh();
//menuFileSave.Enabled = menuFileSaveAs.Enabled = true;
//CanSavemenuFileSaveAs.Enabled = true;
//sw.Stop();
//Debug.WriteLine(sw.ElapsedMilliseconds);
}
@@ -4011,7 +4024,7 @@ namespace UVtools.GUI
RefreshPixelHistory();
ShowLayer();
menuFileSave.Enabled = true;
CanSave = true;
}
private void UpdateIslandsOverhangs(List<uint> whiteListLayers)
@@ -4209,7 +4222,7 @@ namespace UVtools.GUI
SlicerFile.SetValuesFromPrintParametersModifiers();
RefreshInfo();
menuFileSave.Enabled = true;
CanSave = true;
return false;
case OperationRepairLayers operation:
@@ -4349,7 +4362,7 @@ namespace UVtools.GUI
UpdateLayerLimits();
RefreshInfo();
menuFileSave.Enabled = true;
CanSave = true;
switch (baseOperation)
{
+1 -1
View File
@@ -174,7 +174,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABk
FAAAAk1TRnQBSQFMAgEBBgEAASgBDAEoAQwBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
FAAAAk1TRnQBSQFMAgEBBgEAATABDAEwAQwBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
AwABIAMAAQEBAAEgBgABIC4AAxgBIgMwAUsDMAFMAzIBUDMAAQEDJAE2AysBQqwAAyIBMQNWAbkDXQHi
AwAB/wMAAf8BKgEtASgB/gNTAawDTQGVAwABARgAAwkBDAMzAVIDUAGdA1cB6AMAAf4DKwH8Ay8BSqQA
AyEBMANZAewBKwEuASkB+gNRAfcDUgH0A1MB8QNIAfYDQQH5AwAB/wNPAZsDAAEBCAADFQEdAz8BbgNV
Binary file not shown.

After

Width:  |  Height:  |  Size: 119 B

+2 -2
View File
@@ -35,5 +35,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("0.8.4.4")]
[assembly: AssemblyFileVersion("0.8.4.4")]
[assembly: AssemblyVersion("0.8.5.0")]
[assembly: AssemblyFileVersion("0.8.5.0")]
+10
View File
@@ -170,6 +170,16 @@ namespace UVtools.GUI.Properties {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap calculator_16x16 {
get {
object obj = ResourceManager.GetObject("calculator-16x16", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
+30 -27
View File
@@ -133,21 +133,12 @@
<data name="island-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\island-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ladder-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\ladder-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="filter-filled-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\filter-filled-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="layers-alt-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\layers-alt-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="mask-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\mask-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Back-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\Back-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="move-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\move-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@@ -208,12 +199,18 @@
<data name="mutation_dilation" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\gui\mutation_dilation.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="square-root-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\square-root-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="File-Refresh-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\File-Refresh-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="SaveAs-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\SaveAs-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="pixel-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\pixel-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="mutation_tophat" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\gui\mutation_tophat.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@@ -253,6 +250,9 @@
<data name="checkbox-marked-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\checkbox-marked-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="burn-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\burn-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="minus_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\minus_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@@ -265,12 +265,12 @@
<data name="trash-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\trash-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="accept-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\accept-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="file-image-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\file-image-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Geometry-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\Geometry-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="refresh-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\refresh-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@@ -292,11 +292,17 @@
<data name="bowling-ball-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\bowling-ball-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="file-import-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\file-import-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="square-solid-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\square-solid-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="burn-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\burn-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="chessboard-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\chessboard-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="filter-filled-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\filter-filled-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="arrow-down-double-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\arrow-down-double-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@@ -307,14 +313,11 @@
<data name="Button-Info-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\Button-Info-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="plus-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\plus-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Global-Network-icon-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\Global-Network-icon-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="file-import-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\file-import-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="plus-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\plus-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="pixel_edit" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\pixel_edit.cur;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
@@ -346,8 +349,8 @@
<data name="expand-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\expand-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Geometry-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\Geometry-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="accept-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\accept-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="copy_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\copy_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@@ -367,11 +370,11 @@
<data name="eye-24x24" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\eye-24x24.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="pixel-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\pixel-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="ladder-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\ladder-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="chessboard-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\chessboard-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="Back-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\Back-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="object-group-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\object-group-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@@ -379,7 +382,7 @@
<data name="expand-alt-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\expand-alt-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="square-root-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\square-root-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="calculator-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\calculator-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>
+12
View File
@@ -982,5 +982,17 @@ namespace UVtools.GUI.Properties {
this["LayerRepairRemoveIslandsRecursiveIterations"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool LoadDemoFileOnStartup {
get {
return ((bool)(this["LoadDemoFileOnStartup"]));
}
set {
this["LoadDemoFileOnStartup"] = value;
}
}
}
}
+3
View File
@@ -242,5 +242,8 @@
<Setting Name="LayerRepairRemoveIslandsRecursiveIterations" Type="System.Int16" Scope="User">
<Value Profile="(Default)">4</Value>
</Setting>
<Setting Name="LoadDemoFileOnStartup" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
</Settings>
</SettingsFile>
+14
View File
@@ -192,6 +192,12 @@
<Compile Include="Controls\Tools\CtrlToolEditEditParameters.Designer.cs">
<DependentUpon>CtrlToolEditEditParameters.cs</DependentUpon>
</Compile>
<Compile Include="Controls\Tools\CtrlToolCalculator.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\Tools\CtrlToolCalculator.Designer.cs">
<DependentUpon>CtrlToolCalculator.cs</DependentUpon>
</Compile>
<Compile Include="Controls\Tools\CtrlToolRepairLayers.cs">
<SubType>UserControl</SubType>
</Compile>
@@ -368,6 +374,9 @@
<EmbeddedResource Include="Controls\Tools\CtrlToolEditEditParameters.resx">
<DependentUpon>CtrlToolEditEditParameters.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\Tools\CtrlToolCalculator.resx">
<DependentUpon>CtrlToolCalculator.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\Tools\CtrlToolRepairLayers.resx">
<DependentUpon>CtrlToolRepairLayers.cs</DependentUpon>
</EmbeddedResource>
@@ -463,6 +472,10 @@
<None Include="..\README.md">
<Link>README.md</Link>
</None>
<None Include="..\UVtools.CAD\UVtools_demo_file.sl1">
<Link>UVtools_demo_file.sl1</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
@@ -522,6 +535,7 @@
<None Include="Images\sync-16x16.png" />
<None Include="Images\object-group-16x16.png" />
<None Include="Images\square-root-16x16.png" />
<None Include="Images\calculator-16x16.png" />
<Content Include="Resources\pixel_edit.cur" />
<Content Include="UVtools.ico" />
<None Include="UVtools.png" />