mirror of
https://github.com/riegera2412/UVtools.git
synced 2026-07-08 17:42:31 +02:00
v0.8.3.0
* (Add) Issue: Overhangs - Detects potential overhangs on layers (#64) * (Add) PrusaSlicer Printer: Phrozen Sonic Mini 4K * (Improvement) CWS: Allow read files with "slice*" filenames as content (#67) * (Improvement) Allow convert chitubox files to CWS Bene4 Mono printer, must configure a printer containing "Bene4 Mono" name on Chitubox (#67) * (Improvement) Edit print parameters: Show changes on confirm dialog * (Improvement) Edit print parameters: Dedicated reset button hides when value is unchanged * (Improvement) More detailed descriptions on error messages * (Fix) Some islands wont remove from list when many selected and click remove * (Fix) Extract: Use trail zeros to layer filenames * (Fix) MSI installer not creating shortcuts (#66)
This commit is contained in:
+8
-13
@@ -1,22 +1,17 @@
|
||||
# Changelog
|
||||
|
||||
## ??/??/2020 - v0.9.0.0
|
||||
## 30/09/2020 - v0.8.3.0
|
||||
|
||||
* (Add) Multi-OS with Linux support
|
||||
* (Add) Themes support
|
||||
* (Add) Fullscreen support (F11)
|
||||
* (Change) GUI was rewritten from Windows Forms to WPF Avalonia, C#
|
||||
* (Add) Issue: Overhangs - Detects potential overhangs on layers (#64)
|
||||
* (Add) PrusaSlicer Printer: Phrozen Sonic Mini 4K
|
||||
* (Improvement) CWS: Allow read files with "slice*" filenames as content (#67)
|
||||
* (Improvement) Allow convert chitubox files to CWS Bene4 Mono printer, must configure a printer containing "Bene4 Mono" name on Chitubox (#67)
|
||||
* (Improvement) Edit print parameters: Show changes on confirm dialog
|
||||
* (Improvement) Edit print parameters: Dedicated reset button hides when value is unchanged
|
||||
* (Improvement) Edit print parameters: Show changes on confirm dialog
|
||||
* (Improvement) More detailed descriptions on error messages
|
||||
* (Improvement) GUI is now scalable
|
||||
* (Fix) Some islands wont remove from list select select many and click remove
|
||||
* (Fix) Many bug found and fixed during convertion
|
||||
|
||||
## ??/09/2020 - v0.8.2.5
|
||||
|
||||
* (Fix) Some islands wont remove from list when many selected and click remove
|
||||
* (Fix) Extract: Use trail zeros to layer filenames
|
||||
* (Improvement) Edit print parameters: Show changes on confirm dialog
|
||||
* (Fix) MSI installer not creating shortcuts (#66)
|
||||
|
||||
## 22/09/2020 - v0.8.2.4
|
||||
|
||||
|
||||
@@ -187,7 +187,7 @@ namespace UVtools.Cmd
|
||||
{
|
||||
Console.WriteLine("Computing Issues, please wait.");
|
||||
sw.Restart();
|
||||
var issueList = fileFormat.LayerManager.GetAllIssues(null, null, null, true, progress);
|
||||
var issueList = fileFormat.LayerManager.GetAllIssues(null, null, null, null, true, progress);
|
||||
sw.Stop();
|
||||
|
||||
Console.WriteLine("Issues:");
|
||||
|
||||
@@ -370,10 +370,15 @@ namespace UVtools.Core.FileFormats
|
||||
}
|
||||
|
||||
entry = inputFile.GetEntry($"{Path.GetFileNameWithoutExtension(fileFullPath)}.gcode");
|
||||
if (ReferenceEquals(entry, null))
|
||||
if (entry is null)
|
||||
{
|
||||
Clear();
|
||||
throw new FileLoadException($"{Path.GetFileNameWithoutExtension(fileFullPath)}.gcode not found", fileFullPath);
|
||||
entry = inputFile.GetEntry("slice.gcode");
|
||||
if (entry is null)
|
||||
{
|
||||
Clear();
|
||||
throw new FileLoadException($"{Path.GetFileNameWithoutExtension(fileFullPath)}.gcode nor slice.gcode was found",
|
||||
fileFullPath);
|
||||
}
|
||||
}
|
||||
|
||||
using (TextReader tr = new StreamReader(entry.Open()))
|
||||
|
||||
@@ -1817,6 +1817,8 @@ namespace UVtools.Core.FileFormats
|
||||
file.OutputSettings.AntiAliasingValue = ValidateAntiAliasingLevel();
|
||||
file.OutputSettings.AntiAliasing = file.OutputSettings.AntiAliasingValue > 1;
|
||||
|
||||
file.Printer = MachineName.Contains("Bene4 Mono") ? CWSFile.PrinterType.BeneMono : CWSFile.PrinterType.Elfin;
|
||||
|
||||
file.Encode(fileFullPath, progress);
|
||||
|
||||
return true;
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace UVtools.Core
|
||||
public class IslandDetectionConfiguration
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets if the detection is enabled
|
||||
/// Gets or sets if the detection is enabled
|
||||
/// </summary>
|
||||
public bool Enabled { get; set; } = true;
|
||||
|
||||
@@ -62,10 +62,43 @@ namespace UVtools.Core
|
||||
public bool AllowDiagonalBonds { get; set; } = false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overhang configuration
|
||||
/// </summary>
|
||||
public class OverhangDetectionConfiguration
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets or sets if the detection is enabled
|
||||
/// </summary>
|
||||
public bool Enabled { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a list of layers to check for overhangs, absent layers will not be checked.
|
||||
/// Set to null to check every layer
|
||||
/// </summary>
|
||||
public List<uint> WhiteListLayers { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets if should take in consideration the islands, if yes a island can't be a overhang at same time, otherwise islands and overhangs can be shared
|
||||
/// </summary>
|
||||
public bool IndependentFromIslands { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// After compute overhangs, masses with a number of pixels bellow this number will be discarded (Not a overhang)
|
||||
/// </summary>
|
||||
public byte RequiredPixelsToConsider { get; set; } = 1;
|
||||
|
||||
/// <summary>
|
||||
/// Previous layer will be subtracted from current layer, after will erode by this value.
|
||||
/// The survived pixels are potential overhangs.
|
||||
/// </summary>
|
||||
public byte ErodeIterations { get; set; } = 40;
|
||||
}
|
||||
|
||||
public class ResinTrapDetectionConfiguration
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets if the detection is enabled
|
||||
/// Gets or sets if the detection is enabled
|
||||
/// </summary>
|
||||
public bool Enabled { get; set; } = true;
|
||||
|
||||
@@ -91,6 +124,7 @@ namespace UVtools.Core
|
||||
public byte MaximumPixelBrightnessToDrain { get; set; } = 30;
|
||||
}
|
||||
|
||||
|
||||
public class TouchingBoundDetectionConfiguration
|
||||
{
|
||||
/// <summary>
|
||||
@@ -110,6 +144,7 @@ namespace UVtools.Core
|
||||
public enum IssueType : byte
|
||||
{
|
||||
Island,
|
||||
Overhang,
|
||||
ResinTrap,
|
||||
TouchingBound,
|
||||
EmptyLayer,
|
||||
|
||||
@@ -692,15 +692,18 @@ namespace UVtools.Core
|
||||
}
|
||||
|
||||
public List<LayerIssue> GetAllIssues(
|
||||
IslandDetectionConfiguration islandConfig = null, ResinTrapDetectionConfiguration resinTrapConfig = null,
|
||||
IslandDetectionConfiguration islandConfig = null,
|
||||
OverhangDetectionConfiguration overhangConfig = null,
|
||||
ResinTrapDetectionConfiguration resinTrapConfig = null,
|
||||
TouchingBoundDetectionConfiguration touchBoundConfig = null,
|
||||
bool emptyLayersConfig = true,
|
||||
OperationProgress progress = null)
|
||||
{
|
||||
if(ReferenceEquals(islandConfig, null)) islandConfig = new IslandDetectionConfiguration();
|
||||
if(ReferenceEquals(resinTrapConfig, null)) resinTrapConfig = new ResinTrapDetectionConfiguration();
|
||||
if(ReferenceEquals(touchBoundConfig, null)) touchBoundConfig = new TouchingBoundDetectionConfiguration();
|
||||
if(ReferenceEquals(progress, null)) progress = new OperationProgress();
|
||||
if(islandConfig is null) islandConfig = new IslandDetectionConfiguration();
|
||||
if(overhangConfig is null) overhangConfig = new OverhangDetectionConfiguration();
|
||||
if(resinTrapConfig is null) resinTrapConfig = new ResinTrapDetectionConfiguration();
|
||||
if(touchBoundConfig is null) touchBoundConfig = new TouchingBoundDetectionConfiguration();
|
||||
if(progress is null) progress = new OperationProgress();
|
||||
|
||||
var result = new ConcurrentBag<LayerIssue>();
|
||||
var layerHollowAreas = new ConcurrentDictionary<uint, List<LayerHollowArea>>();
|
||||
@@ -711,7 +714,7 @@ namespace UVtools.Core
|
||||
|
||||
Parallel.Invoke(() =>
|
||||
{
|
||||
if (!islandConfig.Enabled && !touchBoundConfig.Enabled)
|
||||
if (!islandConfig.Enabled && !overhangConfig.Enabled && !touchBoundConfig.Enabled)
|
||||
{
|
||||
islandsFinished = true;
|
||||
return;
|
||||
@@ -739,9 +742,14 @@ namespace UVtools.Core
|
||||
}
|
||||
|
||||
// Spare a decoding cycle
|
||||
if (!touchBoundConfig.Enabled &&
|
||||
if (!touchBoundConfig.Enabled &&
|
||||
!overhangConfig.Enabled &&
|
||||
(layer.Index == 0 ||
|
||||
(!ReferenceEquals(islandConfig.WhiteListLayers, null) && !islandConfig.WhiteListLayers.Contains(layer.Index)))
|
||||
(
|
||||
(!ReferenceEquals(overhangConfig.WhiteListLayers, null) && !overhangConfig.WhiteListLayers.Contains(layer.Index)) &&
|
||||
(!ReferenceEquals(islandConfig.WhiteListLayers, null) && !islandConfig.WhiteListLayers.Contains(layer.Index))
|
||||
)
|
||||
)
|
||||
)
|
||||
{
|
||||
lock (progress.Mutex)
|
||||
@@ -798,107 +806,212 @@ namespace UVtools.Core
|
||||
}
|
||||
}
|
||||
|
||||
if (layer.Index == 0 || !islandConfig.Enabled)
|
||||
if (layer.Index == 0)
|
||||
{
|
||||
lock (progress.Mutex)
|
||||
{
|
||||
progress++;
|
||||
}
|
||||
return; // No islands for layer 0
|
||||
|
||||
return; // No islands nor overhangs for layer 0
|
||||
}
|
||||
|
||||
if (!ReferenceEquals(islandConfig.WhiteListLayers, null)) // Check white list
|
||||
Mat previousImage = null;
|
||||
Span<byte> previousSpan = null;
|
||||
|
||||
if (islandConfig.Enabled)
|
||||
{
|
||||
if (!islandConfig.WhiteListLayers.Contains(layer.Index))
|
||||
if (!ReferenceEquals(islandConfig.WhiteListLayers, null)) // Check white list
|
||||
{
|
||||
lock (progress.Mutex)
|
||||
if (!islandConfig.WhiteListLayers.Contains(layer.Index))
|
||||
{
|
||||
progress++;
|
||||
lock (progress.Mutex)
|
||||
{
|
||||
progress++;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
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())
|
||||
{
|
||||
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
|
||||
//stats[i][1]: Top Edge of Connected Component
|
||||
//stats[i][2]: Width of Connected Component
|
||||
//stats[i][3]: Height of Connected Component
|
||||
//stats[i][4]: Total Area (in pixels) in Connected Component
|
||||
|
||||
Span<int> labelSpan = labels.GetPixelSpan<int>();
|
||||
Mat previousImage = null;
|
||||
Span<byte> previousSpan = null;
|
||||
|
||||
for (int i = 1; i < numLabels; i++)
|
||||
if (islandConfig.BinaryThreshold > 0)
|
||||
{
|
||||
Rectangle rect = new Rectangle((int)ccStats.GetValue(i, (int)ConnectedComponentsTypes.Left),
|
||||
(int)ccStats.GetValue(i, (int)ConnectedComponentsTypes.Top),
|
||||
(int)ccStats.GetValue(i, (int)ConnectedComponentsTypes.Width),
|
||||
(int)ccStats.GetValue(i, (int)ConnectedComponentsTypes.Height));
|
||||
|
||||
if (rect.GetArea() < islandConfig.RequiredAreaToProcessCheck)
|
||||
continue;
|
||||
CvInvoke.Threshold(image, image, islandConfig.BinaryThreshold, 255,
|
||||
ThresholdType.Binary);
|
||||
}
|
||||
|
||||
if (ReferenceEquals(previousImage, null))
|
||||
using (Mat labels = new Mat())
|
||||
using (Mat stats = new Mat())
|
||||
using (Mat centroids = new Mat())
|
||||
{
|
||||
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
|
||||
//stats[i][1]: Top Edge of Connected Component
|
||||
//stats[i][2]: Width of Connected Component
|
||||
//stats[i][3]: Height of Connected Component
|
||||
//stats[i][4]: Total Area (in pixels) in Connected Component
|
||||
|
||||
Span<int> labelSpan = labels.GetPixelSpan<int>();
|
||||
|
||||
for (int i = 1; i < numLabels; i++)
|
||||
{
|
||||
previousImage = this[layer.Index - 1].LayerMat;
|
||||
previousSpan = previousImage.GetPixelSpan<byte>();
|
||||
}
|
||||
Rectangle rect = new Rectangle(
|
||||
(int) ccStats.GetValue(i, (int) ConnectedComponentsTypes.Left),
|
||||
(int) ccStats.GetValue(i, (int) ConnectedComponentsTypes.Top),
|
||||
(int) ccStats.GetValue(i, (int) ConnectedComponentsTypes.Width),
|
||||
(int) ccStats.GetValue(i, (int) ConnectedComponentsTypes.Height));
|
||||
|
||||
List<Point> points = new List<Point>();
|
||||
uint pixelsSupportingIsland = 0;
|
||||
if (rect.GetArea() < islandConfig.RequiredAreaToProcessCheck)
|
||||
continue;
|
||||
|
||||
for (int y = rect.Y; y < rect.Bottom; y++)
|
||||
{
|
||||
if (previousImage is null)
|
||||
{
|
||||
previousImage = this[layer.Index - 1].LayerMat;
|
||||
previousSpan = previousImage.GetPixelSpan<byte>();
|
||||
}
|
||||
|
||||
List<Point> points = new List<Point>();
|
||||
uint pixelsSupportingIsland = 0;
|
||||
|
||||
for (int y = rect.Y; y < rect.Bottom; y++)
|
||||
for (int x = rect.X; x < rect.Right; x++)
|
||||
{
|
||||
int pixel = step * y + x;
|
||||
if (
|
||||
labelSpan[pixel] != i || // Background pixel or a pixel from another component within the bounding rectangle
|
||||
span[pixel] < islandConfig.RequiredPixelBrightnessToProcessCheck // Low brightness, ignore
|
||||
labelSpan[pixel] !=
|
||||
i || // Background pixel or a pixel from another component within the bounding rectangle
|
||||
span[pixel] <
|
||||
islandConfig
|
||||
.RequiredPixelBrightnessToProcessCheck // Low brightness, ignore
|
||||
) continue;
|
||||
|
||||
points.Add(new Point(x, y));
|
||||
|
||||
if (previousSpan[pixel] >= islandConfig.RequiredPixelBrightnessToSupport)
|
||||
if (previousSpan[pixel] >=
|
||||
islandConfig.RequiredPixelBrightnessToSupport)
|
||||
{
|
||||
pixelsSupportingIsland++;
|
||||
}
|
||||
}
|
||||
|
||||
bool isIsland = true;
|
||||
if (points.Count == 0) continue; // Should never happen
|
||||
if (pixelsSupportingIsland >= islandConfig.RequiredPixelsToSupport)
|
||||
isIsland = false; // Not a island, bounding is strong, i think...
|
||||
else if (pixelsSupportingIsland > 0 &&
|
||||
points.Count < islandConfig.RequiredPixelsToSupport &&
|
||||
pixelsSupportingIsland >= Math.Max(1, points.Count / 2))
|
||||
isIsland = false; // Not a island, but maybe weak bounding...
|
||||
|
||||
|
||||
if (isIsland)
|
||||
{
|
||||
result.Add(new LayerIssue(layer, LayerIssue.IssueType.Island,
|
||||
points.ToArray(),
|
||||
rect));
|
||||
continue;
|
||||
}
|
||||
|
||||
// Check for overhangs
|
||||
if (overhangConfig.Enabled && !overhangConfig.IndependentFromIslands)
|
||||
{
|
||||
points.Clear();
|
||||
using (var imageRoi = new Mat(image, rect))
|
||||
using (var previousImageRoi = new Mat(previousImage, rect))
|
||||
using (var subtractedImage = new Mat())
|
||||
{
|
||||
var anchor = new Point(-1, -1);
|
||||
CvInvoke.Subtract(imageRoi, previousImageRoi, subtractedImage);
|
||||
|
||||
CvInvoke.Erode(subtractedImage, subtractedImage, CvInvoke.GetStructuringElement(ElementShape.Rectangle,
|
||||
new Size(3, 3), anchor),
|
||||
anchor, overhangConfig.ErodeIterations, BorderType.Default,
|
||||
new MCvScalar());
|
||||
|
||||
var subtractedSpan = subtractedImage.GetPixelSpan<byte>();
|
||||
|
||||
for (int y = 0; y < subtractedImage.Height; y++)
|
||||
for (int x = 0; x < subtractedImage.Step; x++)
|
||||
{
|
||||
int labelX = rect.X + x;
|
||||
int labelY = rect.Y + y;
|
||||
int pixel = subtractedImage.GetPixelPos(x, y);
|
||||
int pixelLabel = labelY * step + labelX;
|
||||
if (labelSpan[pixelLabel] != i || subtractedSpan[pixel] == 0) continue;
|
||||
|
||||
points.Add(new Point(labelX, labelY));
|
||||
}
|
||||
|
||||
if (points.Count >= overhangConfig.RequiredPixelsToConsider)
|
||||
{
|
||||
result.Add(new LayerIssue(
|
||||
layer, LayerIssue.IssueType.Overhang, points.ToArray(), rect
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (points.Count == 0) continue; // Should never happen
|
||||
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 (!islandConfig.Enabled && overhangConfig.Enabled ||
|
||||
(islandConfig.Enabled && overhangConfig.Enabled && overhangConfig.IndependentFromIslands))
|
||||
{
|
||||
if (!ReferenceEquals(overhangConfig.WhiteListLayers, null)) // Check white list
|
||||
{
|
||||
if (!overhangConfig.WhiteListLayers.Contains(layer.Index))
|
||||
{
|
||||
lock (progress.Mutex)
|
||||
{
|
||||
progress++;
|
||||
}
|
||||
|
||||
var issue = new LayerIssue(layer, LayerIssue.IssueType.Island, points.ToArray(),
|
||||
rect);
|
||||
result.Add(issue);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (previousImage is null)
|
||||
{
|
||||
previousImage = this[layer.Index - 1].LayerMat;
|
||||
}
|
||||
|
||||
previousImage?.Dispose();
|
||||
using (var subtractedImage = new Mat())
|
||||
using (var vecPoints = new VectorOfPoint())
|
||||
{
|
||||
var anchor = new Point(-1, -1);
|
||||
CvInvoke.Subtract(image, previousImage, subtractedImage);
|
||||
|
||||
//subtractedImage.Save($"D:\\subtracted_image\\subtracted{layer.Index}.png");
|
||||
|
||||
|
||||
CvInvoke.Erode(subtractedImage, subtractedImage,
|
||||
CvInvoke.GetStructuringElement(ElementShape.Rectangle, new Size(3,3), anchor),
|
||||
anchor, overhangConfig.ErodeIterations, BorderType.Default, new MCvScalar());
|
||||
|
||||
|
||||
|
||||
CvInvoke.FindNonZero(subtractedImage, vecPoints);
|
||||
if (vecPoints.Size >= overhangConfig.RequiredPixelsToConsider)
|
||||
{
|
||||
//subtractedImage.Save("D:\\subtracted_image\\subtracted_erroded.png");
|
||||
result.Add(new LayerIssue(
|
||||
layer, LayerIssue.IssueType.Overhang, vecPoints.ToArray(), layer.BoundingRectangle
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
previousImage?.Dispose();
|
||||
|
||||
}
|
||||
|
||||
lock (progress.Mutex)
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace UVtools.Core.Operations
|
||||
|
||||
public const string StatusExtracting = "Extracting";
|
||||
|
||||
public const string StatusIslands = "Layers processed (Islands)";
|
||||
public const string StatusIslands = "Layers processed (Islands/Overhangs)";
|
||||
public const string StatusResinTraps = "Layers processed (Resin traps)";
|
||||
public const string StatusRepairLayers = "Repaired Layers";
|
||||
|
||||
|
||||
@@ -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.8.2.4</Version>
|
||||
<Version>0.8.3.0</Version>
|
||||
<Copyright>Copyright © 2020 PTRTECH</Copyright>
|
||||
<PackageIcon>UVtools.png</PackageIcon>
|
||||
<Platforms>AnyCPU;x64</Platforms>
|
||||
<AssemblyVersion>0.8.2.4</AssemblyVersion>
|
||||
<FileVersion>0.8.2.4</FileVersion>
|
||||
<AssemblyVersion>0.8.3.0</AssemblyVersion>
|
||||
<FileVersion>0.8.3.0</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
@@ -47,7 +47,7 @@
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="BinarySerializer" Version="8.5.3" />
|
||||
<PackageReference Include="Emgu.CV" Version="4.4.0.4061" />
|
||||
<PackageReference Include="Emgu.CV" Version="4.4.0.4077" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
|
||||
<PackageReference Include="System.Memory" Version="4.5.4" />
|
||||
<PackageReference Include="System.Reflection.TypeExtensions" Version="4.7.0" />
|
||||
|
||||
+22
-6
@@ -34,16 +34,16 @@
|
||||
<value>Red</value>
|
||||
</setting>
|
||||
<setting name="IslandColor" serializeAs="String">
|
||||
<value>Gold</value>
|
||||
</setting>
|
||||
<setting name="IslandHLColor" serializeAs="String">
|
||||
<value>Yellow</value>
|
||||
</setting>
|
||||
<setting name="IslandHLColor" serializeAs="String">
|
||||
<value>Gold</value>
|
||||
</setting>
|
||||
<setting name="ResinTrapColor" serializeAs="String">
|
||||
<value>SandyBrown</value>
|
||||
<value>Orange</value>
|
||||
</setting>
|
||||
<setting name="ResinTrapHLColor" serializeAs="String">
|
||||
<value>Orange</value>
|
||||
<value>SandyBrown</value>
|
||||
</setting>
|
||||
<setting name="TouchingBoundsColor" serializeAs="String">
|
||||
<value>Red</value>
|
||||
@@ -216,7 +216,8 @@
|
||||
<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">
|
||||
@@ -252,6 +253,21 @@
|
||||
<setting name="LayerTooltipOverlayOpacity" serializeAs="String">
|
||||
<value>210</value>
|
||||
</setting>
|
||||
<setting name="OverhangColor" serializeAs="String">
|
||||
<value>HotPink</value>
|
||||
</setting>
|
||||
<setting name="OverhangHLColor" serializeAs="String">
|
||||
<value>DeepPink</value>
|
||||
</setting>
|
||||
<setting name="ComputeOverhangs" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="OverhangErodeIterations" serializeAs="String">
|
||||
<value>49</value>
|
||||
</setting>
|
||||
<setting name="OverhangIndependentFromIslands" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
</UVtools.GUI.Properties.Settings>
|
||||
</userSettings>
|
||||
</configuration>
|
||||
|
||||
@@ -82,6 +82,7 @@ namespace UVtools.GUI.Controls.Tools
|
||||
Dock = DockStyle.Fill,
|
||||
BackColor = Color.LightGray,
|
||||
Enabled = false,
|
||||
Visible = false,
|
||||
Tag = this
|
||||
};
|
||||
ResetButton.Click += ResetButton_Clicked;
|
||||
@@ -90,7 +91,7 @@ namespace UVtools.GUI.Controls.Tools
|
||||
private void NewValue_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
Modifier.NewValue = NewValue.Value;
|
||||
ResetButton.Enabled = Modifier.HasChanged;
|
||||
ResetButton.Visible = ResetButton.Enabled = Modifier.HasChanged;
|
||||
}
|
||||
|
||||
private void ResetButton_Clicked(object sender, EventArgs e)
|
||||
|
||||
+270
-108
@@ -179,6 +179,14 @@
|
||||
this.cbLayerRepairLayersIslands = new System.Windows.Forms.CheckBox();
|
||||
this.pnActions = new System.Windows.Forms.Panel();
|
||||
this.toolTip = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.cbComputeOverhangs = new System.Windows.Forms.CheckBox();
|
||||
this.btnOverhangColor = new System.Windows.Forms.Button();
|
||||
this.btnOverhangHLColor = new System.Windows.Forms.Button();
|
||||
this.label47 = new System.Windows.Forms.Label();
|
||||
this.groupBox11 = new System.Windows.Forms.GroupBox();
|
||||
this.cbOverhangIndependentFromIslands = new System.Windows.Forms.CheckBox();
|
||||
this.nmOverhangErodeIterations = new System.Windows.Forms.NumericUpDown();
|
||||
this.label48 = new System.Windows.Forms.Label();
|
||||
this.groupBox3.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.nmResinTrapBinaryThreshold)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.nmResinTrapMaximumPixelBrightnessToDrain)).BeginInit();
|
||||
@@ -214,6 +222,8 @@
|
||||
((System.ComponentModel.ISupportInitialize)(this.nmLayerRepairDefaultOpeningIterations)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.nmLayerRepairDefaultClosingIterations)).BeginInit();
|
||||
this.pnActions.SuspendLayout();
|
||||
this.groupBox11.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.nmOverhangErodeIterations)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// colorDialog
|
||||
@@ -226,7 +236,7 @@
|
||||
this.btnSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnSave.Image = global::UVtools.GUI.Properties.Resources.Ok_24x24;
|
||||
this.btnSave.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.btnSave.Location = new System.Drawing.Point(301, 13);
|
||||
this.btnSave.Location = new System.Drawing.Point(346, 13);
|
||||
this.btnSave.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.btnSave.Name = "btnSave";
|
||||
this.btnSave.Size = new System.Drawing.Size(150, 48);
|
||||
@@ -242,7 +252,7 @@
|
||||
this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.btnCancel.Image = global::UVtools.GUI.Properties.Resources.Cancel_24x24;
|
||||
this.btnCancel.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.btnCancel.Location = new System.Drawing.Point(459, 13);
|
||||
this.btnCancel.Location = new System.Drawing.Point(504, 13);
|
||||
this.btnCancel.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.btnCancel.Name = "btnCancel";
|
||||
this.btnCancel.Size = new System.Drawing.Size(150, 48);
|
||||
@@ -309,11 +319,11 @@
|
||||
// cbComputeResinTraps
|
||||
//
|
||||
this.cbComputeResinTraps.AutoSize = true;
|
||||
this.cbComputeResinTraps.Location = new System.Drawing.Point(164, 79);
|
||||
this.cbComputeResinTraps.Location = new System.Drawing.Point(269, 79);
|
||||
this.cbComputeResinTraps.Name = "cbComputeResinTraps";
|
||||
this.cbComputeResinTraps.Size = new System.Drawing.Size(107, 22);
|
||||
this.cbComputeResinTraps.Size = new System.Drawing.Size(102, 22);
|
||||
this.cbComputeResinTraps.TabIndex = 17;
|
||||
this.cbComputeResinTraps.Text = "Resin Traps";
|
||||
this.cbComputeResinTraps.Text = "Resin traps";
|
||||
this.cbComputeResinTraps.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// groupBox3
|
||||
@@ -327,9 +337,9 @@
|
||||
this.groupBox3.Controls.Add(this.nmResinTrapRequiredAreaToProcessCheck);
|
||||
this.groupBox3.Controls.Add(this.label11);
|
||||
this.groupBox3.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.groupBox3.Location = new System.Drawing.Point(3, 351);
|
||||
this.groupBox3.Location = new System.Drawing.Point(3, 424);
|
||||
this.groupBox3.Name = "groupBox3";
|
||||
this.groupBox3.Size = new System.Drawing.Size(610, 162);
|
||||
this.groupBox3.Size = new System.Drawing.Size(655, 150);
|
||||
this.groupBox3.TabIndex = 24;
|
||||
this.groupBox3.TabStop = false;
|
||||
this.groupBox3.Text = "Resin Traps";
|
||||
@@ -366,7 +376,7 @@
|
||||
//
|
||||
// nmResinTrapMaximumPixelBrightnessToDrain
|
||||
//
|
||||
this.nmResinTrapMaximumPixelBrightnessToDrain.Location = new System.Drawing.Point(10, 125);
|
||||
this.nmResinTrapMaximumPixelBrightnessToDrain.Location = new System.Drawing.Point(10, 113);
|
||||
this.nmResinTrapMaximumPixelBrightnessToDrain.Maximum = new decimal(new int[] {
|
||||
150,
|
||||
0,
|
||||
@@ -385,7 +395,7 @@
|
||||
// label13
|
||||
//
|
||||
this.label13.AutoSize = true;
|
||||
this.label13.Location = new System.Drawing.Point(73, 128);
|
||||
this.label13.Location = new System.Drawing.Point(73, 116);
|
||||
this.label13.Name = "label13";
|
||||
this.label13.Size = new System.Drawing.Size(425, 18);
|
||||
this.label13.TabIndex = 25;
|
||||
@@ -395,7 +405,7 @@
|
||||
//
|
||||
// nmResinTrapRequiredBlackPixelsToDrain
|
||||
//
|
||||
this.nmResinTrapRequiredBlackPixelsToDrain.Location = new System.Drawing.Point(10, 91);
|
||||
this.nmResinTrapRequiredBlackPixelsToDrain.Location = new System.Drawing.Point(10, 83);
|
||||
this.nmResinTrapRequiredBlackPixelsToDrain.Maximum = new decimal(new int[] {
|
||||
255,
|
||||
0,
|
||||
@@ -419,7 +429,7 @@
|
||||
// label12
|
||||
//
|
||||
this.label12.AutoSize = true;
|
||||
this.label12.Location = new System.Drawing.Point(73, 94);
|
||||
this.label12.Location = new System.Drawing.Point(73, 86);
|
||||
this.label12.Name = "label12";
|
||||
this.label12.Size = new System.Drawing.Size(429, 18);
|
||||
this.label12.TabIndex = 23;
|
||||
@@ -429,7 +439,7 @@
|
||||
//
|
||||
// nmResinTrapRequiredAreaToProcessCheck
|
||||
//
|
||||
this.nmResinTrapRequiredAreaToProcessCheck.Location = new System.Drawing.Point(10, 57);
|
||||
this.nmResinTrapRequiredAreaToProcessCheck.Location = new System.Drawing.Point(10, 53);
|
||||
this.nmResinTrapRequiredAreaToProcessCheck.Maximum = new decimal(new int[] {
|
||||
255,
|
||||
0,
|
||||
@@ -453,7 +463,7 @@
|
||||
// label11
|
||||
//
|
||||
this.label11.AutoSize = true;
|
||||
this.label11.Location = new System.Drawing.Point(73, 60);
|
||||
this.label11.Location = new System.Drawing.Point(73, 56);
|
||||
this.label11.Name = "label11";
|
||||
this.label11.Size = new System.Drawing.Size(530, 18);
|
||||
this.label11.TabIndex = 21;
|
||||
@@ -477,7 +487,7 @@
|
||||
this.groupBox2.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.groupBox2.Location = new System.Drawing.Point(3, 114);
|
||||
this.groupBox2.Name = "groupBox2";
|
||||
this.groupBox2.Size = new System.Drawing.Size(610, 237);
|
||||
this.groupBox2.Size = new System.Drawing.Size(655, 217);
|
||||
this.groupBox2.TabIndex = 23;
|
||||
this.groupBox2.TabStop = false;
|
||||
this.groupBox2.Text = "Islands";
|
||||
@@ -514,14 +524,14 @@
|
||||
this.label21.Size = new System.Drawing.Size(289, 18);
|
||||
this.label21.TabIndex = 29;
|
||||
this.label21.Text = "Pixel intensity threshold for island detection";
|
||||
this.toolTip.SetToolTip(this.label21, "Pixels below this threshold will be considered black during island detection. \r\n" +
|
||||
"Pixels equal to or above this theshold will be considred white during island det" +
|
||||
"ection.\r\n0 to disable");
|
||||
this.toolTip.SetToolTip(this.label21, "Pixels below this threshold will be considered black during island detection.\r\nPi" +
|
||||
"xels equal to or above this theshold will be considred white during island detec" +
|
||||
"tion.\r\n0 to disable");
|
||||
//
|
||||
// label10
|
||||
//
|
||||
this.label10.AutoSize = true;
|
||||
this.label10.Location = new System.Drawing.Point(73, 194);
|
||||
this.label10.Location = new System.Drawing.Point(73, 178);
|
||||
this.label10.Name = "label10";
|
||||
this.label10.Size = new System.Drawing.Size(442, 18);
|
||||
this.label10.TabIndex = 25;
|
||||
@@ -531,7 +541,7 @@
|
||||
//
|
||||
// nmIslandRequiredPixelBrightnessToSupport
|
||||
//
|
||||
this.nmIslandRequiredPixelBrightnessToSupport.Location = new System.Drawing.Point(10, 191);
|
||||
this.nmIslandRequiredPixelBrightnessToSupport.Location = new System.Drawing.Point(10, 175);
|
||||
this.nmIslandRequiredPixelBrightnessToSupport.Maximum = new decimal(new int[] {
|
||||
255,
|
||||
0,
|
||||
@@ -555,7 +565,7 @@
|
||||
// label9
|
||||
//
|
||||
this.label9.AutoSize = true;
|
||||
this.label9.Location = new System.Drawing.Point(73, 160);
|
||||
this.label9.Location = new System.Drawing.Point(73, 148);
|
||||
this.label9.Name = "label9";
|
||||
this.label9.Size = new System.Drawing.Size(432, 18);
|
||||
this.label9.TabIndex = 23;
|
||||
@@ -564,7 +574,7 @@
|
||||
//
|
||||
// nmIslandRequiredPixelsToSupport
|
||||
//
|
||||
this.nmIslandRequiredPixelsToSupport.Location = new System.Drawing.Point(10, 157);
|
||||
this.nmIslandRequiredPixelsToSupport.Location = new System.Drawing.Point(10, 145);
|
||||
this.nmIslandRequiredPixelsToSupport.Maximum = new decimal(new int[] {
|
||||
255,
|
||||
0,
|
||||
@@ -587,7 +597,7 @@
|
||||
//
|
||||
// nmIslandRequiredAreaToProcessCheck
|
||||
//
|
||||
this.nmIslandRequiredAreaToProcessCheck.Location = new System.Drawing.Point(10, 89);
|
||||
this.nmIslandRequiredAreaToProcessCheck.Location = new System.Drawing.Point(10, 85);
|
||||
this.nmIslandRequiredAreaToProcessCheck.Maximum = new decimal(new int[] {
|
||||
255,
|
||||
0,
|
||||
@@ -611,7 +621,7 @@
|
||||
// label7
|
||||
//
|
||||
this.label7.AutoSize = true;
|
||||
this.label7.Location = new System.Drawing.Point(73, 92);
|
||||
this.label7.Location = new System.Drawing.Point(73, 88);
|
||||
this.label7.Name = "label7";
|
||||
this.label7.Size = new System.Drawing.Size(422, 18);
|
||||
this.label7.TabIndex = 19;
|
||||
@@ -622,7 +632,7 @@
|
||||
// label8
|
||||
//
|
||||
this.label8.AutoSize = true;
|
||||
this.label8.Location = new System.Drawing.Point(73, 126);
|
||||
this.label8.Location = new System.Drawing.Point(73, 118);
|
||||
this.label8.Name = "label8";
|
||||
this.label8.Size = new System.Drawing.Size(390, 18);
|
||||
this.label8.TabIndex = 21;
|
||||
@@ -632,7 +642,7 @@
|
||||
//
|
||||
// nmIslandRequiredPixelBrightnessToProcessCheck
|
||||
//
|
||||
this.nmIslandRequiredPixelBrightnessToProcessCheck.Location = new System.Drawing.Point(10, 123);
|
||||
this.nmIslandRequiredPixelBrightnessToProcessCheck.Location = new System.Drawing.Point(10, 115);
|
||||
this.nmIslandRequiredPixelBrightnessToProcessCheck.Maximum = new decimal(new int[] {
|
||||
255,
|
||||
0,
|
||||
@@ -655,6 +665,7 @@
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
this.groupBox1.Controls.Add(this.cbComputeOverhangs);
|
||||
this.groupBox1.Controls.Add(this.cbComputeEmptyLayers);
|
||||
this.groupBox1.Controls.Add(this.label42);
|
||||
this.groupBox1.Controls.Add(this.cbComputeTouchingBounds);
|
||||
@@ -665,7 +676,7 @@
|
||||
this.groupBox1.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.groupBox1.Location = new System.Drawing.Point(3, 3);
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.Size = new System.Drawing.Size(610, 111);
|
||||
this.groupBox1.Size = new System.Drawing.Size(655, 111);
|
||||
this.groupBox1.TabIndex = 22;
|
||||
this.groupBox1.TabStop = false;
|
||||
this.groupBox1.Text = "Common";
|
||||
@@ -673,11 +684,11 @@
|
||||
// cbComputeEmptyLayers
|
||||
//
|
||||
this.cbComputeEmptyLayers.AutoSize = true;
|
||||
this.cbComputeEmptyLayers.Location = new System.Drawing.Point(427, 79);
|
||||
this.cbComputeEmptyLayers.Location = new System.Drawing.Point(536, 79);
|
||||
this.cbComputeEmptyLayers.Name = "cbComputeEmptyLayers";
|
||||
this.cbComputeEmptyLayers.Size = new System.Drawing.Size(117, 22);
|
||||
this.cbComputeEmptyLayers.Size = new System.Drawing.Size(112, 22);
|
||||
this.cbComputeEmptyLayers.TabIndex = 21;
|
||||
this.cbComputeEmptyLayers.Text = "Empty Layers";
|
||||
this.cbComputeEmptyLayers.Text = "Empty layers";
|
||||
this.cbComputeEmptyLayers.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// label42
|
||||
@@ -692,11 +703,11 @@
|
||||
// cbComputeTouchingBounds
|
||||
//
|
||||
this.cbComputeTouchingBounds.AutoSize = true;
|
||||
this.cbComputeTouchingBounds.Location = new System.Drawing.Point(272, 79);
|
||||
this.cbComputeTouchingBounds.Location = new System.Drawing.Point(377, 79);
|
||||
this.cbComputeTouchingBounds.Name = "cbComputeTouchingBounds";
|
||||
this.cbComputeTouchingBounds.Size = new System.Drawing.Size(155, 22);
|
||||
this.cbComputeTouchingBounds.Size = new System.Drawing.Size(153, 22);
|
||||
this.cbComputeTouchingBounds.TabIndex = 19;
|
||||
this.cbComputeTouchingBounds.Text = "Touching Boundary";
|
||||
this.cbComputeTouchingBounds.Text = "Touching boundary";
|
||||
this.cbComputeTouchingBounds.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// cbAutoComputeIssuesClickOnTab
|
||||
@@ -720,17 +731,17 @@
|
||||
this.tabSettings.Location = new System.Drawing.Point(0, 0);
|
||||
this.tabSettings.Name = "tabSettings";
|
||||
this.tabSettings.SelectedIndex = 0;
|
||||
this.tabSettings.Size = new System.Drawing.Size(624, 669);
|
||||
this.tabSettings.Size = new System.Drawing.Size(669, 712);
|
||||
this.tabSettings.TabIndex = 0;
|
||||
//
|
||||
// tabPage1
|
||||
//
|
||||
this.tabPage1.Controls.Add(this.groupBox4);
|
||||
this.tabPage1.Controls.Add(this.groupBox5);
|
||||
this.tabPage1.Controls.Add(this.groupBox4);
|
||||
this.tabPage1.Location = new System.Drawing.Point(4, 27);
|
||||
this.tabPage1.Name = "tabPage1";
|
||||
this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPage1.Size = new System.Drawing.Size(616, 638);
|
||||
this.tabPage1.Size = new System.Drawing.Size(661, 681);
|
||||
this.tabPage1.TabIndex = 0;
|
||||
this.tabPage1.Text = "General";
|
||||
this.tabPage1.UseVisualStyleBackColor = true;
|
||||
@@ -742,7 +753,7 @@
|
||||
this.groupBox4.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.groupBox4.Location = new System.Drawing.Point(3, 3);
|
||||
this.groupBox4.Name = "groupBox4";
|
||||
this.groupBox4.Size = new System.Drawing.Size(610, 100);
|
||||
this.groupBox4.Size = new System.Drawing.Size(655, 90);
|
||||
this.groupBox4.TabIndex = 15;
|
||||
this.groupBox4.TabStop = false;
|
||||
this.groupBox4.Text = "Startup";
|
||||
@@ -772,17 +783,19 @@
|
||||
this.groupBox5.Controls.Add(this.tbFileSaveNameSuffix);
|
||||
this.groupBox5.Controls.Add(this.label27);
|
||||
this.groupBox5.Controls.Add(this.tbFileSaveNamePreffix);
|
||||
this.groupBox5.Location = new System.Drawing.Point(3, 111);
|
||||
this.groupBox5.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.groupBox5.Location = new System.Drawing.Point(3, 93);
|
||||
this.groupBox5.Name = "groupBox5";
|
||||
this.groupBox5.Size = new System.Drawing.Size(610, 278);
|
||||
this.groupBox5.Size = new System.Drawing.Size(655, 276);
|
||||
this.groupBox5.TabIndex = 54;
|
||||
this.groupBox5.TabStop = false;
|
||||
this.groupBox5.Text = "File Dialog Settings";
|
||||
//
|
||||
// btnFileExtractDefaultDirectoryClear
|
||||
//
|
||||
this.btnFileExtractDefaultDirectoryClear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnFileExtractDefaultDirectoryClear.Image = global::UVtools.GUI.Properties.Resources.delete_16x16;
|
||||
this.btnFileExtractDefaultDirectoryClear.Location = new System.Drawing.Point(571, 133);
|
||||
this.btnFileExtractDefaultDirectoryClear.Location = new System.Drawing.Point(616, 133);
|
||||
this.btnFileExtractDefaultDirectoryClear.Name = "btnFileExtractDefaultDirectoryClear";
|
||||
this.btnFileExtractDefaultDirectoryClear.Size = new System.Drawing.Size(30, 24);
|
||||
this.btnFileExtractDefaultDirectoryClear.TabIndex = 76;
|
||||
@@ -791,8 +804,9 @@
|
||||
//
|
||||
// btnFileExtractDefaultDirectorySearch
|
||||
//
|
||||
this.btnFileExtractDefaultDirectorySearch.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnFileExtractDefaultDirectorySearch.Image = global::UVtools.GUI.Properties.Resources.Open_16x16;
|
||||
this.btnFileExtractDefaultDirectorySearch.Location = new System.Drawing.Point(535, 133);
|
||||
this.btnFileExtractDefaultDirectorySearch.Location = new System.Drawing.Point(580, 133);
|
||||
this.btnFileExtractDefaultDirectorySearch.Name = "btnFileExtractDefaultDirectorySearch";
|
||||
this.btnFileExtractDefaultDirectorySearch.Size = new System.Drawing.Size(30, 24);
|
||||
this.btnFileExtractDefaultDirectorySearch.TabIndex = 75;
|
||||
@@ -810,16 +824,19 @@
|
||||
//
|
||||
// tbFileExtractDefaultDirectory
|
||||
//
|
||||
this.tbFileExtractDefaultDirectory.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tbFileExtractDefaultDirectory.Location = new System.Drawing.Point(205, 133);
|
||||
this.tbFileExtractDefaultDirectory.Name = "tbFileExtractDefaultDirectory";
|
||||
this.tbFileExtractDefaultDirectory.ReadOnly = true;
|
||||
this.tbFileExtractDefaultDirectory.Size = new System.Drawing.Size(324, 24);
|
||||
this.tbFileExtractDefaultDirectory.Size = new System.Drawing.Size(369, 24);
|
||||
this.tbFileExtractDefaultDirectory.TabIndex = 73;
|
||||
//
|
||||
// btnFileConvertDefaultDirectoryClear
|
||||
//
|
||||
this.btnFileConvertDefaultDirectoryClear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnFileConvertDefaultDirectoryClear.Image = global::UVtools.GUI.Properties.Resources.delete_16x16;
|
||||
this.btnFileConvertDefaultDirectoryClear.Location = new System.Drawing.Point(571, 167);
|
||||
this.btnFileConvertDefaultDirectoryClear.Location = new System.Drawing.Point(616, 167);
|
||||
this.btnFileConvertDefaultDirectoryClear.Name = "btnFileConvertDefaultDirectoryClear";
|
||||
this.btnFileConvertDefaultDirectoryClear.Size = new System.Drawing.Size(30, 24);
|
||||
this.btnFileConvertDefaultDirectoryClear.TabIndex = 72;
|
||||
@@ -828,8 +845,9 @@
|
||||
//
|
||||
// btnFileConvertDefaultDirectorySearch
|
||||
//
|
||||
this.btnFileConvertDefaultDirectorySearch.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnFileConvertDefaultDirectorySearch.Image = global::UVtools.GUI.Properties.Resources.Open_16x16;
|
||||
this.btnFileConvertDefaultDirectorySearch.Location = new System.Drawing.Point(535, 167);
|
||||
this.btnFileConvertDefaultDirectorySearch.Location = new System.Drawing.Point(580, 167);
|
||||
this.btnFileConvertDefaultDirectorySearch.Name = "btnFileConvertDefaultDirectorySearch";
|
||||
this.btnFileConvertDefaultDirectorySearch.Size = new System.Drawing.Size(30, 24);
|
||||
this.btnFileConvertDefaultDirectorySearch.TabIndex = 71;
|
||||
@@ -847,16 +865,19 @@
|
||||
//
|
||||
// tbFileConvertDefaultDirectory
|
||||
//
|
||||
this.tbFileConvertDefaultDirectory.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tbFileConvertDefaultDirectory.Location = new System.Drawing.Point(205, 167);
|
||||
this.tbFileConvertDefaultDirectory.Name = "tbFileConvertDefaultDirectory";
|
||||
this.tbFileConvertDefaultDirectory.ReadOnly = true;
|
||||
this.tbFileConvertDefaultDirectory.Size = new System.Drawing.Size(324, 24);
|
||||
this.tbFileConvertDefaultDirectory.Size = new System.Drawing.Size(369, 24);
|
||||
this.tbFileConvertDefaultDirectory.TabIndex = 69;
|
||||
//
|
||||
// btnFileSaveDefaultDirectoryClear
|
||||
//
|
||||
this.btnFileSaveDefaultDirectoryClear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnFileSaveDefaultDirectoryClear.Image = global::UVtools.GUI.Properties.Resources.delete_16x16;
|
||||
this.btnFileSaveDefaultDirectoryClear.Location = new System.Drawing.Point(571, 99);
|
||||
this.btnFileSaveDefaultDirectoryClear.Location = new System.Drawing.Point(616, 99);
|
||||
this.btnFileSaveDefaultDirectoryClear.Name = "btnFileSaveDefaultDirectoryClear";
|
||||
this.btnFileSaveDefaultDirectoryClear.Size = new System.Drawing.Size(30, 24);
|
||||
this.btnFileSaveDefaultDirectoryClear.TabIndex = 68;
|
||||
@@ -865,8 +886,9 @@
|
||||
//
|
||||
// btnFileSaveDefaultDirectorySearch
|
||||
//
|
||||
this.btnFileSaveDefaultDirectorySearch.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnFileSaveDefaultDirectorySearch.Image = global::UVtools.GUI.Properties.Resources.Open_16x16;
|
||||
this.btnFileSaveDefaultDirectorySearch.Location = new System.Drawing.Point(535, 99);
|
||||
this.btnFileSaveDefaultDirectorySearch.Location = new System.Drawing.Point(580, 99);
|
||||
this.btnFileSaveDefaultDirectorySearch.Name = "btnFileSaveDefaultDirectorySearch";
|
||||
this.btnFileSaveDefaultDirectorySearch.Size = new System.Drawing.Size(30, 24);
|
||||
this.btnFileSaveDefaultDirectorySearch.TabIndex = 67;
|
||||
@@ -884,16 +906,19 @@
|
||||
//
|
||||
// tbFileSaveDefaultDirectory
|
||||
//
|
||||
this.tbFileSaveDefaultDirectory.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tbFileSaveDefaultDirectory.Location = new System.Drawing.Point(205, 99);
|
||||
this.tbFileSaveDefaultDirectory.Name = "tbFileSaveDefaultDirectory";
|
||||
this.tbFileSaveDefaultDirectory.ReadOnly = true;
|
||||
this.tbFileSaveDefaultDirectory.Size = new System.Drawing.Size(324, 24);
|
||||
this.tbFileSaveDefaultDirectory.Size = new System.Drawing.Size(369, 24);
|
||||
this.tbFileSaveDefaultDirectory.TabIndex = 65;
|
||||
//
|
||||
// btnFileOpenDefaultDirectoryClear
|
||||
//
|
||||
this.btnFileOpenDefaultDirectoryClear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnFileOpenDefaultDirectoryClear.Image = global::UVtools.GUI.Properties.Resources.delete_16x16;
|
||||
this.btnFileOpenDefaultDirectoryClear.Location = new System.Drawing.Point(571, 65);
|
||||
this.btnFileOpenDefaultDirectoryClear.Location = new System.Drawing.Point(616, 65);
|
||||
this.btnFileOpenDefaultDirectoryClear.Name = "btnFileOpenDefaultDirectoryClear";
|
||||
this.btnFileOpenDefaultDirectoryClear.Size = new System.Drawing.Size(30, 24);
|
||||
this.btnFileOpenDefaultDirectoryClear.TabIndex = 64;
|
||||
@@ -902,8 +927,9 @@
|
||||
//
|
||||
// btnFileOpenDefaultDirectorySearch
|
||||
//
|
||||
this.btnFileOpenDefaultDirectorySearch.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnFileOpenDefaultDirectorySearch.Image = global::UVtools.GUI.Properties.Resources.Open_16x16;
|
||||
this.btnFileOpenDefaultDirectorySearch.Location = new System.Drawing.Point(535, 65);
|
||||
this.btnFileOpenDefaultDirectorySearch.Location = new System.Drawing.Point(580, 65);
|
||||
this.btnFileOpenDefaultDirectorySearch.Name = "btnFileOpenDefaultDirectorySearch";
|
||||
this.btnFileOpenDefaultDirectorySearch.Size = new System.Drawing.Size(30, 24);
|
||||
this.btnFileOpenDefaultDirectorySearch.TabIndex = 63;
|
||||
@@ -921,10 +947,12 @@
|
||||
//
|
||||
// tbFileOpenDefaultDirectory
|
||||
//
|
||||
this.tbFileOpenDefaultDirectory.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tbFileOpenDefaultDirectory.Location = new System.Drawing.Point(205, 65);
|
||||
this.tbFileOpenDefaultDirectory.Name = "tbFileOpenDefaultDirectory";
|
||||
this.tbFileOpenDefaultDirectory.ReadOnly = true;
|
||||
this.tbFileOpenDefaultDirectory.Size = new System.Drawing.Size(324, 24);
|
||||
this.tbFileOpenDefaultDirectory.Size = new System.Drawing.Size(369, 24);
|
||||
this.tbFileOpenDefaultDirectory.TabIndex = 61;
|
||||
//
|
||||
// label22
|
||||
@@ -938,19 +966,21 @@
|
||||
//
|
||||
// cbDefaultOpenFileExtension
|
||||
//
|
||||
this.cbDefaultOpenFileExtension.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.cbDefaultOpenFileExtension.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.cbDefaultOpenFileExtension.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cbDefaultOpenFileExtension.FormattingEnabled = true;
|
||||
this.cbDefaultOpenFileExtension.Location = new System.Drawing.Point(205, 29);
|
||||
this.cbDefaultOpenFileExtension.Name = "cbDefaultOpenFileExtension";
|
||||
this.cbDefaultOpenFileExtension.Size = new System.Drawing.Size(396, 26);
|
||||
this.cbDefaultOpenFileExtension.Size = new System.Drawing.Size(441, 26);
|
||||
this.cbDefaultOpenFileExtension.TabIndex = 54;
|
||||
this.toolTip.SetToolTip(this.cbDefaultOpenFileExtension, "Sets default file extensions that will be filtered by the File Open Dialog Box.");
|
||||
//
|
||||
// label28
|
||||
//
|
||||
this.label28.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.label28.AutoSize = true;
|
||||
this.label28.Location = new System.Drawing.Point(363, 236);
|
||||
this.label28.Location = new System.Drawing.Point(408, 236);
|
||||
this.label28.Name = "label28";
|
||||
this.label28.Size = new System.Drawing.Size(48, 18);
|
||||
this.label28.TabIndex = 60;
|
||||
@@ -968,7 +998,8 @@
|
||||
//
|
||||
// tbFileSaveNameSuffix
|
||||
//
|
||||
this.tbFileSaveNameSuffix.Location = new System.Drawing.Point(417, 233);
|
||||
this.tbFileSaveNameSuffix.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tbFileSaveNameSuffix.Location = new System.Drawing.Point(462, 233);
|
||||
this.tbFileSaveNameSuffix.Name = "tbFileSaveNameSuffix";
|
||||
this.tbFileSaveNameSuffix.Size = new System.Drawing.Size(184, 24);
|
||||
this.tbFileSaveNameSuffix.TabIndex = 59;
|
||||
@@ -998,7 +1029,7 @@
|
||||
this.tabPage2.Location = new System.Drawing.Point(4, 27);
|
||||
this.tabPage2.Name = "tabPage2";
|
||||
this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPage2.Size = new System.Drawing.Size(616, 638);
|
||||
this.tabPage2.Size = new System.Drawing.Size(661, 681);
|
||||
this.tabPage2.TabIndex = 1;
|
||||
this.tabPage2.Text = "Layer Preview";
|
||||
this.tabPage2.UseVisualStyleBackColor = true;
|
||||
@@ -1008,9 +1039,9 @@
|
||||
this.groupBox9.Controls.Add(this.cbLayerAutoRotateBestView);
|
||||
this.groupBox9.Controls.Add(this.cbLayerZoomToFit);
|
||||
this.groupBox9.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.groupBox9.Location = new System.Drawing.Point(3, 491);
|
||||
this.groupBox9.Location = new System.Drawing.Point(3, 530);
|
||||
this.groupBox9.Name = "groupBox9";
|
||||
this.groupBox9.Size = new System.Drawing.Size(610, 63);
|
||||
this.groupBox9.Size = new System.Drawing.Size(655, 63);
|
||||
this.groupBox9.TabIndex = 56;
|
||||
this.groupBox9.TabStop = false;
|
||||
this.groupBox9.Text = "Miscellaneous";
|
||||
@@ -1050,9 +1081,9 @@
|
||||
this.groupBox8.Controls.Add(this.label39);
|
||||
this.groupBox8.Controls.Add(this.nmCrosshairLineMargin);
|
||||
this.groupBox8.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.groupBox8.Location = new System.Drawing.Point(3, 389);
|
||||
this.groupBox8.Location = new System.Drawing.Point(3, 428);
|
||||
this.groupBox8.Name = "groupBox8";
|
||||
this.groupBox8.Size = new System.Drawing.Size(610, 102);
|
||||
this.groupBox8.Size = new System.Drawing.Size(655, 102);
|
||||
this.groupBox8.TabIndex = 55;
|
||||
this.groupBox8.TabStop = false;
|
||||
this.groupBox8.Text = "Crosshairs";
|
||||
@@ -1083,16 +1114,17 @@
|
||||
this.cbCrosshairFadeLevel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.cbCrosshairFadeLevel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cbCrosshairFadeLevel.FormattingEnabled = true;
|
||||
this.cbCrosshairFadeLevel.Location = new System.Drawing.Point(165, 64);
|
||||
this.cbCrosshairFadeLevel.Location = new System.Drawing.Point(160, 64);
|
||||
this.cbCrosshairFadeLevel.Name = "cbCrosshairFadeLevel";
|
||||
this.cbCrosshairFadeLevel.Size = new System.Drawing.Size(74, 26);
|
||||
this.cbCrosshairFadeLevel.Size = new System.Drawing.Size(141, 26);
|
||||
this.cbCrosshairFadeLevel.TabIndex = 54;
|
||||
this.toolTip.SetToolTip(this.cbCrosshairFadeLevel, "Determines the zoom factor after which the crosshairs will automatically be hidde" +
|
||||
"n.");
|
||||
//
|
||||
// nmCrosshairLineLength
|
||||
//
|
||||
this.nmCrosshairLineLength.Location = new System.Drawing.Point(519, 34);
|
||||
this.nmCrosshairLineLength.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.nmCrosshairLineLength.Location = new System.Drawing.Point(569, 35);
|
||||
this.nmCrosshairLineLength.Maximum = new decimal(new int[] {
|
||||
1000000,
|
||||
0,
|
||||
@@ -1106,8 +1138,9 @@
|
||||
//
|
||||
// label40
|
||||
//
|
||||
this.label40.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.label40.AutoSize = true;
|
||||
this.label40.Location = new System.Drawing.Point(577, 68);
|
||||
this.label40.Location = new System.Drawing.Point(627, 69);
|
||||
this.label40.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.label40.Name = "label40";
|
||||
this.label40.Size = new System.Drawing.Size(23, 18);
|
||||
@@ -1116,8 +1149,9 @@
|
||||
//
|
||||
// label36
|
||||
//
|
||||
this.label36.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.label36.AutoSize = true;
|
||||
this.label36.Location = new System.Drawing.Point(404, 37);
|
||||
this.label36.Location = new System.Drawing.Point(454, 38);
|
||||
this.label36.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.label36.Name = "label36";
|
||||
this.label36.Size = new System.Drawing.Size(108, 18);
|
||||
@@ -1126,8 +1160,9 @@
|
||||
//
|
||||
// label41
|
||||
//
|
||||
this.label41.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.label41.AutoSize = true;
|
||||
this.label41.Location = new System.Drawing.Point(386, 68);
|
||||
this.label41.Location = new System.Drawing.Point(436, 69);
|
||||
this.label41.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.label41.Name = "label41";
|
||||
this.label41.Size = new System.Drawing.Size(126, 18);
|
||||
@@ -1136,8 +1171,9 @@
|
||||
//
|
||||
// label39
|
||||
//
|
||||
this.label39.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.label39.AutoSize = true;
|
||||
this.label39.Location = new System.Drawing.Point(577, 34);
|
||||
this.label39.Location = new System.Drawing.Point(627, 35);
|
||||
this.label39.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.label39.Name = "label39";
|
||||
this.label39.Size = new System.Drawing.Size(23, 18);
|
||||
@@ -1146,7 +1182,8 @@
|
||||
//
|
||||
// nmCrosshairLineMargin
|
||||
//
|
||||
this.nmCrosshairLineMargin.Location = new System.Drawing.Point(519, 65);
|
||||
this.nmCrosshairLineMargin.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.nmCrosshairLineMargin.Location = new System.Drawing.Point(569, 66);
|
||||
this.nmCrosshairLineMargin.Maximum = new decimal(new int[] {
|
||||
255,
|
||||
0,
|
||||
@@ -1177,9 +1214,9 @@
|
||||
this.groupBox7.Controls.Add(this.label38);
|
||||
this.groupBox7.Controls.Add(this.cbZoomLockLevel);
|
||||
this.groupBox7.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.groupBox7.Location = new System.Drawing.Point(3, 292);
|
||||
this.groupBox7.Location = new System.Drawing.Point(3, 331);
|
||||
this.groupBox7.Name = "groupBox7";
|
||||
this.groupBox7.Size = new System.Drawing.Size(610, 97);
|
||||
this.groupBox7.Size = new System.Drawing.Size(655, 97);
|
||||
this.groupBox7.TabIndex = 54;
|
||||
this.groupBox7.TabStop = false;
|
||||
this.groupBox7.Text = "Zoom";
|
||||
@@ -1202,9 +1239,9 @@
|
||||
this.cbZoomToFit.Items.AddRange(new object[] {
|
||||
"Print Volume Boundary",
|
||||
"Layer Boundary"});
|
||||
this.cbZoomToFit.Location = new System.Drawing.Point(128, 23);
|
||||
this.cbZoomToFit.Location = new System.Drawing.Point(123, 24);
|
||||
this.cbZoomToFit.Name = "cbZoomToFit";
|
||||
this.cbZoomToFit.Size = new System.Drawing.Size(188, 26);
|
||||
this.cbZoomToFit.Size = new System.Drawing.Size(178, 26);
|
||||
this.cbZoomToFit.TabIndex = 55;
|
||||
this.toolTip.SetToolTip(this.cbZoomToFit, "Determines whether double-right-click will zoom out to layer boundary or to print" +
|
||||
" volume boundary. Holding ALT during double-click will invert this behavior.");
|
||||
@@ -1223,8 +1260,9 @@
|
||||
//
|
||||
// label38
|
||||
//
|
||||
this.label38.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.label38.AutoSize = true;
|
||||
this.label38.Location = new System.Drawing.Point(403, 27);
|
||||
this.label38.Location = new System.Drawing.Point(453, 27);
|
||||
this.label38.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.label38.Name = "label38";
|
||||
this.label38.Size = new System.Drawing.Size(109, 18);
|
||||
@@ -1236,7 +1274,7 @@
|
||||
this.cbZoomLockLevel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.cbZoomLockLevel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cbZoomLockLevel.FormattingEnabled = true;
|
||||
this.cbZoomLockLevel.Location = new System.Drawing.Point(524, 23);
|
||||
this.cbZoomLockLevel.Location = new System.Drawing.Point(569, 23);
|
||||
this.cbZoomLockLevel.Name = "cbZoomLockLevel";
|
||||
this.cbZoomLockLevel.Size = new System.Drawing.Size(72, 26);
|
||||
this.cbZoomLockLevel.TabIndex = 53;
|
||||
@@ -1246,6 +1284,9 @@
|
||||
// groupBox6
|
||||
//
|
||||
this.groupBox6.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
|
||||
this.groupBox6.Controls.Add(this.btnOverhangColor);
|
||||
this.groupBox6.Controls.Add(this.btnOverhangHLColor);
|
||||
this.groupBox6.Controls.Add(this.label47);
|
||||
this.groupBox6.Controls.Add(this.cbLayerTooltipOverlay);
|
||||
this.groupBox6.Controls.Add(this.label46);
|
||||
this.groupBox6.Controls.Add(this.nmLayerTooltipOverlayOpacity);
|
||||
@@ -1286,7 +1327,7 @@
|
||||
this.groupBox6.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.groupBox6.Location = new System.Drawing.Point(3, 3);
|
||||
this.groupBox6.Name = "groupBox6";
|
||||
this.groupBox6.Size = new System.Drawing.Size(610, 289);
|
||||
this.groupBox6.Size = new System.Drawing.Size(655, 328);
|
||||
this.groupBox6.TabIndex = 53;
|
||||
this.groupBox6.TabStop = false;
|
||||
this.groupBox6.Text = "Layer Colors";
|
||||
@@ -1294,7 +1335,7 @@
|
||||
// cbLayerTooltipOverlay
|
||||
//
|
||||
this.cbLayerTooltipOverlay.AutoSize = true;
|
||||
this.cbLayerTooltipOverlay.Location = new System.Drawing.Point(430, 25);
|
||||
this.cbLayerTooltipOverlay.Location = new System.Drawing.Point(423, 31);
|
||||
this.cbLayerTooltipOverlay.Name = "cbLayerTooltipOverlay";
|
||||
this.cbLayerTooltipOverlay.Size = new System.Drawing.Size(131, 22);
|
||||
this.cbLayerTooltipOverlay.TabIndex = 4;
|
||||
@@ -1381,9 +1422,8 @@
|
||||
//
|
||||
// cbOutlineHollowAreas
|
||||
//
|
||||
this.cbOutlineHollowAreas.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.cbOutlineHollowAreas.AutoSize = true;
|
||||
this.cbOutlineHollowAreas.Location = new System.Drawing.Point(430, 121);
|
||||
this.cbOutlineHollowAreas.Location = new System.Drawing.Point(423, 123);
|
||||
this.cbOutlineHollowAreas.Name = "cbOutlineHollowAreas";
|
||||
this.cbOutlineHollowAreas.Size = new System.Drawing.Size(131, 22);
|
||||
this.cbOutlineHollowAreas.TabIndex = 46;
|
||||
@@ -1439,7 +1479,7 @@
|
||||
this.btnIslandColor.FlatAppearance.BorderColor = System.Drawing.Color.Black;
|
||||
this.btnIslandColor.FlatAppearance.BorderSize = 2;
|
||||
this.btnIslandColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnIslandColor.Location = new System.Drawing.Point(544, 155);
|
||||
this.btnIslandColor.Location = new System.Drawing.Point(589, 155);
|
||||
this.btnIslandColor.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.btnIslandColor.Name = "btnIslandColor";
|
||||
this.btnIslandColor.Size = new System.Drawing.Size(24, 24);
|
||||
@@ -1455,7 +1495,7 @@
|
||||
this.btnIslandHLColor.FlatAppearance.BorderColor = System.Drawing.Color.Black;
|
||||
this.btnIslandHLColor.FlatAppearance.BorderSize = 2;
|
||||
this.btnIslandHLColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnIslandHLColor.Location = new System.Drawing.Point(575, 155);
|
||||
this.btnIslandHLColor.Location = new System.Drawing.Point(620, 155);
|
||||
this.btnIslandHLColor.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.btnIslandHLColor.Name = "btnIslandHLColor";
|
||||
this.btnIslandHLColor.Size = new System.Drawing.Size(24, 24);
|
||||
@@ -1526,7 +1566,7 @@
|
||||
this.btnResinTrapColor.FlatAppearance.BorderColor = System.Drawing.Color.Black;
|
||||
this.btnResinTrapColor.FlatAppearance.BorderSize = 2;
|
||||
this.btnResinTrapColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnResinTrapColor.Location = new System.Drawing.Point(544, 187);
|
||||
this.btnResinTrapColor.Location = new System.Drawing.Point(589, 219);
|
||||
this.btnResinTrapColor.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.btnResinTrapColor.Name = "btnResinTrapColor";
|
||||
this.btnResinTrapColor.Size = new System.Drawing.Size(24, 24);
|
||||
@@ -1542,7 +1582,7 @@
|
||||
this.btnResinTrapHLColor.FlatAppearance.BorderColor = System.Drawing.Color.Black;
|
||||
this.btnResinTrapHLColor.FlatAppearance.BorderSize = 2;
|
||||
this.btnResinTrapHLColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnResinTrapHLColor.Location = new System.Drawing.Point(575, 187);
|
||||
this.btnResinTrapHLColor.Location = new System.Drawing.Point(620, 219);
|
||||
this.btnResinTrapHLColor.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.btnResinTrapHLColor.Name = "btnResinTrapHLColor";
|
||||
this.btnResinTrapHLColor.Size = new System.Drawing.Size(24, 24);
|
||||
@@ -1599,9 +1639,8 @@
|
||||
//
|
||||
// cbOutlineLayerBounds
|
||||
//
|
||||
this.cbOutlineLayerBounds.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.cbOutlineLayerBounds.AutoSize = true;
|
||||
this.cbOutlineLayerBounds.Location = new System.Drawing.Point(430, 89);
|
||||
this.cbOutlineLayerBounds.Location = new System.Drawing.Point(423, 91);
|
||||
this.cbOutlineLayerBounds.Name = "cbOutlineLayerBounds";
|
||||
this.cbOutlineLayerBounds.Size = new System.Drawing.Size(131, 22);
|
||||
this.cbOutlineLayerBounds.TabIndex = 42;
|
||||
@@ -1613,7 +1652,7 @@
|
||||
//
|
||||
this.label6.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.label6.AutoSize = true;
|
||||
this.label6.Location = new System.Drawing.Point(398, 221);
|
||||
this.label6.Location = new System.Drawing.Point(443, 253);
|
||||
this.label6.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.label6.Name = "label6";
|
||||
this.label6.Size = new System.Drawing.Size(138, 18);
|
||||
@@ -1643,12 +1682,12 @@
|
||||
//
|
||||
this.label4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.Location = new System.Drawing.Point(375, 158);
|
||||
this.label4.Location = new System.Drawing.Point(420, 158);
|
||||
this.label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(161, 18);
|
||||
this.label4.TabIndex = 44;
|
||||
this.label4.Text = "Island / Selected Island:";
|
||||
this.label4.Text = "Island / Selected island:";
|
||||
//
|
||||
// nmOutlineLayerBoundsLineThickness
|
||||
//
|
||||
@@ -1677,7 +1716,7 @@
|
||||
//
|
||||
this.label5.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.label5.AutoSize = true;
|
||||
this.label5.Location = new System.Drawing.Point(323, 190);
|
||||
this.label5.Location = new System.Drawing.Point(368, 222);
|
||||
this.label5.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.label5.Name = "label5";
|
||||
this.label5.Size = new System.Drawing.Size(213, 18);
|
||||
@@ -1710,7 +1749,7 @@
|
||||
this.btnTouchingBoundsColor.FlatAppearance.BorderColor = System.Drawing.Color.Black;
|
||||
this.btnTouchingBoundsColor.FlatAppearance.BorderSize = 2;
|
||||
this.btnTouchingBoundsColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnTouchingBoundsColor.Location = new System.Drawing.Point(544, 219);
|
||||
this.btnTouchingBoundsColor.Location = new System.Drawing.Point(589, 251);
|
||||
this.btnTouchingBoundsColor.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.btnTouchingBoundsColor.Name = "btnTouchingBoundsColor";
|
||||
this.btnTouchingBoundsColor.Size = new System.Drawing.Size(24, 24);
|
||||
@@ -1721,9 +1760,8 @@
|
||||
//
|
||||
// cbOutlinePrintVolumeBounds
|
||||
//
|
||||
this.cbOutlinePrintVolumeBounds.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.cbOutlinePrintVolumeBounds.AutoSize = true;
|
||||
this.cbOutlinePrintVolumeBounds.Location = new System.Drawing.Point(430, 57);
|
||||
this.cbOutlinePrintVolumeBounds.Location = new System.Drawing.Point(423, 59);
|
||||
this.cbOutlinePrintVolumeBounds.Name = "cbOutlinePrintVolumeBounds";
|
||||
this.cbOutlinePrintVolumeBounds.Size = new System.Drawing.Size(131, 22);
|
||||
this.cbOutlinePrintVolumeBounds.TabIndex = 38;
|
||||
@@ -1750,7 +1788,7 @@
|
||||
//
|
||||
this.label37.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.label37.AutoSize = true;
|
||||
this.label37.Location = new System.Drawing.Point(459, 254);
|
||||
this.label37.Location = new System.Drawing.Point(504, 286);
|
||||
this.label37.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.label37.Name = "label37";
|
||||
this.label37.Size = new System.Drawing.Size(77, 18);
|
||||
@@ -1787,7 +1825,7 @@
|
||||
this.btnCrosshairColor.FlatAppearance.BorderColor = System.Drawing.Color.Black;
|
||||
this.btnCrosshairColor.FlatAppearance.BorderSize = 2;
|
||||
this.btnCrosshairColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnCrosshairColor.Location = new System.Drawing.Point(544, 251);
|
||||
this.btnCrosshairColor.Location = new System.Drawing.Point(589, 283);
|
||||
this.btnCrosshairColor.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.btnCrosshairColor.Name = "btnCrosshairColor";
|
||||
this.btnCrosshairColor.Size = new System.Drawing.Size(24, 24);
|
||||
@@ -1799,12 +1837,13 @@
|
||||
// tabPage3
|
||||
//
|
||||
this.tabPage3.Controls.Add(this.groupBox3);
|
||||
this.tabPage3.Controls.Add(this.groupBox11);
|
||||
this.tabPage3.Controls.Add(this.groupBox2);
|
||||
this.tabPage3.Controls.Add(this.groupBox1);
|
||||
this.tabPage3.Location = new System.Drawing.Point(4, 27);
|
||||
this.tabPage3.Name = "tabPage3";
|
||||
this.tabPage3.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPage3.Size = new System.Drawing.Size(616, 638);
|
||||
this.tabPage3.Size = new System.Drawing.Size(661, 681);
|
||||
this.tabPage3.TabIndex = 2;
|
||||
this.tabPage3.Text = "Issues";
|
||||
this.tabPage3.UseVisualStyleBackColor = true;
|
||||
@@ -1817,7 +1856,7 @@
|
||||
this.tabPage4.Location = new System.Drawing.Point(4, 27);
|
||||
this.tabPage4.Name = "tabPage4";
|
||||
this.tabPage4.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPage4.Size = new System.Drawing.Size(616, 638);
|
||||
this.tabPage4.Size = new System.Drawing.Size(661, 681);
|
||||
this.tabPage4.TabIndex = 3;
|
||||
this.tabPage4.Text = "Pixel Editor";
|
||||
this.tabPage4.UseVisualStyleBackColor = true;
|
||||
@@ -1847,9 +1886,10 @@
|
||||
this.groupBox10.Controls.Add(this.label23);
|
||||
this.groupBox10.Controls.Add(this.btnPixelEditorAddPixelColor);
|
||||
this.groupBox10.Controls.Add(this.btnPixelEditorAddPixelHLColor);
|
||||
this.groupBox10.Location = new System.Drawing.Point(0, 6);
|
||||
this.groupBox10.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.groupBox10.Location = new System.Drawing.Point(3, 3);
|
||||
this.groupBox10.Name = "groupBox10";
|
||||
this.groupBox10.Size = new System.Drawing.Size(616, 162);
|
||||
this.groupBox10.Size = new System.Drawing.Size(655, 162);
|
||||
this.groupBox10.TabIndex = 24;
|
||||
this.groupBox10.TabStop = false;
|
||||
this.groupBox10.Text = "Pixel Editor Colors";
|
||||
@@ -1860,7 +1900,7 @@
|
||||
this.btnPixelEditorDrainHoleColor.FlatAppearance.BorderColor = System.Drawing.Color.Black;
|
||||
this.btnPixelEditorDrainHoleColor.FlatAppearance.BorderSize = 2;
|
||||
this.btnPixelEditorDrainHoleColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnPixelEditorDrainHoleColor.Location = new System.Drawing.Point(420, 122);
|
||||
this.btnPixelEditorDrainHoleColor.Location = new System.Drawing.Point(401, 122);
|
||||
this.btnPixelEditorDrainHoleColor.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.btnPixelEditorDrainHoleColor.Name = "btnPixelEditorDrainHoleColor";
|
||||
this.btnPixelEditorDrainHoleColor.Size = new System.Drawing.Size(24, 24);
|
||||
@@ -1875,7 +1915,7 @@
|
||||
this.btnPixelEditorDrainHoleHLColor.FlatAppearance.BorderColor = System.Drawing.Color.Black;
|
||||
this.btnPixelEditorDrainHoleHLColor.FlatAppearance.BorderSize = 2;
|
||||
this.btnPixelEditorDrainHoleHLColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnPixelEditorDrainHoleHLColor.Location = new System.Drawing.Point(452, 122);
|
||||
this.btnPixelEditorDrainHoleHLColor.Location = new System.Drawing.Point(433, 122);
|
||||
this.btnPixelEditorDrainHoleHLColor.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.btnPixelEditorDrainHoleHLColor.Name = "btnPixelEditorDrainHoleHLColor";
|
||||
this.btnPixelEditorDrainHoleHLColor.Size = new System.Drawing.Size(24, 24);
|
||||
@@ -1901,7 +1941,7 @@
|
||||
this.btnPixelEditorSupportColor.FlatAppearance.BorderColor = System.Drawing.Color.Black;
|
||||
this.btnPixelEditorSupportColor.FlatAppearance.BorderSize = 2;
|
||||
this.btnPixelEditorSupportColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnPixelEditorSupportColor.Location = new System.Drawing.Point(420, 90);
|
||||
this.btnPixelEditorSupportColor.Location = new System.Drawing.Point(401, 90);
|
||||
this.btnPixelEditorSupportColor.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.btnPixelEditorSupportColor.Name = "btnPixelEditorSupportColor";
|
||||
this.btnPixelEditorSupportColor.Size = new System.Drawing.Size(24, 24);
|
||||
@@ -1916,7 +1956,7 @@
|
||||
this.btnPixelEditorSupportHLColor.FlatAppearance.BorderColor = System.Drawing.Color.Black;
|
||||
this.btnPixelEditorSupportHLColor.FlatAppearance.BorderSize = 2;
|
||||
this.btnPixelEditorSupportHLColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnPixelEditorSupportHLColor.Location = new System.Drawing.Point(452, 90);
|
||||
this.btnPixelEditorSupportHLColor.Location = new System.Drawing.Point(433, 90);
|
||||
this.btnPixelEditorSupportHLColor.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.btnPixelEditorSupportHLColor.Name = "btnPixelEditorSupportHLColor";
|
||||
this.btnPixelEditorSupportHLColor.Size = new System.Drawing.Size(24, 24);
|
||||
@@ -1941,7 +1981,7 @@
|
||||
this.btnPixelEditorRemovePixelColor.FlatAppearance.BorderColor = System.Drawing.Color.Black;
|
||||
this.btnPixelEditorRemovePixelColor.FlatAppearance.BorderSize = 2;
|
||||
this.btnPixelEditorRemovePixelColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnPixelEditorRemovePixelColor.Location = new System.Drawing.Point(420, 58);
|
||||
this.btnPixelEditorRemovePixelColor.Location = new System.Drawing.Point(401, 58);
|
||||
this.btnPixelEditorRemovePixelColor.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.btnPixelEditorRemovePixelColor.Name = "btnPixelEditorRemovePixelColor";
|
||||
this.btnPixelEditorRemovePixelColor.Size = new System.Drawing.Size(24, 24);
|
||||
@@ -1956,7 +1996,7 @@
|
||||
this.btnPixelEditorRemovePixelHLColor.FlatAppearance.BorderColor = System.Drawing.Color.Black;
|
||||
this.btnPixelEditorRemovePixelHLColor.FlatAppearance.BorderSize = 2;
|
||||
this.btnPixelEditorRemovePixelHLColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnPixelEditorRemovePixelHLColor.Location = new System.Drawing.Point(452, 58);
|
||||
this.btnPixelEditorRemovePixelHLColor.Location = new System.Drawing.Point(433, 58);
|
||||
this.btnPixelEditorRemovePixelHLColor.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.btnPixelEditorRemovePixelHLColor.Name = "btnPixelEditorRemovePixelHLColor";
|
||||
this.btnPixelEditorRemovePixelHLColor.Size = new System.Drawing.Size(24, 24);
|
||||
@@ -1992,7 +2032,7 @@
|
||||
this.btnPixelEditorAddPixelColor.FlatAppearance.BorderColor = System.Drawing.Color.Black;
|
||||
this.btnPixelEditorAddPixelColor.FlatAppearance.BorderSize = 2;
|
||||
this.btnPixelEditorAddPixelColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnPixelEditorAddPixelColor.Location = new System.Drawing.Point(420, 26);
|
||||
this.btnPixelEditorAddPixelColor.Location = new System.Drawing.Point(401, 26);
|
||||
this.btnPixelEditorAddPixelColor.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.btnPixelEditorAddPixelColor.Name = "btnPixelEditorAddPixelColor";
|
||||
this.btnPixelEditorAddPixelColor.Size = new System.Drawing.Size(24, 24);
|
||||
@@ -2007,7 +2047,7 @@
|
||||
this.btnPixelEditorAddPixelHLColor.FlatAppearance.BorderColor = System.Drawing.Color.Black;
|
||||
this.btnPixelEditorAddPixelHLColor.FlatAppearance.BorderSize = 2;
|
||||
this.btnPixelEditorAddPixelHLColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnPixelEditorAddPixelHLColor.Location = new System.Drawing.Point(452, 26);
|
||||
this.btnPixelEditorAddPixelHLColor.Location = new System.Drawing.Point(433, 26);
|
||||
this.btnPixelEditorAddPixelHLColor.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.btnPixelEditorAddPixelHLColor.Name = "btnPixelEditorAddPixelHLColor";
|
||||
this.btnPixelEditorAddPixelHLColor.Size = new System.Drawing.Size(24, 24);
|
||||
@@ -2042,7 +2082,7 @@
|
||||
this.tabPage5.Location = new System.Drawing.Point(4, 27);
|
||||
this.tabPage5.Name = "tabPage5";
|
||||
this.tabPage5.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPage5.Size = new System.Drawing.Size(616, 638);
|
||||
this.tabPage5.Size = new System.Drawing.Size(661, 681);
|
||||
this.tabPage5.TabIndex = 4;
|
||||
this.tabPage5.Text = "Layer Repair";
|
||||
this.tabPage5.UseVisualStyleBackColor = true;
|
||||
@@ -2168,9 +2208,9 @@
|
||||
this.pnActions.Controls.Add(this.btnSave);
|
||||
this.pnActions.Controls.Add(this.btnReset);
|
||||
this.pnActions.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||
this.pnActions.Location = new System.Drawing.Point(0, 592);
|
||||
this.pnActions.Location = new System.Drawing.Point(0, 635);
|
||||
this.pnActions.Name = "pnActions";
|
||||
this.pnActions.Size = new System.Drawing.Size(624, 77);
|
||||
this.pnActions.Size = new System.Drawing.Size(669, 77);
|
||||
this.pnActions.TabIndex = 19;
|
||||
//
|
||||
// toolTip
|
||||
@@ -2180,12 +2220,123 @@
|
||||
this.toolTip.ReshowDelay = 100;
|
||||
this.toolTip.ToolTipIcon = System.Windows.Forms.ToolTipIcon.Info;
|
||||
this.toolTip.ToolTipTitle = "Information";
|
||||
//
|
||||
// cbComputeOverhangs
|
||||
//
|
||||
this.cbComputeOverhangs.AutoSize = true;
|
||||
this.cbComputeOverhangs.Location = new System.Drawing.Point(164, 79);
|
||||
this.cbComputeOverhangs.Name = "cbComputeOverhangs";
|
||||
this.cbComputeOverhangs.Size = new System.Drawing.Size(99, 22);
|
||||
this.cbComputeOverhangs.TabIndex = 22;
|
||||
this.cbComputeOverhangs.Text = "Overhangs";
|
||||
this.cbComputeOverhangs.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// btnOverhangColor
|
||||
//
|
||||
this.btnOverhangColor.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnOverhangColor.BackColor = System.Drawing.Color.White;
|
||||
this.btnOverhangColor.FlatAppearance.BorderColor = System.Drawing.Color.Black;
|
||||
this.btnOverhangColor.FlatAppearance.BorderSize = 2;
|
||||
this.btnOverhangColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnOverhangColor.Location = new System.Drawing.Point(589, 187);
|
||||
this.btnOverhangColor.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.btnOverhangColor.Name = "btnOverhangColor";
|
||||
this.btnOverhangColor.Size = new System.Drawing.Size(24, 24);
|
||||
this.btnOverhangColor.TabIndex = 70;
|
||||
this.toolTip.SetToolTip(this.btnOverhangColor, "Islands on the layer that are not currently selected.");
|
||||
this.btnOverhangColor.UseVisualStyleBackColor = false;
|
||||
this.btnOverhangColor.Click += new System.EventHandler(this.EventClick);
|
||||
//
|
||||
// btnOverhangHLColor
|
||||
//
|
||||
this.btnOverhangHLColor.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnOverhangHLColor.BackColor = System.Drawing.Color.White;
|
||||
this.btnOverhangHLColor.FlatAppearance.BorderColor = System.Drawing.Color.Black;
|
||||
this.btnOverhangHLColor.FlatAppearance.BorderSize = 2;
|
||||
this.btnOverhangHLColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnOverhangHLColor.Location = new System.Drawing.Point(620, 187);
|
||||
this.btnOverhangHLColor.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.btnOverhangHLColor.Name = "btnOverhangHLColor";
|
||||
this.btnOverhangHLColor.Size = new System.Drawing.Size(24, 24);
|
||||
this.btnOverhangHLColor.TabIndex = 71;
|
||||
this.toolTip.SetToolTip(this.btnOverhangHLColor, "Islands on the layer that are currently selected in the issue list.");
|
||||
this.btnOverhangHLColor.UseVisualStyleBackColor = false;
|
||||
this.btnOverhangHLColor.Click += new System.EventHandler(this.EventClick);
|
||||
//
|
||||
// label47
|
||||
//
|
||||
this.label47.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.label47.AutoSize = true;
|
||||
this.label47.Location = new System.Drawing.Point(371, 190);
|
||||
this.label47.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.label47.Name = "label47";
|
||||
this.label47.Size = new System.Drawing.Size(210, 18);
|
||||
this.label47.TabIndex = 69;
|
||||
this.label47.Text = "Overhang / Selected overhang:";
|
||||
//
|
||||
// groupBox11
|
||||
//
|
||||
this.groupBox11.Controls.Add(this.nmOverhangErodeIterations);
|
||||
this.groupBox11.Controls.Add(this.label48);
|
||||
this.groupBox11.Controls.Add(this.cbOverhangIndependentFromIslands);
|
||||
this.groupBox11.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.groupBox11.Location = new System.Drawing.Point(3, 331);
|
||||
this.groupBox11.Name = "groupBox11";
|
||||
this.groupBox11.Size = new System.Drawing.Size(655, 93);
|
||||
this.groupBox11.TabIndex = 25;
|
||||
this.groupBox11.TabStop = false;
|
||||
this.groupBox11.Text = "Overhangs";
|
||||
//
|
||||
// cbOverhangIndependentFromIslands
|
||||
//
|
||||
this.cbOverhangIndependentFromIslands.AutoSize = true;
|
||||
this.cbOverhangIndependentFromIslands.Location = new System.Drawing.Point(10, 23);
|
||||
this.cbOverhangIndependentFromIslands.Name = "cbOverhangIndependentFromIslands";
|
||||
this.cbOverhangIndependentFromIslands.Size = new System.Drawing.Size(298, 22);
|
||||
this.cbOverhangIndependentFromIslands.TabIndex = 31;
|
||||
this.cbOverhangIndependentFromIslands.Text = "Include islands when detecting overhangs";
|
||||
this.toolTip.SetToolTip(this.cbOverhangIndependentFromIslands, resources.GetString("cbOverhangIndependentFromIslands.ToolTip"));
|
||||
this.cbOverhangIndependentFromIslands.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// nmOverhangErodeIterations
|
||||
//
|
||||
this.nmOverhangErodeIterations.Location = new System.Drawing.Point(10, 51);
|
||||
this.nmOverhangErodeIterations.Maximum = new decimal(new int[] {
|
||||
255,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.nmOverhangErodeIterations.Minimum = new decimal(new int[] {
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.nmOverhangErodeIterations.Name = "nmOverhangErodeIterations";
|
||||
this.nmOverhangErodeIterations.Size = new System.Drawing.Size(57, 24);
|
||||
this.nmOverhangErodeIterations.TabIndex = 31;
|
||||
this.toolTip.SetToolTip(this.nmOverhangErodeIterations, "Range 2-255");
|
||||
this.nmOverhangErodeIterations.Value = new decimal(new int[] {
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
//
|
||||
// label48
|
||||
//
|
||||
this.label48.AutoSize = true;
|
||||
this.label48.Location = new System.Drawing.Point(73, 54);
|
||||
this.label48.Name = "label48";
|
||||
this.label48.Size = new System.Drawing.Size(174, 18);
|
||||
this.label48.TabIndex = 32;
|
||||
this.label48.Text = "Minimum overhang depth";
|
||||
this.toolTip.SetToolTip(this.label48, "The number of pixels that an overhang can protrude from the previous layer before" +
|
||||
" it is detected and reported as an overhang.");
|
||||
//
|
||||
// FrmSettings
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(624, 669);
|
||||
this.ClientSize = new System.Drawing.Size(669, 712);
|
||||
this.Controls.Add(this.pnActions);
|
||||
this.Controls.Add(this.tabSettings);
|
||||
this.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
@@ -2245,6 +2396,9 @@
|
||||
((System.ComponentModel.ISupportInitialize)(this.nmLayerRepairDefaultOpeningIterations)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.nmLayerRepairDefaultClosingIterations)).EndInit();
|
||||
this.pnActions.ResumeLayout(false);
|
||||
this.groupBox11.ResumeLayout(false);
|
||||
this.groupBox11.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.nmOverhangErodeIterations)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
@@ -2399,5 +2553,13 @@
|
||||
private System.Windows.Forms.Label label45;
|
||||
private System.Windows.Forms.Label label46;
|
||||
private System.Windows.Forms.NumericUpDown nmLayerTooltipOverlayOpacity;
|
||||
private System.Windows.Forms.CheckBox cbComputeOverhangs;
|
||||
private System.Windows.Forms.Button btnOverhangColor;
|
||||
private System.Windows.Forms.Button btnOverhangHLColor;
|
||||
private System.Windows.Forms.Label label47;
|
||||
private System.Windows.Forms.GroupBox groupBox11;
|
||||
private System.Windows.Forms.CheckBox cbOverhangIndependentFromIslands;
|
||||
private System.Windows.Forms.NumericUpDown nmOverhangErodeIterations;
|
||||
private System.Windows.Forms.Label label48;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,6 +60,8 @@ namespace UVtools.GUI.Forms
|
||||
btnNextLayerColor.BackColor = Settings.Default.NextLayerColor;
|
||||
btnIslandColor.BackColor = Settings.Default.IslandColor;
|
||||
btnIslandHLColor.BackColor = Settings.Default.IslandHLColor;
|
||||
btnOverhangColor.BackColor = Settings.Default.OverhangColor;
|
||||
btnOverhangHLColor.BackColor = Settings.Default.OverhangHLColor;
|
||||
btnResinTrapColor.BackColor = Settings.Default.ResinTrapColor;
|
||||
btnResinTrapHLColor.BackColor = Settings.Default.ResinTrapHLColor;
|
||||
btnTouchingBoundsColor.BackColor = Settings.Default.TouchingBoundsColor;
|
||||
@@ -94,6 +96,7 @@ namespace UVtools.GUI.Forms
|
||||
cbComputeIssuesOnLoad.Checked = Settings.Default.ComputeIssuesOnLoad;
|
||||
cbAutoComputeIssuesClickOnTab.Checked = Settings.Default.AutoComputeIssuesClickOnTab;
|
||||
cbComputeIslands.Checked = Settings.Default.ComputeIslands;
|
||||
cbComputeOverhangs.Checked = Settings.Default.ComputeOverhangs;
|
||||
cbComputeResinTraps.Checked = Settings.Default.ComputeResinTraps;
|
||||
cbComputeTouchingBounds.Checked = Settings.Default.ComputeTouchingBounds;
|
||||
cbComputeEmptyLayers.Checked = Settings.Default.ComputeEmptyLayers;
|
||||
@@ -105,6 +108,9 @@ namespace UVtools.GUI.Forms
|
||||
nmIslandRequiredPixelsToSupport.Value = Settings.Default.IslandRequiredPixelsToSupport;
|
||||
nmIslandRequiredPixelBrightnessToSupport.Value = Settings.Default.IslandRequiredPixelBrightnessToSupport;
|
||||
|
||||
cbOverhangIndependentFromIslands.Checked = Settings.Default.OverhangIndependentFromIslands;
|
||||
nmOverhangErodeIterations.Value = Settings.Default.OverhangErodeIterations;
|
||||
|
||||
nmResinTrapBinaryThreshold.Value = Settings.Default.ResinTrapBinaryThreshold;
|
||||
nmResinTrapRequiredAreaToProcessCheck.Value = Settings.Default.ResinTrapRequiredAreaToProcessCheck;
|
||||
nmResinTrapRequiredBlackPixelsToDrain.Value = Settings.Default.ResinTrapRequiredBlackPixelsToDrain;
|
||||
@@ -148,6 +154,8 @@ namespace UVtools.GUI.Forms
|
||||
ReferenceEquals(sender, btnNextLayerColor) ||
|
||||
ReferenceEquals(sender, btnIslandColor) ||
|
||||
ReferenceEquals(sender, btnIslandHLColor) ||
|
||||
ReferenceEquals(sender, btnOverhangColor) ||
|
||||
ReferenceEquals(sender, btnOverhangHLColor) ||
|
||||
ReferenceEquals(sender, btnResinTrapColor) ||
|
||||
ReferenceEquals(sender, btnResinTrapHLColor) ||
|
||||
ReferenceEquals(sender, btnTouchingBoundsColor) ||
|
||||
@@ -248,6 +256,8 @@ namespace UVtools.GUI.Forms
|
||||
Settings.Default.NextLayerColor = btnNextLayerColor.BackColor;
|
||||
Settings.Default.IslandColor = btnIslandColor.BackColor;
|
||||
Settings.Default.IslandHLColor = btnIslandHLColor.BackColor;
|
||||
Settings.Default.OverhangColor = btnOverhangColor.BackColor;
|
||||
Settings.Default.OverhangHLColor = btnOverhangHLColor.BackColor;
|
||||
Settings.Default.ResinTrapColor = btnResinTrapColor.BackColor;
|
||||
Settings.Default.ResinTrapHLColor = btnResinTrapHLColor.BackColor;
|
||||
Settings.Default.TouchingBoundsColor = btnTouchingBoundsColor.BackColor;
|
||||
@@ -280,6 +290,7 @@ namespace UVtools.GUI.Forms
|
||||
Settings.Default.ComputeIssuesOnLoad = cbComputeIssuesOnLoad.Checked;
|
||||
Settings.Default.AutoComputeIssuesClickOnTab = cbAutoComputeIssuesClickOnTab.Checked;
|
||||
Settings.Default.ComputeIslands = cbComputeIslands.Checked;
|
||||
Settings.Default.ComputeOverhangs = cbComputeOverhangs.Checked;
|
||||
Settings.Default.ComputeResinTraps = cbComputeResinTraps.Checked;
|
||||
Settings.Default.ComputeTouchingBounds = cbComputeTouchingBounds.Checked;
|
||||
Settings.Default.ComputeEmptyLayers = cbComputeEmptyLayers.Checked;
|
||||
@@ -291,6 +302,9 @@ namespace UVtools.GUI.Forms
|
||||
Settings.Default.IslandRequiredPixelsToSupport = (byte)nmIslandRequiredPixelsToSupport.Value;
|
||||
Settings.Default.IslandRequiredPixelBrightnessToSupport = (byte)nmIslandRequiredPixelBrightnessToSupport.Value;
|
||||
|
||||
Settings.Default.OverhangIndependentFromIslands = cbOverhangIndependentFromIslands.Checked;
|
||||
Settings.Default.OverhangErodeIterations = (byte)nmOverhangErodeIterations.Value;
|
||||
|
||||
Settings.Default.ResinTrapBinaryThreshold = (byte) nmResinTrapBinaryThreshold.Value;
|
||||
Settings.Default.ResinTrapRequiredAreaToProcessCheck = (byte)nmResinTrapRequiredAreaToProcessCheck.Value;
|
||||
Settings.Default.ResinTrapRequiredBlackPixelsToDrain = (byte)nmResinTrapRequiredBlackPixelsToDrain.Value;
|
||||
|
||||
@@ -123,6 +123,9 @@
|
||||
<metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>131, 17</value>
|
||||
</metadata>
|
||||
<metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>131, 17</value>
|
||||
</metadata>
|
||||
<data name="cbIslandAllowDiagonalBonds.ToolTip" xml:space="preserve">
|
||||
<value>If enabled, components touching by even a single diagonal bond will be considered a single component for the purposes of island detection.
|
||||
Enabling this will result in faster island detection. but some potential islands with weak bonds to other components may not be detected.</value>
|
||||
@@ -130,6 +133,11 @@ Enabling this will result in faster island detection. but some potential islands
|
||||
<data name="label9.ToolTip" xml:space="preserve">
|
||||
<value>An island supported by at least this number of safe pixels will always be considered supported.
|
||||
An island supported by less than this number of pixels will only be considered supported if the number of supporting pixels is at least half the area of the island itself.</value>
|
||||
</data>
|
||||
<data name="cbOverhangIndependentFromIslands.ToolTip" xml:space="preserve">
|
||||
<value>If enabled, overhangs will be computed everywhere, including on islands. An overhang on an island will always be detected and reported. (Faster)
|
||||
If disabled, islands are disregarded when computing overhangs. An overhang that is on an island will never be detected or reported. (Slower)
|
||||
When island detection is disabled and overhang detection is enabled, overhangs will always be computed everywhere.</value>
|
||||
</data>
|
||||
<data name="nmLayerRepairDefaultOpeningIterations.ToolTip" xml:space="preserve">
|
||||
<value>Default number of noise removal iterations the repair algorithm will apply to remove noise and fine details from the layer. This setting has the potential to introduce new islands. Set to 0 to disable.</value>
|
||||
|
||||
Generated
+16
-4
@@ -260,6 +260,7 @@ namespace UVtools.GUI
|
||||
this.toolTipInformation = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.layerScrollTimer = new System.Windows.Forms.Timer(this.components);
|
||||
this.mouseHoldTimer = new System.Windows.Forms.Timer(this.components);
|
||||
this.tsIssuesDetectOverhangs = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.menu.SuspendLayout();
|
||||
this.mainTable.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.scCenter)).BeginInit();
|
||||
@@ -1564,6 +1565,7 @@ namespace UVtools.GUI
|
||||
this.tsIssuesDetect.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
|
||||
this.tsIssuesDetect.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.tsIssuesDetectIslands,
|
||||
this.tsIssuesDetectOverhangs,
|
||||
this.tsIssuesDetectResinTraps,
|
||||
this.tsIssuesDetectTouchingBounds,
|
||||
this.tsIssuesDetectEmptyLayers});
|
||||
@@ -1580,7 +1582,7 @@ namespace UVtools.GUI
|
||||
this.tsIssuesDetectIslands.CheckOnClick = true;
|
||||
this.tsIssuesDetectIslands.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.tsIssuesDetectIslands.Name = "tsIssuesDetectIslands";
|
||||
this.tsIssuesDetectIslands.Size = new System.Drawing.Size(166, 22);
|
||||
this.tsIssuesDetectIslands.Size = new System.Drawing.Size(180, 22);
|
||||
this.tsIssuesDetectIslands.Text = "&Islands";
|
||||
//
|
||||
// tsIssuesDetectResinTraps
|
||||
@@ -1589,7 +1591,7 @@ namespace UVtools.GUI
|
||||
this.tsIssuesDetectResinTraps.CheckOnClick = true;
|
||||
this.tsIssuesDetectResinTraps.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.tsIssuesDetectResinTraps.Name = "tsIssuesDetectResinTraps";
|
||||
this.tsIssuesDetectResinTraps.Size = new System.Drawing.Size(166, 22);
|
||||
this.tsIssuesDetectResinTraps.Size = new System.Drawing.Size(180, 22);
|
||||
this.tsIssuesDetectResinTraps.Text = "&Resin traps";
|
||||
//
|
||||
// tsIssuesDetectTouchingBounds
|
||||
@@ -1598,7 +1600,7 @@ namespace UVtools.GUI
|
||||
this.tsIssuesDetectTouchingBounds.CheckOnClick = true;
|
||||
this.tsIssuesDetectTouchingBounds.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.tsIssuesDetectTouchingBounds.Name = "tsIssuesDetectTouchingBounds";
|
||||
this.tsIssuesDetectTouchingBounds.Size = new System.Drawing.Size(166, 22);
|
||||
this.tsIssuesDetectTouchingBounds.Size = new System.Drawing.Size(180, 22);
|
||||
this.tsIssuesDetectTouchingBounds.Text = "&Touching Bounds";
|
||||
//
|
||||
// tsIssuesDetectEmptyLayers
|
||||
@@ -1607,7 +1609,7 @@ namespace UVtools.GUI
|
||||
this.tsIssuesDetectEmptyLayers.CheckOnClick = true;
|
||||
this.tsIssuesDetectEmptyLayers.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.tsIssuesDetectEmptyLayers.Name = "tsIssuesDetectEmptyLayers";
|
||||
this.tsIssuesDetectEmptyLayers.Size = new System.Drawing.Size(166, 22);
|
||||
this.tsIssuesDetectEmptyLayers.Size = new System.Drawing.Size(180, 22);
|
||||
this.tsIssuesDetectEmptyLayers.Text = "&Empty Layers";
|
||||
//
|
||||
// toolStripSeparator12
|
||||
@@ -2874,6 +2876,15 @@ namespace UVtools.GUI
|
||||
this.mouseHoldTimer.Interval = 1000;
|
||||
this.mouseHoldTimer.Tick += new System.EventHandler(this.EventTimerTick);
|
||||
//
|
||||
// tsIssuesDetectOverhangs
|
||||
//
|
||||
this.tsIssuesDetectOverhangs.Checked = true;
|
||||
this.tsIssuesDetectOverhangs.CheckOnClick = true;
|
||||
this.tsIssuesDetectOverhangs.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.tsIssuesDetectOverhangs.Name = "tsIssuesDetectOverhangs";
|
||||
this.tsIssuesDetectOverhangs.Size = new System.Drawing.Size(180, 22);
|
||||
this.tsIssuesDetectOverhangs.Text = "&Overhangs";
|
||||
//
|
||||
// FrmMain
|
||||
//
|
||||
this.AllowDrop = true;
|
||||
@@ -3217,6 +3228,7 @@ namespace UVtools.GUI
|
||||
private System.Windows.Forms.ToolStripButton btnLayerMouseLocation;
|
||||
private System.Windows.Forms.ToolStripButton btnLayerResolution;
|
||||
public TransparentLabel lbLayerImageTooltipOverlay;
|
||||
private System.Windows.Forms.ToolStripMenuItem tsIssuesDetectOverhangs;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+69
-29
@@ -166,6 +166,7 @@ namespace UVtools.GUI
|
||||
|
||||
btnLayerImageLayerDifference.Checked = Settings.Default.LayerDifferenceDefault;
|
||||
tsIssuesDetectIslands.Checked = Settings.Default.ComputeIslands;
|
||||
tsIssuesDetectOverhangs.Checked = Settings.Default.ComputeOverhangs;
|
||||
tsIssuesDetectResinTraps.Checked = Settings.Default.ComputeResinTraps;
|
||||
tsIssuesDetectTouchingBounds.Checked = Settings.Default.ComputeTouchingBounds;
|
||||
tsIssuesDetectEmptyLayers.Checked = Settings.Default.ComputeEmptyLayers;
|
||||
@@ -304,7 +305,7 @@ namespace UVtools.GUI
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Debug.WriteLine(e.Message);
|
||||
Debug.WriteLine(e.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1088,7 +1089,7 @@ namespace UVtools.GUI
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "Removal failed", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
MessageBox.Show(ex.ToString(), "Removal failed", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
finally
|
||||
{
|
||||
@@ -1109,11 +1110,17 @@ namespace UVtools.GUI
|
||||
var whiteListLayers = new List<uint>();
|
||||
|
||||
// Update GUI
|
||||
List<LayerIssue> removeList = new List<LayerIssue>();
|
||||
List<LayerIssue> removeSelectedObjects = new List<LayerIssue>();
|
||||
foreach (LayerIssue issue in flvIssues.SelectedObjects)
|
||||
{
|
||||
//if (!issue.HaveValidPoint) continue;
|
||||
if (issue.Type == LayerIssue.IssueType.TouchingBound) continue;
|
||||
if (issue.Type != LayerIssue.IssueType.Island &&
|
||||
issue.Type != LayerIssue.IssueType.ResinTrap &&
|
||||
issue.Type != LayerIssue.IssueType.EmptyLayer) continue;
|
||||
|
||||
Issues.Remove(issue);
|
||||
removeSelectedObjects.Add(issue);
|
||||
|
||||
if (issue.Type == LayerIssue.IssueType.Island)
|
||||
{
|
||||
var nextLayer = issue.Layer.Index + 1;
|
||||
@@ -1121,12 +1128,9 @@ namespace UVtools.GUI
|
||||
if (whiteListLayers.Contains(nextLayer)) continue;
|
||||
whiteListLayers.Add(nextLayer);
|
||||
}
|
||||
|
||||
Issues.Remove(issue);
|
||||
removeList.Add(issue);
|
||||
}
|
||||
|
||||
flvIssues.RemoveObjects(removeList);
|
||||
flvIssues.RemoveObjects(removeSelectedObjects);
|
||||
|
||||
if (layersRemove.Count > 0)
|
||||
{
|
||||
@@ -1136,7 +1140,7 @@ namespace UVtools.GUI
|
||||
|
||||
if (Settings.Default.PartialUpdateIslandsOnEditing)
|
||||
{
|
||||
UpdateIslands(whiteListLayers);
|
||||
UpdateIslandsOverhangs(whiteListLayers);
|
||||
}
|
||||
|
||||
//ShowLayer(); // It will call latter so its a extra call
|
||||
@@ -1157,8 +1161,12 @@ namespace UVtools.GUI
|
||||
/*if (MessageBox.Show("Are you sure you want to compute issues?", "Issues Compute",
|
||||
MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes) return;*/
|
||||
|
||||
ComputeIssues(GetIslandDetectionConfiguration(), GetResinTrapDetectionConfiguration(),
|
||||
GetTouchingBoundsDetectionConfiguration(), tsIssuesDetectEmptyLayers.Checked);
|
||||
ComputeIssues(
|
||||
GetIslandDetectionConfiguration(),
|
||||
GetOverhangDetectionConfiguration(),
|
||||
GetResinTrapDetectionConfiguration(),
|
||||
GetTouchingBoundsDetectionConfiguration(),
|
||||
tsIssuesDetectEmptyLayers.Checked);
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -1438,7 +1446,7 @@ namespace UVtools.GUI
|
||||
"Go to \"Help\" -> \"Install profiles into PrusaSlicer\" to install printers.\n";
|
||||
}
|
||||
|
||||
MessageBox.Show($"Convertion was not successful! Maybe not implemented...\n{extraMessage}{ex.Message}",
|
||||
MessageBox.Show($"Convertion was not successful! Maybe not implemented...\n{extraMessage}{ex}",
|
||||
"Convertion unsuccessful", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
finally
|
||||
@@ -2054,7 +2062,7 @@ namespace UVtools.GUI
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "Error while saving the file", MessageBoxButtons.OK,
|
||||
MessageBox.Show(ex.ToString(), "Error while saving the file", MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Error);
|
||||
}
|
||||
finally
|
||||
@@ -2426,6 +2434,18 @@ namespace UVtools.GUI
|
||||
|
||||
switch (issue.Type)
|
||||
{
|
||||
case LayerIssue.IssueType.Overhang:
|
||||
color = selectedIssues.Contains(issue)
|
||||
? Settings.Default.OverhangHLColor
|
||||
: Settings.Default.OverhangColor;
|
||||
if (btnLayerImageShowCrosshairs.Checked &&
|
||||
!Settings.Default.CrosshairShowOnlyOnSelectedIssues &&
|
||||
pbLayer.Zoom <= CrosshairFadeLevel)
|
||||
{
|
||||
DrawCrosshair(issue.BoundingRectangle);
|
||||
}
|
||||
|
||||
break;
|
||||
case LayerIssue.IssueType.Island:
|
||||
color = selectedIssues.Contains(issue)
|
||||
? Settings.Default.IslandHLColor
|
||||
@@ -2443,6 +2463,8 @@ namespace UVtools.GUI
|
||||
break;
|
||||
}
|
||||
|
||||
if(color.IsEmpty) continue;
|
||||
|
||||
foreach (var pixel in issue)
|
||||
{
|
||||
int pixelPos = ActualLayerImage.GetPixelPos(pixel);
|
||||
@@ -3551,6 +3573,7 @@ namespace UVtools.GUI
|
||||
}
|
||||
|
||||
private void ComputeIssues(IslandDetectionConfiguration islandConfig = null,
|
||||
OverhangDetectionConfiguration overhangConfig = null,
|
||||
ResinTrapDetectionConfiguration resinTrapConfig = null,
|
||||
TouchingBoundDetectionConfiguration touchingBoundConfig = null, bool emptyLayersConfig = true)
|
||||
{
|
||||
@@ -3565,7 +3588,7 @@ namespace UVtools.GUI
|
||||
{
|
||||
try
|
||||
{
|
||||
Issues = SlicerFile.LayerManager.GetAllIssues(islandConfig, resinTrapConfig, touchingBoundConfig,
|
||||
Issues = SlicerFile.LayerManager.GetAllIssues(islandConfig, overhangConfig, resinTrapConfig, touchingBoundConfig,
|
||||
emptyLayersConfig, FrmLoading.RestartProgress());
|
||||
}
|
||||
catch (OperationCanceledException)
|
||||
@@ -3574,7 +3597,7 @@ namespace UVtools.GUI
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "Error while trying compute issues", MessageBoxButtons.OK,
|
||||
MessageBox.Show(ex.ToString(), "Error while trying compute issues", MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Error);
|
||||
}
|
||||
finally
|
||||
@@ -3799,6 +3822,16 @@ namespace UVtools.GUI
|
||||
};
|
||||
}
|
||||
|
||||
public OverhangDetectionConfiguration GetOverhangDetectionConfiguration()
|
||||
{
|
||||
return new OverhangDetectionConfiguration
|
||||
{
|
||||
Enabled = tsIssuesDetectOverhangs.Checked,
|
||||
IndependentFromIslands = Settings.Default.OverhangIndependentFromIslands,
|
||||
ErodeIterations = Settings.Default.OverhangErodeIterations,
|
||||
};
|
||||
}
|
||||
|
||||
public ResinTrapDetectionConfiguration GetResinTrapDetectionConfiguration()
|
||||
{
|
||||
return new ResinTrapDetectionConfiguration
|
||||
@@ -3903,7 +3936,7 @@ namespace UVtools.GUI
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show($"{ex.Message}", "Drawing operation failed!", MessageBoxButtons.OK,
|
||||
MessageBox.Show(ex.ToString(), "Drawing operation failed!", MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Error);
|
||||
}
|
||||
finally
|
||||
@@ -3940,7 +3973,7 @@ namespace UVtools.GUI
|
||||
}
|
||||
}
|
||||
|
||||
UpdateIslands(whiteListLayers);
|
||||
UpdateIslandsOverhangs(whiteListLayers);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3958,18 +3991,21 @@ namespace UVtools.GUI
|
||||
menuFileSave.Enabled = true;
|
||||
}
|
||||
|
||||
private void UpdateIslands(List<uint> whiteListLayers)
|
||||
private void UpdateIslandsOverhangs(List<uint> whiteListLayers)
|
||||
{
|
||||
if (whiteListLayers.Count == 0) return;
|
||||
var islandConfig = GetIslandDetectionConfiguration();
|
||||
var overhangConfig = GetOverhangDetectionConfiguration();
|
||||
var resinTrapConfig = new ResinTrapDetectionConfiguration {Enabled = false};
|
||||
var touchingBoundConfig = new TouchingBoundDetectionConfiguration {Enabled = false};
|
||||
islandConfig.Enabled = true;
|
||||
islandConfig.WhiteListLayers = whiteListLayers;
|
||||
overhangConfig.Enabled = true;
|
||||
overhangConfig.WhiteListLayers = whiteListLayers;
|
||||
|
||||
if (ReferenceEquals(Issues, null))
|
||||
if (Issues is null)
|
||||
{
|
||||
ComputeIssues(islandConfig, resinTrapConfig, touchingBoundConfig, false);
|
||||
ComputeIssues(islandConfig, overhangConfig, resinTrapConfig, touchingBoundConfig, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -3980,18 +4016,18 @@ namespace UVtools.GUI
|
||||
{
|
||||
Issues.RemoveAll(issue =>
|
||||
issue.LayerIndex == layerIndex &&
|
||||
issue.Type == LayerIssue.IssueType.Island); // Remove all islands for update
|
||||
(issue.Type == LayerIssue.IssueType.Island || issue.Type == LayerIssue.IssueType.Overhang)); // Remove all islands and overhangs for update
|
||||
}
|
||||
|
||||
Task.Factory.StartNew(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
var issues = SlicerFile.LayerManager.GetAllIssues(islandConfig, resinTrapConfig,
|
||||
var issues = SlicerFile.LayerManager.GetAllIssues(islandConfig, overhangConfig, resinTrapConfig,
|
||||
touchingBoundConfig, false,
|
||||
FrmLoading.RestartProgress());
|
||||
|
||||
issues.RemoveAll(issue => issue.Type != LayerIssue.IssueType.Island); // Remove all non islands
|
||||
issues.RemoveAll(issue => issue.Type != LayerIssue.IssueType.Island && issue.Type != LayerIssue.IssueType.Overhang); // Remove all non islands
|
||||
Issues.AddRange(issues);
|
||||
Issues = Issues.OrderBy(issue => issue.Type).ThenBy(issue => issue.LayerIndex)
|
||||
.ThenBy(issue => issue.PixelsCount).ToList();
|
||||
@@ -4002,7 +4038,7 @@ namespace UVtools.GUI
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "Error while trying to compute issues",
|
||||
MessageBox.Show(ex.ToString(), "Error while trying to compute issues",
|
||||
MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Error);
|
||||
}
|
||||
@@ -4154,18 +4190,22 @@ namespace UVtools.GUI
|
||||
|
||||
return false;
|
||||
case OperationRepairLayers operation:
|
||||
if (ReferenceEquals(Issues, null))
|
||||
if (Issues is null)
|
||||
{
|
||||
var islandConfig = GetIslandDetectionConfiguration();
|
||||
islandConfig.Enabled =
|
||||
operation.RepairIslands && operation.RemoveIslandsBelowEqualPixelCount > 0;
|
||||
islandConfig.Enabled = operation.RepairIslands && operation.RemoveIslandsBelowEqualPixelCount > 0;
|
||||
var overhangConfig = new OverhangDetectionConfiguration {Enabled = false};
|
||||
var resinTrapConfig = GetResinTrapDetectionConfiguration();
|
||||
resinTrapConfig.Enabled = operation.RepairResinTraps;
|
||||
var touchingBoundConfig = new TouchingBoundDetectionConfiguration {Enabled = false};
|
||||
|
||||
if (islandConfig.Enabled || resinTrapConfig.Enabled)
|
||||
{
|
||||
ComputeIssues(islandConfig, resinTrapConfig, touchingBoundConfig,
|
||||
ComputeIssues(
|
||||
islandConfig,
|
||||
overhangConfig,
|
||||
resinTrapConfig,
|
||||
touchingBoundConfig,
|
||||
tsIssuesDetectEmptyLayers.Checked);
|
||||
}
|
||||
}
|
||||
@@ -4261,7 +4301,7 @@ namespace UVtools.GUI
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
GUIExtensions.MessageBoxError($"{baseOperation.Title} Error", ex.Message);
|
||||
GUIExtensions.MessageBoxError($"{baseOperation.Title} Error", ex.ToString());
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
||||
+35
-23
@@ -129,12 +129,6 @@
|
||||
<metadata name="tsLayerInfo.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>1773, 17</value>
|
||||
</metadata>
|
||||
<metadata name="tsThumbnails.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>297, 17</value>
|
||||
</metadata>
|
||||
<metadata name="tsProperties.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>695, 17</value>
|
||||
</metadata>
|
||||
<metadata name="tsGCode.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>1040, 17</value>
|
||||
</metadata>
|
||||
@@ -150,22 +144,6 @@
|
||||
<metadata name="tsLog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>1587, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="btnLogVerbose.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="imageList16x16.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>811, 17</value>
|
||||
</metadata>
|
||||
@@ -174,7 +152,7 @@
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABk
|
||||
FAAAAk1TRnQBSQFMAgEBBgEAARgBDAEYAQwBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
|
||||
FAAAAk1TRnQBSQFMAgEBBgEAASABDAEgAQwBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
|
||||
AwABIAMAAQEBAAEgBgABIC4AAxgBIgMwAUsDMAFMAzIBUDMAAQEDJAE2AysBQqwAAyIBMQNWAbkDXQHi
|
||||
AwAB/wMAAf8BKgEtASgB/gNTAawDTQGVAwABARgAAwkBDAMzAVIDUAGdA1cB6AMAAf4DKwH8Ay8BSqQA
|
||||
AyEBMANZAewBKwEuASkB+gNRAfcDUgH0A1MB8QNIAfYDQQH5AwAB/wNPAZsDAAEBCAADFQEdAz8BbgNV
|
||||
@@ -262,6 +240,37 @@
|
||||
AQMBAAEBAYABgwHBAQ4BMAEDAcACAAGAAUEBhgEhAQMBwAEBAYABiAERAcIBAwIAAQEBgAGBAREB5gEH
|
||||
AgABgAEBAYEBMQH/AR8BwAEDAcABAwGBAfEB/wEfAcABAwHgAQcBgAEBAf8BHwHAAQMB8AEPAYABAQL/
|
||||
AfwBPws=
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="tsThumbnails.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>297, 17</value>
|
||||
</metadata>
|
||||
<metadata name="tsProperties.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>695, 17</value>
|
||||
</metadata>
|
||||
<metadata name="tsGCode.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>1040, 17</value>
|
||||
</metadata>
|
||||
<metadata name="tsPixelEditorHistory.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>1430, 17</value>
|
||||
</metadata>
|
||||
<metadata name="tsLog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>1587, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="btnLogVerbose.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="toolTipInformation.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
@@ -273,6 +282,9 @@
|
||||
<metadata name="issueScrollTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>158, 17</value>
|
||||
</metadata>
|
||||
<metadata name="toolTipInformation.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>1138, 17</value>
|
||||
</metadata>
|
||||
<metadata name="layerScrollTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>1292, 17</value>
|
||||
</metadata>
|
||||
|
||||
@@ -35,5 +35,5 @@ using System.Runtime.InteropServices;
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("0.8.2.4")]
|
||||
[assembly: AssemblyFileVersion("0.8.2.4")]
|
||||
[assembly: AssemblyVersion("0.8.3.0")]
|
||||
[assembly: AssemblyFileVersion("0.8.3.0")]
|
||||
|
||||
+64
-4
@@ -37,7 +37,7 @@ namespace UVtools.GUI.Properties {
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("Gold")]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("Yellow")]
|
||||
public global::System.Drawing.Color IslandColor {
|
||||
get {
|
||||
return ((global::System.Drawing.Color)(this["IslandColor"]));
|
||||
@@ -49,7 +49,7 @@ namespace UVtools.GUI.Properties {
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("Yellow")]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("Gold")]
|
||||
public global::System.Drawing.Color IslandHLColor {
|
||||
get {
|
||||
return ((global::System.Drawing.Color)(this["IslandHLColor"]));
|
||||
@@ -61,7 +61,7 @@ namespace UVtools.GUI.Properties {
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("SandyBrown")]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("Orange")]
|
||||
public global::System.Drawing.Color ResinTrapColor {
|
||||
get {
|
||||
return ((global::System.Drawing.Color)(this["ResinTrapColor"]));
|
||||
@@ -73,7 +73,7 @@ namespace UVtools.GUI.Properties {
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("Orange")]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("SandyBrown")]
|
||||
public global::System.Drawing.Color ResinTrapHLColor {
|
||||
get {
|
||||
return ((global::System.Drawing.Color)(this["ResinTrapHLColor"]));
|
||||
@@ -910,5 +910,65 @@ namespace UVtools.GUI.Properties {
|
||||
this["LayerTooltipOverlayOpacity"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("HotPink")]
|
||||
public global::System.Drawing.Color OverhangColor {
|
||||
get {
|
||||
return ((global::System.Drawing.Color)(this["OverhangColor"]));
|
||||
}
|
||||
set {
|
||||
this["OverhangColor"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("DeepPink")]
|
||||
public global::System.Drawing.Color OverhangHLColor {
|
||||
get {
|
||||
return ((global::System.Drawing.Color)(this["OverhangHLColor"]));
|
||||
}
|
||||
set {
|
||||
this["OverhangHLColor"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool ComputeOverhangs {
|
||||
get {
|
||||
return ((bool)(this["ComputeOverhangs"]));
|
||||
}
|
||||
set {
|
||||
this["ComputeOverhangs"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("49")]
|
||||
public byte OverhangErodeIterations {
|
||||
get {
|
||||
return ((byte)(this["OverhangErodeIterations"]));
|
||||
}
|
||||
set {
|
||||
this["OverhangErodeIterations"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool OverhangIndependentFromIslands {
|
||||
get {
|
||||
return ((bool)(this["OverhangIndependentFromIslands"]));
|
||||
}
|
||||
set {
|
||||
this["OverhangIndependentFromIslands"] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,16 +6,16 @@
|
||||
<Value Profile="(Default)">Red</Value>
|
||||
</Setting>
|
||||
<Setting Name="IslandColor" Type="System.Drawing.Color" Scope="User">
|
||||
<Value Profile="(Default)">Gold</Value>
|
||||
</Setting>
|
||||
<Setting Name="IslandHLColor" Type="System.Drawing.Color" Scope="User">
|
||||
<Value Profile="(Default)">Yellow</Value>
|
||||
</Setting>
|
||||
<Setting Name="IslandHLColor" Type="System.Drawing.Color" Scope="User">
|
||||
<Value Profile="(Default)">Gold</Value>
|
||||
</Setting>
|
||||
<Setting Name="ResinTrapColor" Type="System.Drawing.Color" Scope="User">
|
||||
<Value Profile="(Default)">SandyBrown</Value>
|
||||
<Value Profile="(Default)">Orange</Value>
|
||||
</Setting>
|
||||
<Setting Name="ResinTrapHLColor" Type="System.Drawing.Color" Scope="User">
|
||||
<Value Profile="(Default)">Orange</Value>
|
||||
<Value Profile="(Default)">SandyBrown</Value>
|
||||
</Setting>
|
||||
<Setting Name="TouchingBoundsColor" Type="System.Drawing.Color" Scope="User">
|
||||
<Value Profile="(Default)">Red</Value>
|
||||
@@ -224,5 +224,20 @@
|
||||
<Setting Name="LayerTooltipOverlayOpacity" Type="System.Byte" Scope="User">
|
||||
<Value Profile="(Default)">210</Value>
|
||||
</Setting>
|
||||
<Setting Name="OverhangColor" Type="System.Drawing.Color" Scope="User">
|
||||
<Value Profile="(Default)">HotPink</Value>
|
||||
</Setting>
|
||||
<Setting Name="OverhangHLColor" Type="System.Drawing.Color" Scope="User">
|
||||
<Value Profile="(Default)">DeepPink</Value>
|
||||
</Setting>
|
||||
<Setting Name="ComputeOverhangs" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="OverhangErodeIterations" Type="System.Byte" Scope="User">
|
||||
<Value Profile="(Default)">49</Value>
|
||||
</Setting>
|
||||
<Setting Name="OverhangIndependentFromIslands" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
</Settings>
|
||||
</SettingsFile>
|
||||
@@ -95,11 +95,11 @@
|
||||
<Reference Include="Cyotek.Windows.Forms.ImageBox, Version=1.2.0.0, Culture=neutral, PublicKeyToken=58daa28b0b2de221, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\CyotekImageBox.1.3.0-Alpha1\lib\net20\Cyotek.Windows.Forms.ImageBox.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Emgu.CV.Bitmap, Version=4.4.0.4061, Culture=neutral, PublicKeyToken=7281126722ab4438, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Emgu.CV.Bitmap.4.4.0.4061\lib\netstandard2.0\Emgu.CV.Bitmap.dll</HintPath>
|
||||
<Reference Include="Emgu.CV.Bitmap, Version=4.4.0.4077, Culture=neutral, PublicKeyToken=7281126722ab4438, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Emgu.CV.Bitmap.4.4.0.4077\lib\netstandard2.0\Emgu.CV.Bitmap.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Emgu.CV.Platform.NetStandard, Version=4.4.0.4061, Culture=neutral, PublicKeyToken=7281126722ab4438, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Emgu.CV.4.4.0.4061\lib\netstandard2.0\Emgu.CV.Platform.NetStandard.dll</HintPath>
|
||||
<Reference Include="Emgu.CV.Platform.NetStandard, Version=4.4.0.4077, Culture=neutral, PublicKeyToken=7281126722ab4438, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Emgu.CV.4.4.0.4077\lib\netstandard2.0\Emgu.CV.Platform.NetStandard.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="ObjectListView, Version=2.9.1.25410, Culture=neutral, PublicKeyToken=b1c5bf581481bcd4, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\ObjectListView.Official.2.9.2-alpha2\lib\net20\ObjectListView.dll</HintPath>
|
||||
@@ -112,7 +112,7 @@
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Drawing.Common, Version=4.0.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Drawing.Common.4.7.0\lib\net461\System.Drawing.Common.dll</HintPath>
|
||||
<HintPath>..\packages\System.Drawing.Common.5.0.0-rc.1.20451.14\lib\net461\System.Drawing.Common.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Drawing.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Drawing.Primitives.4.3.0\lib\net45\System.Drawing.Primitives.dll</HintPath>
|
||||
@@ -584,11 +584,11 @@
|
||||
<PostBuildEvent>xcopy /i /y /d /s $(ProjectDir)..\PrusaSlicer $(ProjectDir)$(OutDir)\PrusaSlicer
|
||||
xcopy /d /y $(ProjectDir)..\UVtools.Cmd\$(OutDir)netcoreapp3.1\* $(ProjectDir)$(OutDir)</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
<Import Project="..\packages\Emgu.CV.runtime.windows.4.4.0.4061\build\Emgu.CV.runtime.windows.targets" Condition="Exists('..\packages\Emgu.CV.runtime.windows.4.4.0.4061\build\Emgu.CV.runtime.windows.targets')" />
|
||||
<Import Project="..\packages\Emgu.CV.runtime.windows.4.4.0.4077\build\Emgu.CV.runtime.windows.targets" Condition="Exists('..\packages\Emgu.CV.runtime.windows.4.4.0.4077\build\Emgu.CV.runtime.windows.targets')" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\Emgu.CV.runtime.windows.4.4.0.4061\build\Emgu.CV.runtime.windows.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Emgu.CV.runtime.windows.4.4.0.4061\build\Emgu.CV.runtime.windows.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Emgu.CV.runtime.windows.4.4.0.4077\build\Emgu.CV.runtime.windows.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Emgu.CV.runtime.windows.4.4.0.4077\build\Emgu.CV.runtime.windows.targets'))" />
|
||||
</Target>
|
||||
</Project>
|
||||
@@ -1,12 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="CyotekImageBox" version="1.3.0-Alpha1" targetFramework="net48" />
|
||||
<package id="Emgu.CV" version="4.4.0.4061" targetFramework="net48" />
|
||||
<package id="Emgu.CV.Bitmap" version="4.4.0.4061" targetFramework="net48" />
|
||||
<package id="Emgu.CV.runtime.windows" version="4.4.0.4061" targetFramework="net48" />
|
||||
<package id="Emgu.CV" version="4.4.0.4077" targetFramework="net48" />
|
||||
<package id="Emgu.CV.Bitmap" version="4.4.0.4077" targetFramework="net48" />
|
||||
<package id="Emgu.CV.runtime.windows" version="4.4.0.4077" targetFramework="net48" />
|
||||
<package id="ObjectListView.Official" version="2.9.2-alpha2" targetFramework="net48" />
|
||||
<package id="System.Buffers" version="4.5.1" targetFramework="net48" />
|
||||
<package id="System.Drawing.Common" version="4.7.0" targetFramework="net48" />
|
||||
<package id="System.Drawing.Common" version="5.0.0-rc.1.20451.14" targetFramework="net48" />
|
||||
<package id="System.Drawing.Primitives" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.IO" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Memory" version="4.5.4" targetFramework="net48" />
|
||||
|
||||
@@ -26,6 +26,12 @@
|
||||
<Component Id="owc25ABE3DF1B281670E77FD3B882B58B9F" Guid="de5c6697-501a-2e10-da10-134ad4f060ad">
|
||||
<File Id="owf25ABE3DF1B281670E77FD3B882B58B9F" Source="$(var.SourceDir)\Cyotek.Windows.Forms.ImageBox.xml" KeyPath="yes" />
|
||||
</Component>
|
||||
<Component Id="owcD03A5F10780E4BAB31F0BA2BC3146383" Guid="d144d6cc-6ae1-57d7-cae6-627840b6f17a">
|
||||
<File Id="owfD03A5F10780E4BAB31F0BA2BC3146383" Source="$(var.SourceDir)\Emgu.CV.Bitmap.dll" KeyPath="yes" />
|
||||
</Component>
|
||||
<Component Id="owcBBB242A927A3E56E02090CCA2E90BA92" Guid="741e1eb2-a7ed-c349-50a0-88544797620f">
|
||||
<File Id="owfBBB242A927A3E56E02090CCA2E90BA92" Source="$(var.SourceDir)\Emgu.CV.Bitmap.xml" KeyPath="yes" />
|
||||
</Component>
|
||||
<Component Id="owc0F288E77993D555E272ECFA1DF023DDA" Guid="ad374cb5-9215-37cb-d59d-88e4b3bc61bb">
|
||||
<File Id="owf0F288E77993D555E272ECFA1DF023DDA" Source="$(var.SourceDir)\Emgu.CV.Platform.NetCore.dll" KeyPath="yes" />
|
||||
</Component>
|
||||
@@ -56,6 +62,9 @@
|
||||
<Component Id="owc0517117239E80E566282BE4546F8180F" Guid="c6cee878-746b-dc34-9583-946f27cba26a">
|
||||
<File Id="owf0517117239E80E566282BE4546F8180F" Source="$(var.SourceDir)\System.CommandLine.dll" KeyPath="yes" />
|
||||
</Component>
|
||||
<Component Id="owcC44FBFE064FE5B25B9677334BAFFBB9F" Guid="7eaa9e75-cff6-90ab-c842-673d3b7d6d9b">
|
||||
<File Id="owfC44FBFE064FE5B25B9677334BAFFBB9F" Source="$(var.SourceDir)\System.Drawing.Common.dll" KeyPath="yes" />
|
||||
</Component>
|
||||
<Component Id="owcF2B199C7800AE0BBCC0001E0A61F6988" Guid="405dfe99-fffe-4059-26e0-c7d1bd0a0bed">
|
||||
<File Id="owfF2B199C7800AE0BBCC0001E0A61F6988" Source="$(var.SourceDir)\System.Memory.dll" KeyPath="yes" />
|
||||
</Component>
|
||||
@@ -193,6 +202,9 @@
|
||||
<Component Id="owcE3C5EB6B6F0C3F57765457D6609A1347" Guid="c6a7b466-f370-61cb-6ea8-4f58e1a1ae4f">
|
||||
<File Id="owfE3C5EB6B6F0C3F57765457D6609A1347" Source="$(var.SourceDir)\PrusaSlicer\printer\Phrozen Shuffle.ini" KeyPath="yes" />
|
||||
</Component>
|
||||
<Component Id="owc0C95EB1AA908390B033CF556246859BD" Guid="ee5430e3-60de-f716-a55e-0726c7138bf6">
|
||||
<File Id="owf0C95EB1AA908390B033CF556246859BD" Source="$(var.SourceDir)\PrusaSlicer\printer\Phrozen Sonic Mini 4K.ini" KeyPath="yes" />
|
||||
</Component>
|
||||
<Component Id="owcA72B3137C7468BB42D62EE5D01D0FCA5" Guid="d03183f0-ec43-e8ce-13ef-65e19d5c4968">
|
||||
<File Id="owfA72B3137C7468BB42D62EE5D01D0FCA5" Source="$(var.SourceDir)\PrusaSlicer\printer\Phrozen Sonic Mini.ini" KeyPath="yes" />
|
||||
</Component>
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using Avalonia.Markup.Xaml;
|
||||
using System.Threading.Tasks;
|
||||
using Avalonia.Markup.Xaml;
|
||||
using UVtools.Core.Objects;
|
||||
using UVtools.Core.Operations;
|
||||
using UVtools.WPF.Extensions;
|
||||
@@ -36,11 +37,11 @@ namespace UVtools.WPF.Controls.Tools
|
||||
/// Validates if is safe to continue with operation
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public virtual bool ValidateForm()
|
||||
public virtual async Task<bool> ValidateForm()
|
||||
{
|
||||
if (BaseOperation is null) return true;
|
||||
if (!UpdateOperation()) return false;
|
||||
return ValidateFormFromString(BaseOperation.Validate());
|
||||
return await ValidateFormFromString(BaseOperation.Validate());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -48,10 +49,10 @@ namespace UVtools.WPF.Controls.Tools
|
||||
/// </summary>
|
||||
/// <param name="text"></param>
|
||||
/// <returns></returns>
|
||||
public bool ValidateFormFromString(string text)
|
||||
public async Task<bool> ValidateFormFromString(string text)
|
||||
{
|
||||
if (string.IsNullOrEmpty(text)) return true;
|
||||
ParentWindow.MessageBoxError(text);
|
||||
await ParentWindow.MessageBoxError(text);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -60,6 +61,6 @@ namespace UVtools.WPF.Controls.Tools
|
||||
/// </summary>
|
||||
/// <param name="text"></param>
|
||||
/// <returns></returns>
|
||||
public bool ValidateFormFromString(StringTag text) => ValidateFormFromString(text?.ToString());
|
||||
public async Task<bool> ValidateFormFromString(StringTag text) => await ValidateFormFromString(text?.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -688,22 +688,18 @@ namespace UVtools.WPF
|
||||
var issueRemoveList = new List<LayerIssue>();
|
||||
foreach (LayerIssue issue in IssuesGrid.SelectedItems)
|
||||
{
|
||||
switch (issue.Type)
|
||||
if (issue.Type != LayerIssue.IssueType.Island &&
|
||||
issue.Type != LayerIssue.IssueType.ResinTrap &&
|
||||
issue.Type != LayerIssue.IssueType.EmptyLayer) continue;
|
||||
|
||||
issueRemoveList.Add(issue);
|
||||
|
||||
if (issue.Type == LayerIssue.IssueType.Island)
|
||||
{
|
||||
//if (!issue.HaveValidPoint) continue;
|
||||
case LayerIssue.IssueType.EmptyLayer:
|
||||
case LayerIssue.IssueType.ResinTrap:
|
||||
issueRemoveList.Add(issue);
|
||||
break;
|
||||
case LayerIssue.IssueType.Island:
|
||||
{
|
||||
issueRemoveList.Add(issue);
|
||||
var nextLayer = issue.Layer.Index + 1;
|
||||
if (nextLayer >= SlicerFile.LayerCount) continue;
|
||||
if (whiteListLayers.Contains(nextLayer)) continue;
|
||||
whiteListLayers.Add(nextLayer);
|
||||
break;
|
||||
}
|
||||
var nextLayer = issue.Layer.Index + 1;
|
||||
if (nextLayer >= SlicerFile.LayerCount) continue;
|
||||
if (whiteListLayers.Contains(nextLayer)) continue;
|
||||
whiteListLayers.Add(nextLayer);
|
||||
}
|
||||
|
||||
//Issues.Remove(issue);
|
||||
@@ -730,6 +726,7 @@ namespace UVtools.WPF
|
||||
{
|
||||
if (whiteListLayers.Count == 0) return;
|
||||
var islandConfig = GetIslandDetectionConfiguration();
|
||||
var overhangConfig = new OverhangDetectionConfiguration { Enabled = false };
|
||||
var resinTrapConfig = new ResinTrapDetectionConfiguration { Enabled = false };
|
||||
var touchingBoundConfig = new TouchingBoundDetectionConfiguration { Enabled = false };
|
||||
islandConfig.Enabled = true;
|
||||
@@ -756,7 +753,7 @@ namespace UVtools.WPF
|
||||
ShowProgressWindow();
|
||||
try
|
||||
{
|
||||
var issues = SlicerFile.LayerManager.GetAllIssues(islandConfig, resinTrapConfig,
|
||||
var issues = SlicerFile.LayerManager.GetAllIssues(islandConfig, overhangConfig, resinTrapConfig,
|
||||
touchingBoundConfig, false,
|
||||
ProgressWindow.RestartProgress());
|
||||
|
||||
@@ -2382,7 +2379,7 @@ namespace UVtools.WPF
|
||||
public async Task<Operation> ShowRunOperation(Type type)
|
||||
{
|
||||
var operation = await ShowOperation(type);
|
||||
RunOperation(operation);
|
||||
await RunOperation(operation);
|
||||
return operation;
|
||||
}
|
||||
|
||||
|
||||
@@ -12,12 +12,15 @@
|
||||
<PackageLicenseFile>LICENSE</PackageLicenseFile>
|
||||
<RepositoryUrl>https://github.com/sn4k3/UVtools</RepositoryUrl>
|
||||
<RepositoryType>Git</RepositoryType>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<NoWarn>1701;1702;</NoWarn>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<NoWarn>1701;1702;</NoWarn>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Avalonia" Version="0.10.999-cibuild0010914-beta" />
|
||||
@@ -26,9 +29,9 @@
|
||||
<PackageReference Include="Avalonia.Desktop" Version="0.10.999-cibuild0010914-beta" />
|
||||
<PackageReference Include="Avalonia.ThemeManager" Version="0.10.0-preview3" />
|
||||
<PackageReference Include="Dock.Avalonia" Version="0.10.0-preview5" />
|
||||
<PackageReference Include="Emgu.CV.runtime.raspbian" Version="4.4.0.4061" />
|
||||
<PackageReference Include="Emgu.CV.runtime.ubuntu" Version="4.4.0.4061" />
|
||||
<PackageReference Include="Emgu.CV.runtime.windows" Version="4.4.0.4061" />
|
||||
<PackageReference Include="Emgu.CV.runtime.raspbian" Version="4.4.0.4077" />
|
||||
<PackageReference Include="Emgu.CV.runtime.ubuntu" Version="4.4.0.4077" />
|
||||
<PackageReference Include="Emgu.CV.runtime.windows" Version="4.4.0.4077" />
|
||||
<PackageReference Include="MessageBox.Avalonia" Version="0.10.1-night" />
|
||||
<PackageReference Include="ThemeEditor.Controls.ColorPicker" Version="0.10.0-preview3" />
|
||||
</ItemGroup>
|
||||
|
||||
@@ -344,7 +344,7 @@ namespace UVtools.WPF.Windows
|
||||
ToolControl.BaseOperation.ROI = App.MainWindow.ROI;
|
||||
}
|
||||
|
||||
if (!ToolControl.ValidateForm()) return;
|
||||
if (!await ToolControl.ValidateForm()) return;
|
||||
if (!string.IsNullOrEmpty(ToolControl.BaseOperation.ConfirmationText))
|
||||
{
|
||||
if (await this.MessageBoxQuestion($"Are you sure you want to {ToolControl.BaseOperation.ConfirmationText}") !=
|
||||
|
||||
Reference in New Issue
Block a user