diff --git a/UVtools.Core/Operations/OperationBlur.cs b/UVtools.Core/Operations/OperationBlur.cs index 994eb60..ad73309 100644 --- a/UVtools.Core/Operations/OperationBlur.cs +++ b/UVtools.Core/Operations/OperationBlur.cs @@ -17,15 +17,15 @@ namespace UVtools.Core.Operations public override string Title => "Blur"; public override string Description => - $"Blur and averaging images with various low pass filters\n" + - "Note: Printer must support AntiAliasing on firmware to able to use this function\n" + - "More information: https://docs.opencv.org/master/d4/d13/tutorial_py_filtering.html"; + $"Blur layer images by applying a low pass filter\n\n" + + "NOTE: Target printer must support AntiAliasing in order to use this function.\n\n" + + "See https://docs.opencv.org/master/d4/d13/tutorial_py_filtering.html"; public override string ConfirmationText => - $"blur model with {BlurOperation} from layers {LayerIndexStart} to {LayerIndexEnd}?"; + $"blur model with {BlurOperation} from layers {LayerIndexStart} through {LayerIndexEnd}?"; public override string ProgressTitle => - $"Bluring model with {BlurOperation} layers from {LayerIndexStart} to {LayerIndexEnd}"; + $"Bluring model with {BlurOperation} from layers {LayerIndexStart} through {LayerIndexEnd}"; public override string ProgressAction => "Blured layers"; @@ -46,7 +46,7 @@ namespace UVtools.Core.Operations { if (Kernel is null) { - sb.AppendLine("Kernel can't be empty."); + sb.AppendLine("Kernel can not be empty."); } } diff --git a/UVtools.Core/Operations/OperationChangeResolution.cs b/UVtools.Core/Operations/OperationChangeResolution.cs index 661433c..9c7e161 100644 --- a/UVtools.Core/Operations/OperationChangeResolution.cs +++ b/UVtools.Core/Operations/OperationChangeResolution.cs @@ -43,17 +43,17 @@ namespace UVtools.Core.Operations public override string Title => "Change print resolution"; public override string Description => - "Crops or resizes all layer images to fit an alternate print area\n" + - "Useful to make files printable on a different printer than they were originally sliced for without the need to re-slice.\n" + - "NOTE: Please ensure that the actual object will fit within the new print resolution. The operation will be aborted if it will result in any of the actual model being clipped."; + "Crops or resizes all layer images to fit an alternate print area\n\n" + + "Useful to make files printable on a different printer than they were originally sliced for without the need to re-slice.\n\n" + + "NOTE: Please ensure that the actual model will fit within the new print resolution. The operation will be aborted if it will result in any of the actual model being clipped."; public override string ConfirmationText => - "change file resolution?\n" + - $"From: {OldResolution.Width} x {OldResolution.Height}\n" + - $"To: {NewResolutionX} x {NewResolutionY}"; + "change print resolution " + + $"from {OldResolution.Width}x{OldResolution.Height} " + + $"to {NewResolutionX}x{NewResolutionY}?"; public override string ProgressTitle => - $"Changing print resolution from ({OldResolution.Width} x {OldResolution.Height}) to ({NewResolutionX} x {NewResolutionY})"; + $"Changing print resolution from ({OldResolution.Width}x{OldResolution.Height}) to ({NewResolutionX}x{NewResolutionY})"; public override string ProgressAction => "Changed layers"; @@ -67,7 +67,7 @@ namespace UVtools.Core.Operations if (NewResolutionX < VolumeBonds.Width || NewResolutionY < VolumeBonds.Height) { - sb.AppendLine($"The new resolution ({NewResolutionX} x {NewResolutionY}) is not enough to accommodate the object volume ({VolumeBonds.Width} x {VolumeBonds.Height}), continuing operation would cut the object"); + sb.AppendLine($"The new resolution ({NewResolutionX} x {NewResolutionY}) is not large enough to hold the model volume ({VolumeBonds.Width} x {VolumeBonds.Height}), continuing operation would clip the model"); sb.AppendLine("To fix this, try to rotate the object and/or resize to fit on this new resolution."); } diff --git a/UVtools.Core/Operations/OperationFlip.cs b/UVtools.Core/Operations/OperationFlip.cs index f22a494..fe24205 100644 --- a/UVtools.Core/Operations/OperationFlip.cs +++ b/UVtools.Core/Operations/OperationFlip.cs @@ -14,13 +14,17 @@ namespace UVtools.Core.Operations { public override string Title => "Flip"; public override string Description => - "Flips layer images vertically and/or horizontally."; + "Flip the layers of the model vertically and/or horizontally."; public override string ConfirmationText => - $"flip {FlipDirection} from layers {LayerIndexStart} to {LayerIndexEnd}"; + FlipDirection == Enumerations.FlipDirection.Both + ? $"flip {(MakeCopy == true? "and blend ":"")}layers {LayerIndexStart} through {LayerIndexEnd} Horizontally and Vertically?" + : $"flip {(MakeCopy == true ? "and blend " : "")}layers {LayerIndexStart} through {LayerIndexEnd} {FlipDirection}?"; public override string ProgressTitle => - $"Flipping {FlipDirection} from layers {LayerIndexStart} to {LayerIndexEnd}"; + FlipDirection == Enumerations.FlipDirection.Both + ? $"Flipping {(MakeCopy == true ? "and blending " : "")}layers {LayerIndexStart} through {LayerIndexEnd} Horizontally and Vertically" + : $"Flipping {(MakeCopy == true ? "and blending " : "")}layers {LayerIndexStart} through {LayerIndexEnd} {FlipDirection}"; public override string ProgressAction => "Flipped layers"; diff --git a/UVtools.Core/Operations/OperationLayerClone.cs b/UVtools.Core/Operations/OperationLayerClone.cs index 7077edd..122039f 100644 --- a/UVtools.Core/Operations/OperationLayerClone.cs +++ b/UVtools.Core/Operations/OperationLayerClone.cs @@ -18,13 +18,13 @@ namespace UVtools.Core.Operations public override string Title => "Clone layer(s)"; public override string Description => - "Clone layers.\n" + + "Clone layers.\n\n" + "Useful to increase the height of the model or add additional structure by duplicating layers. For example, can be used to increase the raft height for added stability."; public override string ConfirmationText => - $"clone layers from {LayerIndexStart} to {LayerIndexEnd} times {Clones} clones?"; + $"clone layers {LayerIndexStart} through {LayerIndexEnd}, {Clones} time{(Clones != 1 ? "s" : "")}?"; public override string ProgressTitle => - $"Cloning layers from {LayerIndexStart} to {LayerIndexEnd} times {Clones} clones"; + $"Cloning layers {LayerIndexStart} through {LayerIndexEnd}, {Clones} time{(Clones != 1 ? "s" : "")}"; public override string ProgressAction => "Cloned layers"; diff --git a/UVtools.Core/Operations/OperationLayerImport.cs b/UVtools.Core/Operations/OperationLayerImport.cs index 4449fa7..53ff326 100644 --- a/UVtools.Core/Operations/OperationLayerImport.cs +++ b/UVtools.Core/Operations/OperationLayerImport.cs @@ -21,16 +21,16 @@ namespace UVtools.Core.Operations public sealed class OperationLayerImport : Operation { #region Overrides - public override string Title => "Import Layer(s)"; + public override string Title => "Import Layers"; public override string Description => - "Import layer(s) from local file(s) into the model at a selected height.\n" + - "NOTE: Images must respect file resolution and in greyscale color."; + "Import layers from local files into the model at a selected layer height.\n\n" + + "NOTE: Imported images must be greyscale and have the same resolution as the model."; - public override string ConfirmationText => $"import {Count} layer(s)?"; + public override string ConfirmationText => $"import {Count} layer{(Count!=1?"s":"")}?"; public override string ProgressTitle => - $"Importing {Count} layer(s)"; + $"Importing {Count} layer{(Count!=1 ? "s" : "")}"; public override string ProgressAction => "Imported layers"; @@ -53,7 +53,7 @@ namespace UVtools.Core.Operations if (result.IsEmpty) return null; var message = new StringBuilder(); - message.AppendLine($"The following {result.Count} files mismatched the slice resolution of {FileResolution.Width} x {FileResolution.Height}:"); + message.AppendLine($"The following {result.Count} files mismatched the target resolution of {FileResolution.Width}x{FileResolution.Height}:"); message.AppendLine(); uint count = 0; foreach (var file in result) @@ -61,7 +61,7 @@ namespace UVtools.Core.Operations count++; if (count == 20) { - message.AppendLine("... To many to show ..."); + message.AppendLine("... Too many to show ..."); break; } message.AppendLine(Path.GetFileNameWithoutExtension(file)); diff --git a/UVtools.Core/Operations/OperationLayerReHeight.cs b/UVtools.Core/Operations/OperationLayerReHeight.cs index a07e242..0fbd951 100644 --- a/UVtools.Core/Operations/OperationLayerReHeight.cs +++ b/UVtools.Core/Operations/OperationLayerReHeight.cs @@ -18,19 +18,19 @@ namespace UVtools.Core.Operations { #region Overrides - public override string Title => "Layer re-height"; + public override string Title => "Adjust layer height"; public override string Description => - "Changes layer height.\n" + - "Going lower doesn't give you better XYZ accuracy but will reduce Z lines, layers will be cloned and repeated over Z for the effect.\n" + - "Going higher will reduce detail, layers will sum times the modifier for the effect.\n" + - "Note: Reslice with the new layer height is always preferable"; + "Adjust the layer height of the model\n\n" + + "Adjusting to values lower than current height will reduce layer lines, adjusting to values higher" + + " than current height will reduce model detail.\n\n" + + "Note: Using dedicated slicer software to re-slice will usually yeild better results."; public override string ConfirmationText => - $"re-height layers to {Item.LayerHeight}mm?"; + $"adjust layer height to {Item.LayerHeight}mm?"; public override string ProgressTitle => - $"Re-height layers to {Item.LayerHeight}mm"; + $"Adjusting layer height to {Item.LayerHeight}mm"; - public override string ProgressAction => "Re-height-ed layers"; + public override string ProgressAction => "Height adjusted layers"; public override StringTag Validate(params object[] parameters) { @@ -38,7 +38,7 @@ namespace UVtools.Core.Operations if (Item is null) { - sb.AppendLine("No valid configurations to proceed"); + sb.AppendLine("No valid configurations, unable to proceed."); } diff --git a/UVtools.Core/Operations/OperationLayerRemove.cs b/UVtools.Core/Operations/OperationLayerRemove.cs index 95da94d..d9dfbca 100644 --- a/UVtools.Core/Operations/OperationLayerRemove.cs +++ b/UVtools.Core/Operations/OperationLayerRemove.cs @@ -15,16 +15,16 @@ namespace UVtools.Core.Operations public override bool PassActualLayerIndex => true; - public override string Title => "Remove layer(s)"; + public override string Title => "Remove layers"; public override string Description => - "Remove Layer(s) in a given range."; + "Remove Layers in a given range."; public override string ConfirmationText => - $"remove layers from {LayerIndexStart} to {LayerIndexEnd}?"; + $"remove layers {LayerIndexStart} through {LayerIndexEnd}?"; public override string ProgressTitle => - $"Removing layers from {LayerIndexStart} to {LayerIndexEnd}"; + $"Removing layers {LayerIndexStart} through {LayerIndexEnd}"; public override string ProgressAction => "Removed layers"; diff --git a/UVtools.Core/Operations/OperationMask.cs b/UVtools.Core/Operations/OperationMask.cs index d921a1d..7083e7a 100644 --- a/UVtools.Core/Operations/OperationMask.cs +++ b/UVtools.Core/Operations/OperationMask.cs @@ -17,16 +17,16 @@ namespace UVtools.Core.Operations { public override string Title => "Mask"; public override string Description => - "Masks the LCD output image given a greyscale (0-255) pixel input image.\n" + - "Useful to correct light uniformity, but a proper mask must be created first based on real measurements per printer.\n" + - "NOTE 1: Masks should respect printer resolution or they will be resized to fit.\n" + - "NOTE 2: Run only this tool after all repairs and other transformations."; + "Mask the intensity of the LCD output using a greyscale input image.\n\n" + + "Useful to correct LCD light uniformity for a specific printer.\n\n" + + "NOTE: This operation should be run only after repairs and other transformations. The provided" + + "input mask image must match the ouput resolution of the target printer."; public override string ConfirmationText => - $"mask layers from {LayerIndexStart} to {LayerIndexEnd}"; + $"mask layers from {LayerIndexStart} through {LayerIndexEnd}"; public override string ProgressTitle => - $"Masking layers from {LayerIndexStart} to {LayerIndexEnd}"; + $"Masking layers from {LayerIndexStart} through {LayerIndexEnd}"; public override string ProgressAction => "Masked layers"; @@ -35,7 +35,7 @@ namespace UVtools.Core.Operations var sb = new StringBuilder(); if (Mask is null) { - sb.AppendLine("The mask can't be empty."); + sb.AppendLine("The mask can not be empty."); } return new StringTag(sb.ToString()); diff --git a/UVtools.Core/Operations/OperationMorph.cs b/UVtools.Core/Operations/OperationMorph.cs index 09c1b7e..2bf0365 100644 --- a/UVtools.Core/Operations/OperationMorph.cs +++ b/UVtools.Core/Operations/OperationMorph.cs @@ -17,13 +17,13 @@ namespace UVtools.Core.Operations public override string Title => "Morph"; public override string Description => - $"Morph Model\n" + - $"Various operations that can be used to change the physical structure of the model or individual layers in various ways."; + $"Morph Model - " + + $"Various operations that can be used to change the physical structure of the model or individual layers."; public override string ConfirmationText => - $"morph model from layers {LayerIndexStart} to {LayerIndexEnd}?"; + $"morph model layers {LayerIndexStart} through {LayerIndexEnd}?"; public override string ProgressTitle => - $"Morphing layers from {LayerIndexStart} to {LayerIndexEnd}"; + $"Morphing layers {LayerIndexStart} through {LayerIndexEnd}"; public override string ProgressAction => "Morphed layers"; diff --git a/UVtools.Core/Operations/OperationMove.cs b/UVtools.Core/Operations/OperationMove.cs index 58422b5..77401ea 100644 --- a/UVtools.Core/Operations/OperationMove.cs +++ b/UVtools.Core/Operations/OperationMove.cs @@ -16,16 +16,15 @@ namespace UVtools.Core.Operations { public override string Title => "Move"; public override string Description => - "Moves the entire model around the build plate.\n" + - "Note: Margins are in pixel values."; + "Change the position of the model on the build plate."; public override string ConfirmationText => - $"move model from layers {LayerIndexStart} to {LayerIndexEnd}?\n" + - $"From: X:{SrcRoi.X} Y:{SrcRoi.Y}\n" + - $"To: X:{DstRoi.X} Y:{DstRoi.Y}"; + $"move model layers {LayerIndexStart} through {LayerIndexEnd} from " + + $"location {{X={SrcRoi.X},Y={SrcRoi.Y}}} to " + + $"location {{X={DstRoi.X},Y={DstRoi.Y}}}?"; public override string ProgressTitle => - $"Moving model to X:{DstRoi.X} Y:{DstRoi.Y}"; + $"Moving model to {{X={DstRoi.X},Y={DstRoi.Y}}}"; public override string ProgressAction => "Moved layers"; @@ -35,7 +34,7 @@ namespace UVtools.Core.Operations if (!ValidateBounds()) { - sb.AppendLine("Your parameters will put the object out of build plate, please adjust the margins."); + sb.AppendLine("Your parameters will put the model outside of build plate. Please adjust the location and margins."); } return new StringTag(sb.ToString()); diff --git a/UVtools.Core/Operations/OperationPattern.cs b/UVtools.Core/Operations/OperationPattern.cs index ffb7081..f6e55f2 100644 --- a/UVtools.Core/Operations/OperationPattern.cs +++ b/UVtools.Core/Operations/OperationPattern.cs @@ -15,14 +15,14 @@ namespace UVtools.Core.Operations { #region Overrides - public override string Title => "Pattern"; + public override string Title => "Duplicate"; public override string Description => - "Rectangular pattern the print around the plate."; + "Duplicates the model in a rectangular pattern around the build plate."; public override string ConfirmationText => - $"pattern the object with {Cols} x {Rows} copies?"; + $"duplicate the object across {Cols} columns and {Rows} rows?"; public override string ProgressTitle => - $"Pattern the object with {Cols} x {Rows} copies"; + $"Duplicating the object across {Cols} columns and {Rows} rowss"; public override string ProgressAction => "Patterned layers"; @@ -32,12 +32,12 @@ namespace UVtools.Core.Operations if (Cols <= 1 && Rows <= 1) { - sb.AppendLine("Either columns or rows must be greater than 1 to be able to run this tool."); + sb.AppendLine("Either columns or rows must be greater than 1."); } if (!ValidateBounds()) { - sb.AppendLine("Your parameters will put the object out of build plate, please adjust the margins."); + sb.AppendLine("Your parameters will put the object outside of the build plate, please adjust the margins."); } return new StringTag(sb.ToString()); diff --git a/UVtools.Core/Operations/OperationPixelDimming.cs b/UVtools.Core/Operations/OperationPixelDimming.cs index c3c0090..e9cad5b 100644 --- a/UVtools.Core/Operations/OperationPixelDimming.cs +++ b/UVtools.Core/Operations/OperationPixelDimming.cs @@ -17,17 +17,18 @@ namespace UVtools.Core.Operations #region Overrides public override string Title => "Pixel dimming"; public override string Description => - "Dims pixels in a chosen pattern over white pixels neighborhood. The selected pattern will be repeated over the image width and height as a mask. Benefits are:\n" + - "1) Reduce layer expansion in big masses\n" + - "2) Reduce cross layer exposure\n" + - "3) Extend pixels life\n" + - "NOTE: Run only this tool after all repairs and other transformations."; + "Dim white pixels in a chosen pattern applied over the print area.\n\n" + + "The selected pattern will tiled over the image. Benefits are:\n" + + "1) Reduced layer expansion for large layer objects\n" + + "2) Reduced cross layer exposure\n" + + "3) Extended pixel life of the LCD\n\n" + + "NOTE: Run this tool only after repairs and all other transformations."; public override string ConfirmationText => - $"dim pixels from layers {LayerIndexStart} to {LayerIndexEnd}"; + $"dim pixels from layers {LayerIndexStart} through {LayerIndexEnd}"; public override string ProgressTitle => - $"Dimming from layers {LayerIndexStart} to {LayerIndexEnd}"; + $"Dimming from layers {LayerIndexStart} through {LayerIndexEnd}"; public override string ProgressAction => "Dimmed layers"; @@ -36,7 +37,7 @@ namespace UVtools.Core.Operations var sb = new StringBuilder(); if (BorderSize == 0 && BordersOnly) { - sb.AppendLine("Border size must be positive in order to use \"Dims only the borders\" function."); + sb.AppendLine("Border size must be positive in order to use \"Dim only borders\" function."); } if (EvenPattern is null && OddPattern is null) diff --git a/UVtools.Core/Operations/OperationProgress.cs b/UVtools.Core/Operations/OperationProgress.cs index a39d122..76630d8 100644 --- a/UVtools.Core/Operations/OperationProgress.cs +++ b/UVtools.Core/Operations/OperationProgress.cs @@ -12,10 +12,10 @@ namespace UVtools.Core.Operations { public sealed class OperationProgress { - public const string StatusDecodeThumbnails = "Decoding Thumbnails"; - public const string StatusGatherLayers = "Gathering Layers"; - public const string StatusDecodeLayers = "Decoding Layers"; - public const string StatusEncodeLayers = "Encoding Layers"; + public const string StatusDecodeThumbnails = "Decoded Thumbnails"; + public const string StatusGatherLayers = "Gathered Layers"; + public const string StatusDecodeLayers = "Decoded Layers"; + public const string StatusEncodeLayers = "Encoded Layers"; public const string StatusWritingFile = "Writing File"; public const string StatusEncodeGcode = "Encoding GCode"; @@ -24,9 +24,9 @@ namespace UVtools.Core.Operations public const string StatusExtracting = "Extracting"; - public const string StatusIslands = "Islands"; - public const string StatusResinTraps = "Resin traps"; - public const string StatusRepairLayers = "Repair Layers"; + public const string StatusIslands = "Layers processed (Islands)"; + public const string StatusResinTraps = "Layers processed (Resin traps)"; + public const string StatusRepairLayers = "Repaired Layers"; public object Mutex = new object(); @@ -113,8 +113,8 @@ namespace UVtools.Core.Operations public override string ToString() { return ItemCount == 0 ? - $"{ProcessedItems} / ? {ItemName}" : - $"{RemainingItems} / {ItemCount} / {ProcessedItems} | {ItemName} | {ProgressPercent:0.00}%"; + $"{ProcessedItems}/? {ItemName}" : + $"{ProcessedItems}/{ItemCount} {ItemName} - {ProgressPercent:0.00}%"; } } } diff --git a/UVtools.Core/Operations/OperationRepairLayers.cs b/UVtools.Core/Operations/OperationRepairLayers.cs index 92049c2..0b90180 100644 --- a/UVtools.Core/Operations/OperationRepairLayers.cs +++ b/UVtools.Core/Operations/OperationRepairLayers.cs @@ -20,7 +20,7 @@ namespace UVtools.Core.Operations public override string ConfirmationText => "attempt this repair?"; public override string ProgressTitle => - $"Reparing layers from layers {LayerIndexStart} to {LayerIndexEnd}"; + $"Reparing layers {LayerIndexStart} through {LayerIndexEnd}"; public override string ProgressAction => "Repaired layers"; diff --git a/UVtools.Core/Operations/OperationResize.cs b/UVtools.Core/Operations/OperationResize.cs index 38e3c63..9055290 100644 --- a/UVtools.Core/Operations/OperationResize.cs +++ b/UVtools.Core/Operations/OperationResize.cs @@ -14,13 +14,15 @@ namespace UVtools.Core.Operations { public override string Title => "Resize"; public override string Description => - "Resizes layer images in a X and/or Y factor, starting from 100% value.\n" + - "NOTE 1: Build volume bounds are not validated after operation, please ensure scaling stays inside your limits.\n" + - "NOTE 2: X and Y are applied to original image, not to the rotated preview (If enabled)."; + "Resize the model by a percentage in the X/Y plane.\n\n" + + "NOTE: This operation is applied based on the original orientation of the layers in the model file. " + + "If the image is rotated 90° in the Layer Preview, you will need to compensate by inverting " + + "the X and Y values. The print bounds will also not be validated as part of this operation, so please " + + "ensure that the scaling factor does not result in the model being clipped."; public override string ConfirmationText => - $"resize model from layers {LayerIndexStart} to {LayerIndexEnd}?\n" + - $"X:{X}% Y:{Y}%"; + $"resize model layers {LayerIndexStart} through {LayerIndexEnd} by " + + $"X={X}% and Y={Y}%"; public override string ProgressTitle => $"Resizing from layers {LayerIndexStart} to {LayerIndexEnd} at X:{X}% Y:{Y}% "; @@ -33,7 +35,7 @@ namespace UVtools.Core.Operations if (X == 100m && Y == 100m) { - sb.AppendLine("X and Y can't be 100% together."); + sb.AppendLine("X and Y can't both be 100%."); } return new StringTag(sb.ToString()); diff --git a/UVtools.Core/Operations/OperationRotate.cs b/UVtools.Core/Operations/OperationRotate.cs index c79004e..e8f5b60 100644 --- a/UVtools.Core/Operations/OperationRotate.cs +++ b/UVtools.Core/Operations/OperationRotate.cs @@ -6,21 +6,21 @@ * of this license document, but changing it is not allowed. */ +using System; + namespace UVtools.Core.Operations { public class OperationRotate : Operation { public override string Title => "Rotate"; public override string Description => - "Rotate layer images in a certain angle degrees.\n" + - "Positive angle are clockwise (CW)\n" + - "Negative angle are counter-clockwise (CCW)"; + "Rotate the layers of the model.\n"; public override string ConfirmationText => - $"rotate layers {LayerIndexStart} to {LayerIndexEnd} at {AngleDegrees} degrees"; + $"rotate layers {LayerIndexStart} through {LayerIndexEnd} {(AngleDegrees < 0?"counter-clockwise":"clockwise")} by {Math.Abs(AngleDegrees)}°?"; public override string ProgressTitle => - $"Rotating layers {LayerIndexStart} to {LayerIndexEnd} at {AngleDegrees} degrees"; + $"Rotating layers {LayerIndexStart} through {LayerIndexEnd} {(AngleDegrees < 0 ? "counter-clockwise" : "clockwise")} by {Math.Abs(AngleDegrees)}°"; public override string ProgressAction => "Rotated layers"; diff --git a/UVtools.Core/Operations/OperationSolidify.cs b/UVtools.Core/Operations/OperationSolidify.cs index 67c4d7a..fc6aa96 100644 --- a/UVtools.Core/Operations/OperationSolidify.cs +++ b/UVtools.Core/Operations/OperationSolidify.cs @@ -15,14 +15,14 @@ namespace UVtools.Core.Operations public override string Title => "Solidify"; public override string Description => - "Solidifies the selected layers, closes all inner holes.\n" + - "NOTE: All open areas of the layer that are completely surrounded by pixels will be filled. Please ensure none of the holes in the layer are required before proceeding."; + "Solidifies the selected layers, closing all interior holes.\n\n" + + "NOTE: All open areas of the layer that are completely surrounded by pixels will be filled. Please ensure that none of the holes in the layer are required before proceeding."; public override string ConfirmationText => - $"solidify layers from {LayerIndexStart} to {LayerIndexEnd}?"; + $"solidify layers {LayerIndexStart} through {LayerIndexEnd}?"; public override string ProgressTitle => - $"Solidifying layers from {LayerIndexStart} to {LayerIndexEnd}"; + $"Solidifying layers {LayerIndexStart} through {LayerIndexEnd}"; public override string ProgressAction => "Solidified layers"; diff --git a/UVtools.Core/Operations/OperationThreshold.cs b/UVtools.Core/Operations/OperationThreshold.cs index 806b78b..befdb46 100644 --- a/UVtools.Core/Operations/OperationThreshold.cs +++ b/UVtools.Core/Operations/OperationThreshold.cs @@ -14,15 +14,16 @@ namespace UVtools.Core.Operations { public override string Title => "Threshold pixels"; public override string Description => - "Manipulates pixels values giving a threshold, maximum and a operation type.\n" + - "If a pixel brightness is less or equal to the threshold value, set this pixel to 0, otherwise set to defined maximum value.\n" + - "More info: https://docs.opencv.org/master/d7/d4d/tutorial_py_thresholding.html"; + "Manipulate pixel values based on a threshold.\n\n" + + "Pixles brighter than the theshold will be set to the Max value, " + + "all other pixels will be set to 0.\n\n" + + "See https://docs.opencv.org/master/d7/d4d/tutorial_py_thresholding.html"; public override string ConfirmationText => - $"threshold pixels ({Threshold}/{Maximum}) from layers {LayerIndexStart} to {LayerIndexEnd}"; + $"apply threshold {Threshold} with max {Maximum} from layers {LayerIndexStart} through {LayerIndexEnd}"; public override string ProgressTitle => - $"Thresholding pixels ({Threshold}/{Maximum}) from layers {LayerIndexStart} to {LayerIndexEnd}"; + $"Applying threshold {Threshold} with max {Maximum} from layers {LayerIndexStart} through {LayerIndexEnd}"; public override string ProgressAction => "Thresholded layers"; diff --git a/UVtools.GUI/Controls/CtrlKernel.Designer.cs b/UVtools.GUI/Controls/CtrlKernel.Designer.cs index eb7e35b..0875f1b 100644 --- a/UVtools.GUI/Controls/CtrlKernel.Designer.cs +++ b/UVtools.GUI/Controls/CtrlKernel.Designer.cs @@ -28,6 +28,8 @@ /// private void InitializeComponent() { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CtrlKernel)); this.tbKernel = new System.Windows.Forms.TextBox(); this.cbShape = new System.Windows.Forms.ComboBox(); this.label1 = new System.Windows.Forms.Label(); @@ -38,11 +40,11 @@ this.btnGen = new System.Windows.Forms.Button(); this.btnReset = new System.Windows.Forms.Button(); this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.label4 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); this.nmAnchorY = new System.Windows.Forms.NumericUpDown(); this.nmAnchorX = new System.Windows.Forms.NumericUpDown(); - this.label5 = new System.Windows.Forms.Label(); - this.label6 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.toolTip = new System.Windows.Forms.ToolTip(this.components); ((System.ComponentModel.ISupportInitialize)(this.nmSizeX)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nmSizeY)).BeginInit(); this.groupBox1.SuspendLayout(); @@ -50,6 +52,14 @@ ((System.ComponentModel.ISupportInitialize)(this.nmAnchorX)).BeginInit(); this.SuspendLayout(); // + // toolTip + // + this.toolTip.AutoPopDelay = 32767; + this.toolTip.InitialDelay = 500; + this.toolTip.ReshowDelay = 100; + this.toolTip.ToolTipIcon = System.Windows.Forms.ToolTipIcon.Info; + this.toolTip.ToolTipTitle = "Information"; + // // tbKernel // this.tbKernel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) @@ -60,6 +70,7 @@ this.tbKernel.ScrollBars = System.Windows.Forms.ScrollBars.Both; this.tbKernel.Size = new System.Drawing.Size(210, 178); this.tbKernel.TabIndex = 1; + this.toolTip.SetToolTip(this.tbKernel, resources.GetString("tbKernel.ToolTip")); this.tbKernel.WordWrap = false; // // cbShape @@ -172,7 +183,6 @@ // // groupBox1 // - this.groupBox1.Controls.Add(this.label6); this.groupBox1.Controls.Add(this.label5); this.groupBox1.Controls.Add(this.nmAnchorY); this.groupBox1.Controls.Add(this.nmAnchorX); @@ -194,15 +204,15 @@ this.groupBox1.TabStop = false; this.groupBox1.Text = "Kernel"; // - // label4 + // label5 // - 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(223, 93); - this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(79, 20); - this.label4.TabIndex = 9; - this.label4.Text = "Anchor X:"; + 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(363, 93); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(24, 20); + this.label5.TabIndex = 12; + this.label5.Text = "Y:"; // // nmAnchorY // @@ -221,6 +231,7 @@ this.nmAnchorY.Name = "nmAnchorY"; this.nmAnchorY.Size = new System.Drawing.Size(50, 26); this.nmAnchorY.TabIndex = 11; + this.toolTip.SetToolTip(this.nmAnchorY, "Y coordinate of the kernel origin, -1 for auto-center"); this.nmAnchorY.Value = new decimal(new int[] { 1, 0, @@ -244,31 +255,22 @@ this.nmAnchorX.Name = "nmAnchorX"; this.nmAnchorX.Size = new System.Drawing.Size(50, 26); this.nmAnchorX.TabIndex = 10; + this.toolTip.SetToolTip(this.nmAnchorX, "X coordinate of the kenel origin, -1 for auto-center."); this.nmAnchorX.Value = new decimal(new int[] { 1, 0, 0, -2147483648}); // - // label5 + // label4 // - 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(363, 93); - this.label5.Name = "label5"; - this.label5.Size = new System.Drawing.Size(24, 20); - this.label5.TabIndex = 12; - this.label5.Text = "Y:"; - // - // label6 - // - 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(222, 123); - this.label6.Name = "label6"; - this.label6.Size = new System.Drawing.Size(218, 20); - this.label6.TabIndex = 13; - this.label6.Text = "Note: Anchor auto center = -1"; + 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(223, 93); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(79, 20); + this.label4.TabIndex = 9; + this.label4.Text = "Anchor X:"; // // CtrlKernel // @@ -301,7 +303,7 @@ private System.Windows.Forms.NumericUpDown nmAnchorY; private System.Windows.Forms.NumericUpDown nmAnchorX; private System.Windows.Forms.Label label4; - private System.Windows.Forms.Label label6; public System.Windows.Forms.TextBox tbKernel; + private System.Windows.Forms.ToolTip toolTip; } } diff --git a/UVtools.GUI/Controls/CtrlKernel.resx b/UVtools.GUI/Controls/CtrlKernel.resx index 1af7de1..a7605eb 100644 --- a/UVtools.GUI/Controls/CtrlKernel.resx +++ b/UVtools.GUI/Controls/CtrlKernel.resx @@ -117,4 +117,11 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 17, 17 + + + The kernel or structuring element used to probe the input image. +A structuring element is a matrix that identifies the pixel in the image being processed and defines the neighborhood used in the processing of each pixel. + \ No newline at end of file diff --git a/UVtools.GUI/Controls/Tools/CtrlToolFlip.Designer.cs b/UVtools.GUI/Controls/Tools/CtrlToolFlip.Designer.cs index ebae2f0..f2c8891 100644 --- a/UVtools.GUI/Controls/Tools/CtrlToolFlip.Designer.cs +++ b/UVtools.GUI/Controls/Tools/CtrlToolFlip.Designer.cs @@ -48,9 +48,11 @@ this.cbMakeCopy.AutoSize = true; this.cbMakeCopy.Location = new System.Drawing.Point(240, 8); this.cbMakeCopy.Name = "cbMakeCopy"; - this.cbMakeCopy.Size = new System.Drawing.Size(104, 24); + this.cbMakeCopy.Size = new System.Drawing.Size(120, 24); this.cbMakeCopy.TabIndex = 22; - this.cbMakeCopy.Text = "Make copy"; + this.cbMakeCopy.Text = "Blend Layers"; + this.toolTip.SetToolTip(this.cbMakeCopy, "If checked, rather than simply flipping the layer, a copy of each layer will be " + + "flipped and blended with the layer."); this.cbMakeCopy.UseVisualStyleBackColor = true; // // cbFlipDirection @@ -73,7 +75,7 @@ this.Description = ""; this.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.Name = "CtrlToolFlip"; - this.Size = new System.Drawing.Size(540, 45); + this.Size = new System.Drawing.Size(720, 45); this.ResumeLayout(false); this.PerformLayout(); diff --git a/UVtools.GUI/Controls/Tools/CtrlToolMorph.Designer.cs b/UVtools.GUI/Controls/Tools/CtrlToolMorph.Designer.cs index 3342b61..433e561 100644 --- a/UVtools.GUI/Controls/Tools/CtrlToolMorph.Designer.cs +++ b/UVtools.GUI/Controls/Tools/CtrlToolMorph.Designer.cs @@ -59,6 +59,8 @@ this.cbIterationsFade.Size = new System.Drawing.Size(108, 24); this.cbIterationsFade.TabIndex = 21; this.cbIterationsFade.Text = "Fade in/out"; + this.toolTip.SetToolTip(this.cbIterationsFade, "Allow the number of iterations to be gradually varied as the operation progresses" + + " from the starting layer to the ending layer."); this.cbIterationsFade.UseVisualStyleBackColor = true; this.cbIterationsFade.CheckedChanged += new System.EventHandler(this.EventCheckedChanged); // diff --git a/UVtools.GUI/Controls/Tools/CtrlToolMove.Designer.cs b/UVtools.GUI/Controls/Tools/CtrlToolMove.Designer.cs index a85a894..78ddd05 100644 --- a/UVtools.GUI/Controls/Tools/CtrlToolMove.Designer.cs +++ b/UVtools.GUI/Controls/Tools/CtrlToolMove.Designer.cs @@ -79,15 +79,15 @@ this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill; this.groupBox1.Location = new System.Drawing.Point(0, 0); this.groupBox1.Name = "groupBox1"; - this.groupBox1.Size = new System.Drawing.Size(571, 210); + this.groupBox1.Size = new System.Drawing.Size(720, 210); this.groupBox1.TabIndex = 24; this.groupBox1.TabStop = false; - this.groupBox1.Text = "Margins and Anchor"; + this.groupBox1.Text = "Location && Margins"; // // lbInsideBounds // this.lbInsideBounds.AutoSize = true; - this.lbInsideBounds.Location = new System.Drawing.Point(7, 168); + this.lbInsideBounds.Location = new System.Drawing.Point(7, 172); this.lbInsideBounds.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lbInsideBounds.Name = "lbInsideBounds"; this.lbInsideBounds.Size = new System.Drawing.Size(147, 20); @@ -97,42 +97,42 @@ // lbPlacementY // this.lbPlacementY.AutoSize = true; - this.lbPlacementY.Location = new System.Drawing.Point(7, 138); + this.lbPlacementY.Location = new System.Drawing.Point(7, 60); this.lbPlacementY.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lbPlacementY.Name = "lbPlacementY"; - this.lbPlacementY.Size = new System.Drawing.Size(103, 20); + this.lbPlacementY.Size = new System.Drawing.Size(24, 20); this.lbPlacementY.TabIndex = 26; - this.lbPlacementY.Text = "Placement Y:"; + this.lbPlacementY.Text = "Y:"; // // lbPlacementX // this.lbPlacementX.AutoSize = true; - this.lbPlacementX.Location = new System.Drawing.Point(7, 107); + this.lbPlacementX.Location = new System.Drawing.Point(7, 31); this.lbPlacementX.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lbPlacementX.Name = "lbPlacementX"; - this.lbPlacementX.Size = new System.Drawing.Size(103, 20); + this.lbPlacementX.Size = new System.Drawing.Size(24, 20); this.lbPlacementX.TabIndex = 25; - this.lbPlacementX.Text = "Placement X:"; + this.lbPlacementX.Text = "X:"; // // lbVolumeHeight // this.lbVolumeHeight.AutoSize = true; - this.lbVolumeHeight.Location = new System.Drawing.Point(7, 56); + this.lbVolumeHeight.Location = new System.Drawing.Point(7, 134); this.lbVolumeHeight.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lbVolumeHeight.Name = "lbVolumeHeight"; - this.lbVolumeHeight.Size = new System.Drawing.Size(118, 20); + this.lbVolumeHeight.Size = new System.Drawing.Size(60, 20); this.lbVolumeHeight.TabIndex = 24; - this.lbVolumeHeight.Text = "Volume Height:"; + this.lbVolumeHeight.Text = "Height:"; // // lbVolumeWidth // this.lbVolumeWidth.AutoSize = true; - this.lbVolumeWidth.Location = new System.Drawing.Point(7, 27); + this.lbVolumeWidth.Location = new System.Drawing.Point(7, 103); this.lbVolumeWidth.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lbVolumeWidth.Name = "lbVolumeWidth"; - this.lbVolumeWidth.Size = new System.Drawing.Size(112, 20); + this.lbVolumeWidth.Size = new System.Drawing.Size(54, 20); this.lbVolumeWidth.TabIndex = 23; - this.lbVolumeWidth.Text = "Volume Width:"; + this.lbVolumeWidth.Text = "Width:"; // // label5 // @@ -288,7 +288,9 @@ this.nmMarginTop.Size = new System.Drawing.Size(85, 26); this.nmMarginTop.TabIndex = 15; this.nmMarginTop.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.toolTip.SetToolTip(this.nmMarginTop, "Top margin in pixels"); this.nmMarginTop.ValueChanged += new System.EventHandler(this.EventValueChanged); + this.nmMarginTop.KeyUp += new System.Windows.Forms.KeyEventHandler(this.EventValueChanged); // // nmMarginBottom // @@ -307,7 +309,9 @@ this.nmMarginBottom.Size = new System.Drawing.Size(85, 26); this.nmMarginBottom.TabIndex = 17; this.nmMarginBottom.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.toolTip.SetToolTip(this.nmMarginBottom, "Bottom margin in pixels"); this.nmMarginBottom.ValueChanged += new System.EventHandler(this.EventValueChanged); + this.nmMarginBottom.KeyUp += new System.Windows.Forms.KeyEventHandler(this.EventValueChanged); // // label3 // @@ -356,7 +360,9 @@ this.nmMarginRight.Size = new System.Drawing.Size(85, 26); this.nmMarginRight.TabIndex = 19; this.nmMarginRight.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + this.toolTip.SetToolTip(this.nmMarginRight, "Right margin in pixels"); this.nmMarginRight.ValueChanged += new System.EventHandler(this.EventValueChanged); + this.nmMarginRight.KeyUp += new System.Windows.Forms.KeyEventHandler(this.EventValueChanged); // // nmMarginLeft // @@ -374,8 +380,10 @@ this.nmMarginLeft.Name = "nmMarginLeft"; this.nmMarginLeft.Size = new System.Drawing.Size(85, 26); this.nmMarginLeft.TabIndex = 20; + this.toolTip.SetToolTip(this.nmMarginLeft, "Left Margin in pixels"); this.nmMarginLeft.UpDownAlign = System.Windows.Forms.LeftRightAlignment.Left; this.nmMarginLeft.ValueChanged += new System.EventHandler(this.EventValueChanged); + this.nmMarginLeft.KeyUp += new System.Windows.Forms.KeyEventHandler(this.EventValueChanged); // // CtrlToolMove // @@ -387,7 +395,7 @@ this.ExtraButtonVisible = true; this.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.Name = "CtrlToolMove"; - this.Size = new System.Drawing.Size(571, 210); + this.Size = new System.Drawing.Size(720, 210); this.groupBox1.ResumeLayout(false); this.groupBox1.PerformLayout(); this.tableAnchor.ResumeLayout(false); diff --git a/UVtools.GUI/Controls/Tools/CtrlToolMove.cs b/UVtools.GUI/Controls/Tools/CtrlToolMove.cs index 94a7335..2ddda86 100644 --- a/UVtools.GUI/Controls/Tools/CtrlToolMove.cs +++ b/UVtools.GUI/Controls/Tools/CtrlToolMove.cs @@ -25,8 +25,8 @@ namespace UVtools.GUI.Controls.Tools (uint)Program.FrmMain.ActualLayerImage.Height); SetOperation(Operation); - lbVolumeWidth.Text = $"Volume Width: {Operation.SrcRoi.Width} / {Operation.ImageWidth}"; - lbVolumeHeight.Text = $"Volume Height: {Operation.SrcRoi.Height} / {Operation.ImageHeight}"; + lbVolumeWidth.Text = $"Width: {Operation.SrcRoi.Width} / {Operation.ImageWidth}"; + lbVolumeHeight.Text = $"Height: {Operation.SrcRoi.Height} / {Operation.ImageHeight}"; ExtraActionCall(this); } @@ -48,9 +48,9 @@ namespace UVtools.GUI.Controls.Tools { UpdateOperation(); var insideBounds = ButtonOkEnabled = Operation.ValidateBounds(); - lbInsideBounds.Text = "Inside Bounds: " + (insideBounds ? "Yes" : "No"); - lbPlacementX.Text = $"Placement X: {Operation.DstRoi.X} / {Operation.ImageWidth - Operation.SrcRoi.Width}"; - lbPlacementY.Text = $"Placement Y: {Operation.DstRoi.Y} / {Operation.ImageHeight - Operation.SrcRoi.Height}"; + lbInsideBounds.Text = "Model within boundary: " + (insideBounds ? "Yes" : "No"); + lbPlacementX.Text = $"X: {Operation.DstRoi.X} / {Operation.ImageWidth - Operation.SrcRoi.Width}"; + lbPlacementY.Text = $"Y: {Operation.DstRoi.Y} / {Operation.ImageHeight - Operation.SrcRoi.Height}"; } public override bool UpdateOperation() diff --git a/UVtools.GUI/Controls/Tools/CtrlToolPattern.Designer.cs b/UVtools.GUI/Controls/Tools/CtrlToolPattern.Designer.cs index 5de171a..ac20b66 100644 --- a/UVtools.GUI/Controls/Tools/CtrlToolPattern.Designer.cs +++ b/UVtools.GUI/Controls/Tools/CtrlToolPattern.Designer.cs @@ -316,9 +316,9 @@ this.lbInsideBounds.Location = new System.Drawing.Point(7, 139); this.lbInsideBounds.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lbInsideBounds.Name = "lbInsideBounds"; - this.lbInsideBounds.Size = new System.Drawing.Size(147, 20); + this.lbInsideBounds.Size = new System.Drawing.Size(202, 20); this.lbInsideBounds.TabIndex = 46; - this.lbInsideBounds.Text = "Inside Bounds: Yes"; + this.lbInsideBounds.Text = "Model within boundary: Yes"; // // lbRows // @@ -346,9 +346,9 @@ this.lbVolumeHeight.Location = new System.Drawing.Point(4, 110); this.lbVolumeHeight.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lbVolumeHeight.Name = "lbVolumeHeight"; - this.lbVolumeHeight.Size = new System.Drawing.Size(174, 20); + this.lbVolumeHeight.Size = new System.Drawing.Size(60, 20); this.lbVolumeHeight.TabIndex = 43; - this.lbVolumeHeight.Text = "Volume/Pattern Height:"; + this.lbVolumeHeight.Text = "Height:"; // // lbVolumeWidth // @@ -356,9 +356,9 @@ this.lbVolumeWidth.Location = new System.Drawing.Point(4, 81); this.lbVolumeWidth.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lbVolumeWidth.Name = "lbVolumeWidth"; - this.lbVolumeWidth.Size = new System.Drawing.Size(168, 20); + this.lbVolumeWidth.Size = new System.Drawing.Size(54, 20); this.lbVolumeWidth.TabIndex = 42; - this.lbVolumeWidth.Text = "Volume/Pattern Width:"; + this.lbVolumeWidth.Text = "Width:"; // // label4 // diff --git a/UVtools.GUI/Controls/Tools/CtrlToolPattern.cs b/UVtools.GUI/Controls/Tools/CtrlToolPattern.cs index 43e56ad..240f6ef 100644 --- a/UVtools.GUI/Controls/Tools/CtrlToolPattern.cs +++ b/UVtools.GUI/Controls/Tools/CtrlToolPattern.cs @@ -89,10 +89,10 @@ namespace UVtools.GUI.Controls.Tools var insideBounds = Operation.ValidateBounds(); ButtonOkEnabled = insideBounds && (Operation.Cols > 1 || Operation.Rows > 1); - lbInsideBounds.Text = "Inside Bounds: " + (insideBounds ? "Yes" : "No"); + lbInsideBounds.Text = "Model within boundary: " + (insideBounds ? "Yes" : "No"); - lbVolumeWidth.Text = $"Volume/Pattern Width: {Operation.SrcRoi.Width} / {Operation.GetPatternVolume.Width} / {Operation.ImageWidth}"; - lbVolumeHeight.Text = $"Volume/Pattern Height: {Operation.SrcRoi.Height} / {Operation.GetPatternVolume.Height} / {Operation.ImageHeight}"; + lbVolumeWidth.Text = $"Width: {Operation.GetPatternVolume.Width} (Min:{Operation.SrcRoi.Width}, Max:{Operation.ImageWidth})"; + lbVolumeHeight.Text = $"Height: {Operation.GetPatternVolume.Height} (Min:{Operation.SrcRoi.Height}, Max:{Operation.ImageHeight})"; lbCols.Text = $"Columns: {nmCols.Value} / {Operation.MaxCols}"; lbRows.Text = $"Rows: {nmRows.Value} / {Operation.MaxRows}"; diff --git a/UVtools.GUI/Controls/Tools/CtrlToolPixelDimming.Designer.cs b/UVtools.GUI/Controls/Tools/CtrlToolPixelDimming.Designer.cs index 4ce5bbd..0a175b7 100644 --- a/UVtools.GUI/Controls/Tools/CtrlToolPixelDimming.Designer.cs +++ b/UVtools.GUI/Controls/Tools/CtrlToolPixelDimming.Designer.cs @@ -42,7 +42,6 @@ this.nmInfillThickness = new System.Windows.Forms.NumericUpDown(); this.label9 = new System.Windows.Forms.Label(); this.label10 = new System.Windows.Forms.Label(); - this.label6 = new System.Windows.Forms.Label(); this.label5 = new System.Windows.Forms.Label(); this.tbOddPattern = new System.Windows.Forms.TextBox(); this.groupBox1 = new System.Windows.Forms.GroupBox(); @@ -79,9 +78,9 @@ this.cbDimsOnlyBorders.AutoSize = true; this.cbDimsOnlyBorders.Location = new System.Drawing.Point(301, 9); this.cbDimsOnlyBorders.Name = "cbDimsOnlyBorders"; - this.cbDimsOnlyBorders.Size = new System.Drawing.Size(181, 24); + this.cbDimsOnlyBorders.Size = new System.Drawing.Size(146, 24); this.cbDimsOnlyBorders.TabIndex = 42; - this.cbDimsOnlyBorders.Text = "Dims only the borders"; + this.cbDimsOnlyBorders.Text = "Dim only borders"; this.cbDimsOnlyBorders.UseVisualStyleBackColor = true; // // groupBox2 @@ -97,23 +96,21 @@ this.groupBox2.Controls.Add(this.nmInfillThickness); this.groupBox2.Controls.Add(this.label9); this.groupBox2.Controls.Add(this.label10); - this.groupBox2.Location = new System.Drawing.Point(-1, 506); + this.groupBox2.Location = new System.Drawing.Point(-1, 476); this.groupBox2.Name = "groupBox2"; - this.groupBox2.Size = new System.Drawing.Size(575, 160); + this.groupBox2.Size = new System.Drawing.Size(575, 149); this.groupBox2.TabIndex = 41; this.groupBox2.TabStop = false; this.groupBox2.Text = "Infill generator"; // // label13 // - this.label13.Location = new System.Drawing.Point(7, 22); + this.label13.Location = new System.Drawing.Point(7, 30); this.label13.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.label13.Name = "label13"; - this.label13.Size = new System.Drawing.Size(561, 46); + this.label13.Size = new System.Drawing.Size(561, 30); this.label13.TabIndex = 34; - this.label13.Text = "The infill function can create a ton of resin traps, use only this tool if you kn" + - "ow what are you doing or for specific parts. You always need to ensure the drain" + - "s."; + this.label13.Text = "Warning: This function can genearte a large number of resin traps."; // // label11 // @@ -241,17 +238,6 @@ this.label10.TabIndex = 21; this.label10.Text = "Thickness:"; // - // label6 - // - this.label6.AutoSize = true; - this.label6.Location = new System.Drawing.Point(6, 299); - this.label6.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label6.Name = "label6"; - this.label6.Size = new System.Drawing.Size(548, 20); - this.label6.TabIndex = 40; - this.label6.Text = "(Leave this field empty to use only the even layer pattern for the layers range)"; - this.toolTip.SetToolTip(this.label6, resources.GetString("label6.ToolTip")); - // // label5 // this.label5.AutoSize = true; @@ -271,6 +257,7 @@ this.tbOddPattern.Size = new System.Drawing.Size(469, 124); this.tbOddPattern.TabIndex = 38; this.tbOddPattern.Text = "255 255 127 255\r\n127 255 255 255"; + this.toolTip.SetToolTip(this.tbOddPattern, "Leave this field empty in order to use only the even layer pattern."); this.tbOddPattern.WordWrap = false; // // groupBox1 @@ -290,7 +277,7 @@ this.groupBox1.Controls.Add(this.nmPixelDimBrightness); this.groupBox1.Controls.Add(this.label3); this.groupBox1.Controls.Add(this.label4); - this.groupBox1.Location = new System.Drawing.Point(-1, 338); + this.groupBox1.Location = new System.Drawing.Point(-1, 308); this.groupBox1.Name = "groupBox1"; this.groupBox1.Size = new System.Drawing.Size(575, 162); this.groupBox1.TabIndex = 37; @@ -524,7 +511,6 @@ this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; this.Controls.Add(this.cbDimsOnlyBorders); this.Controls.Add(this.groupBox2); - this.Controls.Add(this.label6); this.Controls.Add(this.label5); this.Controls.Add(this.tbOddPattern); this.Controls.Add(this.groupBox1); @@ -536,7 +522,7 @@ this.Description = ""; this.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.Name = "CtrlToolPixelDimming"; - this.Size = new System.Drawing.Size(577, 669); + this.Size = new System.Drawing.Size(577, 628); this.groupBox2.ResumeLayout(false); this.groupBox2.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.nmInfillSpacing)).EndInit(); @@ -565,7 +551,6 @@ private System.Windows.Forms.NumericUpDown nmInfillThickness; private System.Windows.Forms.Label label9; private System.Windows.Forms.Label label10; - private System.Windows.Forms.Label label6; private System.Windows.Forms.Label label5; private System.Windows.Forms.TextBox tbOddPattern; private System.Windows.Forms.GroupBox groupBox1; diff --git a/UVtools.GUI/Controls/Tools/CtrlToolPixelDimming.resx b/UVtools.GUI/Controls/Tools/CtrlToolPixelDimming.resx index 0ba2a96..b4eb075 100644 --- a/UVtools.GUI/Controls/Tools/CtrlToolPixelDimming.resx +++ b/UVtools.GUI/Controls/Tools/CtrlToolPixelDimming.resx @@ -120,11 +120,6 @@ 17, 17 - - Selects the layers range within start layer and end layer where mutator will operate. -Select same layer start as end to operate only within that layer. -Note: "Layer Start" start can't be higher than "Layer End". - Selects the number of iterations/passes to perform on each layer using this mutator. Enable the "Fade in/out" to fade the iteration over layers, you can use a start iteration higher than end to perform a inverse fade. @@ -135,4 +130,7 @@ WARNING: Using high iteration values can destroy your model depending on the mut Enable the "Fade in/out" to fade the iteration over layers, you can use a start iteration higher than end to perform a inverse fade. WARNING: Using high iteration values can destroy your model depending on the mutator being used, please use low values or with caution! + + 25 + \ No newline at end of file diff --git a/UVtools.GUI/Controls/Tools/CtrlToolResize.Designer.cs b/UVtools.GUI/Controls/Tools/CtrlToolResize.Designer.cs index 72d2b48..d9fcc7c 100644 --- a/UVtools.GUI/Controls/Tools/CtrlToolResize.Designer.cs +++ b/UVtools.GUI/Controls/Tools/CtrlToolResize.Designer.cs @@ -46,9 +46,11 @@ this.cbFade.AutoSize = true; this.cbFade.Location = new System.Drawing.Point(8, 41); this.cbFade.Name = "cbFade"; - this.cbFade.Size = new System.Drawing.Size(170, 24); + this.cbFade.Size = new System.Drawing.Size(283, 24); this.cbFade.TabIndex = 26; - this.cbFade.Text = "Fade towards 100%"; + this.cbFade.Text = "Increase or decrease towards 100%"; + this.toolTip.SetToolTip(this.cbFade, "If checked, resize will gradually adjust the scale factor from the percentage specified" + + " to 100% as the operation progresses from the starting layer to the ending layer."); this.cbFade.UseVisualStyleBackColor = true; // // label2 @@ -80,9 +82,9 @@ this.cbConstrainXY.CheckState = System.Windows.Forms.CheckState.Checked; this.cbConstrainXY.Location = new System.Drawing.Point(388, 8); this.cbConstrainXY.Name = "cbConstrainXY"; - this.cbConstrainXY.Size = new System.Drawing.Size(126, 24); + this.cbConstrainXY.Size = new System.Drawing.Size(181, 24); this.cbConstrainXY.TabIndex = 23; - this.cbConstrainXY.Text = "Constrain X/Y"; + this.cbConstrainXY.Text = "Constrain Proportions"; this.cbConstrainXY.CheckedChanged += new System.EventHandler(this.EventValueChanged); // // nmY @@ -174,7 +176,7 @@ this.Description = ""; this.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.Name = "CtrlToolResize"; - this.Size = new System.Drawing.Size(540, 77); + this.Size = new System.Drawing.Size(720, 77); ((System.ComponentModel.ISupportInitialize)(this.nmY)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nmX)).EndInit(); this.ResumeLayout(false); diff --git a/UVtools.GUI/Controls/Tools/CtrlToolRotate.Designer.cs b/UVtools.GUI/Controls/Tools/CtrlToolRotate.Designer.cs index e446c3c..135276c 100644 --- a/UVtools.GUI/Controls/Tools/CtrlToolRotate.Designer.cs +++ b/UVtools.GUI/Controls/Tools/CtrlToolRotate.Designer.cs @@ -52,6 +52,8 @@ this.nmDegrees.Name = "nmDegrees"; this.nmDegrees.Size = new System.Drawing.Size(101, 26); this.nmDegrees.TabIndex = 23; + this.toolTip.SetToolTip(this.nmDegrees, "Number of degrees to rotate the layers, where postive values are clockwise and" + + " negative values are counter-clockwise."); this.nmDegrees.Value = new decimal(new int[] { 90, 0, diff --git a/UVtools.GUI/Controls/Tools/CtrlToolThreshold.Designer.cs b/UVtools.GUI/Controls/Tools/CtrlToolThreshold.Designer.cs index 2f77ca6..df09005 100644 --- a/UVtools.GUI/Controls/Tools/CtrlToolThreshold.Designer.cs +++ b/UVtools.GUI/Controls/Tools/CtrlToolThreshold.Designer.cs @@ -28,68 +28,20 @@ /// private void InitializeComponent() { - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.btnPresetSetPixelsBrightness = new System.Windows.Forms.Button(); - this.btnPresetFreeUse = new System.Windows.Forms.Button(); - this.btnPresetStripAntiAliasing = new System.Windows.Forms.Button(); this.nmMaximum = new System.Windows.Forms.NumericUpDown(); this.label2 = new System.Windows.Forms.Label(); this.nmThreshold = new System.Windows.Forms.NumericUpDown(); this.label1 = new System.Windows.Forms.Label(); this.cbThresholdType = new System.Windows.Forms.ComboBox(); - this.groupBox1.SuspendLayout(); + this.cbPresetHelpers = new System.Windows.Forms.ComboBox(); + this.label3 = new System.Windows.Forms.Label(); ((System.ComponentModel.ISupportInitialize)(this.nmMaximum)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nmThreshold)).BeginInit(); this.SuspendLayout(); // - // groupBox1 - // - this.groupBox1.Controls.Add(this.btnPresetSetPixelsBrightness); - this.groupBox1.Controls.Add(this.btnPresetFreeUse); - this.groupBox1.Controls.Add(this.btnPresetStripAntiAliasing); - this.groupBox1.Location = new System.Drawing.Point(8, 47); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.Size = new System.Drawing.Size(567, 77); - this.groupBox1.TabIndex = 24; - this.groupBox1.TabStop = false; - this.groupBox1.Text = "Presets / Helpers"; - // - // btnPresetSetPixelsBrightness - // - this.btnPresetSetPixelsBrightness.BackColor = System.Drawing.SystemColors.Control; - this.btnPresetSetPixelsBrightness.Location = new System.Drawing.Point(338, 25); - this.btnPresetSetPixelsBrightness.Name = "btnPresetSetPixelsBrightness"; - this.btnPresetSetPixelsBrightness.Size = new System.Drawing.Size(223, 36); - this.btnPresetSetPixelsBrightness.TabIndex = 2; - this.btnPresetSetPixelsBrightness.Text = "Set pixels brightness"; - this.btnPresetSetPixelsBrightness.UseVisualStyleBackColor = false; - this.btnPresetSetPixelsBrightness.Click += new System.EventHandler(this.EventClick); - // - // btnPresetFreeUse - // - this.btnPresetFreeUse.BackColor = System.Drawing.SystemColors.Control; - this.btnPresetFreeUse.Location = new System.Drawing.Point(6, 25); - this.btnPresetFreeUse.Name = "btnPresetFreeUse"; - this.btnPresetFreeUse.Size = new System.Drawing.Size(160, 36); - this.btnPresetFreeUse.TabIndex = 1; - this.btnPresetFreeUse.Text = "Free use"; - this.btnPresetFreeUse.UseVisualStyleBackColor = false; - this.btnPresetFreeUse.Click += new System.EventHandler(this.EventClick); - // - // btnPresetStripAntiAliasing - // - this.btnPresetStripAntiAliasing.BackColor = System.Drawing.SystemColors.Control; - this.btnPresetStripAntiAliasing.Location = new System.Drawing.Point(172, 25); - this.btnPresetStripAntiAliasing.Name = "btnPresetStripAntiAliasing"; - this.btnPresetStripAntiAliasing.Size = new System.Drawing.Size(160, 36); - this.btnPresetStripAntiAliasing.TabIndex = 0; - this.btnPresetStripAntiAliasing.Text = "Strip AntiAliasing"; - this.btnPresetStripAntiAliasing.UseVisualStyleBackColor = false; - this.btnPresetStripAntiAliasing.Click += new System.EventHandler(this.EventClick); - // // nmMaximum // - this.nmMaximum.Location = new System.Drawing.Point(305, 7); + this.nmMaximum.Location = new System.Drawing.Point(305, 51); this.nmMaximum.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.nmMaximum.Maximum = new decimal(new int[] { 255, @@ -108,7 +60,7 @@ // label2 // this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(251, 10); + this.label2.Location = new System.Drawing.Point(251, 54); this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(46, 20); @@ -117,7 +69,7 @@ // // nmThreshold // - this.nmThreshold.Location = new System.Drawing.Point(109, 7); + this.nmThreshold.Location = new System.Drawing.Point(109, 51); this.nmThreshold.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.nmThreshold.Maximum = new decimal(new int[] { 255, @@ -136,7 +88,7 @@ // label1 // this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(4, 10); + this.label1.Location = new System.Drawing.Point(4, 54); this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(83, 20); @@ -147,18 +99,40 @@ // this.cbThresholdType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cbThresholdType.FormattingEnabled = true; - this.cbThresholdType.Location = new System.Drawing.Point(437, 6); + this.cbThresholdType.Location = new System.Drawing.Point(437, 50); this.cbThresholdType.Name = "cbThresholdType"; this.cbThresholdType.Size = new System.Drawing.Size(138, 28); this.cbThresholdType.TabIndex = 19; // + // cbPresetHelpers + // + this.cbPresetHelpers.FormattingEnabled = true; + this.cbPresetHelpers.Items.AddRange(new object[] { + "Free use", + "Strip AntiAliasing", + "Set pixel brightness"}); + this.cbPresetHelpers.Location = new System.Drawing.Point(128, 10); + this.cbPresetHelpers.Name = "cbPresetHelpers"; + this.cbPresetHelpers.Size = new System.Drawing.Size(212, 28); + this.cbPresetHelpers.TabIndex = 25; + this.cbPresetHelpers.SelectedIndexChanged += new System.EventHandler(this.cbPresetHelpers_SelectedIndexChanged); + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(4, 13); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(118, 20); + this.label3.TabIndex = 26; + this.label3.Text = "Preset Helpers:"; + // // CtrlToolThreshold // this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoSize = true; - this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.Controls.Add(this.groupBox1); + this.Controls.Add(this.label3); + this.Controls.Add(this.cbPresetHelpers); this.Controls.Add(this.nmMaximum); this.Controls.Add(this.label2); this.Controls.Add(this.nmThreshold); @@ -167,8 +141,7 @@ this.Description = ""; this.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.Name = "CtrlToolThreshold"; - this.Size = new System.Drawing.Size(578, 127); - this.groupBox1.ResumeLayout(false); + this.Size = new System.Drawing.Size(578, 82); ((System.ComponentModel.ISupportInitialize)(this.nmMaximum)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nmThreshold)).EndInit(); this.ResumeLayout(false); @@ -177,15 +150,12 @@ } #endregion - - private System.Windows.Forms.GroupBox groupBox1; - private System.Windows.Forms.Button btnPresetSetPixelsBrightness; - private System.Windows.Forms.Button btnPresetFreeUse; - private System.Windows.Forms.Button btnPresetStripAntiAliasing; private System.Windows.Forms.NumericUpDown nmMaximum; private System.Windows.Forms.Label label2; private System.Windows.Forms.NumericUpDown nmThreshold; private System.Windows.Forms.Label label1; private System.Windows.Forms.ComboBox cbThresholdType; + private System.Windows.Forms.ComboBox cbPresetHelpers; + private System.Windows.Forms.Label label3; } } diff --git a/UVtools.GUI/Controls/Tools/CtrlToolThreshold.cs b/UVtools.GUI/Controls/Tools/CtrlToolThreshold.cs index 6d95f22..121be40 100644 --- a/UVtools.GUI/Controls/Tools/CtrlToolThreshold.cs +++ b/UVtools.GUI/Controls/Tools/CtrlToolThreshold.cs @@ -33,6 +33,8 @@ namespace UVtools.GUI.Controls.Tools cbThresholdType.EndUpdate(); cbThresholdType.SelectedItem = ThresholdType.Binary; + + cbPresetHelpers.SelectedItem = "Free use"; } public override bool UpdateOperation() @@ -44,9 +46,9 @@ namespace UVtools.GUI.Controls.Tools return true; } - private void EventClick(object sender, EventArgs e) + private void cbPresetHelpers_SelectedIndexChanged(object sender, EventArgs e) { - if (ReferenceEquals(sender, btnPresetFreeUse)) + if (cbPresetHelpers.SelectedItem.ToString() == "Free use") { nmThreshold.Enabled = nmMaximum.Enabled = @@ -54,9 +56,12 @@ namespace UVtools.GUI.Controls.Tools return; } - if (ReferenceEquals(sender, btnPresetStripAntiAliasing)) + if (cbPresetHelpers.SelectedItem.ToString() == "Strip AntiAliasing") { - EventClick(btnPresetFreeUse, e); + nmThreshold.Enabled = + nmMaximum.Enabled = + cbThresholdType.Enabled = true; + nmMaximum.Enabled = cbThresholdType.Enabled = false; nmThreshold.Value = 127; @@ -66,9 +71,12 @@ namespace UVtools.GUI.Controls.Tools return; } - if (ReferenceEquals(sender, btnPresetSetPixelsBrightness)) + if (cbPresetHelpers.SelectedItem.ToString() == "Set pixel brightness") { - EventClick(btnPresetFreeUse, e); + nmThreshold.Enabled = + nmMaximum.Enabled = + cbThresholdType.Enabled = true; + nmThreshold.Enabled = cbThresholdType.Enabled = false; nmThreshold.Value = 254;