mirror of
https://github.com/riegera2412/UVtools.git
synced 2026-07-08 17:42:31 +02:00
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)
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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'">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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
Generated
+803
-792
File diff suppressed because it is too large
Load Diff
+10
-1
@@ -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))
|
||||
{
|
||||
|
||||
@@ -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 |
@@ -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
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
@@ -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" />
|
||||
|
||||
@@ -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" />
|
||||
|
||||
Reference in New Issue
Block a user