* (Add) Menu - Help - Benchmark: Run benchmark test to measure system performance
* (Fix) Properties listview trigger an error when there are no groups to show
* (Fix) Elfin: "(Number of Slices = x)" to ";Number of Slices = x" (#24)
This commit is contained in:
Tiago Conceição
2020-08-27 03:15:20 +01:00
parent ba5b52791e
commit 4e4f3caffa
18 changed files with 3837 additions and 859 deletions
+6
View File
@@ -1,5 +1,11 @@
# Changelog
## 27/08/2020 - v0.6.7.1
* (Add) Menu - Help - Benchmark: Run benchmark test to measure system performance
* (Fix) Properties listview trigger an error when there are no groups to show
* (Fix) Elfin: "(Number of Slices = x)" to ";Number of Slices = x" (#24)
## 21/08/2020 - v0.6.7.0
* (Add) Tool: Layer Clone
+9 -1
View File
@@ -601,7 +601,15 @@ G1 Z-3.9 F120
{
var displayNameAttribute = propertyInfo.GetCustomAttributes(false).OfType<DisplayNameAttribute>().FirstOrDefault();
if (ReferenceEquals(displayNameAttribute, null)) continue;
GCode.AppendLine($";({displayNameAttribute.DisplayName.PadRight(24)} = {propertyInfo.GetValue(OutputSettings)})");
if (propertyInfo.Name.Equals(nameof(OutputSettings.LayersNum)))
{
GCode.AppendLine($";{displayNameAttribute.DisplayName.PadRight(24)} = {propertyInfo.GetValue(OutputSettings)}");
}
else
{
GCode.AppendLine($";({displayNameAttribute.DisplayName.PadRight(24)} = {propertyInfo.GetValue(OutputSettings)})");
}
}
GCode.AppendLine();
GCode.AppendFormat(GCodeStart, Environment.NewLine);
+16 -26
View File
@@ -875,30 +875,19 @@ namespace UVtools.Core
}
}
if (islandConfig.BinaryThreshold > 0)
{
CvInvoke.Threshold(image, image, islandConfig.BinaryThreshold, 255,
ThresholdType.Binary);
}
using (Mat labels = new Mat())
using (Mat stats = new Mat())
using (Mat centroids = new Mat())
{
if (islandConfig.BinaryThreshold > 0)
{
CvInvoke.Threshold(image, image, islandConfig.BinaryThreshold, 255, ThresholdType.Binary);
/*using (var thresholdImage = new Mat())
{
CvInvoke.Threshold(image, thresholdImage, islandConfig.BinaryThreshold, 255, ThresholdType.Binary);
// Evaluate number of connected components using the 4-connected neighbor approach
numLabels = CvInvoke.ConnectedComponentsWithStats(thresholdImage, labels, stats, centroids,
islandConfig.AllowDiagonalBonds ? LineType.EightConnected : LineType.FourConnected);
}*/
}
/*else
{
// Evaluate number of connected components 4-connected neighbor approach
numLabels = CvInvoke.ConnectedComponentsWithStats(image, labels, stats, centroids,
islandConfig.AllowDiagonalBonds ? LineType.EightConnected : LineType.FourConnected);
}*/
var numLabels = CvInvoke.ConnectedComponentsWithStats(image, labels, stats, centroids,
islandConfig.AllowDiagonalBonds ? LineType.EightConnected : LineType.FourConnected);
// Get array that contains details of each connected component
var ccStats = stats.GetData();
//stats[i][0]: Left Edge of Connected Component
@@ -1012,6 +1001,7 @@ namespace UVtools.Core
{
if ((int) arr.GetValue(0, i, 2) != -1 || (int) arr.GetValue(0, i, 3) == -1)
continue;
var rect = CvInvoke.BoundingRectangle(contours[i]);
if(rect.GetArea() < resinTrapConfig.RequiredAreaToProcessCheck) continue;
@@ -1574,7 +1564,7 @@ namespace UVtools.Core
if (ReferenceEquals(progress, null)) progress = new OperationProgress();
progress.Reset("Drawings", (uint) pixelHistory.Count);
ConcurrentDictionary<uint, Mat> modfiedLayers = new ConcurrentDictionary<uint, Mat>();
ConcurrentDictionary<uint, Mat> modifiedLayers = new ConcurrentDictionary<uint, Mat>();
for (var i = 0; i < pixelHistory.Count; i++)
{
var operation = pixelHistory[i];
@@ -1584,7 +1574,7 @@ namespace UVtools.Core
if (operation.OperationType == PixelOperation.PixelOperationType.Drawing)
{
var operationDrawing = (PixelDrawing) operation;
var mat = modfiedLayers.GetOrAdd(operation.LayerIndex, u => this[operation.LayerIndex].LayerMat);
var mat = modifiedLayers.GetOrAdd(operation.LayerIndex, u => this[operation.LayerIndex].LayerMat);
if (operationDrawing.BrushSize == 1)
{
@@ -1608,13 +1598,13 @@ namespace UVtools.Core
else if (operation.OperationType == PixelOperation.PixelOperationType.Text)
{
var operationText = (PixelText)operation;
var mat = modfiedLayers.GetOrAdd(operation.LayerIndex, u => this[operation.LayerIndex].LayerMat);
var mat = modifiedLayers.GetOrAdd(operation.LayerIndex, u => this[operation.LayerIndex].LayerMat);
CvInvoke.PutText(mat, operationText.Text, operationText.Location, operationText.Font, operationText.FontScale, new MCvScalar(operationText.Color), operationText.Thickness, operationText.LineType, operationText.Mirror);
}
else if (operation.OperationType == PixelOperation.PixelOperationType.Eraser)
{
var mat = modfiedLayers.GetOrAdd(operation.LayerIndex, u => this[operation.LayerIndex].LayerMat);
var mat = modifiedLayers.GetOrAdd(operation.LayerIndex, u => this[operation.LayerIndex].LayerMat);
if (ReferenceEquals(layerContours, null))
{
@@ -1642,7 +1632,7 @@ namespace UVtools.Core
int drawnLayers = 0;
for (int operationLayer = (int)operation.LayerIndex-1; operationLayer >= 0; operationLayer--)
{
var mat = modfiedLayers.GetOrAdd((uint) operationLayer, u => this[operationLayer].LayerMat);
var mat = modifiedLayers.GetOrAdd((uint) operationLayer, u => this[operationLayer].LayerMat);
int radius = (operationLayer > 10 ? Math.Min(operationSupport.TipDiameter + drawnLayers, operationSupport.PillarDiameter) : operationSupport.BaseDiameter) / 2;
uint whitePixels;
@@ -1677,7 +1667,7 @@ namespace UVtools.Core
var operationDrainHole = (PixelDrainHole)operation;
for (int operationLayer = (int)operation.LayerIndex; operationLayer >= 0; operationLayer--)
{
var mat = modfiedLayers.GetOrAdd((uint)operationLayer, u => this[operationLayer].LayerMat);
var mat = modifiedLayers.GetOrAdd((uint)operationLayer, u => this[operationLayer].LayerMat);
int radius = operationDrainHole.Diameter / 2;
uint blackPixels;
@@ -1715,8 +1705,8 @@ namespace UVtools.Core
progress++;
}
progress.Reset("Saving", (uint) modfiedLayers.Count);
Parallel.ForEach(modfiedLayers, (modfiedLayer, state) =>
progress.Reset("Saving", (uint) modifiedLayers.Count);
Parallel.ForEach(modifiedLayers, (modfiedLayer, state) =>
{
this[modfiedLayer.Key].LayerMat = modfiedLayer.Value;
modfiedLayer.Value.Dispose();
+3 -3
View File
@@ -10,12 +10,12 @@
<RepositoryUrl>https://github.com/sn4k3/UVtools</RepositoryUrl>
<PackageProjectUrl>https://github.com/sn4k3/UVtools</PackageProjectUrl>
<Description>MSLA/DLP, file analysis, repair, conversion and manipulation</Description>
<Version>0.6.6.1</Version>
<Version>0.6.7.1</Version>
<Copyright>Copyright © 2020 PTRTECH</Copyright>
<PackageIcon>UVtools.png</PackageIcon>
<Platforms>AnyCPU;x64</Platforms>
<AssemblyVersion>0.6.7.0</AssemblyVersion>
<FileVersion>0.6.7.0</FileVersion>
<AssemblyVersion>0.6.7.1</AssemblyVersion>
<FileVersion>0.6.7.1</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
+1 -2
View File
@@ -189,8 +189,7 @@
<setting name="LayerRepairRemoveEmptyLayers" serializeAs="String">
<value>True</value>
</setting>
<setting name="LayerRepairRemoveIslandsBelowEqualPixelsDefault"
serializeAs="String">
<setting name="LayerRepairRemoveIslandsBelowEqualPixelsDefault" serializeAs="String">
<value>10</value>
</setting>
<setting name="PartialUpdateIslandsOnEditing" serializeAs="String">
+27
View File
@@ -0,0 +1,27 @@
namespace UVtools.GUI.Controls
{
public sealed class BenchmarkTest
{
public const string DEVCPU = "Intel® Core™ i9-9900K @ 3.60 GHz";
public const string DEVRAM = "G.SKILL Trident Z 32GB DDR4-3200MHz CL14";
public BenchmarkTest(string name, string functionName, float devSingleThreadResult = 0, float devMultiThreadResult = 0)
{
Name = name;
FunctionName = functionName;
DevSingleThreadResult = devSingleThreadResult;
DevMultiThreadResult = devMultiThreadResult;
}
public string Name { get; }
public string FunctionName { get; }
public float DevSingleThreadResult { get; }
public float DevMultiThreadResult { get; }
public override string ToString()
{
return $"{Name}";
}
}
}
+232
View File
@@ -0,0 +1,232 @@
namespace UVtools.GUI.Forms
{
partial class FrmBenchmark
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmBenchmark));
this.label1 = new System.Windows.Forms.Label();
this.panel3 = new System.Windows.Forms.Panel();
this.lbDescription = new System.Windows.Forms.Label();
this.cbTest = new System.Windows.Forms.ComboBox();
this.lbSingleThreadResults = new System.Windows.Forms.Label();
this.lbMultiThreadResults = new System.Windows.Forms.Label();
this.btnStop = new System.Windows.Forms.Button();
this.btnStart = new System.Windows.Forms.Button();
this.progressBar = new System.Windows.Forms.ProgressBar();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.lbMultiThreadDevResults = new System.Windows.Forms.Label();
this.lbSingleThreadDevResults = new System.Windows.Forms.Label();
this.panel3.SuspendLayout();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(13, 177);
this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(41, 18);
this.label1.TabIndex = 0;
this.label1.Text = "Test:";
//
// panel3
//
this.panel3.BackColor = System.Drawing.Color.WhiteSmoke;
this.panel3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel3.Controls.Add(this.lbDescription);
this.panel3.Dock = System.Windows.Forms.DockStyle.Top;
this.panel3.Location = new System.Drawing.Point(0, 0);
this.panel3.Margin = new System.Windows.Forms.Padding(4);
this.panel3.Name = "panel3";
this.panel3.Size = new System.Drawing.Size(452, 167);
this.panel3.TabIndex = 4;
//
// lbDescription
//
this.lbDescription.Dock = System.Windows.Forms.DockStyle.Fill;
this.lbDescription.Location = new System.Drawing.Point(0, 0);
this.lbDescription.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lbDescription.Name = "lbDescription";
this.lbDescription.Size = new System.Drawing.Size(450, 165);
this.lbDescription.TabIndex = 1;
this.lbDescription.Text = resources.GetString("lbDescription.Text");
this.lbDescription.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// cbTest
//
this.cbTest.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.cbTest.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cbTest.FormattingEnabled = true;
this.cbTest.Location = new System.Drawing.Point(61, 174);
this.cbTest.Name = "cbTest";
this.cbTest.Size = new System.Drawing.Size(379, 26);
this.cbTest.TabIndex = 5;
this.cbTest.SelectedIndexChanged += new System.EventHandler(this.EventSelectedIndexChanged);
//
// lbSingleThreadResults
//
this.lbSingleThreadResults.AutoSize = true;
this.lbSingleThreadResults.Location = new System.Drawing.Point(13, 237);
this.lbSingleThreadResults.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lbSingleThreadResults.Name = "lbSingleThreadResults";
this.lbSingleThreadResults.Size = new System.Drawing.Size(158, 18);
this.lbSingleThreadResults.TabIndex = 6;
this.lbSingleThreadResults.Text = "Single Thread: 0 TDPS";
//
// lbMultiThreadResults
//
this.lbMultiThreadResults.AutoSize = true;
this.lbMultiThreadResults.Location = new System.Drawing.Point(22, 260);
this.lbMultiThreadResults.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lbMultiThreadResults.Name = "lbMultiThreadResults";
this.lbMultiThreadResults.Size = new System.Drawing.Size(149, 18);
this.lbMultiThreadResults.TabIndex = 7;
this.lbMultiThreadResults.Text = "Multi Thread: 0 TDPS";
//
// btnStop
//
this.btnStop.Enabled = false;
this.btnStop.Location = new System.Drawing.Point(353, 378);
this.btnStop.Name = "btnStop";
this.btnStop.Size = new System.Drawing.Size(87, 36);
this.btnStop.TabIndex = 8;
this.btnStop.Text = "Stop";
this.btnStop.Click += new System.EventHandler(this.EventClicked);
//
// btnStart
//
this.btnStart.Location = new System.Drawing.Point(260, 378);
this.btnStart.Name = "btnStart";
this.btnStart.Size = new System.Drawing.Size(87, 36);
this.btnStart.TabIndex = 9;
this.btnStart.Text = "Start";
this.btnStart.Click += new System.EventHandler(this.EventClicked);
//
// progressBar
//
this.progressBar.Location = new System.Drawing.Point(12, 378);
this.progressBar.Name = "progressBar";
this.progressBar.Size = new System.Drawing.Size(242, 36);
this.progressBar.TabIndex = 10;
//
// label2
//
this.label2.AutoSize = true;
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label2.Location = new System.Drawing.Point(13, 213);
this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(104, 18);
this.label2.TabIndex = 11;
this.label2.Text = "Your results:";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label3.Location = new System.Drawing.Point(13, 290);
this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(145, 18);
this.label3.TabIndex = 14;
this.label3.Text = "Developer results:";
//
// lbMultiThreadDevResults
//
this.lbMultiThreadDevResults.AutoSize = true;
this.lbMultiThreadDevResults.Enabled = false;
this.lbMultiThreadDevResults.Location = new System.Drawing.Point(22, 337);
this.lbMultiThreadDevResults.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lbMultiThreadDevResults.Name = "lbMultiThreadDevResults";
this.lbMultiThreadDevResults.Size = new System.Drawing.Size(149, 18);
this.lbMultiThreadDevResults.TabIndex = 13;
this.lbMultiThreadDevResults.Text = "Multi Thread: 0 TDPS";
//
// lbSingleThreadDevResults
//
this.lbSingleThreadDevResults.AutoSize = true;
this.lbSingleThreadDevResults.Enabled = false;
this.lbSingleThreadDevResults.Location = new System.Drawing.Point(13, 314);
this.lbSingleThreadDevResults.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lbSingleThreadDevResults.Name = "lbSingleThreadDevResults";
this.lbSingleThreadDevResults.Size = new System.Drawing.Size(158, 18);
this.lbSingleThreadDevResults.TabIndex = 12;
this.lbSingleThreadDevResults.Text = "Single Thread: 0 TDPS";
//
// FrmBenchmark
//
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(452, 426);
this.Controls.Add(this.label3);
this.Controls.Add(this.lbMultiThreadDevResults);
this.Controls.Add(this.lbSingleThreadDevResults);
this.Controls.Add(this.label2);
this.Controls.Add(this.progressBar);
this.Controls.Add(this.btnStart);
this.Controls.Add(this.btnStop);
this.Controls.Add(this.lbMultiThreadResults);
this.Controls.Add(this.lbSingleThreadResults);
this.Controls.Add(this.cbTest);
this.Controls.Add(this.panel3);
this.Controls.Add(this.label1);
this.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Margin = new System.Windows.Forms.Padding(4);
this.MaximizeBox = false;
this.Name = "FrmBenchmark";
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Benchmark System";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FrmBenchmark_FormClosing);
this.panel3.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Panel panel3;
private System.Windows.Forms.Label lbDescription;
private System.Windows.Forms.ComboBox cbTest;
private System.Windows.Forms.Label lbSingleThreadResults;
private System.Windows.Forms.Label lbMultiThreadResults;
private System.Windows.Forms.Button btnStop;
private System.Windows.Forms.Button btnStart;
private System.Windows.Forms.ProgressBar progressBar;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label lbMultiThreadDevResults;
private System.Windows.Forms.Label lbSingleThreadDevResults;
}
}
+444
View File
@@ -0,0 +1,444 @@
using System;
using System.Buffers;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.Reflection;
using System.Security.Cryptography;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using Emgu.CV;
using Emgu.CV.CvEnum;
using UVtools.Core.Extensions;
using UVtools.GUI.Controls;
namespace UVtools.GUI.Forms
{
public partial class FrmBenchmark : Form
{
private CancellationTokenSource TokenSource { get; set; }
private CancellationToken Token => TokenSource.Token;
private RNGCryptoServiceProvider RandomProvider { get; }
private const ushort SingleThreadTests = 100;
private const ushort MultiThreadTests = 1000;
public const string RunsAbbreviation = "TDPS";
public const string StressCPUTestName = "Stress CPU (Run until stop)";
public FrmBenchmark()
{
InitializeComponent();
lbDescription.Text += $"CPU: {BenchmarkTest.DEVCPU}\nRAM: {BenchmarkTest.DEVRAM}";
RandomProvider = new RNGCryptoServiceProvider();
cbTest.Items.AddRange(
new object[]
{
new BenchmarkTest("4K Random CBBDLP Enconde", "Test4KRandomCBBDLPEncode", 40.30f, 246.30f),
new BenchmarkTest("8K Random CBBDLP Enconde", "Test8KRandomCBBDLPEncode", 9.70f, 64.10f),
new BenchmarkTest("4K Random CBT Enconde", "Test4KRandomCBTEncode", 13.50f, 113.30f),
new BenchmarkTest("8K Random CBT Enconde", "Test8KRandomCBTEncode", 3.40f, 28.20f),
new BenchmarkTest("4K Random PW0 Enconde", "Test4KRandomPW0Encode", 14.10f, 89.00f),
new BenchmarkTest("8K Random PW0 Enconde", "Test8KRandomPW0Encode", 3.50f, 22.40f),
new BenchmarkTest(StressCPUTestName, "Test4KRandomCBTEncode", 0, 0),
}
);
cbTest.SelectedIndex = 0;
}
private void FrmBenchmark_FormClosing(object sender, FormClosingEventArgs e)
{
if (!btnStart.Enabled)
e.Cancel = true;
}
private void EventClicked(object sender, EventArgs e)
{
if (ReferenceEquals(sender, btnStart))
{
StartBenchmark();
return;
}
if (ReferenceEquals(sender, btnStop))
{
TokenSource.Cancel();
return;
}
}
private void EventSelectedIndexChanged(object sender, EventArgs e)
{
if (ReferenceEquals(sender, cbTest))
{
BenchmarkTest benchmark = cbTest.SelectedItem as BenchmarkTest;
lbSingleThreadDevResults.Text = $"Single Thread: {benchmark.DevSingleThreadResult} {RunsAbbreviation}";
lbMultiThreadDevResults.Text = $"Multi Thread: {benchmark.DevMultiThreadResult} {RunsAbbreviation}";
return;
}
}
private void StartBenchmark()
{
if (!btnStart.Enabled) return;
cbTest.Enabled =
btnStart.Enabled = false;
btnStop.Enabled = true;
TokenSource = new CancellationTokenSource();
progressBar.Style = ProgressBarStyle.Marquee;
BenchmarkTest benchmark = cbTest.SelectedItem as BenchmarkTest;
MethodInfo theMethod = GetType().GetMethod(benchmark.FunctionName);
if (!benchmark.Name.Equals(StressCPUTestName))
{
lbSingleThreadResults.Text = $"Single Thread: Running {SingleThreadTests} tests";
lbMultiThreadResults.Text = $"Multi Thread: Running {MultiThreadTests} tests";
}
Task.Factory.StartNew(() =>
{
try
{
if (benchmark.Name.Equals(StressCPUTestName))
{
while (true)
{
if (Token.IsCancellationRequested) break;
Parallel.For(0, MultiThreadTests, i =>
{
if (Token.IsCancellationRequested) return;
theMethod.Invoke(this, null);
});
}
return;
}
Stopwatch sw = Stopwatch.StartNew();
for (int i = 0; i < SingleThreadTests; i++)
{
if(Token.IsCancellationRequested) Token.ThrowIfCancellationRequested();
theMethod.Invoke(this, null);
}
sw.Stop();
Invoke((MethodInvoker) delegate
{
// Running on the UI thread
UpdateResults(true, sw.ElapsedMilliseconds);
});
if (Token.IsCancellationRequested) Token.ThrowIfCancellationRequested();
sw.Restart();
Parallel.For(0, MultiThreadTests, i =>
{
if (Token.IsCancellationRequested) return;
theMethod.Invoke(this, null);
});
sw.Stop();
if (Token.IsCancellationRequested) Token.ThrowIfCancellationRequested();
Invoke((MethodInvoker)delegate
{
// Running on the UI thread
UpdateResults(false, sw.ElapsedMilliseconds);
});
}
catch (OperationCanceledException)
{
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
Invoke((MethodInvoker)StopBenchmark);
}
}, Token);
}
private void StopBenchmark()
{
btnStart.Enabled = true;
btnStop.Enabled = false;
cbTest.Enabled = true;
progressBar.Style = ProgressBarStyle.Blocks;
}
public byte[] EncodeCbddlpImage(Mat image, byte bit = 0)
{
List<byte> rawData = new List<byte>();
var span = image.GetPixelSpan<byte>();
bool obit = false;
int rep = 0;
//ngrey:= uint16(r | g | b)
// thresholds:
// aa 1: 127
// aa 2: 255 127
// aa 4: 255 191 127 63
// aa 8: 255 223 191 159 127 95 63 31
byte threshold = (byte)(256 / 1 * bit - 1);
void AddRep()
{
if (rep <= 0) return;
byte by = (byte)rep;
if (obit)
{
by |= 0x80;
//bitsOn += uint(rep)
}
rawData.Add(by);
}
for (int pixel = 0; pixel < span.Length; pixel++)
{
var nbit = span[pixel] >= threshold;
if (nbit == obit)
{
rep++;
if (rep == 0x7d)
{
AddRep();
rep = 0;
}
}
else
{
AddRep();
obit = nbit;
rep = 1;
}
}
// Collect stragglers
AddRep();
return rawData.ToArray();
}
private byte[] EncodeCbtImage(Mat image)
{
List<byte> rawData = new List<byte>();
byte color = byte.MaxValue >> 1;
uint stride = 0;
var span = image.GetPixelSpan<byte>();
void AddRep()
{
if (stride == 0)
{
return;
}
if (stride > 1)
{
color |= 0x80;
}
rawData.Add(color);
if (stride <= 1)
{
// no run needed
return;
}
if (stride <= 0x7f)
{
rawData.Add((byte)stride);
return;
}
if (stride <= 0x3fff)
{
rawData.Add((byte)((stride >> 8) | 0x80));
rawData.Add((byte)stride);
return;
}
if (stride <= 0x1fffff)
{
rawData.Add((byte)((stride >> 16) | 0xc0));
rawData.Add((byte)(stride >> 8));
rawData.Add((byte)stride);
return;
}
if (stride <= 0xfffffff)
{
rawData.Add((byte)((stride >> 24) | 0xe0));
rawData.Add((byte)(stride >> 16));
rawData.Add((byte)(stride >> 8));
rawData.Add((byte)stride);
}
}
for (int pixel = 0; pixel < span.Length; pixel++)
{
var grey7 = (byte)(span[pixel] >> 1);
if (grey7 == color)
{
stride++;
}
else
{
AddRep();
color = grey7;
stride = 1;
}
}
AddRep();
return rawData.ToArray();
}
public byte[] EncodePW0Image(Mat image)
{
List<byte> rawData = new List<byte>();
var span = image.GetPixelSpan<byte>();
int lastColor = -1;
int reps = 0;
void PutReps()
{
while (reps > 0)
{
int done = reps;
if (lastColor == 0 || lastColor == 0xf)
{
if (done > 0xfff)
{
done = 0xfff;
}
//more:= []byte{ 0, 0}
//binary.BigEndian.PutUint16(more, uint16(done | (color << 12)))
//rle = append(rle, more...)
ushort more = (ushort)(done | (lastColor << 12));
rawData.Add((byte)(more >> 8));
rawData.Add((byte)more);
}
else
{
if (done > 0xf)
{
done = 0xf;
}
rawData.Add((byte)(done | lastColor << 4));
}
reps -= done;
}
}
for (int i = 0; i < span.Length; i++)
{
int color = span[i] >> 4;
if (color == lastColor)
{
reps++;
}
else
{
PutReps();
lastColor = color;
reps = 1;
}
}
PutReps();
return rawData.ToArray();
}
private void UpdateResults(bool isSingleThread, long milliseconds)
{
decimal seconds = Math.Round(milliseconds / 1000m, 2);
//var text = (isSingleThread ? "Single" : "Multi") + $" Thread: {Math.Round(SingleThreadTests / seconds, 2)} OPS ({seconds}s)";
if(isSingleThread)
lbSingleThreadResults.Text = $"Single Thread: {Math.Round(SingleThreadTests / seconds, 2)} {RunsAbbreviation} ({SingleThreadTests} tests / {seconds}s)";
else
lbMultiThreadResults.Text = $"Multi Thread: {Math.Round(MultiThreadTests / seconds, 2)} {RunsAbbreviation} ({MultiThreadTests} tests / {seconds}s)"; ;
}
#region Tests
public Mat RandomMat(int width, int height)
{
var bytes = new byte[width * height];
RandomProvider.GetBytes(bytes);
Mat mat = new Mat(new Size(width, height), DepthType.Cv8U, 1);
mat.SetBytes(bytes);
return mat;
}
public void Test4KRandomCBBDLPEncode()
{
using (var mat = RandomMat(3840, 2160))
EncodeCbddlpImage(mat);
}
public void Test8KRandomCBBDLPEncode()
{
using (var mat = RandomMat(7680, 4320))
EncodeCbddlpImage(mat);
}
public void Test4KRandomCBTEncode()
{
using (var mat = RandomMat(3840, 2160))
EncodeCbtImage(mat);
}
public void Test8KRandomCBTEncode()
{
using (var mat = RandomMat(7680, 4320))
EncodeCbtImage(mat);
}
public void Test4KRandomPW0Encode()
{
using (var mat = RandomMat(3840, 2160))
EncodePW0Image(mat);
}
public void Test8KRandomPW0Encode()
{
using (var mat = RandomMat(7680, 4320))
EncodePW0Image(mat);
}
#endregion
}
}
File diff suppressed because it is too large Load Diff
+803 -792
View File
File diff suppressed because it is too large Load Diff
+10 -1
View File
@@ -1059,6 +1059,15 @@ namespace UVtools.GUI
return;
}
if (ReferenceEquals(sender, menuHelpBenchmark))
{
using (var frmBenchmark = new FrmBenchmark())
{
frmBenchmark.ShowDialog();
}
return;
}
if (ReferenceEquals(sender, menuHelpInstallPrinters))
{
var PEFolder =
@@ -2424,7 +2433,7 @@ namespace UVtools.GUI
}
tsPropertiesLabelCount.Text = $"Properties: {flvProperties.GetItemCount()}";
tsPropertiesLabelGroups.Text = $"Groups: {flvProperties.OLVGroups.Count}";
tsPropertiesLabelGroups.Text = $"Groups: {flvProperties.OLVGroups?.Count ?? 0}";
if (!ReferenceEquals(SlicerFile.GCode, null))
{
+26 -8
View File
@@ -129,12 +129,6 @@
<metadata name="tsLayerInfo.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>1609, 17</value>
</metadata>
<metadata name="tsThumbnails.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>291, 17</value>
</metadata>
<metadata name="tsProperties.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>649, 17</value>
</metadata>
<metadata name="tsGCode.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>551, 17</value>
</metadata>
@@ -158,7 +152,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABk
FAAAAk1TRnQBSQFMAgEBBgEAAQgBCQEIAQkBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
FAAAAk1TRnQBSQFMAgEBBgEAARgBCQEYAQkBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
AwABIAMAAQEBAAEgBgABIC4AAxgBIgMwAUsDMAFMAzIBUDMAAQEDJAE2AysBQqwAAyIBMQNWAbkDXQHi
AwAB/wMAAf8BKgEtASgB/gNTAawDTQGVAwABARgAAwkBDAMzAVIDUAGdA1cB6AMAAf4DKwH8Ay8BSqQA
AyEBMANZAewBKwEuASkB+gNRAfcDUgH0A1MB8QNIAfYDQQH5AwAB/wNPAZsDAAEBCAADFQEdAz8BbgNV
@@ -206,7 +200,7 @@
BAADUgGpAzQBVQM0AVUgAAM0AVUDNAFVA1IBqQgAA0oBiwMAAf8DAAH/A08BnAQAA00BlQMAAf8DVAGr
CAADTwGcAwAB/wMAAf8DSgGLBAADUQGgAQABzAH3Af8BAAHMAfcB/wEAAcwB9wH/AQABzAH3Af8DQwF3
CAADSgGNAgAB7AH/AgAB7AH/AgAB7wH/AgAB7AH/AgAB7AH/AgAB7QH/AVICUwGoA1IBqAMAAf8DAAH/
AwAB/wNRAfcDKAH9A1ABnwsAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wNSAagEAANSAakDNAFVAzQBVQNG
AwAB/wNRAfcDKgH9A1ABnwsAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wNSAagEAANSAakDNAFVAzQBVQNG
AYADUgGpA1IBqQNSAakDUgGpA1IBqQNSAakDRQF/AzQBVQM0AVUDUgGpBAADUQGiAwAB/wMAAf8DSQGJ
CAADLwFKAwAB/wNUAe4MAANJAYkDAAH/AwAB/wNRAaIDAAEBAT8CQAFvAT4CXAH4AQABzQH3Af8BAAHN
AfcB/wMSARgIAAMBAQIDRgF+AlIBXQHwAgAB7gH/AgAB7gH/AkABqAH9AUUCRgF+AwMBBANSAagDAAH/
@@ -248,12 +242,36 @@
AfwBPws=
</value>
</data>
<metadata name="tsThumbnails.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>291, 17</value>
</metadata>
<metadata name="tsProperties.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>649, 17</value>
</metadata>
<metadata name="tsGCode.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>551, 17</value>
</metadata>
<metadata name="tsIssuesLv.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>1504, 17</value>
</metadata>
<metadata name="tsIssues.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>765, 17</value>
</metadata>
<metadata name="tsPixelEditorHistory.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>1155, 17</value>
</metadata>
<metadata name="tsLog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>1423, 17</value>
</metadata>
<metadata name="toolTipInformation.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>863, 17</value>
</metadata>
<metadata name="layerScrollTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>1017, 17</value>
</metadata>
<metadata name="toolTipInformation.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>863, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
Binary file not shown.

After

Width:  |  Height:  |  Size: 116 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.6.7.0")]
[assembly: AssemblyFileVersion("0.6.7.0")]
[assembly: AssemblyVersion("0.6.7.1")]
[assembly: AssemblyFileVersion("0.6.7.1")]
+10
View File
@@ -550,6 +550,16 @@ namespace UVtools.GUI.Properties {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap microchip_16x16 {
get {
object obj = ResourceManager.GetObject("microchip_16x16", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
+25 -22
View File
@@ -136,15 +136,15 @@
<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="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,9 +208,6 @@
<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>
@@ -265,12 +262,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>
@@ -289,12 +286,12 @@
<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="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="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="map-marker-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\map-marker-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>
</data>
@@ -310,8 +307,8 @@
<data name="photo-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\photo-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Open-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\Open-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="map-marker-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\map-marker-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="flip-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\flip-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@@ -325,14 +322,20 @@
<data name="Next-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\Next-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Open-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\Open-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="File-Close-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\File-Close-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<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>
</data>
<data name="toolbox-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\toolbox-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@@ -349,16 +352,16 @@
<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="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 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="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="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="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>
<data name="microchip_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\microchip_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>
+12 -1
View File
@@ -131,7 +131,7 @@
<Private>True</Private>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.5.0.0-preview.7.20364.11\lib\net45\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.5.0.0-preview.8.20407.11\lib\net45\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.Extensions, Version=4.1.1.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.Extensions.4.3.1\lib\net462\System.Runtime.Extensions.dll</HintPath>
@@ -145,6 +145,7 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Controls\BenchmarkTest.cs" />
<Compile Include="Controls\CtrlKernel.cs">
<SubType>UserControl</SubType>
</Compile>
@@ -156,6 +157,12 @@
<Compile Include="Controls\SplitButton.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Forms\FrmBenchmark.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\FrmBenchmark.Designer.cs">
<DependentUpon>FrmBenchmark.cs</DependentUpon>
</Compile>
<Compile Include="Forms\FrmInstallPEProfiles.cs">
<SubType>Form</SubType>
</Compile>
@@ -292,6 +299,9 @@
<EmbeddedResource Include="Forms\FrmAbout.resx">
<DependentUpon>FrmAbout.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\FrmBenchmark.resx">
<DependentUpon>FrmBenchmark.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\FrmInstallPEProfiles.resx">
<DependentUpon>FrmInstallPEProfiles.cs</DependentUpon>
</EmbeddedResource>
@@ -424,6 +434,7 @@
<None Include="Images\list-16x16.png" />
<None Include="Images\mask-16x16.png" />
<None Include="Images\copy_16x16.png" />
<None Include="Images\microchip_16x16.png" />
<Content Include="UVtools.ico" />
<None Include="UVtools.png" />
<None Include="Images\Exit-16x16.png" />
+1 -1
View File
@@ -11,7 +11,7 @@
<package id="System.Reflection.TypeExtensions" version="4.7.0" targetFramework="net48" />
<package id="System.Resources.ResourceManager" version="4.3.0" targetFramework="net48" />
<package id="System.Runtime" version="4.3.1" targetFramework="net48" />
<package id="System.Runtime.CompilerServices.Unsafe" version="5.0.0-preview.7.20364.11" targetFramework="net48" />
<package id="System.Runtime.CompilerServices.Unsafe" version="5.0.0-preview.8.20407.11" targetFramework="net48" />
<package id="System.Runtime.Extensions" version="4.3.1" targetFramework="net48" />
<package id="System.Text.Encoding" version="4.3.0" targetFramework="net48" />
<package id="System.Threading" version="4.3.0" targetFramework="net48" />