From 9b9438dd4033dff62f88f2c4d7be3060587d3702 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tiago=20Concei=C3=A7=C3=A3o?= Date: Fri, 17 Jul 2020 00:44:32 +0100 Subject: v0.6.2.3 * (Add) Issue: EmptyLayer - Detects empty layers were image is all black with 0 pixels to cure * (Add) Toolbar and pushed layer information to bottom * (Add) Information: Cure pixel count per layer and percentage against total lcd pixels * (Add) Information: Bounds per layer * (Add) Zip: Compability with Formware zip files --- CHANGELOG.md | 8 + UVtools.Core/FileFormats/ChituboxZipFile.cs | 20 +++ UVtools.Core/Layer/Layer.cs | 2 +- UVtools.Core/Layer/LayerIssue.cs | 1 + UVtools.Core/Layer/LayerManager.cs | 224 ++++++++++++++------------- UVtools.Core/UVtools.Core.csproj | 2 +- UVtools.GUI/FrmMain.Designer.cs | 221 +++++++++++++++++--------- UVtools.GUI/FrmMain.cs | 31 +++- UVtools.GUI/FrmMain.resx | 177 +++++++++++---------- UVtools.GUI/Images/cursor-16x16.png | Bin 0 -> 507 bytes UVtools.GUI/Properties/AssemblyInfo.cs | 4 +- UVtools.GUI/Properties/Resources.Designer.cs | 10 ++ UVtools.GUI/Properties/Resources.resx | 75 ++++----- UVtools.GUI/UVtools.GUI.csproj | 1 + 14 files changed, 476 insertions(+), 300 deletions(-) create mode 100644 UVtools.GUI/Images/cursor-16x16.png diff --git a/CHANGELOG.md b/CHANGELOG.md index a950ed7..1a848b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 17/07/2020 - v0.6.2.3 + +* (Add) Issue: EmptyLayer - Detects empty layers were image is all black with 0 pixels to cure +* (Add) Toolbar and pushed layer information to bottom +* (Add) Information: Cure pixel count per layer and percentage against total lcd pixels +* (Add) Information: Bounds per layer +* (Add) Zip: Compability with Formware zip files + ## 14/07/2020 - v0.6.2.2 * (Add) cbddlp, photon and ctb version 3 compability (Chitubox >= 1.6.5) diff --git a/UVtools.Core/FileFormats/ChituboxZipFile.cs b/UVtools.Core/FileFormats/ChituboxZipFile.cs index f2ec085..afddf40 100644 --- a/UVtools.Core/FileFormats/ChituboxZipFile.cs +++ b/UVtools.Core/FileFormats/ChituboxZipFile.cs @@ -241,6 +241,17 @@ namespace UVtools.Core.FileFormats tr.Close(); } + if (HeaderSettings.LayerCount == 0) + { + foreach (var zipEntry in inputFile.Entries) + { + if(!zipEntry.Name.EndsWith(".png")) continue; + var filename = Path.GetFileNameWithoutExtension(zipEntry.Name); + if (!filename.All(char.IsDigit)) continue; + if (!uint.TryParse(filename, out var layerIndex)) continue; + HeaderSettings.LayerCount = Math.Max(HeaderSettings.LayerCount, layerIndex); + } + } LayerManager = new LayerManager(HeaderSettings.LayerCount); @@ -282,6 +293,15 @@ namespace UVtools.Core.FileFormats progress++; } + if (HeaderSettings.LayerCount > 0 && ResolutionX == 0) + { + using (var mat = this[0].LayerMat) + { + HeaderSettings.ResolutionX = (uint)mat.Width; + HeaderSettings.ResolutionY = (uint)mat.Height; + } + } + entry = inputFile.GetEntry("preview.png"); if (!ReferenceEquals(entry, null)) { diff --git a/UVtools.Core/Layer/Layer.cs b/UVtools.Core/Layer/Layer.cs index 8d84864..205e925 100644 --- a/UVtools.Core/Layer/Layer.cs +++ b/UVtools.Core/Layer/Layer.cs @@ -242,7 +242,7 @@ namespace UVtools.Core using (var nonZeroMat = new Mat()) { CvInvoke.FindNonZero(mat, nonZeroMat); - NonZeroPixelCount = (uint)nonZeroMat.Rows / 2; + NonZeroPixelCount = (uint)nonZeroMat.Height; BoundingRectangle = CvInvoke.BoundingRectangle(nonZeroMat); } diff --git a/UVtools.Core/Layer/LayerIssue.cs b/UVtools.Core/Layer/LayerIssue.cs index 949d897..0a28c56 100644 --- a/UVtools.Core/Layer/LayerIssue.cs +++ b/UVtools.Core/Layer/LayerIssue.cs @@ -85,6 +85,7 @@ namespace UVtools.Core Island, ResinTrap, TouchingBound, + EmptyLayer, //HoleSandwich, } diff --git a/UVtools.Core/Layer/LayerManager.cs b/UVtools.Core/Layer/LayerManager.cs index 666a7ee..8efaa9e 100644 --- a/UVtools.Core/Layer/LayerManager.cs +++ b/UVtools.Core/Layer/LayerManager.cs @@ -684,149 +684,163 @@ namespace UVtools.Core islandsFinished = true; return; } + // Detect contours Parallel.ForEach(this, //new ParallelOptions{MaxDegreeOfParallelism = 1}, layer => { if (progress.Token.IsCancellationRequested) return; - using (var image = layer.LayerMat) + if (layer.NonZeroPixelCount > 0) { - int step = image.Step; - var span = image.GetPixelSpan(); - - // TouchingBounds Checker - List pixels = new List(); - for (int x = 0; x < image.Width; x++) // Check Top and Bottom bounds + using (var image = layer.LayerMat) { - if (span[x] >= minTouchingBondsPixelColor) // Top - { - pixels.Add(new Point(x, 0)); - } + int step = image.Step; + var span = image.GetPixelSpan(); - if (span[step * image.Height - step + x] >= minTouchingBondsPixelColor) // Bottom + // TouchingBounds Checker + List pixels = new List(); + for (int x = 0; x < image.Width; x++) // Check Top and Bottom bounds { - pixels.Add(new Point(x, image.Height - 1)); + if (span[x] >= minTouchingBondsPixelColor) // Top + { + pixels.Add(new Point(x, 0)); + } + + if (span[step * image.Height - step + x] >= minTouchingBondsPixelColor) // Bottom + { + pixels.Add(new Point(x, image.Height - 1)); + } } - } - for (int y = 0; y < image.Height; y++) // Check Left and Right bounds - { - if (span[y * step] >= minTouchingBondsPixelColor) // Left + for (int y = 0; y < image.Height; y++) // Check Left and Right bounds { - pixels.Add(new Point(0, y)); + if (span[y * step] >= minTouchingBondsPixelColor) // Left + { + pixels.Add(new Point(0, y)); + } + + if (span[y * step + step - 1] >= minTouchingBondsPixelColor) // Right + { + pixels.Add(new Point(step - 1, y)); + } } - if (span[y * step + step - 1] >= minTouchingBondsPixelColor) // Right + if (pixels.Count > 0) { - pixels.Add(new Point(step - 1, y)); + result.TryAdd(layer.Index, new List + { + new LayerIssue(layer, LayerIssue.IssueType.TouchingBound, pixels.ToArray()) + }); } - } - if (pixels.Count > 0) - { - result.TryAdd(layer.Index, new List - { - new LayerIssue(layer, LayerIssue.IssueType.TouchingBound, pixels.ToArray()) - }); - } + if (layer.Index == 0) return; // No islands for layer 0 - - if (layer.Index == 0) return; // No islands for layer 0 + VectorOfVectorOfPoint contours = new VectorOfVectorOfPoint(); + Mat hierarchy = new Mat(); - VectorOfVectorOfPoint contours = new VectorOfVectorOfPoint(); - Mat hierarchy = new Mat(); - - if (islandConfig.BinaryThreshold > 0) - { - using (var thresholdImage = new Mat()) + if (islandConfig.BinaryThreshold > 0) { - CvInvoke.Threshold(image, thresholdImage, 1, 255, ThresholdType.Binary); - CvInvoke.FindContours(thresholdImage, contours, hierarchy, RetrType.Ccomp, - ChainApproxMethod.ChainApproxSimple); + using (var thresholdImage = new Mat()) + { + CvInvoke.Threshold(image, thresholdImage, 1, 255, ThresholdType.Binary); + CvInvoke.FindContours(thresholdImage, contours, hierarchy, RetrType.Ccomp, + ChainApproxMethod.ChainApproxSimple); + } } - } - else - { - CvInvoke.FindContours(image, contours, hierarchy, RetrType.Ccomp, - ChainApproxMethod.ChainApproxSimple); - } - - var arr = hierarchy.GetData(); - // - //hierarchy[i][0]: the index of the next contour of the same level - //hierarchy[i][1]: the index of the previous contour of the same level - //hierarchy[i][2]: the index of the first child - //hierarchy[i][3]: the index of the parent - // - - Mat previousImage = null; - Span previousSpan = null; - for (int i = 0; i < contours.Size; i++) - { - - 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() < islandConfig.RequiredAreaToProcessCheck) - continue; - - if (ReferenceEquals(previousImage, null)) + else { - previousImage = this[layer.Index - 1].LayerMat; - previousSpan = previousImage.GetPixelSpan(); + CvInvoke.FindContours(image, contours, hierarchy, RetrType.Ccomp, + ChainApproxMethod.ChainApproxSimple); } - - List points = new List(); - uint pixelsSupportingIsland = 0; - using (Mat contourImage = image.CloneBlank()) + var arr = hierarchy.GetData(); + // + //hierarchy[i][0]: the index of the next contour of the same level + //hierarchy[i][1]: the index of the previous contour of the same level + //hierarchy[i][2]: the index of the first child + //hierarchy[i][3]: the index of the parent + // + + Mat previousImage = null; + Span previousSpan = null; + for (int i = 0; i < contours.Size; i++) { - CvInvoke.DrawContours(contourImage, contours, i, new MCvScalar(255), -1); - var contourImageSpan = contourImage.GetPixelSpan(); - for (int y = rect.Y; y < rect.Bottom; y++) + 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() < islandConfig.RequiredAreaToProcessCheck) + continue; + + if (ReferenceEquals(previousImage, null)) { - for (int x = rect.X; x < rect.Right; x++) - { - int pixel = step * y + x; - if (span[pixel] < islandConfig.RequiredPixelBrightnessToProcessCheck) - continue; // Low brightness, ignore - if (contourImageSpan[pixel] != 255) - continue; // Not inside contour, ignore + previousImage = this[layer.Index - 1].LayerMat; + previousSpan = previousImage.GetPixelSpan(); + } - //if (CvInvoke.PointPolygonTest(contours[i], new PointF(x, y), false) < 0) continue; // Out of contour SLOW! - //Debug.WriteLine($"Layer: {layer.Index}, Coutour: {i}, X:{x} Y:{y}"); - points.Add(new Point(x, y)); + List points = new List(); + uint pixelsSupportingIsland = 0; - if (previousSpan[pixel] >= islandConfig.RequiredPixelBrightnessToSupport) + using (Mat contourImage = image.CloneBlank()) + { + CvInvoke.DrawContours(contourImage, contours, i, new MCvScalar(255), -1); + var contourImageSpan = contourImage.GetPixelSpan(); + + for (int y = rect.Y; y < rect.Bottom; y++) + { + for (int x = rect.X; x < rect.Right; x++) { - pixelsSupportingIsland++; + int pixel = step * y + x; + if (span[pixel] < islandConfig.RequiredPixelBrightnessToProcessCheck) + continue; // Low brightness, ignore + if (contourImageSpan[pixel] != 255) + continue; // Not inside contour, ignore + + //if (CvInvoke.PointPolygonTest(contours[i], new PointF(x, y), false) < 0) continue; // Out of contour SLOW! + //Debug.WriteLine($"Layer: {layer.Index}, Coutour: {i}, X:{x} Y:{y}"); + points.Add(new Point(x, y)); + + if (previousSpan[pixel] >= + islandConfig.RequiredPixelBrightnessToSupport) + { + pixelsSupportingIsland++; + } } } } - } - - if (points.Count == 0) continue; - if (pixelsSupportingIsland >= islandConfig.RequiredPixelsToSupport) - continue; // Not a island, bounding is strong, i think... - if (pixelsSupportingIsland > 0 && points.Count < islandConfig.RequiredPixelsToSupport && - pixelsSupportingIsland >= Math.Max(1, points.Count / 2)) - continue; // Not a island, but maybe weak bounding... + if (points.Count == 0) continue; + if (pixelsSupportingIsland >= islandConfig.RequiredPixelsToSupport) + continue; // Not a island, bounding is strong, i think... + if (pixelsSupportingIsland > 0 && + points.Count < islandConfig.RequiredPixelsToSupport && + pixelsSupportingIsland >= Math.Max(1, points.Count / 2)) + continue; // Not a island, but maybe weak bounding... - var issue = new LayerIssue(layer, LayerIssue.IssueType.Island, points.ToArray(), rect); - result.AddOrUpdate(layer.Index, new List {issue}, - (layerIndex, list) => - { - list.Add(issue); - return list; - }); - } - contours.Dispose(); - hierarchy.Dispose(); - previousImage?.Dispose(); + var issue = new LayerIssue(layer, LayerIssue.IssueType.Island, points.ToArray(), + rect); + result.AddOrUpdate(layer.Index, new List {issue}, + (layerIndex, list) => + { + list.Add(issue); + return list; + }); + } + + contours.Dispose(); + hierarchy.Dispose(); + previousImage?.Dispose(); + } + } + else + { + result.TryAdd(layer.Index, new List + { + new LayerIssue(layer, LayerIssue.IssueType.EmptyLayer) + }); } lock (progress.Mutex) diff --git a/UVtools.Core/UVtools.Core.csproj b/UVtools.Core/UVtools.Core.csproj index b08c03a..aa7f870 100644 --- a/UVtools.Core/UVtools.Core.csproj +++ b/UVtools.Core/UVtools.Core.csproj @@ -10,7 +10,7 @@ https://github.com/sn4k3/UVtools https://github.com/sn4k3/UVtools MSLA/DLP, file analysis, repair, conversion and manipulation - 0.6.2.2 + 0.6.2.3 Copyright © 2020 PTRTECH UVtools.png AnyCPU;x64 diff --git a/UVtools.GUI/FrmMain.Designer.cs b/UVtools.GUI/FrmMain.Designer.cs index b306950..8a46ebb 100644 --- a/UVtools.GUI/FrmMain.Designer.cs +++ b/UVtools.GUI/FrmMain.Designer.cs @@ -62,16 +62,26 @@ this.mainTable = new System.Windows.Forms.TableLayoutPanel(); this.scCenter = new System.Windows.Forms.SplitContainer(); this.pbLayer = new Cyotek.Windows.Forms.ImageBox(); + this.tsLayerInfo = new System.Windows.Forms.ToolStrip(); + this.tsLayerPreviewTime = new System.Windows.Forms.ToolStripLabel(); + this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); + this.tsLayerResolution = new System.Windows.Forms.ToolStripLabel(); + this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator(); + this.tsLayerImageZoom = new System.Windows.Forms.ToolStripLabel(); + this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator(); + this.tsLayerImagePanLocation = new System.Windows.Forms.ToolStripLabel(); + this.toolStripSeparator16 = new System.Windows.Forms.ToolStripSeparator(); + this.tsLayerImageMouseLocation = new System.Windows.Forms.ToolStripLabel(); + this.tsLayerImagePixelCount = new System.Windows.Forms.ToolStripLabel(); + this.toolStripSeparator17 = new System.Windows.Forms.ToolStripSeparator(); + this.tsLayerBounds = new System.Windows.Forms.ToolStripLabel(); this.tsLayer = new System.Windows.Forms.ToolStrip(); this.tsLayerImageExport = new System.Windows.Forms.ToolStripSplitButton(); this.tsLayerImageExportFile = new System.Windows.Forms.ToolStripMenuItem(); this.tsLayerImageExportClipboard = new System.Windows.Forms.ToolStripMenuItem(); - this.tsLayerResolution = new System.Windows.Forms.ToolStripLabel(); this.tsLayerImageRotate = new System.Windows.Forms.ToolStripButton(); this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator(); this.tsLayerImageLayerDifference = new System.Windows.Forms.ToolStripButton(); - this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); - this.tsLayerPreviewTime = new System.Windows.Forms.ToolStripLabel(); this.toolStripSeparator14 = new System.Windows.Forms.ToolStripSeparator(); this.tsLayerImageHighlightIssues = new System.Windows.Forms.ToolStripButton(); this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator(); @@ -82,10 +92,6 @@ this.tsLayerImageLayerOutlineEdgeDetection = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator(); this.tsLayerImagePixelEdit = new System.Windows.Forms.ToolStripButton(); - this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator(); - this.tsLayerImageZoom = new System.Windows.Forms.ToolStripLabel(); - this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator(); - this.tsLayerImageMouseLocation = new System.Windows.Forms.ToolStripLabel(); this.pbLayers = new System.Windows.Forms.ProgressBar(); this.tabControlLeft = new System.Windows.Forms.TabControl(); this.tbpThumbnailsAndInfo = new System.Windows.Forms.TabPage(); @@ -189,6 +195,7 @@ this.scCenter.Panel1.SuspendLayout(); this.scCenter.Panel2.SuspendLayout(); this.scCenter.SuspendLayout(); + this.tsLayerInfo.SuspendLayout(); this.tsLayer.SuspendLayout(); this.tabControlLeft.SuspendLayout(); this.tbpThumbnailsAndInfo.SuspendLayout(); @@ -521,6 +528,7 @@ // scCenter.Panel1 // this.scCenter.Panel1.Controls.Add(this.pbLayer); + this.scCenter.Panel1.Controls.Add(this.tsLayerInfo); this.scCenter.Panel1.Controls.Add(this.tsLayer); // // scCenter.Panel2 @@ -540,34 +548,144 @@ this.pbLayer.Name = "pbLayer"; this.pbLayer.PanMode = Cyotek.Windows.Forms.ImageBoxPanMode.Left; this.pbLayer.ShowPixelGrid = true; - this.pbLayer.Size = new System.Drawing.Size(1228, 700); + this.pbLayer.Size = new System.Drawing.Size(1228, 675); this.pbLayer.TabIndex = 7; + this.pbLayer.PanEnd += new System.EventHandler(this.pbLayer_PanEnd); this.pbLayer.Zoomed += new System.EventHandler(this.pbLayer_Zoomed); this.pbLayer.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.EventMouseDoubleClick); this.pbLayer.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbLayer_MouseMove); this.pbLayer.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbLayer_MouseUp); // + // tsLayerInfo + // + this.tsLayerInfo.Dock = System.Windows.Forms.DockStyle.Bottom; + this.tsLayerInfo.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; + this.tsLayerInfo.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.tsLayerPreviewTime, + this.toolStripSeparator6, + this.tsLayerResolution, + this.toolStripSeparator11, + this.tsLayerImageZoom, + this.toolStripSeparator8, + this.tsLayerImagePanLocation, + this.toolStripSeparator16, + this.tsLayerImageMouseLocation, + this.tsLayerImagePixelCount, + this.toolStripSeparator17, + this.tsLayerBounds}); + this.tsLayerInfo.Location = new System.Drawing.Point(0, 700); + this.tsLayerInfo.Name = "tsLayerInfo"; + this.tsLayerInfo.Size = new System.Drawing.Size(1228, 25); + this.tsLayerInfo.TabIndex = 8; + this.tsLayerInfo.Text = "tsLayerInfo"; + // + // tsLayerPreviewTime + // + this.tsLayerPreviewTime.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.tsLayerPreviewTime.Name = "tsLayerPreviewTime"; + this.tsLayerPreviewTime.Size = new System.Drawing.Size(77, 22); + this.tsLayerPreviewTime.Text = "Preview Time"; + this.tsLayerPreviewTime.ToolTipText = "Layer preview computation time"; + // + // toolStripSeparator6 + // + this.toolStripSeparator6.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripSeparator6.Name = "toolStripSeparator6"; + this.toolStripSeparator6.Size = new System.Drawing.Size(6, 25); + // + // tsLayerResolution + // + this.tsLayerResolution.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.tsLayerResolution.Image = global::UVtools.GUI.Properties.Resources.resize_16x16; + this.tsLayerResolution.Name = "tsLayerResolution"; + this.tsLayerResolution.Size = new System.Drawing.Size(79, 22); + this.tsLayerResolution.Text = "Resolution"; + this.tsLayerResolution.ToolTipText = "Layer Resolution"; + // + // toolStripSeparator11 + // + this.toolStripSeparator11.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripSeparator11.Name = "toolStripSeparator11"; + this.toolStripSeparator11.Size = new System.Drawing.Size(6, 25); + // + // tsLayerImageZoom + // + this.tsLayerImageZoom.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.tsLayerImageZoom.Image = global::UVtools.GUI.Properties.Resources.search_16x16; + this.tsLayerImageZoom.Name = "tsLayerImageZoom"; + this.tsLayerImageZoom.Size = new System.Drawing.Size(89, 22); + this.tsLayerImageZoom.Text = "Zoom: 100%"; + this.tsLayerImageZoom.ToolTipText = "Layer image zoom level, use mouse scroll to zoom in/out into image\r\nCtrl + 0 to s" + + "cale to fit"; + // + // toolStripSeparator8 + // + this.toolStripSeparator8.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripSeparator8.Name = "toolStripSeparator8"; + this.toolStripSeparator8.Size = new System.Drawing.Size(6, 25); + this.toolStripSeparator8.Visible = false; + // + // tsLayerImagePanLocation + // + this.tsLayerImagePanLocation.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.tsLayerImagePanLocation.Image = global::UVtools.GUI.Properties.Resources.cursor_16x16; + this.tsLayerImagePanLocation.Name = "tsLayerImagePanLocation"; + this.tsLayerImagePanLocation.Size = new System.Drawing.Size(79, 22); + this.tsLayerImagePanLocation.Text = "{X=0, Y=0}"; + this.tsLayerImagePanLocation.ToolTipText = "Image pan location"; + this.tsLayerImagePanLocation.Visible = false; + // + // toolStripSeparator16 + // + this.toolStripSeparator16.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripSeparator16.Name = "toolStripSeparator16"; + this.toolStripSeparator16.Size = new System.Drawing.Size(6, 25); + // + // tsLayerImageMouseLocation + // + this.tsLayerImageMouseLocation.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.tsLayerImageMouseLocation.Image = global::UVtools.GUI.Properties.Resources.pointer_16x16; + this.tsLayerImageMouseLocation.Name = "tsLayerImageMouseLocation"; + this.tsLayerImageMouseLocation.Size = new System.Drawing.Size(79, 22); + this.tsLayerImageMouseLocation.Text = "{X=0, Y=0}"; + this.tsLayerImageMouseLocation.ToolTipText = "Mouse over pixel location and pixel brightness"; + // + // tsLayerImagePixelCount + // + this.tsLayerImagePixelCount.Image = global::UVtools.GUI.Properties.Resources.pixel_16x16; + this.tsLayerImagePixelCount.Name = "tsLayerImagePixelCount"; + this.tsLayerImagePixelCount.Size = new System.Drawing.Size(65, 22); + this.tsLayerImagePixelCount.Text = "Pixels: 0"; + this.tsLayerImagePixelCount.ToolTipText = "Number of pixels to cure on this layer image and the percetange of them against t" + + "otal lcd pixels"; + // + // toolStripSeparator17 + // + this.toolStripSeparator17.Name = "toolStripSeparator17"; + this.toolStripSeparator17.Size = new System.Drawing.Size(6, 25); + // + // tsLayerBounds + // + this.tsLayerBounds.Image = global::UVtools.GUI.Properties.Resources.resize_16x16; + this.tsLayerBounds.Name = "tsLayerBounds"; + this.tsLayerBounds.Size = new System.Drawing.Size(66, 22); + this.tsLayerBounds.Text = "Bounds:"; + this.tsLayerBounds.ToolTipText = "Image bounds for this layer only, position and size"; + // // tsLayer // this.tsLayer.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; this.tsLayer.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.tsLayerImageExport, - this.tsLayerResolution, this.tsLayerImageRotate, this.toolStripSeparator5, this.tsLayerImageLayerDifference, - this.toolStripSeparator6, - this.tsLayerPreviewTime, this.toolStripSeparator14, this.tsLayerImageHighlightIssues, this.toolStripSeparator7, this.tsLayerImageLayerOutline, this.toolStripSeparator9, - this.tsLayerImagePixelEdit, - this.toolStripSeparator8, - this.tsLayerImageZoom, - this.toolStripSeparator11, - this.tsLayerImageMouseLocation}); + this.tsLayerImagePixelEdit}); this.tsLayer.Location = new System.Drawing.Point(0, 0); this.tsLayer.Name = "tsLayer"; this.tsLayer.Size = new System.Drawing.Size(1228, 25); @@ -605,14 +723,6 @@ this.tsLayerImageExportClipboard.Text = "To &Clipboard"; this.tsLayerImageExportClipboard.Click += new System.EventHandler(this.EventClick); // - // tsLayerResolution - // - this.tsLayerResolution.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; - this.tsLayerResolution.Name = "tsLayerResolution"; - this.tsLayerResolution.Size = new System.Drawing.Size(63, 22); - this.tsLayerResolution.Text = "Resolution"; - this.tsLayerResolution.ToolTipText = "Layer Resolution"; - // // tsLayerImageRotate // this.tsLayerImageRotate.Checked = true; @@ -644,20 +754,6 @@ " the white pixels the difference between previous and current layer."; this.tsLayerImageLayerDifference.Click += new System.EventHandler(this.EventClick); // - // toolStripSeparator6 - // - this.toolStripSeparator6.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; - this.toolStripSeparator6.Name = "toolStripSeparator6"; - this.toolStripSeparator6.Size = new System.Drawing.Size(6, 25); - // - // tsLayerPreviewTime - // - this.tsLayerPreviewTime.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; - this.tsLayerPreviewTime.Name = "tsLayerPreviewTime"; - this.tsLayerPreviewTime.Size = new System.Drawing.Size(77, 22); - this.tsLayerPreviewTime.Text = "Preview Time"; - this.tsLayerPreviewTime.ToolTipText = "Layer Resolution"; - // // toolStripSeparator14 // this.toolStripSeparator14.Name = "toolStripSeparator14"; @@ -744,33 +840,6 @@ "e pixel)\r\nRed pixels are removed pixels\r\nGreen pixels are added pixels"; this.tsLayerImagePixelEdit.Click += new System.EventHandler(this.EventClick); // - // toolStripSeparator8 - // - this.toolStripSeparator8.Name = "toolStripSeparator8"; - this.toolStripSeparator8.Size = new System.Drawing.Size(6, 25); - // - // tsLayerImageZoom - // - this.tsLayerImageZoom.Image = global::UVtools.GUI.Properties.Resources.search_16x16; - this.tsLayerImageZoom.Name = "tsLayerImageZoom"; - this.tsLayerImageZoom.Size = new System.Drawing.Size(89, 22); - this.tsLayerImageZoom.Text = "Zoom: 100%"; - this.tsLayerImageZoom.ToolTipText = "Layer image zoom level, use mouse scroll to zoom in/out into image\r\nCtrl + 0 to s" + - "cale to fit"; - // - // toolStripSeparator11 - // - this.toolStripSeparator11.Name = "toolStripSeparator11"; - this.toolStripSeparator11.Size = new System.Drawing.Size(6, 25); - // - // tsLayerImageMouseLocation - // - this.tsLayerImageMouseLocation.Image = global::UVtools.GUI.Properties.Resources.pointer_16x16; - this.tsLayerImageMouseLocation.Name = "tsLayerImageMouseLocation"; - this.tsLayerImageMouseLocation.Size = new System.Drawing.Size(79, 22); - this.tsLayerImageMouseLocation.Text = "{X=0, Y=0}"; - this.tsLayerImageMouseLocation.ToolTipText = "Mouse over pixel location and pixel brightness"; - // // pbLayers // this.pbLayers.Dock = System.Windows.Forms.DockStyle.Fill; @@ -1892,6 +1961,8 @@ this.scCenter.Panel2.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.scCenter)).EndInit(); this.scCenter.ResumeLayout(false); + this.tsLayerInfo.ResumeLayout(false); + this.tsLayerInfo.PerformLayout(); this.tsLayer.ResumeLayout(false); this.tsLayer.PerformLayout(); this.tabControlLeft.ResumeLayout(false); @@ -1972,7 +2043,6 @@ private System.Windows.Forms.ToolStripMenuItem menuFileSave; private System.Windows.Forms.ToolStripMenuItem menuFileSaveAs; private System.Windows.Forms.ToolStrip tsLayer; - private System.Windows.Forms.ToolStripLabel tsLayerResolution; private System.Windows.Forms.TabControl tabControlLeft; private System.Windows.Forms.TabPage tbpThumbnailsAndInfo; private System.Windows.Forms.SplitContainer scLeft; @@ -2002,13 +2072,9 @@ private System.Windows.Forms.ToolStripButton tsLayerImageRotate; private System.Windows.Forms.ToolStripSeparator toolStripSeparator5; private System.Windows.Forms.ToolStripButton tsLayerImageLayerDifference; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator6; - private System.Windows.Forms.ToolStripLabel tsLayerPreviewTime; private Cyotek.Windows.Forms.ImageBox pbLayer; private System.Windows.Forms.ToolStripSeparator toolStripSeparator7; - private System.Windows.Forms.ToolStripLabel tsLayerImageZoom; private System.Windows.Forms.ToolStripButton tsLayerImagePixelEdit; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator8; private System.Windows.Forms.ToolStripSeparator toolStripSeparator9; private System.Windows.Forms.ToolStripMenuItem menuMutate; private System.Windows.Forms.ToolStripSeparator toolStripSeparator10; @@ -2022,8 +2088,6 @@ private System.Windows.Forms.ColumnHeader lvIssuesCount; private System.Windows.Forms.ColumnHeader lvIssuesXY; private System.Windows.Forms.ColumnHeader lvIssuesPixels; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator11; - private System.Windows.Forms.ToolStripLabel tsLayerImageMouseLocation; private System.Windows.Forms.ColumnHeader lvIssuesLayerHeader; private System.Windows.Forms.ToolStripSeparator toolStripSeparator12; private System.Windows.Forms.ToolStripButton tsIssueRemove; @@ -2102,6 +2166,19 @@ private System.Windows.Forms.NumericUpDown nmPixelEditorDrainHoleDiameter; private System.Windows.Forms.Label label14; private System.Windows.Forms.ToolStripButton btnPixelHistoryRemove; + private System.Windows.Forms.ToolStrip tsLayerInfo; + private System.Windows.Forms.ToolStripLabel tsLayerImageMouseLocation; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator11; + private System.Windows.Forms.ToolStripLabel tsLayerImageZoom; + private System.Windows.Forms.ToolStripLabel tsLayerPreviewTime; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator6; + private System.Windows.Forms.ToolStripLabel tsLayerResolution; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator8; + private System.Windows.Forms.ToolStripLabel tsLayerImagePanLocation; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator16; + private System.Windows.Forms.ToolStripLabel tsLayerImagePixelCount; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator17; + private System.Windows.Forms.ToolStripLabel tsLayerBounds; } } diff --git a/UVtools.GUI/FrmMain.cs b/UVtools.GUI/FrmMain.cs index cd3b2cb..8f7e77e 100644 --- a/UVtools.GUI/FrmMain.cs +++ b/UVtools.GUI/FrmMain.cs @@ -1503,6 +1503,7 @@ namespace UVtools.GUI private void pbLayer_Zoomed(object sender, Cyotek.Windows.Forms.ImageBoxZoomEventArgs e) { tsLayerImageZoom.Text = $"Zoom: {e.NewZoom}% ({e.NewZoom/100f}x)"; + pbLayer_PanEnd(pbLayer, null); } private void pbLayer_MouseUp(object sender, MouseEventArgs e) @@ -1563,7 +1564,7 @@ namespace UVtools.GUI ShowLayer(issue.Layer.Index); } - if (issue.Type == LayerIssue.IssueType.TouchingBound) + if (issue.Type == LayerIssue.IssueType.TouchingBound || issue.Type == LayerIssue.IssueType.EmptyLayer || (issue.X == -1 && issue.Y == -1)) { ZoomToFit(); } @@ -1579,7 +1580,7 @@ namespace UVtools.GUI x = ActualLayerImage.Height - 1 - issue.Y; y = issue.X; } - + pbLayer.ZoomToRegion(x, y, 5, 5); pbLayer.ZoomOut(true); } @@ -1679,6 +1680,10 @@ namespace UVtools.GUI { item.Enabled = false; } + foreach (ToolStripItem item in tsLayerInfo.Items) + { + item.Enabled = false; + } foreach (ToolStripItem item in tsProperties.Items) { item.Enabled = false; @@ -1688,6 +1693,10 @@ namespace UVtools.GUI item.Enabled = false; } + tsLayerImagePixelCount.Text = "Pixels: 0"; + tsLayerBounds.Text = "Bounds:"; + tsLayerImageMouseLocation.Text = "{X=0, Y=0}"; + tsThumbnailsResolution.Text = tsLayerPreviewTime.Text = tsLayerResolution.Text = @@ -1887,6 +1896,10 @@ namespace UVtools.GUI { item.Enabled = true; } + foreach (ToolStripItem item in tsLayerInfo.Items) + { + item.Enabled = true; + } foreach (ToolStripItem item in tsProperties.Items) { item.Enabled = true; @@ -2312,6 +2325,15 @@ namespace UVtools.GUI byte percent = (byte)((layerNum + 1) * 100 / SlicerFile.LayerCount); + float pixelPercent = (float) Math.Round(layer.NonZeroPixelCount * 100f / (SlicerFile.ResolutionX * SlicerFile.ResolutionY), 2); + tsLayerImagePixelCount.Text = $"Pixels: {layer.NonZeroPixelCount} ({pixelPercent}%)"; + tsLayerBounds.Text = $"Bounds: {layer.BoundingRectangle}"; + tsLayerImagePixelCount.Invalidate(); + tsLayerBounds.Invalidate(); + tsLayerInfo.Update(); + tsLayerInfo.Refresh(); + + watch.Stop(); tsLayerPreviewTime.Text = $"{watch.ElapsedMilliseconds}ms"; @@ -3082,5 +3104,10 @@ namespace UVtools.GUI MaximumPixelBrightnessToDrain = Settings.Default.ResinTrapMaximumPixelBrightnessToDrain }; } + + private void pbLayer_PanEnd(object sender, EventArgs e) + { + //tsLayerImagePanLocation.Text = $"{pbLayer.AutoScrollPosition}"; + } } } diff --git a/UVtools.GUI/FrmMain.resx b/UVtools.GUI/FrmMain.resx index 977692d..22e5515 100644 --- a/UVtools.GUI/FrmMain.resx +++ b/UVtools.GUI/FrmMain.resx @@ -123,15 +123,12 @@ 100, 17 + + 1312, 17 + 201, 17 - - 291, 17 - - - 649, 17 - 551, 17 @@ -148,83 +145,101 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAA+ - EQAAAk1TRnQBSQFMAgEBBQEAAVgBBQFYAQUBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA - AwABIAMAAQEBAAEgBgABIC4AAxgBIgMwAUsDMAFMAzIBUOgAAyIBMQNWAbkDXQHiARoBHQEYAf8BGgEd - ARgB/wEqAS0BKAH+A1MBrANNAZUDAAEB2AADIQEwA1kB7AErAS4BKQH6AkQBQgH3AUoBTAFIAfQDUwHx - AUMBRQFBAfYDQQH5ARoBHQEYAf8DTwGbAwABAdAAAxwBKANZAesBKgEtASgB/gNWAbYDTAGSA0gBhQNI - AYUDRgGAA0gBhQEqAS0BKAH+ARoBHQEYAf8DTgGU0AADJgE4ASoBLQEoAf4DTAGTA0sBkANNAZYDSgGL - A0UBfwNDAXgDQwF4A0cBggM+AfgDUwGw0AADXAHUARoBHQEYAf8DUQGgA04BmANQAZ8DOgFhAzgBXQNC - AXQDRgGAA0gBhANMAZMDWAHjAzABTMgAAzYBWQNAAXADWQHXA0cBggNMAZMDSQGJAwEBAgQAAzABSwNE - AXkDSAGHA0sBkANXAegDMAFMyAADLQFGAzgBXgNKAY0DEgEYA1ABoxAAAykBPgNLAZADTQGVA1kB7AMw - AUzIAAMUARwDMAFNA08BnANRAaIDUwGwEAADKwFDA08BmwNQAZ4DVgG7AxUBHcgAA0QBeQM/AW4DKgFA - Ax4BKwMqAUADVQGxAwQBBQQAAzkBYANMAZIDTgGUA1YBtgNWAbjIAAM/AW0DLgFIAxoBJAMlATcDIQEw - ASsBLAErAUMDLAFEA0gBiANIAYUDSAGHA0kBiQNQAZoDWAHpAycBOsgAAwYBCAMKAQ0DUwGwAyoBQANC - AXUDFAEcAzUBWANEAXwDTgGUA0QBfANIAYgDTgHwAycBO8gAAwcBCQNVAbQDCQEMBAADQQFzAyoBQQNC - AXYDPAFnA1EBpwNaAcoDWwHWAyQBNgMfAS3QAAMBAQIDUwGsAw4BEwM7AWUEAAMwAU0DBwEJAwQBBeQA - Az8BbgMGAQgDMQFPAwMBBANTAbDsAAMxAU8DAQEC/wA1AANQAaMDUgGpA1IBqQNSAakDUgGpA1IBqQNS - AakDUgGpA1IBqQNSAakDUgGpA1IBqQNSAakDUAGjXAADFQEdAUICWQH1AVECbQH3A0MBdwNbAcgCQgFZ - AfUCWAFfAeMDSgGMAwoBDQQAA1UBtANZAccDLwFJAwABAQMbASYDHAEnAxwBJwMcAScDHAEnAxwBJwMc - AScDHAEnAxwBJwMcAScDHAEnAwIBAwQAA1IBqTAAA1IBqRAAAycBOgMwAUwDMAFMAzABTAMwAUwDMAFM - AzABTAMwAUwDMAFMAycBOhQAAwUBBwNMAZIBVgJYAcEDFQEdAz0BaQEAAcgB8wH/AQABkAHmAf8CBgHc - Af8CBgHdAf8COwHjAf8CEQHeAf8CBgHdAf8CWAFbAcsDBgEIAwAB/wMAAf8DQwF3AykBPgMAAf8DAAH/ - AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AzIBUQQAA1IBqQQAA1ABnQNTAaoDUwGq - A1MBqgNTAaoDUwGqA1MBqgNQAZ0MAANSAakQAANOAfsDAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ - AwAB/wNOAfsUAAEwAjEBTQEAAckB8wH/AQAByQH0Af8BWQJgAesBWwJeAdkBAAHAAfEB/wEHAQ8B3wH/ - AgkB4AH/AgkB4AH/AkIB6QH/AhQB4gH/AgkB4AH/AgkB4AH/A0ABcQNRAaIDVgG2AyoBQAQAAxABFQMR - ARcDEQEXAxEBFwMRARcDEQEXAxEBFwMRARcDEQEXAxEBFwMQARYIAANSAakEAANQAZ0DUwGqA1MBqgMf - ASwcAANSAakTAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/FAADBwEKAVkCZwHy - AQABygH0Af8BAAHKAfQB/wEAAcoB9AH/AQABoQHuAf8CDAHjAf8CDAHjAf8CDAHjAf8CqQHvAf8CEwHj - Af8CDAHjAf8CDAHjAf8CVgFYAbkDCgEOAxEBFwMAAQE4AANSAakwAANSAakTAAH/AwAB/wMAAf8DAAH/ - AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/DAADFQEdAz0BaQM6AWIBXAJgAdQBAAHLAfUB/wEAAcsB9QH/ - AQABywH1Af8BAAGgAfAB/wIPAeYB/wIPAeYB/wIPAeYB/wLCAfYB/wInAegB/wIPAeYB/wIPAeYB/wJX - AVkBvwNSAfQDAAH/Az4BbAMOARMDQgF2A0MBdwNDAXcDQwF3A0MBdwNDAXcDQwF3A0MBdwNDAXcDQwF3 - A0IBdgMUARsEAANSAakDIgEyA1IBqQNSAakDUgGpA1IBqQNSAakDUgGpA1IBqQNSAakDUgGpA1IBqQMi - ATIDUgGpEwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wwAAUsCTAGQAQABywH2 - Af8BAAHLAfYB/wEAAcsB9gH/AQABywH2Af8BKQFWAWYB+gNDAXgDIgEyAksBYAH7AhIB6QH/AhIB6QH/ - As0B+AH/AjYB7QH/AhIB6QH/AhIB6QH/A1ABngMAAf4DAAH/A0MBdwMeASsDVwHFA1kBxwNZAccDWQHH - A1kBxwNZAccDWQHHA1kBxwNZAccDWQHHA1gBxgMmATkEAANSAakDNAFVAzQBVSAAAzQBVQM0AVUDUgGp - EwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wwAA1EBoAEAAcwB9wH/AQABzAH3 - Af8BAAHMAfcB/wEAAcwB9wH/A0MBdwgAA0oBjQIVAewB/wIVAewB/wIxAe8B/wIZAewB/wIVAewB/wER - ASIB7QH/AVICUwGoAzMBUwM8AWcDFAEcOAADUgGpAzQBVQM0AVUDRgGAA1IBqQNSAakDUgGpA1IBqQNS - AakDUgGpA0UBfwM0AVUDNAFVA1IBqRMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA - Af8PAAEBAT8CQAFvAT4CXAH4AQABzQH3Af8BAAHNAfcB/wMSARgIAAMBAQIDRgF+AlIBXQHwAhgB7gH/ - ARgBGQHuAf8CQAGoAf0BRQJGAX4DAwEEAzMBUwM8AWcDFAEcOAADUgGpAzQBVQM0AVUDPwFuAzIBUBAA - AycBOwNEAXwDNAFVAzQBVQNSAakTAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ - DwABAQE/AkABbwE+AlwB+AEAAc4B+AH/AQABzgH4Af8DEgEYEAADFwEgAQABvAH3Af8BAAHEAfcB/wFA - AqgB/QFFAkYBfgMDAQQDAAH+AwAB/wNDAXcDHwEsA1cBxQNZAccDWQHHA1kBxwNZAccDWQHHA1kBxwNZ - AccDWQHHA1kBxwNYAcYDJgE5BAADUgGpAzQBVQM0AVUDBQEHA1UBtQMRARcDUgGpAykBPgQAA1ABnwMR - ARcDNAFVAzQBVQNSAakTAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/DAADUQGg - AQABzgH4Af8BAAHPAfkB/wEAAc8B+QH/AQABzwH5Af8DQwF3EAADRAF6AQABzwH5Af8BAAHPAfkB/wEA - Ac8B+QH/AQABzgH4Af8BUgJTAagDUgH0AwAB/wM+AWwDDgETA0IBdQNDAXcDQwF3A0MBdwNDAXcDQwF3 - A0MBdwNDAXcDQwF3A0MBdwNDAXcDFAEbBAADUgGpAzQBVQM0AVUEAAM8AWgDVgG+AyMBNANVAbUDEgEZ - A1EBoAQAAzQBVQM0AVUDUgGpEwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A1wB3wwA - AUsCTAGQAQAB0AH6Af8BAAHQAfoB/wEAAdAB+gH/AQAB0AH6Af8BKQFWAWYB+gNDAXgDEgEZAxMBGgNE - AXoBKAFfAWcB+wEAAdAB+gH/AQAB0AH6Af8BAAHQAfoB/wEAAdAB+gH/A0oBjAMKAQ4DEQEXAwABATgA - A1IBqQM0AVUDNAFVAwABAQMtAUYDCgEOBAADOQFfA1wBzgMoATwEAAM0AVUDNAFVA1IBqRMAAf8DggH/ - AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A1wB3wMXASAMAAMVAR0DPQFpAzoBYgFcAmAB1AEAAdEB+gH/ - AQAB0QH6Af8BAAHQAfoB/wEAAcsB8wH/AQABywHzAf8BAAHQAfoB/wEAAdEB+gH/AQAB0QH6Af8BXQJh - AeIDOgFiAz0BaQMUARwDUQGiA1YBtgMqAUAEAAMQARUDEQEXAxEBFwMRARcDEQEXAxEBFwMRARcDEQEX - AxEBFwMRARcDEAEWCAADUgGpAzQBVQM0AVUDMwFTA1IBpgNKAYwHAAEBA0cBgwgAAzQBVQM0AVUDUgGp - EwAB/wOZAf8DhQH/AwAB/wMAAf8DAAH/AwAB/wNcAd8DFwEgGAADBwEKAVkCZwHyAQAB0gH7Af8BAAHS - AfsB/wEAAdIB+wH/AQAB0gH7Af8BAAHSAfsB/wEAAdIB+wH/AQAB0gH7Af8BAAHSAfsB/wErAV8BZwH7 - AxEBFwsAAf8DAAH/A0MBdwMpAT4DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ - AwAB/wMyAVEEAANSAakDNAFVAzQBVQMRARcDUAGeAyQBNhQAAzQBVQM0AVUDUgGpEAADUAH7AwAB/wMA - Af8DAAH/AwAB/wMAAf8DXAHfAxcBIBwAATACMQFNAQAB0gH8Af8BAAHSAfwB/wFZAmAB6wFbAl4B2QEA - AdIB/AH/AQAB0gH8Af8BWwJhAeEBXQJhAeIBAAHSAfwB/wEAAdIB/AH/AzgBXggAA1UBtANZAccDLwFJ - AwABAQMbASYDHAEnAxwBJwMcAScDHAEnAxwBJwMcAScDHAEnAxwBJwMcAScDHAEnAwIBAwQAA1IBqQMi - ATIDUgGpA1IBqQNSAakDUgGpA1IBqQNSAakDUgGpA1IBqQNSAakDUgGpAyIBMgNSAakQAAMgAS4DKQE/ - AykBPwMpAT8DKQE/AykBPwMRARcgAAMFAQcDTAGSAVYCWAHBAxUBHQM9AWkBAAHTAfwB/wEAAdMB/AH/ - AUUCRgF/AxABFQNWAbMBSwJMAY8DBAEGTAADUAGjA1IBqQNSAakDUgGpA1IBqQNSAakDUgGpA1IBqQNS - AakDUgGpA1IBqQNSAakDUgGpA1ABo1wAAxUBHQFCAlkB9QFRAm0B9wMgAS8YAAFCAU0BPgcAAT4DAAEo - AwABQAMAASADAAEBAQABAQYAAQEWAAP/AQAB/gEfBgAB+AEDBgAB8AEBBgAB4AEBBgAB4AEBBgAB4AcA - AcABQAYAAcEB4AYAAcEB4AYAAcABQQYAAYABAQYAAYABAwYAARABBwYAAYQBfwYAAcEB/wYAAc8B/wYA - Av8BgAEBAv8B/AEBAgABvwH9AeABBwHAAwABoAEdAeABBwHAAQABEAEBAaEB/QHgAQcBwAEAAR8B/wG/ - Af0B4AEHBAABgAEBAeABBwQAAY8B8QHgAQcBAwEAAR8B/wGAAQEB4AEHAQMBAAEfAf8BgwHBAeABBwED - AcACAAGAAUEB4AEHAQMBwAIAAYgBEQHgAQcCAAEfAf8BgQERAeABBwIAARABAQGBATEB4AEPAcABAwIA - AYEB8QHgAR8BwAEDAgABgAEBAeABPwHAAQMC/wGAAQEC/wH8AT8L + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAw + EQAAAk1TRnQBSQFMAgEBBQEAAagBBQGoAQUBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA + AwABIAMAAQEBAAEgBgABIC4AAxgBIgMwAUsDMAFMAzIBUOgAAyIBMQNWAbkDXQHiARABEwEOAf8BEAET + AQ4B/wEqAS0BKAH+A1MBrANNAZUDAAEB2AADIQEwA1kB7AErAS4BKQH6A1EB9wNSAfQDUwHxA0gB9gNB + AfkBEAETAQ4B/wNPAZsDAAEB0AADHAEoA1kB6wEqAS0BKAH+A1YBtgNMAZIDSAGFA0gBhQNGAYADSAGF + ASoBLQEoAf4BEAETAQ4B/wNOAZTQAAMmATgBKgEtASgB/gNMAZMDSwGQA00BlgNKAYsDRQF/A0MBeAND + AXgDRwGCAz4B+ANTAbDQAANcAdQBEAETAQ4B/wNRAaADTgGYA1ABnwM6AWEDOAFdA0IBdANGAYADSAGE + A0wBkwNYAeMDMAFMyAADNgFZA0ABcANZAdcDRwGCA0wBkwNJAYkDAQECBAADMAFLA0QBeQNIAYcDSwGQ + A1cB6AMwAUzIAAMtAUYDOAFeA0oBjQMSARgDUAGjEAADKQE+A0sBkANNAZUDWQHsAzABTMgAAxQBHAMw + AU0DTwGcA1EBogNTAbAQAAMrAUMDTwGbA1ABngNWAbsDFQEdyAADRAF5Az8BbgMqAUADHgErAyoBQANV + AbEDBAEFBAADOQFgA0wBkgNOAZQDVgG2A1YBuMgAAz8BbQMuAUgDGgEkAyUBNwMhATABKwEsASsBQwMs + AUQDSAGIA0gBhQNIAYcDSQGJA1ABmgNYAekDJwE6yAADBgEIAwoBDQNTAbADKgFAA0IBdQMUARwDNQFY + A0QBfANOAZQDRAF8A0gBiANOAfADJwE7yAADBwEJA1UBtAMJAQwEAANBAXMDKgFBA0IBdgM8AWcDUQGn + A1oBygNbAdYDJAE2Ax8BLdAAAwEBAgNTAawDDgETAzsBZQQAAzABTQMHAQkDBAEF5AADPwFuAwYBCAMx + AU8DAwEEA1MBsOwAAzEBTwMBAQL/ADUAA1ABowNSAakDUgGpA1IBqQNSAakDUgGpA1IBqQNSAakDUgGp + A1IBqQNSAakDUgGpA1IBqQNQAaNcAAMVAR0BQgJZAfUBUQJtAfcDQwF3A1sByAJCAVkB9QJYAV8B4wNK + AYwDCgENBAADVQG0A1kBxwMvAUkDAAEBAxsBJgMcAScDHAEnAxwBJwMcAScDHAEnAxwBJwMcAScDHAEn + AxwBJwMcAScDAgEDBAADUgGpMAADUgGpEAADJwE6AzABTAMwAUwDMAFMAzABTAMwAUwDMAFMAzABTAMw + AUwDJwE6FAADBQEHA0wBkgFWAlgBwQMVAR0DPQFpAQAByAHzAf8BAAGQAeYB/wIAAdwB/wIAAd0B/wIx + AeMB/wIHAd4B/wIAAd0B/wJYAVsBywMGAQgDAAH/AwAB/wNDAXcDKQE+AwAB/wMAAf8DAAH/AwAB/wMA + Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DMgFRBAADUgGpBAADUAGdA1MBqgNTAaoDUwGqA1MBqgNT + AaoDUwGqA1ABnQwAA1IBqRAAA04B+wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A04B+xQA + ATACMQFNAQAByQHzAf8BAAHJAfQB/wFZAmAB6wFbAl4B2QEAAcAB8QH/AQABBQHfAf8CAAHgAf8CAAHg + Af8COAHpAf8CCgHiAf8CAAHgAf8CAAHgAf8DQAFxA1EBogNWAbYDKgFABAADEAEVAxEBFwMRARcDEQEX + AxEBFwMRARcDEQEXAxEBFwMRARcDEQEXAxABFggAA1IBqQQAA1ABnQNTAaoDUwGqAx8BLBwAA1IBqRMA + Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8UAAMHAQoBWQJnAfIBAAHKAfQB/wEA + AcoB9AH/AQABygH0Af8BAAGhAe4B/wICAeMB/wICAeMB/wICAeMB/wKpAe8B/wIJAeMB/wICAeMB/wIC + AeMB/wJWAVgBuQMKAQ4DEQEXAwABATgAA1IBqTAAA1IBqRMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA + Af8DAAH/AwAB/wMAAf8MAAMVAR0DPQFpAzoBYgFcAmAB1AEAAcsB9QH/AQABywH1Af8BAAHLAfUB/wEA + AaAB8AH/AgUB5gH/AgUB5gH/AgUB5gH/AsIB9gH/Ah0B6AH/AgUB5gH/AgUB5gH/AlcBWQG/A1IB9AMA + Af8DPgFsAw4BEwNCAXYDQwF3A0MBdwNDAXcDQwF3A0MBdwNDAXcDQwF3A0MBdwNDAXcDQgF2AxQBGwQA + A1IBqQMiATIDUgGpA1IBqQNSAakDUgGpA1IBqQNSAakDUgGpA1IBqQNSAakDUgGpAyIBMgNSAakTAAH/ + AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/DAABSwJMAZABAAHLAfYB/wEAAcsB9gH/ + AQABywH2Af8BAAHLAfYB/wEpAU0BUwH6A0MBeAMiATICSwFfAfsCCAHpAf8CCAHpAf8CzQH4Af8CLAHt + Af8CCAHpAf8CCAHpAf8DUAGeAwAB/gMAAf8DQwF3Ax4BKwNXAcUDWQHHA1kBxwNZAccDWQHHA1kBxwNZ + AccDWQHHA1kBxwNZAccDWAHGAyYBOQQAA1IBqQM0AVUDNAFVIAADNAFVAzQBVQNSAakTAAH/AwAB/wMA + Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/DAADUQGgAQABzAH3Af8BAAHMAfcB/wEAAcwB9wH/ + AQABzAH3Af8DQwF3CAADSgGNAgsB7AH/AgsB7AH/AicB7wH/Ag8B7AH/AgsB7AH/AQcBGAHtAf8BUgJT + AagDMwFTAzwBZwMUARw4AANSAakDNAFVAzQBVQNGAYADUgGpA1IBqQNSAakDUgGpA1IBqQNSAakDRQF/ + AzQBVQM0AVUDUgGpEwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/w8AAQEBPwJA + AW8BPgJcAfgBAAHNAfcB/wEAAc0B9wH/AxIBGAgAAwEBAgNGAX4CUgFdAfACDgHuAf8BDgEPAe4B/wJA + AagB/QFFAkYBfgMDAQQDMwFTAzwBZwMUARw4AANSAakDNAFVAzQBVQM/AW4DMgFQEAADJwE7A0QBfAM0 + AVUDNAFVA1IBqRMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8PAAEBAT8CQAFv + AT4CXAH4AQABzgH4Af8BAAHOAfgB/wMSARgQAAMXASABAAG8AfcB/wEAAcQB9wH/AUACqAH9AUUCRgF+ + AwMBBAMAAf4DAAH/A0MBdwMfASwDVwHFA1kBxwNZAccDWQHHA1kBxwNZAccDWQHHA1kBxwNZAccDWQHH + A1gBxgMmATkEAANSAakDNAFVAzQBVQMFAQcDVQG1AxEBFwNSAakDKQE+BAADUAGfAxEBFwM0AVUDNAFV + A1IBqRMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8MAANRAaABAAHOAfgB/wEA + Ac8B+QH/AQABzwH5Af8BAAHPAfkB/wNDAXcQAANEAXoBAAHPAfkB/wEAAc8B+QH/AQABzwH5Af8BAAHO + AfgB/wFSAlMBqANSAfQDAAH/Az4BbAMOARMDQgF1A0MBdwNDAXcDQwF3A0MBdwNDAXcDQwF3A0MBdwND + AXcDQwF3A0MBdwMUARsEAANSAakDNAFVAzQBVQQAAzwBaANWAb4DIwE0A1UBtQMSARkDUQGgBAADNAFV + AzQBVQNSAakTAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DXAHfDAABSwJMAZABAAHQ + AfoB/wEAAdAB+gH/AQAB0AH6Af8BAAHQAfoB/wEpAU0BUwH6A0MBeAMSARkDEwEaA0QBegEoAl8B+wEA + AdAB+gH/AQAB0AH6Af8BAAHQAfoB/wEAAdAB+gH/A0oBjAMKAQ4DEQEXAwABATgAA1IBqQM0AVUDNAFV + AwABAQMtAUYDCgEOBAADOQFfA1wBzgMoATwEAAM0AVUDNAFVA1IBqRMAAf8DggH/AwAB/wMAAf8DAAH/ + AwAB/wMAAf8DAAH/A1wB3wMXASAMAAMVAR0DPQFpAzoBYgFcAmAB1AEAAdEB+gH/AQAB0QH6Af8BAAHQ + AfoB/wEAAcsB8wH/AQABywHzAf8BAAHQAfoB/wEAAdEB+gH/AQAB0QH6Af8BXQJhAeIDOgFiAz0BaQMU + ARwDUQGiA1YBtgMqAUAEAAMQARUDEQEXAxEBFwMRARcDEQEXAxEBFwMRARcDEQEXAxEBFwMRARcDEAEW + CAADUgGpAzQBVQM0AVUDMwFTA1IBpgNKAYwHAAEBA0cBgwgAAzQBVQM0AVUDUgGpEwAB/wOZAf8DhQH/ + AwAB/wMAAf8DAAH/AwAB/wNcAd8DFwEgGAADBwEKAVkCZwHyAQAB0gH7Af8BAAHSAfsB/wEAAdIB+wH/ + AQAB0gH7Af8BAAHSAfsB/wEAAdIB+wH/AQAB0gH7Af8BAAHSAfsB/wErAl8B+wMRARcLAAH/AwAB/wND + AXcDKQE+AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DMgFRBAADUgGp + AzQBVQM0AVUDEQEXA1ABngMkATYUAAM0AVUDNAFVA1IBqRAAA1AB+wMAAf8DAAH/AwAB/wMAAf8DAAH/ + A1wB3wMXASAcAAEwAjEBTQEAAdIB/AH/AQAB0gH8Af8BWQJgAesBWwJeAdkBAAHSAfwB/wEAAdIB/AH/ + AVsCYQHhAV0CYQHiAQAB0gH8Af8BAAHSAfwB/wM4AV4IAANVAbQDWQHHAy8BSQMAAQEDGwEmAxwBJwMc + AScDHAEnAxwBJwMcAScDHAEnAxwBJwMcAScDHAEnAxwBJwMCAQMEAANSAakDIgEyA1IBqQNSAakDUgGp + A1IBqQNSAakDUgGpA1IBqQNSAakDUgGpA1IBqQMiATIDUgGpEAADIAEuAykBPwMpAT8DKQE/AykBPwMp + AT8DEQEXIAADBQEHA0wBkgFWAlgBwQMVAR0DPQFpAQAB0wH8Af8BAAHTAfwB/wFFAkYBfwMQARUDVgGz + AUsCTAGPAwQBBkwAA1ABowNSAakDUgGpA1IBqQNSAakDUgGpA1IBqQNSAakDUgGpA1IBqQNSAakDUgGp + A1IBqQNQAaNcAAMVAR0BQgJZAfUBUQJtAfcDIAEvGAABQgFNAT4HAAE+AwABKAMAAUADAAEgAwABAQEA + AQEGAAEBFgAD/wEAAf4BHwYAAfgBAwYAAfABAQYAAeABAQYAAeABAQYAAeAHAAHAAUAGAAHBAeAGAAHB + AeAGAAHAAUEGAAGAAQEGAAGAAQMGAAEQAQcGAAGEAX8GAAHBAf8GAAHPAf8GAAL/AYABAQL/AfwBAQIA + Ab8B/QHgAQcBwAMAAaABHQHgAQcBwAEAARABAQGhAf0B4AEHAcABAAEfAf8BvwH9AeABBwQAAYABAQHg + AQcEAAGPAfEB4AEHAQMBAAEfAf8BgAEBAeABBwEDAQABHwH/AYMBwQHgAQcBAwHAAgABgAFBAeABBwED + AcACAAGIAREB4AEHAgABHwH/AYEBEQHgAQcCAAEQAQEBgQExAeABDwHAAQMCAAGBAfEB4AEfAcABAwIA + AYABAQHgAT8BwAEDAv8BgAEBAv8B/AE/Cw== + + 291, 17 + + + 649, 17 + + + 551, 17 + + + 765, 17 + + + 1155, 17 + + + 863, 17 + 863, 17 diff --git a/UVtools.GUI/Images/cursor-16x16.png b/UVtools.GUI/Images/cursor-16x16.png new file mode 100644 index 0000000..b0eeaa0 Binary files /dev/null and b/UVtools.GUI/Images/cursor-16x16.png differ diff --git a/UVtools.GUI/Properties/AssemblyInfo.cs b/UVtools.GUI/Properties/AssemblyInfo.cs index b3f0298..cb57eb9 100644 --- a/UVtools.GUI/Properties/AssemblyInfo.cs +++ b/UVtools.GUI/Properties/AssemblyInfo.cs @@ -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.2.2")] -[assembly: AssemblyFileVersion("0.6.2.2")] +[assembly: AssemblyVersion("0.6.2.3")] +[assembly: AssemblyFileVersion("0.6.2.3")] diff --git a/UVtools.GUI/Properties/Resources.Designer.cs b/UVtools.GUI/Properties/Resources.Designer.cs index 584adf6..7ed314f 100644 --- a/UVtools.GUI/Properties/Resources.Designer.cs +++ b/UVtools.GUI/Properties/Resources.Designer.cs @@ -220,6 +220,16 @@ namespace UVtools.GUI.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap cursor_16x16 { + get { + object obj = ResourceManager.GetObject("cursor-16x16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/UVtools.GUI/Properties/Resources.resx b/UVtools.GUI/Properties/Resources.resx index 28be07b..ed99437 100644 --- a/UVtools.GUI/Properties/Resources.resx +++ b/UVtools.GUI/Properties/Resources.resx @@ -118,20 +118,23 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ..\Images\SaveAs-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\layers-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Images\Error-128x128.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\Cancel-24x24.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\search-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Images\resize-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Images\arrow-top-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\gui\mutation_solidify.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\gui\mutation_closing.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Images\eye-24x24.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -166,12 +169,12 @@ ..\Images\warning-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\checkbox-marked-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Images\Wrench-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\pattern-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Images\arrow-down-double-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -181,15 +184,15 @@ ..\Images\arrow-up.ico;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\Convert-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Images\Ok-24x24.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Images\Button-Info-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\arrow-down-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Images\Next-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -202,14 +205,14 @@ ..\Images\Open-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\pointer-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\checkbox-unmarked-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Images\File-Close-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\search-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\SaveAs-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Images\Cancel-32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -217,23 +220,20 @@ ..\Images\eye-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\gui\mutation_tophat.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Images\Geometry-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\CNCMachine-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\gui\mutation_tophat.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Images\plus.ico;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\UVtools.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\Convert-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\layers-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\pattern-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Images\gui\mutation_dilation.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -253,23 +253,26 @@ ..\Images\arrow-end-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\checkbox-unmarked-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Images\arrow-down-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\UVtools.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Images\delete-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\checkbox-marked-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\CNCMachine-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Images\pointer-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Images\gui\mutation_solidify.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Images\gui\mutation_blackhat.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\gui\mutation_closing.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\Cancel-24x24.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Images\clipboard-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -283,7 +286,7 @@ ..\Images\island-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\resize-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\cursor-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file diff --git a/UVtools.GUI/UVtools.GUI.csproj b/UVtools.GUI/UVtools.GUI.csproj index 5661f2a..03ede66 100644 --- a/UVtools.GUI/UVtools.GUI.csproj +++ b/UVtools.GUI/UVtools.GUI.csproj @@ -323,6 +323,7 @@ + -- cgit v1.2.3