Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/sn4k3/UVtools.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTiago Conceição <Tiago_caza@hotmail.com>2022-09-15 19:01:00 +0300
committerTiago Conceição <Tiago_caza@hotmail.com>2022-09-15 19:01:00 +0300
commit6ff9fee77c9ecbd808fa8e615c1e55437cb26ac1 (patch)
tree3cb87273b8c2fd1ea92907df2b8cf1ee9eedbb65
parentee146f81dd7cd44562fab8cc1959eee504bc7cf9 (diff)
v3.6.4v3.6.4
- **Windows MSI installer:** - (Add) UVtools folder to start menu with: - UVtools - UVtoolsCmd - Uninstall UVtools - (Add) Prompt for add open in UVtools when right-click on supported files - (Add) Prompt for create desktop shortcut - (Add) Prompt for launch UVtools after the installation - (Improvement) Cleanup and simplify the install project - (Add) PrusaSlicer printer: Peopoly Phenom Forge - (Upgrade) .NET from 6.0.8 to 6.0.9 - (Fix) Corruption in file after attempt to save to a locked file (#551)
-rw-r--r--CHANGELOG.md288
-rw-r--r--PrusaSlicer/printer/Peopoly Phenom Forge.ini41
-rw-r--r--RELEASE_NOTES.md23
-rw-r--r--UVtools.Core/Extensions/EmguExtensions.cs25
-rw-r--r--UVtools.Core/Extensions/FileStreamExtensions.cs1
-rw-r--r--UVtools.Core/Extensions/TypeExtensions.cs3
-rw-r--r--UVtools.Core/Extensions/ZipArchiveExtensions.cs3
-rw-r--r--UVtools.Core/FileFormats/FileFormat.cs19
-rw-r--r--UVtools.Core/FileFormats/OSFFile.cs26
-rw-r--r--UVtools.Core/Managers/MaterialManager.cs2
-rw-r--r--UVtools.Core/Objects/BindableBase.cs28
-rw-r--r--UVtools.Core/Objects/RangeObservableCollection.cs4
-rw-r--r--UVtools.Core/Operations/Operation.cs16
-rw-r--r--UVtools.Core/Printer/Machine.cs1
-rw-r--r--UVtools.Core/UVtools.Core.csproj13
-rw-r--r--UVtools.Installer/Code/HeatGeneratedFileList.wxs14
-rw-r--r--UVtools.WPF/App.axaml.cs4
-rw-r--r--UVtools.WPF/MainWindow.Information.cs12
-rw-r--r--UVtools.WPF/UVtools.WPF.csproj8
-rw-r--r--build/createRelease.ps1123
-rw-r--r--documentation/UVtools.Core.xml6815
21 files changed, 7158 insertions, 311 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 05b020a..95198a0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,20 @@
# Changelog
+## 15/09/2022 - v3.6.4
+
+- **Windows MSI installer:**
+ - (Add) UVtools folder to start menu with:
+ - UVtools
+ - UVtoolsCmd
+ - Uninstall UVtools
+ - (Add) Prompt for add open in UVtools when right-click on supported files
+ - (Add) Prompt for create desktop shortcut
+ - (Add) Prompt for launch UVtools after the installation
+ - (Improvement) Cleanup and simplify the install project
+- (Add) PrusaSlicer printer: Peopoly Phenom Forge
+- (Upgrade) .NET from 6.0.8 to 6.0.9
+- (Fix) Corruption in file after attempt to save to a locked file (#551)
+
## 30/08/2022 - v3.6.3
- **File formats:**
@@ -16,7 +31,7 @@
## 21/08/2022 - v3.6.2
-- (Add) Debug sub menu to test some behaviours (Only when compiled in debug mode, not visible on public release)
+- (Add) Debug sub menu to test some behaviors (Only when compiled in debug mode, not visible on public release)
- (Add) Utility method `LayerExists` to the file formats to know if specific layer index exists in the collection
- (Improvement) Add loaded file information to the crash dialog message
- (Fix) Message dialog height do not expand with text (#537)
@@ -190,7 +205,7 @@
- (Add) File formats: Property `IsUsingTSMC` - Indicates whatever file globals are using TSMC or not
- (Change) Lithophane: Noise removal and gap closing iterations defaults to 0
- (Fix) Anycubic files: Printers are unable to use TSMC values after save (#457)
-- (Fix) Pixel Editor button is hidden when using screens with scalling > 100% [dirty-fix] (#458)
+- (Fix) Pixel Editor button is hidden when using screens with scaling > 100% [dirty-fix] (#458)
- (Upgrade) .NET from 6.0.3 to 6.0.4
## 11/04/2022 - v3.3.1
@@ -243,7 +258,7 @@
- (Fix) Remove anti-aliased edges from Tabs
- (Improvement) Core: Minor clean-up
- (Fix) Issue repair error when 'Auto repair layers and issues on file load' is enabled (#446)
-- (Fix) UI: Selecting a object with ROI when flip is verically, will cause 1px up-shift on the preview
+- (Fix) UI: Selecting a object with ROI when flip is vertically, will cause 1px up-shift on the preview
- (Fix) macOS permission error due loss of attributes on the build script, WSL have bug with mv, using ln&rm instead
## 02/04/2022 - v3.2.1
@@ -256,7 +271,7 @@
- (Add) Concentric infill type
- (Add) Gyroid infill type (#443)
- (Change) Increase the default spacing from 200px to 300px
- - (Improvement) Fastter infill processing by use the model bounds
+ - (Improvement) Faster infill processing by use the model bounds
- (Add) `FormatSpeedUnit` property to file formats to get the speed unit which the file use internally
- (Fix) UI: ROI rectangle can overlap scroll bars while selecting
@@ -280,7 +295,7 @@
- (Improvement) When saving files the .tmp extension is no longer shown on `FileFullPath`, which now `TemporaryOutputFileFullPath` is who holds the file.tmp
- (Fix) After load files they was flagged as requiring a full encode, preventing fast save a fresh file
- **UVtoolsCmd:**
- - Bring back the commandline project
+ - Bring back the command line project
- Consult README to see the available commands and syntax
- Old terminal commands on UVtools still works for now, but consider switch to UVtoolsCmd or redirect the command using `UVtools --cmd "commands"`
- **Tools:**
@@ -353,7 +368,7 @@
- **(Add) Suggestions:**
- A new module that detect bad or parameters out of a defined range and suggest a change on the file, those can be auto applied if configured to do so
- - **Avaliable suggestions:**
+ - **Available suggestions:**
- **Bottom layer count:** Bottom layers should be kept to a minimum, usually from 2 to 3, it function is to provide a good adhesion to the first layer on the build plate, using a high count have disadvantages.
- **Wait time before cure:** Rest some time before cure the layer is crucial to let the resin settle after the lift sequence and allow some time for the arm settle at the correct Z position as the resin will offer some resistance and push the structure.
This lead to better quality with more successful prints, less lamination problems, better first layers with more success of stick to the build plate and less elephant foot effect.
@@ -392,19 +407,19 @@
- **Tools:**
- (Add) Layer re-height: Offset mode, change layers position by a defined offset (#423)
- (Improvement) Rotate: Unable to use an angle of 0
- - (Improvement) Remove layers: Will not recalcualte and reset properties of layers anymore, allowing removing layers on dynamic layer height models and others
- - (Improvement) Clone layers: Will not recalcualte and reset properties of layers anymore, allowing cloning layers on dynamic layer height models and others
+ - (Improvement) Remove layers: Will not recalculate and reset properties of layers anymore, allowing removing layers on dynamic layer height models and others
+ - (Improvement) Clone layers: Will not recalculate and reset properties of layers anymore, allowing cloning layers on dynamic layer height models and others
- (Fix) Exposure time finder: Very small printers may not print the stock object as it is configured, lead to a unknown error while generating the test. It will now show a better error message and advice a solution (#426)
- **Terminal:**
- (Add) More default namespaces
- - (Improvement) Set a MinHeight for the rows to prevent spliter from eat the elements
+ - (Improvement) Set a MinHeight for the rows to prevent splitter from eat the elements
- (Change) Set working space to the MainWindow instead of TerminalWindow
- **(Upgrade) .NET from 5.0.14 to 6.0.3**
- This brings big performance improvements, better JIT, faster I/O operations and others
- Read more: https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-6
- Due this macOS requirement starts at 10.15 (Catalina)
- Read more: https://github.com/dotnet/core/blob/main/release-notes/6.0/supported-os.md
-- (Add) Native support for MacOS ARM64 architecture (Mac M1 and upcomming Mac's) (#187)
+- (Add) Native support for MacOS ARM64 architecture (Mac M1 and upcoming Mac's) (#187)
- (Exchange) Dependency Newtonsoft Json by System.Text.Json to parse the json documents
- (Remove) Dependency: MoreLinq
- (Remove) "Automations - Light-off delay" in favor of new suggestion "wait time before cure" module
@@ -433,7 +448,7 @@
- (Improvement) Optimize lift for virtual layer mode, allowing set a slow and fast lift / retract by using another virtual layer to emulate a lift
- (Improvement) Allow to define slow and fast speed for virtual layer mode even if TSMC isn't supported
- (Add) Fade exposure time: Setting 'Disable firmware transition layers' - Attempt to disable firmware strict transition layers in favor of this tool
- - (Add) Calibration tests: Attempt to auto disable the firmware transifiton layers
+ - (Add) Calibration tests: Attempt to auto disable the firmware transition layers
- (Change) Edit print parameters: Allow set `BottomLiftHeight` and `LiftHeight` to 0mm
- **UI:**
- (Improvement) Disallow drop files into UI when is processing data / disabled and prevent crashing from that action
@@ -477,7 +492,7 @@
- **Raise on print finish:**
- (Add) Reapply check and prevent run the tool in that case
- (Fix) It was incorrectly marked to be able to run in partial mode
- - (Fix) The dummy pixel was beeing set to a wrong location
+ - (Fix) The dummy pixel was being set to a wrong location
- **Layers:**:
- (Change) When set Wait times to a negative value, it will set the global wait time value accordingly
- (Change) Allow ExposureTime to be 0
@@ -488,9 +503,9 @@
- **UI:**
- (Add) When open a file with missing crucial information, prompt the user to fill in that information (Optional)
- (Add) Warn user about misfunction when open a file with invalid layer height of 0mm
- - (Improvement) Layer information: Only show the "Exposure time" when its availiable on the file format
+ - (Improvement) Layer information: Only show the "Exposure time" when its available on the file format
- (Improvement) When a file is about to get auto-converted once loaded and the output file already exists, prompt user for overwrite action
-- (Improvement) Set default culture info at top most of the program to avoid strange problems with commandline arguments
+- (Improvement) Set default culture info at top most of the program to avoid strange problems with command line arguments
- (Upgrade) .NET from 5.0.13 to 5.0.14
- (Downgrade) OpenCV from 4.5.5 to 4.5.4 due the crash while detecting islands (Linux and MacOS) (#411, #415, #416)
@@ -519,8 +534,8 @@
## 05/01/2022 - v2.27.5
- **Pixel Arithmetic:**
- - (Add) Corode: Noise pixel area, defaulting to 3px²
- - (Change) Corode: Cryptonumeric random to normal random to speed up calculation
+ - (Add) Corrode: Noise pixel area, defaulting to 3px²
+ - (Change) Corrode: Cryptonumeric random to normal random to speed up calculation
- (Change) Fuzzy skin preset: Set a ignore threshold area of 5000px2
- (Improvement) Masking performance and auto crop the layer to speed up the processing when using an "Apply to" other than "All"
- (Fix) Some "Apply to" methods was creating a wrong mask with some operators
@@ -554,7 +569,7 @@
- (Add) Property: IsLastLayer - Gets if is the last layer
- (Rename) Property: RelativeLayerHeight to RelativePositionZ
- **VDT:**
- - (Add) Keyword 'FILEFORMAT_xxx' to allow set the file format to auto convertion on machine notes
+ - (Add) Keyword 'FILEFORMAT_xxx' to allow set the file format to auto conversion on machine notes
- (Add) Keyword 'FILEVERSION_n' to allow set the file format version/revision on machine notes
## 22/12/2021 - v2.27.1
@@ -566,7 +581,7 @@
- (Fix) Encoding or converting a new file with version 516 was setting wrong length for the new tables
- (Fix) Setting bottom lift height or speed was not working and keep the same value
- (Add) FileFormats: Abstract `Version` property to set or get the version on file formats
-- (Add) CXDLP: Compability with new file v2 revsion (#376)
+- (Add) CXDLP: Compatibility with new file v2 revision (#376)
- (Upgrade) AvaloniaUI from 0.10.8 to 0.10.11
-
## 18/12/2021 - v2.27.0
@@ -627,7 +642,7 @@
- (Add) Processor name
- (Add) Memory RAM (Used / Total GB)
- (Add) OpenCV and Assemblies tab
- - (Add) "Copy information" button to copy the whole dialog information, usefull for bug reports
+ - (Add) "Copy information" button to copy the whole dialog information, useful for bug reports
- (Improvement) Enumerate the loaded assemblies
- (Improvement) Rearrange the elements and put them inside scroll viewers to not strech the window
- (Improvement) Allow to resize and maximize the window
@@ -712,7 +727,7 @@
## 12/10/2021 - v2.23.6
- **(Improvement) SL1:** (#314)
- - Complete the SL1 file format with some defaults for convertions
+ - Complete the SL1 file format with some defaults for conversions
- Change some data types from bool to byte as in recent prusaslicer changes
- (Upgrade) .NET from 5.0.10 to 5.0.11
- (Upgrade) AvaloniaUI from 0.10.7 to 0.10.8
@@ -731,7 +746,7 @@
- **Pixel arithmetic**
- (Add) Apply to - Model surface: Apply only to model surface/visible pixels
- (Add) Apply to - Model surface & inset: Apply only to model surface/visible pixels and within a inset from walls
- - (Add) Preset: Fuzy skin
+ - (Add) Preset: Fuzzy skin
- (Improvement) Speed up the Corrode method
- (Change) Heal anti-aliasing threshold from 169 to 119
- **Calibration - Grayscale:**
@@ -804,7 +819,7 @@
- (Fix) Outline - Hollow areas: Not outlining the second closing contour for contours with child
- (Fix) Pixel editor - Eraser: It was selecting the whole blob even if have inner parents
- (Fix) Setting window: When open it will change tabs quickly to fix the windows height/scroll problem
- - (Fix) Minor problems with autosizes on some input boxes
+ - (Fix) Minor problems with auto-sizes on some input boxes
- **Tools:**
- **Import layers:**
- (Add) 'MergeMax' to import type (#289)
@@ -823,7 +838,7 @@
- (Improvement) New and improved algorithm for resin trap detection
- **Settings:**
- (Add) Option: Loads the last recent file on startup if no file was specified
- - (Change) Resin trap hightlight default color
+ - (Change) Resin trap highlight default color
- (Fix) Unable to set resin trap threshold to 0 (disabled)
- (Improvement) Better random generation for benchmark
- (Improvement) Allow to cancel the new version download
@@ -836,11 +851,11 @@
- **(Add) Layer outline:**
- Blob outline: Outline all separate blobs
- - Centroids: Draw a dot at the gemoetric center of a blob
+ - Centroids: Draw a dot at the geometric center of a blob
- (Add) Adjust layer height: Allow to change exposure time on the dialog and inform that different layer thickness require different exposure times
- (Add) Resin trap detection: Allow to choose the starting layer index for resin trap detection which will also be considered a drain layer.
Use this setting to bypass complicated rafts by selected the model first real layer (#221)
-- (Improvement) Disable mirroed preview when loading a file that is not mirroed
+- (Improvement) Disable mirrored preview when loading a file that is not mirrored
## 03/09/2021 - v2.21.0
@@ -861,7 +876,7 @@
- **Dynamic Lifts:**
- (Improvement) Select normal layers by default
- (Improvement) Hide light-off delay fields when the file format don't support them
- - (Fix) Light-off delay fields was not hidding when set a mode that dont require the extra time fields
+ - (Fix) Light-off delay fields was not hiding when set a mode that don't require the extra time fields
- **Exposure time finder:**
- (Fix) Fix the 'light-off delay' field not being show on files that support wait time before cure
- (Change) Field name 'Light-off delay' to 'Wait time before cure'
@@ -907,7 +922,7 @@
- Prevent 'Wait time' properties from having negative values
- The `RetractSpeed` and `RetractSpeed2` property wasn't setting the bottom speed for bottom layers, instead the normal retract speed was always used
- Setting the `RetractHeight2` and `RetractSpeed2` property was not notifying the timer to update the print time
- - Propagate the whole global settings to layers now identfies the bottom layers per height instead of the layer index
+ - Propagate the whole global settings to layers now identifies the bottom layers per height instead of the layer index
- (Add) UVJ: Support TSMC for the file format
- (Fix) UVJ: Soft save was not updating the layer settings
- (Fix) CTB: TSMC not working properly due incorrect layer `LiftHeight` value calculation
@@ -916,7 +931,7 @@
- **UI:**
- (Add) Pixel position on lcd millimeters to the pixel picker information
- - (Add) Pixel size information when availiable below zoom on status bar
+ - (Add) Pixel size information when available below zoom on status bar
- (Add) Click on Zoom button will zoom to 100% and shift click will set to the user defined value
- **CTB:**
- (Add) Allow to change wait time for bottoms and normal layers separately
@@ -939,13 +954,6 @@
- AnyCubic Photon Mono SQ
- AnyCubic Photon Ultra
- (Add) Pixel arithmetic: Preset "Elephant foot compensation"
-<!--
-- **FileFormat PhotonWorkshop:**
- - (Add) Compability with version 515
- - (Add) Support for Photon Mono SQ (PMSQ)
- - (Add) Support for Photon Ultra (DLP)
-
-!-->
## 22/08/2021 - v2.19.5
@@ -954,7 +962,7 @@
- Force version 3 when on version 4 and converting to photon or cbddlp
- **(Improvement) Export to SVG image:**
- Group \<g\> all layer objects
- - Intersect all childs on same \<path\>
+ - Intersect all child's on same \<path\>
- **PrusaSlicer:**
- (Rename) Printer keywords notes:
- BottomWaitBeforeCure -> BottomWaitTimeBeforeCure
@@ -1010,7 +1018,7 @@
- **File formats:**
- Add and remove some image types that can be open
- - (Add) `CanProcess` method to know if a file can be read under a format and to allow diferent formats with same extension
+ - (Add) `CanProcess` method to know if a file can be read under a format and to allow different formats with same extension
- (Fix) `LiftHeightTotal` and `RetractHeight` was rounding to no decimals and returning wrong values
- (Improvement) Round all float setters on `Layer` class
- (Improvement) Decode/encode RAM usage and performance by processing in batch groups
@@ -1028,7 +1036,7 @@
- **CTBv4:**
- (Fix) More Unknown fields discovered and implemented
- (Fix) Reserved table is 384 bytes instead of 420
- - (Fix) When full encoding it was forcing to change to version 3. This also affected convertions. (#263)
+ - (Fix) When full encoding it was forcing to change to version 3. This also affected conversions. (#263)
- (Fix) `BottomRetractHeight2` was being set to `BottomRetractSpeed2`
- (Fix) `RetractHeight2` was being set to `RetracSpeed2`
- (Fix) The PrintParametersV4 table address
@@ -1065,13 +1073,13 @@
- (Add) Implement TSMC (Two Stage Motor Control) for the supported formats
- (Add) Implement 'Bottom retract speed' for the supported formats
- (Add) LGS: Support for lgs120 and lg4k (#218)
- - (Add) CTB: Special/virtual file extensions .v2.ctb, .v3.ctb, .v4.ctb to force a convertion to the set version (2 to 4). The .ctb is Version 3 by default when creating/converting files
+ - (Add) CTB: Special/virtual file extensions .v2.ctb, .v3.ctb, .v4.ctb to force a conversion to the set version (2 to 4). The .ctb is Version 3 by default when creating/converting files
- (Improvement) Better performance for file formats that decode images in sequential pixels groups
- **GCode:**
- (Improvement) Better parsing of the movements / lifts
- (Improvement) Better handling of lifts performed after cure the layer
- (Improvement) More fail-safe checks and sanitize of gcode while parsing
-- (Improvement) CTBv3: Enable per layer settings if disabled when fast save without reencode
+- (Improvement) CTBv3: Enable per layer settings if disabled when fast save without re-encode
- (Upgrade) .NET from 5.0.8 to 5.0.9
- (Fix) PrusaSlicer printer: Longer Orange 4k with correct resolution and display size
- (Fix) Odd error when changing properties too fast in multi-thread
@@ -1083,7 +1091,7 @@
- (Improvement) Mark program and all files as x64
- (Improvement) Add UVtools logo to side panel and top banner
- (Improvement) Add open-source logo to side panel
- - (Improvement) License text aligment and bold title
+ - (Improvement) License text alignment and bold title
- (Add) File format: OSLA / ODLP / OMSLA - Universal binary file format
- (Add) Calibration - Lift height: Generates test models with various strategies and increments to measure the optimal lift height or peel forces for layers given the printed area
- (Add) Layer Actions - Export layers to images (PNG, JPG/JPEG, JP2, TIF/TIFF, BMP, PBM, PGM, SR/RAS and SVG)
@@ -1111,7 +1119,7 @@
- **(Fix) macOS:**
- Version auto-upgrade (Will only work on future releases and if running v2.16.0 or greater)
- Demo file not loading
- - Auto disable windows scaling factor when on Monjave or greater on new instalations
+ - Auto disable windows scaling factor when on Monjave or greater on new installations
- (Add) Tool: Raise platform on print finish (#247)
- (Add) CXDLP: Support for Halot MAX CL-133
- (Improvement) Tools: Better handling/validation of tools that are unable to run with abstraction
@@ -1180,7 +1188,7 @@
- (Fix) macOS: Include libusb-1.0.0.dylib
- Note: `brew install libusb` still required
- **UI:**
- - (Add) Shorcuts: Arrow up and down to navigate layers while layer image is on focus
+ - (Add) Shortcuts: Arrow up and down to navigate layers while layer image is on focus
- (Fix) Refresh gcode does not update text on UI for ZIP, CWS, ZCODEX files
- (Fix) Operations: Import a .uvtop file by drag and drop into the UI would not load the layer range
- (Change) When convert a file, the result dialog will have Yes, No and Cancel actions, where No will open the converted file on current window, while Cancel will not perform any action (The old No behaviour)
@@ -1203,7 +1211,7 @@
- (Fix) Error with 'Pattern loaded model' fails when generating more models than build plate can afford (#239)
- **GCode:**
- (Fix) When the last layer have no lifts and a move to top command is set on end, that value were being set incorrectly as last layer position
- - (Fix) Layer parsing from mm/s to mm/m bad convertion
+ - (Fix) Layer parsing from mm/s to mm/m bad conversion
- (Add) File formats: Setter `SuppressRebuildGCode` to disable or enable the gcode auto rebuild when needed, set this to false to manually write your own gcode
- (Add) UVtools version to error logs
- (Fix) ZCode: Some test files come with layer height of 0mm on a property, in that case lookup layer height on the second property as fallback
@@ -1313,13 +1321,13 @@
- (Improvement) Add a check to layer `LightPWM` if 0 it will force to 255
- (Add) Allow to save the selected region (ROI) to a image file
- (Update) .NET 5.0.5 to 5.0.6
-- (Fix) Getting the transposed rectangle in fliped images are offseting the position by -1
+- (Fix) Getting the transposed rectangle in flipped images are offsetting the position by -1
- (Fix) Tools: Hide ROI Region text when empty/not selected
## 13/05/2021 - v2.11.2
-- (Improvement) Applied some refactorings on code
-- (Fix) MDLP, GR1 and CXDLP: Bad enconde of display width, display height and layer height properties
+- (Improvement) Applied some refactoring on code
+- (Fix) MDLP, GR1 and CXDLP: Bad encode of display width, display height and layer height properties
## 11/05/2021 - v2.11.1
@@ -1356,7 +1364,7 @@
- (Improvement) Calculator - LightOff delay: Hide the bottom properties or the tab if the file format don't support them (#193)
- (Change) 'Arithmetic' to 'Layer arithmetic'
- (Remove) 'Threshold pixels'
- - (Fix) Solidfy was unable to save profiles
+ - (Fix) Solidify was unable to save profiles
- (Fix) A redo operation (Ctrl + Shift + Z) wasn't restoring the settings when a default profile is set
- **Operations:**
- (Fix) Passing a roi mat to `ApplyMask` would cause unwanted results
@@ -1404,7 +1412,7 @@
- Fix a error when generating tests with multiple exposures
- Fix some typos
- **XYZ accuracy test:**
- - Change 'Wall thickess' default from 2.5mm to 3.0mm
+ - Change 'Wall thickness' default from 2.5mm to 3.0mm
- (Improvement) Allow compute print time without a lift sequence
## 30/04/2021 - v2.9.2
@@ -1413,16 +1421,16 @@
- (Remove) Unused assemblies
- **Issues:**
- Improve the performance when loading big lists of issues into the DataGrid
- - Auto refresh issues on the vertical highlight tracker once cath a modification on the Issues list
+ - Auto refresh issues on the vertical highlight tracker once catch a modification on the Issues list
- **Layer preview - Difference:**
- Layer difference will now only check the pixels inside the union of previous, current and next layer bounding rectangle, increasing the performance and speed
- Previous and next layer pixels if both exists was not showing with the configured color and using the next layer color instead
- Respect Anti-Aliasing pixels and fade colors accordingly
- - Unlock the possiblity of using the layer difference on first and last layer
+ - Unlock the possibility of using the layer difference on first and last layer
- Add a option to show similar pixels instead of the difference
- - Change previous default color from (255, 0, 255) to (81, 131, 82) for better depth preception
- - Change next default color from (0, 255, 255) to (81, 249, 252) for better depth preception
- - Change previous & next default color from (255, 0, 0) to (246, 240, 216) for better depth preception
+ - Change previous default color from (255, 0, 255) to (81, 131, 82) for better depth perception
+ - Change next default color from (0, 255, 255) to (81, 249, 252) for better depth perception
+ - Change previous & next default color from (255, 0, 0) to (246, 240, 216) for better depth perception
- **(Fix) Pixel editor:**
- Modification was append instead of prepend on the list
- Modification was not updating the index number on the list
@@ -1452,13 +1460,13 @@
* When decoding a file and have a empty resolution (Width: 0 or Height: 0) it will auto fix it by get and set the first layer image resolution to the file
* Fix when decoding a file it was already set to require a full encode, preventing fast saves on print parameters edits
* **GUI:**
- * When file resolution dismatch from layer resolution, it is now possible to auto fix it by set the layer resolution to the file
+ * When file resolution mismatch from layer resolution, it is now possible to auto fix it by set the layer resolution to the file
* When loading a file with auto scan for issues disabled it will force auto scan for issues types that are instant to check (print height and empty layers), if any exists it will auto select issues tab
* **(Add) PrusaSlicer printers:**
* Creality HALOT-SKY CL-89
* Creality HALOT-SKY CL-60
* (Improvement) Tool - Adjust layer height: Improve the performance when multiplying layers / go with higher layer height
-* (Fix) PrusaSlicer Printer - Wanhao D7: Change the auto convertion format from .zip to .xml.cws
+* (Fix) PrusaSlicer Printer - Wanhao D7: Change the auto conversion format from .zip to .xml.cws
## 08/04/2021 - v2.8.4
@@ -1509,10 +1517,10 @@
* For more information see the script sample: https://github.com/sn4k3/UVtools/tree/master/UVtools.ScriptSample
* To run scripts go to: Tools - Scripting
* **File formats:**
- * Add a check and warning when opening an file that have a diferent layer and file resolution
+ * Add a check and warning when opening an file that have a different layer and file resolution
* **Issues:**
* Add "Print height" as new type of issue detection, all layers that goes beyond maximum printer Z height will be flagged as PrintHeight issue
- * Print height issues will not be automatical fixed, however user can fix it by remove some layers to counter the problem, still is recommended to resize object on slicer
+ * Print height issues will not be automatically fixed, however user can fix it by remove some layers to counter the problem, still is recommended to resize object on slicer
* Fix unable to compute issues when only islands or overhangs are selected to be detected alone (#177)
* **Settings:**
* Add default directory for scripts on "General - File dialogs"
@@ -1530,8 +1538,8 @@
* **Core:**
* Fix some improper locks for progress counter and change to Interlocked instead
- * Fix a bug when chaging layer count by remove or add layers it will malform the file after save and crash the program with some tools and/or clipboard
- * Fix when a operation fails by other reason different from cancelation it was not restoring the backup
+ * Fix a bug when changing layer count by remove or add layers it will malform the file after save and crash the program with some tools and/or clipboard
+ * Fix when a operation fails by other reason different from cancellation it was not restoring the backup
* When manually delete/fix issues it will also backup the layers
* **LayerManager:**
* LayerManager is now readonly and no longer used to transpose layers, each FileFormat have now a unique `LayerManager` instance which is set on the generic constructor
@@ -1539,7 +1547,7 @@
* Changing the `Layers` instance will now recompute some properties, call the properties rebuild and forced sanitize of the structure
* Better reallocation methods
* **Clipboard Manager:**
- * Add the hability to do full backups, they will be marked with an asterisk (*) at clipboard items list
+ * Add the ability to do full backups, they will be marked with an asterisk (*) at clipboard items list
* When a partial backup is made and it backups all the layers it will be converted to full backup
* Clipboard can now restore a snapshot directly with `RestoreSnapshot`
* Prevent restore the initial backup upon file load and when clearing the clipboard
@@ -1552,13 +1560,13 @@
* **File formats:**
* Add a layer height check on file load to prevent load files with more decimal digits than supported to avoid precision errors and bugs
- * Fix a wrong cast causing seconds to miliseconds convertion to be caped to the wrong value
- * Internally if a layer colection was replaced, all new layers will be marked as modified to avoid forgeting and ease the code
+ * Fix a wrong cast causing seconds to milliseconds conversion to be caped to the wrong value
+ * Internally if a layer collection was replaced, all new layers will be marked as modified to avoid forgetting and ease the code
* **Tools:**
* Pixel dimming: Better render quality, it now respects AA better and produce better walls (#172)
* Elephant foot: It now respects AA better and produce better walls for wall dimming
- * Layer Import: Cancelling the operation while importing layers was permanent supresseing layer properties update when changing a base property
-* (Change) PrusaSlicer print profiles: Improved raft height and bottom layer count for better print success, less delamination, shorter time and reduce wear of FEP
+ * Layer Import: Canceling the operation while importing layers was permanent suppressing layer properties update when changing a base property
+* (Change) PrusaSlicer print profiles: Improved raft height and bottom layer count for better print success, less lamination, shorter time and reduce wear of FEP
* (Scripts): Add operation "Validate" pattern to docs and examples (#172)
## 19/03/2021 - v2.7.0
@@ -1583,24 +1591,24 @@
* Change drawings brush diameter limit from 255 to 4000 maximum
* When using layers below go lower than layer 0 it no longer apply the modifications
* **File formats:**
- * Add an internal GCodeBuilder to generate identical gcode within formats with auto convertion, managing features and parsing information
+ * Add an internal GCodeBuilder to generate identical gcode within formats with auto conversion, managing features and parsing information
* Internally rearrange formats properties and pass values to the base class
* Fix "Save As" filename when using formats with dual extensions
* CBDDLP and CTB: "LightPWM" was setting "BottomLightPWM" instead
* CWS: Fix problem with filenames with dots (.) and ending with numbers (#171)
- * CWS: Improved the enconding and decoding performance
- * CWS: Implement all available print paramenters and per layer, missing values are got from gcode interpretation
+ * CWS: Improved the encoding and decoding performance
+ * CWS: Implement all available print parameters and per layer, missing values are got from gcode interpretation
* CWS: Use set "light off delay" layer value instead of calculating it
* CWS: Get light off delay per layer parsed from gcode
- * CWS - RGB flavour (Bene4 Mono): Warn about wrong resolution if width not multiples of 3 (#171)
- * ZCode: Allow to set Bottom and Light intensity (LightPWM) on paramters and per layer
+ * CWS - RGB flavor (Bene4 Mono): Warn about wrong resolution if width not multiples of 3 (#171)
+ * ZCode: Allow to set Bottom and Light intensity (LightPWM) on parameters and per layer
* ZCode: Allow to change bottom light pwm independent from normal light pwm
* LGS: Light off and bottom light off was setting the value on the wrong units
* UVJ: Unable to set per layer parameters
* **Issues:**
- * When computing islands and resin traps together, they will not compute in parallel anymore to prevent CPU and tasks exaustion, it will calculate islands first and then resin traps, this should also speed up the process on weaker machines
+ * When computing islands and resin traps together, they will not compute in parallel anymore to prevent CPU and tasks exhaustion, it will calculate islands first and then resin traps, this should also speed up the process on weaker machines
* Gather resin trap areas together when computing for other issues to spare a decoding cycle latter
- * When using a threshold for islands detection it was also appling it to the overhangs
+ * When using a threshold for islands detection it was also applying it to the overhangs
* Fix the spare decoding conditional cycle for partial scans
* Change resin trap search from parallel to sync to prevent fake detections and missing joints at cost of speed (#13)
* **Tools:**
@@ -1611,13 +1619,13 @@
## 05/03/2021 - v2.6.2
-* (Add) Edit print paramenters: Option to enable or disable the 'Propagate modifications to layers' when working with global parameters
+* (Add) Edit print parameters: Option to enable or disable the 'Propagate modifications to layers' when working with global parameters
* (Change) PrusaSlicer printer: Auto convert format from ctb to photon for Anycubic Photon
* **(Fix) Change resolution:**
* It was placing the object on random layers on the wrong position, shifting the object
- * Add informaton on the tool description to warn about diferent pixel pitch for target printer
+ * Add information on the tool description to warn about different pixel pitch for target printer
* Add current pixel pitch in microns if available
-* (Fix) Exposure time finder: Multiple exposures was getting bottom and normal time from base file instead of commum properties fields
+* (Fix) Exposure time finder: Multiple exposures was getting bottom and normal time from base file instead of common properties fields
## 03/03/2021 - v2.6.1
@@ -1629,10 +1637,10 @@
* Prevent layer 0 to be used as a mask, if so it will quit
* If the ignored layer number are set and equal or larger than mask layer index it will quit
* Fix progress count when using ignored layers
- * Change supports dilate kernel from Elipse to Rectangle for a better coverage of the pad
+ * Change supports dilate kernel from Ellipse to Rectangle for a better coverage of the pad
* Change the default values for a more conservative values
* (Fix) When both ComputeIssuesOnLoad and ComputeIssuesOnClickTab are enabled, clicking the issues tab will rescan for issues
-* (Fix) Tools: Set a default profile insn't working
+* (Fix) Tools: Set a default profile isn't working
* (Fix) Redoing the last operation was not recovering the custom ROI on the operation
## 02/03/2021 - v2.6.0
@@ -1642,7 +1650,7 @@
* (Add) Extract: Output an "Layer.ini" file containing per layer data and include the Configuration.ini for Zip file formats
* (Improvement) Zip: Increase the GCode parsing performance
* (Fix) File formats: Wasn't set bottom / light off delay per individual layer on generic formats, defaulting every layer to 0
-* (Fix) Edit print parameters: When changing bottom layer count, layers didnt update thier properties
+* (Fix) Edit print parameters: When changing bottom layer count, layers didn't update their properties
## 25/02/2021 - v2.5.1
@@ -1721,7 +1729,7 @@
* ROI calculation error leading to not process images that can potential fit inside the volumes
* Out-of-bounds calculation for Stack type
* Replace type was calculating out-of-bounds calculation like Stack type when is not required to and can lead to skip images
- * Better image ROI colection for Insert and Replace types instead of capture the center most
+ * Better image ROI collection for Insert and Replace types instead of capture the center most
* (Fix) Settings window: Force a redraw on open to fix auto sizes
## 12/02/2021 - v2.4.5
@@ -1733,7 +1741,7 @@
* (Change) Setting: Windows vertical margin to 60px
* (Fix) Export file was getting a "Parameter count mismatch" on some file formats (#140)
* (Fix) photon and cbddlp file formats with version 3 to never hash images
-* (Fix) Windows was not geting the screen bounds from the active monitor
+* (Fix) Windows was not getting the screen bounds from the active monitor
* (Fix) Tool windows height, vertical margin and position
* **(Fix) Exposure time finder:**
* Text label
@@ -1803,11 +1811,11 @@
* (Fix) Auto converted files from SL1 where clipping filename at first dot (.), now it only strips known extensions
* (Fix) SL1 encoded files wasn't generating the right information and lead to printer crash
* (Fix) PrusaSlicer printer "Anycubic Photon S" LiftSpeed was missing and contains a typo (#135)
-* (Fix) PrusaSlicer profile manager wasnt marking missing profiles to be installed (#135)
+* (Fix) PrusaSlicer profile manager wasn't marking missing profiles to be installed (#135)
* (Fix) PrusaSlicer folder search on linux to also look at %HOME%/.config/PrusaSlicer (#135, #136)
* (Fix) Operations were revised and some bug fixed, most about can't cancel the progress
* (Fix) Some typos on tooltips
-* (Fix) Prevent PhotonS from enconding, it will trigger error now as this format is read-only
+* (Fix) Prevent PhotonS from encoding, it will trigger error now as this format is read-only
* **(Fix) Ctrl + Shift + Z to redo the last operation:**
* The layer range is reseted instead of pull the used values
* Tool - Arithmetic always disabled
@@ -1825,7 +1833,7 @@
* (Add) PrusaSlicer printer: UVtools Prusa SL1, for SL1 owners must use this profile to be UVtools compatible when using advanced tools
* (Fix) Tool - Calculator - Optimal model tilt: Layer height wasn't get pulled from loaded file and fixed to 0.05mm
* **(Fix) FileFormats:**
- * When change a global print paramenter, it will only set this same parameter on every layer, keeping other parameters intact, it was reseting every parameter per layer to globals
+ * When change a global print parameter, it will only set this same parameter on every layer, keeping other parameters intact, it was reseting every parameter per layer to globals
* SL1: Verify if files are malformed and if there's missing configuration files (#126)
* CTBv3: Set EncryptionMode to 0x2000000F, this allow the use of per layer settings
@@ -1835,7 +1843,7 @@
* **In this release is recommended to discard your printer and refresh it with uvtools updated printer or replace notes over**
* (Add) FILEFORMAT_XXX variable to auto-convert to that file format once open in UVtools
* (Update) Print profiles fields with new PrusaSlicer version
- * (Remove) LayerOffDelay from printer notes and use only the LightOffDelay variable instead, both were being used, to avoid redundacy LayerOffDelay was dropped. Please update your printer accordingly!
+ * (Remove) LayerOffDelay from printer notes and use only the LightOffDelay variable instead, both were being used, to avoid redundancy LayerOffDelay was dropped. Please update your printer accordingly!
* (Remove) FLIP_XY compability from printers
* (Remove) AntiAlias variable from printers
* **(Add) Settings - Automations:**
@@ -1852,7 +1860,7 @@
* (Fix) Files with upper case extensions doesn't load in
* (Add) Calculator - Optimal model tilt: Calculates the optimal model tilt angle for printing and to minimize the visual layer effect
* (Add) Bottom layer count to the status bar
-* (Add) ZCodex: Print paramenter light-off delay"
+* (Add) ZCodex: Print parameter light-off delay"
* (Change) Island Repair: "Remove Islands Below Equal Pixels" limit from 255 to 65535 (#124)
* **(Fix) SL1:**
* Prevent error when bottle volume is 0
@@ -1885,7 +1893,7 @@
* (Fix) Tool - Morph: Set a rectangular 3x3 kernel by default
* (Fix) Tool - Blur: Set a rectangular 3x3 kernel by default
* (Fix) Calibration - Elephant Foot: Include part scale on profile text
-* (Fix) MSI dont store instalation path (#121)
+* (Fix) MSI don't store installation path (#121)
## 03/01/2021 - v2.1.2
@@ -1898,7 +1906,7 @@
* (Add) About box: Primary screen identifier and open on screen identifier
* (Add) Calibrator - External tests
-* (Change) Rewrite 'Action - Import Layer(s)' to support file formats and add the followig importation types:
+* (Change) Rewrite 'Action - Import Layer(s)' to support file formats and add the following importation types:
* **Insert:** Insert layers. (Requires images with bounds equal or less than file resolution)
* **Replace:** Replace layers. (Requires images with bounds equal or less than file resolution)
* **Stack:** Stack layers content. (Requires images with bounds equal or less than file resolution)
@@ -1914,8 +1922,8 @@
* (Add) Tool - Redraw model/supports: Redraw the model or supports with a set brightness. This requires an extra sliced file from same object but without any supports and raft, straight to the build plate.
* (Add) Tool - Raft Relief:
- * Allow ignore a number of layer(s) to start only after that number, detault is 0
- * Allow set a pixel brightness for the operation, detault is 0
+ * Allow ignore a number of layer(s) to start only after that number, default is 0
+ * Allow set a pixel brightness for the operation, default is 0
* New "dimming" type, works like relief but instead of drill raft it set to a brightness level
* (Add) Arch-x64 package (#104)
* (Fix) A OS dependent startup crash when there's no primary screen set (#115)
@@ -1960,7 +1968,7 @@ This release bump the major version due the introduction of .NET 5.0, the discon
* (Fix) When unable to save the file it will change extension and not delete the temporary file
* (Fix) Pixel dimming wasn't saving all the fields on profiles
* (Fix) Prevent a rare startup crash when using demo file
-* (Fix) Tool - Solifiy: Increase AA clean up threshold range, previous value wasn't solidifing when model has darker tones
+* (Fix) Tool - Solidify: Increase AA clean up threshold range, previous value wasn't solidifying when model has darker tones
* (Fix) Sanitize per layer settings, due some slicers are setting 0 at some properties that can cause problems with UVtools calculations, those values are now sanitized and set to the general value if 0
* (Fix) Update partial islands:
* Was leaving visible issues when the result returns an empty list of new issues
@@ -2007,7 +2015,7 @@ This release bump the major version due the introduction of .NET 5.0, the discon
* (Add) Tools: Warn where layer preview is critical for use the tool, must disable layer rotation first (#100)
* (Add) CWS: Bottom lift speed property
* (Add) CWS: Support Wanhao Workshop CWX and Wanhao Creation Workshop file types (#98)
-* (Add) CWS: Split format into virtual extensions (.cws, .rgb.cws, .xml.cws) to support diferent file formats and diferent printers under same main .cws extensions. That will affect file converts only to let UVtools know what type of encoding to use. Load and save a xxx.cws file will always auto decode/encode the file for the correct target format no matter the extension.
+* (Add) CWS: Split format into virtual extensions (.cws, .rgb.cws, .xml.cws) to support different file formats and different printers under same main .cws extensions. That will affect file converts only to let UVtools know what type of encoding to use. Load and save a xxx.cws file will always auto decode/encode the file for the correct target format no matter the extension.
* (Improvement) CWS: It no longer search for a specific filename in the zip file, instead it look for extension to get the files to ensure it always found them no matter the file name system
* (Fix) CWS: When "Save as" the file were generating sub files with .cws extension, eg: filename0001.cws.png
* (Change) Allow read empty layers without error from Anycubic files (PWS, PW0, PWxx) due a bug on slicer software under macOS
@@ -2032,7 +2040,7 @@ This release bump the major version due the introduction of .NET 5.0, the discon
* (Add) Pixel area as "px²" to the layer bounds and ROI at layer bottom information bar
* (Add) Pixel dimming: Alternate pattern every x layers
* (Add) Pixel dimming: Lattice infill
-* (Add) Solidify: Required minimum/maximum area to solidify found areas (Default values will produce the old behaviour)
+* (Add) Solidify: Required minimum/maximum area to solidify found areas (Default values will produce the old behavior)
* (Add) Issues: Allow to hide and ignore selected issues
* (Add) Issue - Touch boundary: Allow to configure Left, Top, Right, Bottom margins in pixels, defaults to 5px (#94)
* (Add) UVJ: Allow convert to another formats (#96)
@@ -2045,10 +2053,10 @@ This release bump the major version due the introduction of .NET 5.0, the discon
* (Fix) Issues: Detect button has a incorrect "save" icon
* (Fix) SL1: Increase NumSlow property limit
* (Fix) UVJ: not decoding nor showing preview images
-* (Fix) "Convert to" menu shows same options than previous loaded file when current file dont support convertions (#96)
+* (Fix) "Convert to" menu shows same options than previous loaded file when current file don't support conversions (#96)
* (Fix) Hides "Convert to" menu when unable to convert to another format (#96)
* (Fix) Program crash when demo file is disabled and tries to load a file in
-* (Fix) Rare crash on startup when mouse dont move in startup period and user types a key in meanwhile
+* (Fix) Rare crash on startup when mouse don't move in startup period and user types a key in meanwhile
* (Fix) On a slow startup on progress window it will show "Decoded layers" as default text, changed to "Initializing"
## 08/11/2020 - v1.2.1
@@ -2066,7 +2074,7 @@ This release bump the major version due the introduction of .NET 5.0, the discon
* (Add) Clipboard manager: Undo (Ctrl + Z) and Redo (Ctrl + Y) modifications (Memory optimized)
* (Add) Current layer properties on information tab
* (Fix) Long windows with system zoom bigger than 100% were being hidden and overflow (#90)
-* (Fix) Do not recompute issues nor properties nor reshow layer if operation is cancelled or failed
+* (Fix) Do not recompute issues nor properties nor reshow layer if operation is canceled or failed
## 05/11/2020 - v1.1.3
@@ -2099,7 +2107,7 @@ On Windows the user must close all instances and continue with the shown MSI ins
* (Change) Deploy UVtools self-contained per platform specific: (#89)
* Platform optimized
* Reduced the package size
- * Includes .NET Core assemblies and dont require the installation of .NET Core
+ * Includes .NET Core assemblies and don't require the installation of .NET Core
* Can execute UVtools by double click on "UVtools" file or via "./UVtools" on terminal
* **Naming:** UVtools_[os]-[architecture]_v[version].zip
* **"universal"** zip file that includes the portable version, os and architecture independent but requires dotnet to run, these build were used in all previous versions
@@ -2127,7 +2135,7 @@ On Windows the user must close all instances and continue with the shown MSI ins
* (Change) When converting to photon or cbddlp, version 2 of the file will be used
* (Change) New logo, thanks to (Vinicius Silva @photonsters)
* (Fix) MSI installer was creating multiple entries/uninstallers on windows Apps and Features (#79)
-* (Fix) Release builder script (CreateRelease.WPF.ps1): Replace backslash with shash for zip releases (#82)
+* (Fix) Release builder script (CreateRelease.WPF.ps1): Replace backslash with slash for zip releases (#82)
* (Fix) CWS file reader when come from Chitubox (#84)
* (Fix) CWS was introducing a big delay after each layer, LiftHeight was being used 2 times instead of LiftSpeed (#85)
* (Fix) CWS fix Build Direction property name, was lacking a whitespace
@@ -2161,7 +2169,7 @@ On Windows the user must close all instances and continue with the shown MSI ins
* (Add) Fullscreen support (F11)
* (Change) GUI was rewritten from Windows Forms to WPF Avalonia, C#
* (Improvement) GUI is now scalable
-* (Fix) Some bug found and fixed during convertion
+* (Fix) Some bug found and fixed during conversion
## 14/10/2020 - v0.8.6.0
@@ -2182,7 +2190,7 @@ On Windows the user must close all instances and continue with the shown MSI ins
## 13/10/2020 - v0.8.4.3
* (Add) Tool - Layer repair: Allow remove islands recursively (#74)
-* (Fix) Pixel Editor: Cursor dimentions when using brushes with thickness > 1 (#73)
+* (Fix) Pixel Editor: Cursor dimensions when using brushes with thickness > 1 (#73)
## 10/10/2020 - v0.8.4.2
@@ -2226,7 +2234,7 @@ On Windows the user must close all instances and continue with the shown MSI ins
* (Fix) PrusaSlicer Printer: Phrozen Shuffle Lite - display width/height
* (Fix) All PrusaSlicer Printers were reviewed and some bugs were fixed
* (Fix) Chitubox 3D preview when use files converted with UVtools (#68)
-* (Fix) Overhangs: False-positives when previous or current layer has draker pixels, it now threshold pixels before proceed (#64)
+* (Fix) Overhangs: False-positives when previous or current layer has darker pixels, it now threshold pixels before proceed (#64)
* (Change) Tools: Placed "Threshold" menu item after "Morph"
## 30/09/2020 - v0.8.3.0
@@ -2269,8 +2277,8 @@ On Windows the user must close all instances and continue with the shown MSI ins
* (Improvement) When unable to convert a format from SL1 to other, advice users to check used printer on PrusaSlicer (#60)
* (Improvement) Information on "Install profiles on PrusaSlicer" (#60)
* (Fix) LGS: Change resolution tool was defining wrong Y
-* (Fix) ctb and pws: Renders a bad file after save, this was introduced with cancelled saves feature
-* (Fix) When cancel a file convertion, it now deletes the target file
+* (Fix) ctb and pws: Renders a bad file after save, this was introduced with canceled saves feature
+* (Fix) When cancel a file conversion, it now deletes the target file
## 13/09/2020 - v0.8.2.0
@@ -2285,9 +2293,9 @@ On Windows the user must close all instances and continue with the shown MSI ins
* (Change) Customized cursor for Pixel Edit mode (#51)
* (Change) Layer overlay tooltip is now semi-transparent
* (Change) File - Save As is always available (#56)
-* (Fix) File - Save when cancelled no longer keep a invalid file, old restored (#54)
-* (Fix) File - Save As when cancelled no longer keep a invalid file, that will be deleted (#54, #55)
-* (Fix) When a operation is cancelled affected layers will revert to the original form (#57)
+* (Fix) File - Save when canceled no longer keep a invalid file, old restored (#54)
+* (Fix) File - Save As when canceled no longer keep a invalid file, that will be deleted (#54, #55)
+* (Fix) When a operation is canceled affected layers will revert to the original form (#57)
* (Fix) Misc. text cleanup (#52, #53, #58)
## 12/09/2020 - v0.8.1.0
@@ -2316,7 +2324,7 @@ On Windows the user must close all instances and continue with the shown MSI ins
* (Add) Layer issue Z map paired with layer navigation tracker bar
* (Add) Setting: Pixel editor can be configured to exit after each apply operation (#45)
* (Add) More abstraction on GUI and operations
-* (Add) Verbose log - More a developer feature to cath bugs
+* (Add) Verbose log - More a developer feature to catch bugs
* (Improvement) Redesign tools and mutator windows
* (Improvement) Erode, dilate, gap closing and noise removal converted into one window (Morph model)
* (Improvement) Convert add edit parameters into one tool window, edit all at once now
@@ -2332,7 +2340,7 @@ Less frequently used settings for gap and noise removal iterations have been mov
* (Change) Tool - Rotate - icon
* (Upgrade) OpenCV from 4.2 to 4.3
* (Upgrade) BinarySerializer from 8.5.2 to 8.5.3
-* (Remove) Menu - Tools - Layer Removal and Layer clone for redudancy they now home at layer preview toolbar under "Actions" dropdown button
+* (Remove) Menu - Tools - Layer Removal and Layer clone for redundancy they now home at layer preview toolbar under "Actions" dropdown button
* (Fix) CWS: Add missing Platform X,Y,Z size when converting from SL1
* (Fix) CWS: Invert XY resolution when converting from SL1
* (Fix) Layer Preview: When selecting issues using SHIFT in the layer preview, the selected issue doesn't update in the issue list until after shift is released and slow operation
@@ -2390,7 +2398,7 @@ Less frequently used settings for gap and noise removal iterations have been mov
* Shift-Left-Click will perform an add operations (add pixel, text, etc).
* Shift-Right-Click will perform a remove operation (remove pixel, etc).
* (Change) Mouse coordinates on status bar now only change when SHIFT key is press, this allow to lock a position for debug
-* (Remove) Confirmation for detect issues as they can now be cancelled
+* (Remove) Confirmation for detect issues as they can now be canceled
* (Fix) When next layer or previous layer button got disabled while pressing it get stuck
* (Fix) Partial island detection wasn't checking next layer as it should
* (Fix) chitubox: Keep some original values when read from chitubox sliced files
@@ -2417,7 +2425,7 @@ Less frequently used settings for gap and noise removal iterations have been mov
* (Add) Elapsed time to the Log list
* (Add) Setting - Issues - Islands: Allow diagonal bonds with default to false (#22, #23)
* (Change) Tool - Repair Layers: Allow set both iterations to 0 to skip closing and opening operations and allow remove islands independently
-* (Change) Title - file open time from miliseconds to seconds
+* (Change) Title - file open time from milliseconds to seconds
* (Improvement) Tool - Repair Layers: Layer image will only read/save if required and if current layer got modified
* (Fix) Setting - Issues - Islands: "Pixels below this value will turn black, otherwise white" (Threshold) was not using the set value and was forcing 1
* (Fix) Remove duplicated log for repair layers and issues
@@ -2487,7 +2495,7 @@ Less frequently used settings for gap and noise removal iterations have been mov
* (Add) Tool: Layer Repair - Allow remove islands below or equal to a pixel count (Suggested by: Nicholas Taylor)
* (Add) Issues: Allow sort columns by click them (Suggested by: Nicholas Taylor)
* (Improvement) Tool: Pattern - Prevent open this tool when unable to pattern due lack of space
-* (Fix) Tool: Layer Repair - When issues are not caculated before, they are computed but user settings are ignored
+* (Fix) Tool: Layer Repair - When issues are not calculated before, they are computed but user settings are ignored
## 24/07/2020 - v0.6.3.2
@@ -2510,7 +2518,7 @@ Less frequently used settings for gap and noise removal iterations have been mov
* (Add) Pixel Editor: Double click items will track and position over the draw
* (Fix) Pixel Editor: Label "Operations" was not reset to 0 after apply the modifications
* (Fix) Pixel Editor: Button "Remove" tooltip
-* (Fix) Pixel Editor: Drawing - Bursh Area - px to px²
+* (Fix) Pixel Editor: Drawing - Brush Area - px to px²
## 19/07/2020 - v0.6.3.0
@@ -2527,11 +2535,11 @@ Less frequently used settings for gap and noise removal iterations have been mov
* (Add) Toolbar and pushed layer information to bottom
* (Add) Information: Cure pixel count per layer and percentage against total lcd pixels
* (Add) Information: Bounds per layer
-* (Add) Zip: Compability with Formware zip files
+* (Add) Zip: Compatibility with Formware zip files
## 14/07/2020 - v0.6.2.2
-* (Add) cbddlp, photon and ctb version 3 compability (Chitubox >= 1.6.5)
+* (Add) cbddlp, photon and ctb version 3 compatibility (Chitubox >= 1.6.5)
## 14/07/2020 - v0.6.2.1
@@ -2543,9 +2551,9 @@ Less frequently used settings for gap and noise removal iterations have been mov
* (Add) PrusaSlicer Printer: Creality LD-002H
* (Add) PrusaSlicer Printer: Voxelab Polaris
* (Add) File Format: UVJ (#8)
-* (Add) Mutataor: Pixel Dimming
+* (Add) Mutator: Pixel Dimming
* (Add) Pixel Editor tab with new drawing functions
-* (Add) Pixel Editor: Bursh area and shape
+* (Add) Pixel Editor: Brush area and shape
* (Add) Pixel Editor: Supports
* (Add) Pixel Editor: Drain holes
* (Add) Settings for pixel editor
@@ -2554,7 +2562,7 @@ Less frequently used settings for gap and noise removal iterations have been mov
* (Add) Setting: File extract default directory
* (Add) Setting: File convert default directory
* (Add) Setting: File save prompt for overwrite (#10)
-* (Add) Setting: File save preffix and suffix name
+* (Add) Setting: File save prefix and suffix name
* (Add) Setting: UVtools version to the title bar
* (Improvement) Force same directory as input file on dialogs
* (Improvement) Pattern: Better positioning when not using an anchor, now it's more center friendly
@@ -2614,7 +2622,7 @@ Less frequently used settings for gap and noise removal iterations have been mov
* (Add) Outline - Layer bounds
* (Add) Outline - Hollow areas
* (Add) Double click layer picture to Zoom To Fit
-* (Improvement) Huge performance boost in layer reparing and in every mutator
+* (Improvement) Huge performance boost in layer repairing and in every mutator
* (Improvement) Layer preview is now faster
* (Improvement) Islands detection is now better and don't skip any pixel, more islands will show or the region will be bigger
* (Improvement) Islands search are now faster, it will jump from island to island instead of search in every pixel by pixel
@@ -2628,7 +2636,7 @@ Less frequently used settings for gap and noise removal iterations have been mov
* (Removed) ImageSharp dependency
* (Removed) UVtools.Parser project
* (Fix) Nova3D Elfin printer values changed to Display Width : 131mm / Height : 73mm & Screen X: 2531 / Y: 1410 (#5)
-* (Fix) Fade resizes make image offset a pixel from layer to layer because of integer placement, now it matain the correct position
+* (Fix) Fade resizes make image offset a pixel from layer to layer because of integer placement, now it maintain the correct position
* (Fix) sl1: AbsoluteCorrection, GammaCorrection, MinExposureTime, MaxExposureTime, FastTiltTime, SlowTiltTime and AreaFill was byte and float values prevents the file from open (#4)
* (Fix) zcodex: XCorrection and YCorrection was byte and float values prevents the file from open (#4)
* (Fix) cws: XCorrection and YCorrection was byte and float values prevents the file from open (#4)
@@ -2659,10 +2667,10 @@ Less frequently used settings for gap and noise removal iterations have been mov
* (Add) Button save layer image to Clipboard
* (Change) Go to issue now zoom at bounding area instead of first pixels
-* (Change) Layer navigation panel width increased in 20 pixels, in some cases it was overlaping the slider
+* (Change) Layer navigation panel width increased in 20 pixels, in some cases it was overlapping the slider
* (Change) Actual layer information now have a depth border
* (Change) Increased main GUI size to X: 1800 and Y: 850 pixels
-* (Change) If the GUI window is bigger than current screen resolution, it will start maximized istead
+* (Change) If the GUI window is bigger than current screen resolution, it will start maximized instead
* (Fix) cbddlp: AntiAlias is number of _greys_, not number of significant bits (ezrec/uv3dp#75)
* (Fix) Outline not working as before, due a forget to remove test code
@@ -2671,7 +2679,7 @@ Less frequently used settings for gap and noise removal iterations have been mov
* (Add) Able to install only the desired profiles and not the whole lot (Suggested by: Ingo Strohmenger)
* (Add) Update manager for PrusaSlicer profiles
* (Add) If PrusaSlicer not installed on system it prompt for installation (By open the official website)
-* (Fix) Prevent profiles instalation when PrusaSlicer is not installed on system
+* (Fix) Prevent profiles installation when PrusaSlicer is not installed on system
* (Fix) The "Issues" computation sometimes fails triggering an error due the use of non concurrent dictionary
* (Fix) Print profiles won't install into PrusaSlicer
@@ -2721,7 +2729,7 @@ Less frequently used settings for gap and noise removal iterations have been mov
* (Add) Show current layer and height near tracker position
* (Add) Auto compute issues when click "Issues" tab for the first time for the open file
* (Add) "AntiAliasing_x" note under PrusaSlicer printer to enable AntiAliasing on supported formats, printers lacking this note are not supported
-* (Add) AntiAliasing capable convertions
+* (Add) AntiAliasing capable conversions
* (Add) Touching Bounds detection under issues
* (Change) Scroll bar to track bar
* (Change) Keyword "LiftingSpeed" to "LiftSpeed" under PrusaSlicer notes (Please update printers notes or import them again)
@@ -2734,7 +2742,7 @@ Less frequently used settings for gap and noise removal iterations have been mov
* (Improvement) Smooth mutators descriptions
* (Improvement) Disallow invalid iteration numbers for smooth mutators
* (Improvement) File reload now reshow current layer after reload
-* (Improvement) Some dependecies were updated and ZedGraph removed
+* (Improvement) Some dependencies were updated and ZedGraph removed
* (Fix) AntiAlias decodes for photon and cbddlp
* (Fix) AntiAlias encodes and decodes for cbt
* (Fix) Save the preview thumbnail image trigger an error
@@ -2774,11 +2782,11 @@ Less frequently used settings for gap and noise removal iterations have been mov
* (Add) "Detect" text to compute layers button
* (Add) "Repair" islands button on Islands tab
* (Add) "Highlight islands" button on layer toolbar
-* (Add) Possible error cath on island computation
+* (Add) Possible error catch on island computation
* (Add) After load new file layer is rotated or not based on it width, landscape will not rotate while portrait will
* (Improvement) Highlighted islands now also show AA pixels as a darker yellow
* (Improvement) Island detection now need a certain number of touching pixels to consider a island or not, ie: it can't lay on only one pixel
-* (Fix) Island detection now don't consider dark fadded AA pixels as safe land
+* (Fix) Island detection now don't consider dark faded AA pixels as safe land
* (Fix) Epax X1 printer properties
## 03/06/2020 - v0.4.2 - Beta
@@ -2794,9 +2802,9 @@ Less frequently used settings for gap and noise removal iterations have been mov
## 01/06/2020 - v0.4.1 - Beta
* (Add) Opening, Closing and Gradient Mutators
-* (Add) Choose layer range when appling a mutator #1
-* (Add) Choose iterations range/fading when appling a mutator (Thanks to Renos Makrosellis)
-* (Add) Global and unhandled exceptions are now logged to be easier to report a bug
+* (Add) Choose layer range when applying a mutator #1
+* (Add) Choose iterations range/fading when applying a mutator (Thanks to Renos Makrosellis)
+* (Add) Global and unhanded exceptions are now logged to be easier to report a bug
* (Change) Current layer and layer count text was reduced by 1 to match indexes on mutators
* (Improvement) Better mutator dialogs and explanation
* (Improvement) Compressed GUI images size
@@ -2822,12 +2830,12 @@ Less frequently used settings for gap and noise removal iterations have been mov
* (Fix) SL1 files not accepting float numbers for exposures
* (Fix) SL1 files was calculating the wrong layer count when using slow layer settings
* (Fix) Modifiers can't accept float values
-* (Fix) Sonic Mini prints mirroed
+* (Fix) Sonic Mini prints mirrored
* (Fix) Layer resolution shows wrong values
## 21/05/2020 - v0.3.3.1 - Beta
-* (Fix) Unable to convert Chitubox or PHZ files when enconter repeated layer images
+* (Fix) Unable to convert Chitubox or PHZ files when encounter repeated layer images
## 19/05/2020 - v0.3.3 - Beta
@@ -2835,15 +2843,15 @@ Less frequently used settings for gap and noise removal iterations have been mov
* (Add) "Phrozen Sonic Mini" printer
* (Add) Convert Chitubox files to PHZ files and otherwise
* (Add) Convert Chitubox and PHZ files to ZCodex
-* (Add) Elapsed seconds to convertion and extract dialog
+* (Add) Elapsed seconds to conversion and extract dialog
* (Improvement) "Convert To" menu now only show available formats to convert to, if none menu is disabled
* (Fix) Enforce cbt encryption
-* (Fix) Not implemented convertions stay processing forever
+* (Fix) Not implemented conversions stay processing forever
## 11/05/2020 - v0.3.2 - Beta
-* (Add) Show layer differences where daker pixels were also present on previous layer and the white pixels the difference between previous and current layer.
+* (Add) Show layer differences where darker pixels were also present on previous layer and the white pixels the difference between previous and current layer.
* (Add) Layer preview process time in milliseconds
* (Add) Long operations no longer freeze the GUI and a progress message will shown on those cases
* (Improvement) Cache layers were possible for faster operation
@@ -2851,7 +2859,7 @@ Less frequently used settings for gap and noise removal iterations have been mov
* (Improvement) Speed up extraction with parallelism
* (Improvement) Extract output folder dialog now open by default on from same folder as input file
* (Improvement) Extract now create a folder with same file name to dump the content
-* (Fix) Extract to folder was wiping the target folder, this is now disabled to prevent acidental data lost, target files will be overwritten
+* (Fix) Extract to folder was wiping the target folder, this is now disabled to prevent accidental data lost, target files will be overwritten
## 30/04/2020 - v0.3.1 - Beta
@@ -2864,9 +2872,9 @@ Less frequently used settings for gap and noise removal iterations have been mov
* (Improvement) Optimized layer read from cbddlp file
* (Improvement) Add layer hash code to encoded Chitubox layers in order to optimize file size in case of repeated layer images
* (Improvement) GUI thumbnail preview now auto scale splitter height to a max of 400px when change thumbnail
-* (Improvement) After convertion program prompt for open the result file in a new window
+* (Improvement) After conversion program prompt for open the result file in a new window
* (Change) Move layer rotate from view menu to layer menu
-* (Change) Cbbdlp convertion name to Chitubox
+* (Change) Cbbdlp conversion name to Chitubox
* (Change) On convert, thumbnails are now resized to match exactly the target thumbnail size
* (Change) GUI will now show thumbnails from smaller to larger
* (Fix) RetractFeedrate was incorrectly used instead of LiftFeedrate on Zcodex gcode
@@ -2876,10 +2884,10 @@ Less frequently used settings for gap and noise removal iterations have been mov
* (Add) zcodex file format
* (Add) Zortrax Inkspire Printer
* (Add) Properties menu -- Shows total keys and allow save information to a file
-* (Add) "GCode" viewer Tab -- Only for formats that incldue gcode into file (ie: zcodex)
+* (Add) "GCode" viewer Tab -- Only for formats that include gcode into file (ie: zcodex)
* (Add) Save gcode to a text file
* (Add) Allow to vertical arrange height between thumbnails and properties
-* (Improvement) Thumbnail section is now hidden if no thumbnails avaliable
+* (Improvement) Thumbnail section is now hidden if no thumbnails available
* (Improvement) Thumbnail section now vertical auto scales to the image height on file load
* (Improvement) On "modify properties" window, ENTER key can now be used to accept and submit the form
* (Fixed) Current model height doesn't calculate when viewing cbddlp files
@@ -2893,7 +2901,7 @@ Less frequently used settings for gap and noise removal iterations have been mov
* (Add) File -> Reload
* (Add) File -> Save
* (Add) File -> Save As
-* (Add) Can now ajust some print properties
+* (Add) Can now adjust some print properties
* (Add) 'Initial Layer Count' to status bar
* (Add) Allow cbbdlp format to extract 'File -> Extract'
* (Add) Thumbnail resolution label
@@ -2910,7 +2918,7 @@ Less frequently used settings for gap and noise removal iterations have been mov
* (Add) Rotate layer image
* (Add) Close file
* (Change) more abstraction
-* (Change) from PNG to BMP compression to speed up bitmap coversion
+* (Change) from PNG to BMP compression to speed up bitmap conversion
* (Change) Faster layer preview
## 12/04/2020 - v0.2 - Beta
diff --git a/PrusaSlicer/printer/Peopoly Phenom Forge.ini b/PrusaSlicer/printer/Peopoly Phenom Forge.ini
new file mode 100644
index 0000000..08fba78
--- /dev/null
+++ b/PrusaSlicer/printer/Peopoly Phenom Forge.ini
@@ -0,0 +1,41 @@
+# generated by PrusaSlicer 2.4.2+win64 on 2022-09-05 at 16:45:08 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,288x0,288x162,0x162
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 162
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 5760
+display_pixels_y = 3240
+display_width = 288
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+host_type = octoprint
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 350
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_PEOPOLY\nPRINTER_MODEL_PHENOM_FORGE\nFILEFORMAT_OSF\n\nSTART_CUSTOM_VALUES\nBottomWaitTimeBeforeCure_3\nWaitTimeBeforeCure_2.5\nBottomWaitTimeAfterCure_3\nWaitTimeAfterCure_1\nBottomLiftHeight_7\nLiftHeight_5\nBottomLiftSpeed_80\nLiftSpeed_80\nBottomWaitTimeAfterLift_0\nWaitTimeAfterLift_0\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+relative_correction_x = 1
+relative_correction_y = 1
+relative_correction_z = 1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md
index f55bf64..fbedafa 100644
--- a/RELEASE_NOTES.md
+++ b/RELEASE_NOTES.md
@@ -1,12 +1,13 @@
-- **File formats:**
- - **Anycubic file format:**
- - (Add) Compatibility with the next version 517 of the format
- - (Improvement) Discovered and implemented more unknown fields
- - (Improvement) Dispose layer RLE bytes after encoding
- - (Fix) When creating or converting to anycubic file, it don't set the extra table mark name
- - (Fix) Only attempt to activate the advanced mode (TSMC) when the BottomLiftHeight2 or LiftHeight2 gets changed
- - (Add) Methods: `OnBeforeEncode` and `OnAfterEncode`
- - (Improvement) `IsUsingTSMC` now also checks for BottomLiftHeight2 and BottomRetractHeight2
- - (Fix) OSF: Can't decode some files
-- (Fix) Undo cause application to crash (#543)
+- **Windows MSI installer:**
+ - (Add) UVtools folder to start menu with:
+ - UVtools
+ - UVtoolsCmd
+ - Uninstall UVtools
+ - (Add) Prompt for add open in UVtools when right-click on supported files
+ - (Add) Prompt for create desktop shortcut
+ - (Add) Prompt for launch UVtools after the installation
+ - (Improvement) Cleanup and simplify the install project
+- (Add) PrusaSlicer printer: Peopoly Phenom Forge
+- (Upgrade) .NET from 6.0.8 to 6.0.9
+- (Fix) Corruption in file after attempt to save to a locked file (#551)
diff --git a/UVtools.Core/Extensions/EmguExtensions.cs b/UVtools.Core/Extensions/EmguExtensions.cs
index abf84de..b39f829 100644
--- a/UVtools.Core/Extensions/EmguExtensions.cs
+++ b/UVtools.Core/Extensions/EmguExtensions.cs
@@ -284,10 +284,10 @@ public static class EmguExtensions
/// Fill a mat span with a color
/// </summary>
/// <param name="mat">Mat to fill</param>
- /// <param name="startPosition">Start position, this reference will increment by the <see cref="length"/></param>
+ /// <param name="startPosition">Start position, this reference will increment by the <paramref name="length"/></param>
/// <param name="length">Length to fill</param>
/// <param name="color">Color to fill with</param>
- /// <param name="colorFillMinThreshold">Ignore and sum <see cref="startPosition"/> to <see cref="length"/> if <see cref="color"/> is less than the threshold value</param>
+ /// <param name="colorFillMinThreshold">Ignore and fill to <paramref name="length"/> if <paramref name="color"/> is less than the threshold value</param>
public static void FillSpan(this Mat mat, ref int startPosition, int length, byte color, byte colorFillMinThreshold = 1)
{
if (length <= 0) return;
@@ -309,7 +309,7 @@ public static class EmguExtensions
/// <param name="y"></param>
/// <param name="length">Length to fill</param>
/// <param name="color">Color to fill with</param>
- /// <param name="colorFillMinThreshold">Ignore and sum <see cref="startPosition"/> to <see cref="length"/> if <see cref="color"/> is less than the threshold value</param>
+ /// <param name="colorFillMinThreshold">Ignore and set to <paramref name="length"/> if <paramref name="color"/> is less than the threshold value</param>
public static void FillSpan(this Mat mat, int x, int y, int length, byte color, byte colorFillMinThreshold = 1)
{
if (length <= 0 || color < colorFillMinThreshold) return; // Ignore threshold (mostly if blacks), spare cycles
@@ -323,7 +323,7 @@ public static class EmguExtensions
/// <param name="position"></param>
/// <param name="length">Length to fill</param>
/// <param name="color">Color to fill with</param>
- /// <param name="colorFillMinThreshold">Ignore and sum <see cref="startPosition"/> to <see cref="length"/> if <see cref="color"/> is less than the threshold value</param>
+ /// <param name="colorFillMinThreshold">Ignore and fill to <paramref name="length"/> if <paramref name="color"/> is less than the threshold value</param>
public static void FillSpan(this Mat mat, Point position, int length, byte color, byte colorFillMinThreshold = 1)
=> mat.FillSpan(position.X, position.Y, length, color, colorFillMinThreshold);
#endregion
@@ -544,7 +544,7 @@ public static class EmguExtensions
/// </summary>
/// <param name="src">Source <see cref="Mat"/> to be copied to</param>
/// <param name="size">Size of the center offset</param>
- /// <param name="dst">Target <see cref="Mat"/> to paste the <param name="src"></param></param>
+ /// <param name="dst">Target <see cref="Mat"/> to paste the <paramref name="src"/></param>
public static void CopyCenterToCenter(this Mat src, Size size, Mat dst)
{
var srcRoi = src.RoiFromCenter(size);
@@ -556,7 +556,7 @@ public static class EmguExtensions
/// </summary>
/// <param name="src">Source <see cref="Mat"/> to be copied to</param>
/// <param name="region">Region to copy</param>
- /// <param name="dst">Target <see cref="Mat"/> to paste the <param name="src"></param></param>
+ /// <param name="dst">Target <see cref="Mat"/> to paste the <paramref name="src"/></param>
public static void CopyRegionToCenter(this Mat src, Rectangle region, Mat dst)
{
var srcRoi = src.Roi(region);
@@ -567,7 +567,7 @@ public static class EmguExtensions
/// Copy a <see cref="Mat"/> to center of other <see cref="Mat"/>
/// </summary>
/// <param name="src">Source <see cref="Mat"/> to be copied to</param>
- /// <param name="dst">Target <see cref="Mat"/> to paste the <param name="src"></param></param>
+ /// <param name="dst">Target <see cref="Mat"/> to paste the <paramref name="src"/></param>
public static void CopyToCenter(this Mat src, Mat dst)
{
var srcStep = src.GetRealStep();
@@ -773,7 +773,7 @@ public static class EmguExtensions
}
/// <summary>
- /// Finds the first pixel that is <see cref="value"/>
+ /// Finds the first pixel that is <paramref name="value"/>
/// </summary>
/// <param name="mat"></param>
/// <param name="value"></param>
@@ -793,7 +793,7 @@ public static class EmguExtensions
}
/// <summary>
- /// Finds the first pixel that is at less than <see cref="value"/>
+ /// Finds the first pixel that is at less than <paramref name="value"/>
/// </summary>
/// <param name="mat"></param>
/// <param name="value"></param>
@@ -813,7 +813,7 @@ public static class EmguExtensions
}
/// <summary>
- /// Finds the first pixel that is at less or equal than <see cref="value"/>
+ /// Finds the first pixel that is at less or equal than <paramref name="value"/>
/// </summary>
/// <param name="mat"></param>
/// <param name="value"></param>
@@ -833,7 +833,7 @@ public static class EmguExtensions
}
/// <summary>
- /// Finds the first pixel that is at greater than <see cref="value"/>
+ /// Finds the first pixel that is at greater than <paramref name="value"/>
/// </summary>
/// <param name="mat"></param>
/// <param name="value"></param>
@@ -853,7 +853,7 @@ public static class EmguExtensions
}
/// <summary>
- /// Finds the first pixel that is at equal or greater than <see cref="value"/>
+ /// Finds the first pixel that is at equal or greater than <paramref name="value"/>
/// </summary>
/// <param name="mat"></param>
/// <param name="value"></param>
@@ -902,6 +902,7 @@ public static class EmguExtensions
/// <param name="src"></param>
/// <param name="dst"></param>
/// <param name="angle"></param>
+ /// <param name="newSize"></param>
/// <param name="scale"></param>
public static void Rotate(this Mat src, Mat dst, double angle, Size newSize = default, double scale = 1.0)
{
diff --git a/UVtools.Core/Extensions/FileStreamExtensions.cs b/UVtools.Core/Extensions/FileStreamExtensions.cs
index 12fb0d8..2994c17 100644
--- a/UVtools.Core/Extensions/FileStreamExtensions.cs
+++ b/UVtools.Core/Extensions/FileStreamExtensions.cs
@@ -158,7 +158,6 @@ public static class FileStreamExtensions
/// <param name="fs"></param>
/// <param name="action"></param>
/// <param name="offset"></param>
- /// <param name="seekOrigin"></param>
public static void SeekDoWorkAndRewind(this FileStream fs, long offset, Action action)
=> fs.SeekDoWorkAndRewind(offset, SeekOrigin.Begin, action);
diff --git a/UVtools.Core/Extensions/TypeExtensions.cs b/UVtools.Core/Extensions/TypeExtensions.cs
index 1c52839..39be38e 100644
--- a/UVtools.Core/Extensions/TypeExtensions.cs
+++ b/UVtools.Core/Extensions/TypeExtensions.cs
@@ -19,6 +19,7 @@ public static class TypeExtensions
/// Creates a new instance of this type
/// </summary>
/// <param name="type"></param>
+ /// <param name="paramArray"></param>
public static object? CreateInstance(this Type type, params object[]? paramArray)
{
return Activator.CreateInstance(type, paramArray);
@@ -30,7 +31,7 @@ public static class TypeExtensions
/// <typeparam name="T">Target type</typeparam>
/// <param name="type"></param>
/// <param name="paramArray"></param>
- /// <returns>New instance of <see cref="T"/></returns>
+ /// <returns>New instance of {T}</returns>
public static T? CreateInstance<T>(this Type type, params object[]? paramArray)
{
var instance = Activator.CreateInstance(type, paramArray);
diff --git a/UVtools.Core/Extensions/ZipArchiveExtensions.cs b/UVtools.Core/Extensions/ZipArchiveExtensions.cs
index 8345a74..050b3d6 100644
--- a/UVtools.Core/Extensions/ZipArchiveExtensions.cs
+++ b/UVtools.Core/Extensions/ZipArchiveExtensions.cs
@@ -99,7 +99,7 @@ public static class ZipArchiveExtensions
/// <param name="destinationPath">
/// The root of where the file is going
/// </param>
- /// <param name="preserveFullName">True to preserve full name and create all directories up to the file, otherwise false to extract the file just to <see cref="destinationPath"/></param>
+ /// <param name="preserveFullName">True to preserve full name and create all directories up to the file, otherwise false to extract the file just to <paramref name="destinationPath"/></param>
/// <param name="overwriteMethod">
/// Specifies how we are going to handle an existing file.
/// The default is Overwrite.IfNewer.
@@ -162,6 +162,7 @@ public static class ZipArchiveExtensions
/// <param name="action">
/// Specifies how we are going to handle an existing archive
/// </param>
+ /// <param name="fileOverwrite"></param>
/// <param name="compression">
/// Specifies what type of compression to use - defaults to Optimal
/// </param>
diff --git a/UVtools.Core/FileFormats/FileFormat.cs b/UVtools.Core/FileFormats/FileFormat.cs
index a49b7d4..bf4fdca 100644
--- a/UVtools.Core/FileFormats/FileFormat.cs
+++ b/UVtools.Core/FileFormats/FileFormat.cs
@@ -3168,7 +3168,7 @@ public abstract class FileFormat : BindableBase, IDisposable, IEquatable<FileFor
/// Checks if a extension is valid under the <see cref="FileFormat"/>
/// </summary>
/// <param name="extension">Extension to check without the dot (.)</param>
- /// <param name="isFilePath">True if <see cref="extension"/> is a full file path, otherwise false for extension only</param>
+ /// <param name="isFilePath">True if <paramref name="extension"/> is a full file path, otherwise false for extension only</param>
/// <returns>True if valid, otherwise false</returns>
public bool IsExtensionValid(string extension, bool isFilePath = false)
{
@@ -3360,11 +3360,12 @@ public abstract class FileFormat : BindableBase, IDisposable, IEquatable<FileFor
{
EncodeInternally(progress);
+ // Move temporary output file in place
+ File.Move(tempFile, fileFullPath, true);
+
IsModified = false;
RequireFullEncode = false;
- // Move temporary output file in place
- File.Move(tempFile, fileFullPath, true);
OnAfterEncode(false);
}
catch (Exception)
@@ -4201,11 +4202,11 @@ public abstract class FileFormat : BindableBase, IDisposable, IEquatable<FileFor
}
/// <summary>
- /// Sets a property value attributed to <see cref="modifier"/>
+ /// Sets a property value attributed to <paramref name="modifier"/>
/// </summary>
/// <param name="modifier">Modifier to use</param>
/// <param name="value">Value to set</param>
- /// <returns>True if set, otherwise false = <see cref="modifier"/> not found</returns>
+ /// <returns>True if set, otherwise false <paramref name="modifier"/> not found</returns>
public bool SetValueFromPrintParameterModifier(PrintParameterModifier modifier, decimal value)
{
if (ReferenceEquals(modifier, PrintParameterModifier.BottomLayerCount))
@@ -4496,8 +4497,9 @@ public abstract class FileFormat : BindableBase, IDisposable, IEquatable<FileFor
}
/// <summary>
- /// Attempt to set wait time before cure if supported, otherwise fallback to light-off delay
+ /// Attempt to set wait time before cure if supported, otherwise fall-back to light-off delay
/// </summary>
+ /// <param name="isBottomLayer">True to set to bottom properties, otherwise false</param>
/// <param name="time">The time to set</param>
/// <param name="zeroLightOffDelayCalculateBase">When true and time is zero, it will calculate light-off delay without extra time, otherwise false to set light-off delay to 0 when time is 0</param>
public void SetWaitTimeBeforeCureOrLightOffDelay(bool isBottomLayer, float time = 0, bool zeroLightOffDelayCalculateBase = false)
@@ -4601,10 +4603,11 @@ public abstract class FileFormat : BindableBase, IDisposable, IEquatable<FileFor
var oldFilePath = FileFullPath!;
if(!string.IsNullOrWhiteSpace(filePath)) FileFullPath = filePath;
var tempFile = TemporaryOutputFileFullPath;
- File.Copy(oldFilePath, tempFile, true);
try
{
+ File.Copy(oldFilePath, tempFile, true);
+
progress ??= new OperationProgress();
PartialSaveInternally(progress);
@@ -5401,6 +5404,7 @@ public abstract class FileFormat : BindableBase, IDisposable, IEquatable<FileFor
/// Allocate layers from a Mat array
/// </summary>
/// <param name="mats"></param>
+ /// <param name="progress"></param>
/// <returns>The new Layer array</returns>
public Layer[] AllocateFromMat(Mat[] mats, OperationProgress? progress = null)
{
@@ -5418,6 +5422,7 @@ public abstract class FileFormat : BindableBase, IDisposable, IEquatable<FileFor
/// Allocate layers from a Mat array and set them to the current file
/// </summary>
/// <param name="mats"></param>
+ /// <param name="progress"></param>
/// /// <returns>The new Layer array</returns>
public Layer[] AllocateAndSetFromMat(Mat[] mats, OperationProgress? progress = null)
{
diff --git a/UVtools.Core/FileFormats/OSFFile.cs b/UVtools.Core/FileFormats/OSFFile.cs
index 551b2e0..028fb8d 100644
--- a/UVtools.Core/FileFormats/OSFFile.cs
+++ b/UVtools.Core/FileFormats/OSFFile.cs
@@ -44,31 +44,7 @@ public class OSFFile : FileFormat
[FieldEndianness(Endianness.Big)]
public byte ImageLog { get; set; } = 2;
- /// <summary>
- /// 148 * 80 * 2
- /// </summary>
- //[FieldOrder(3)] public UInt24BigEndian Preview1Length { get; set; } = new(23680);
- //[FieldOrder(3)] [FieldCount(nameof(UInt24BigEndian.Value), )] public UInt24BigEndian Preview1sssLength { get; set; } = new(23680);
- /*[FieldOrder(3)]
- [FieldEndianness(Endianness.Big)]
- [FieldBitLength(24)]
- public uint Preview1Length { get; set; } = 23680;
- */
- /// <summary>
- /// RGB565
- /// </summary>
- //[FieldOrder(4)] [FieldLength(nameof(Preview1Length.Value))] public byte[] Preview1Data { get; set; }
-
- /*/// <summary>
- /// 300 * 140 * 2
- /// </summary>
- [FieldOrder(5)][FieldBitLength(24)] public uint Preview2Length { get; set; } = 84000;*/
-
- /*/// <summary>
- /// RGB565
- /// </summary>
- [FieldOrder(6)] [FieldLength(nameof(Preview2Length))] public byte[] Preview2Data { get; set; }*/
-
+
public override string ToString()
{
return $"{nameof(HeaderLength)}: {HeaderLength}, {nameof(Version)}: {Version}, {nameof(ImageLog)}: {ImageLog}";
diff --git a/UVtools.Core/Managers/MaterialManager.cs b/UVtools.Core/Managers/MaterialManager.cs
index db34814..ad51f11 100644
--- a/UVtools.Core/Managers/MaterialManager.cs
+++ b/UVtools.Core/Managers/MaterialManager.cs
@@ -30,7 +30,7 @@ public class MaterialManager : BindableBase, IList<Material>
new(() => new MaterialManager());
/// <summary>
- /// Instance of <see cref="UserSettings"/> (singleton)
+ /// Instance of <see cref="MaterialManager"/> (singleton)
/// </summary>
public static MaterialManager Instance => _instanceHolder.Value;
diff --git a/UVtools.Core/Objects/BindableBase.cs b/UVtools.Core/Objects/BindableBase.cs
index 4fbfa04..4e3c46e 100644
--- a/UVtools.Core/Objects/BindableBase.cs
+++ b/UVtools.Core/Objects/BindableBase.cs
@@ -28,34 +28,6 @@ public abstract class BindableBase : INotifyPropertyChanged
remove => _propertyChanged -= value;
}
- /// <summary>
- /// Checks if a property already matches a desired value. Sets the property and
- /// notifies listeners only when necessary.
- /// </summary>
- /// <typeparam name="T">Type of the property.</typeparam>
- /// <param name="storage">Reference to a property with both getter and setter.</param>
- /// <param name="value">Desired value for the property.</param>
- /// <param name="propertyName">
- /// Name of the property used to notify listeners. This
- /// value is optional and can be provided automatically when invoked from compilers that
- /// support CallerMemberName.
- /// </param>
- /// <returns>
- /// True if the value was changed, false if the existing value matched the
- /// desired value.
- /// </returns>
- /*protected bool SetProperty<T>(ref T storage, T value, [CallerMemberName] string propertyName = null)
- {
- if (Equals(storage, value))
- {
- return false;
- }
-
- storage = value;
- RaisePropertyChanged(propertyName);
- return true;
- }*/
-
protected bool RaiseAndSetIfChanged<T>(ref T field, T value, [CallerMemberName] string? propertyName = null)
{
if (EqualityComparer<T>.Default.Equals(field, value)) return false;
diff --git a/UVtools.Core/Objects/RangeObservableCollection.cs b/UVtools.Core/Objects/RangeObservableCollection.cs
index ececee5..6e76c3a 100644
--- a/UVtools.Core/Objects/RangeObservableCollection.cs
+++ b/UVtools.Core/Objects/RangeObservableCollection.cs
@@ -140,7 +140,7 @@ public class RangeObservableCollection<T> : ObservableCollection<T>
/// Inserts the elements of a collection into the <see cref="ObservableCollection{T}"/> at the specified index.
/// </summary>
/// <param name="index">The zero-based index at which the new elements should be inserted.</param>
- /// <param name="collection">The collection whose elements should be inserted into the List<T>.
+ /// <param name="collection">The collection whose elements should be inserted into the List{T}.
/// The collection itself cannot be null, but it can contain elements that are null, if type T is a reference type.</param>
/// <exception cref="ArgumentNullException"><paramref name="collection"/> is null.</exception>
/// <exception cref="ArgumentOutOfRangeException"><paramref name="index"/> is not in the collection range.</exception>
@@ -390,7 +390,6 @@ public class RangeObservableCollection<T> : ObservableCollection<T>
/// <exception cref="ArgumentOutOfRangeException"><paramref name="index"/> is out of range.</exception>
/// <exception cref="ArgumentOutOfRangeException"><paramref name="count"/> is out of range.</exception>
/// <exception cref="ArgumentNullException"><paramref name="collection"/> is null.</exception>
- /// <exception cref="ArgumentNullException"><paramref name="comparer"/> is null.</exception>
public void ReplaceRange(int index, int count, IEnumerable<T> collection)
{
if (index < 0)
@@ -589,7 +588,6 @@ public class RangeObservableCollection<T> : ObservableCollection<T>
/// </summary>
/// <remarks>
/// When overriding this method, either call its base implementation
- /// or call <see cref="BlockReentrancy"/> to guard against reentrant collection changes.
/// </remarks>
protected override void OnCollectionChanged(NotifyCollectionChangedEventArgs e)
{
diff --git a/UVtools.Core/Operations/Operation.cs b/UVtools.Core/Operations/Operation.cs
index 4bc6802..2332c13 100644
--- a/UVtools.Core/Operations/Operation.cs
+++ b/UVtools.Core/Operations/Operation.cs
@@ -550,21 +550,21 @@ public abstract class Operation : BindableBase, IDisposable
public Size GetRoiSizeOrDefault() => GetRoiSizeOrDefault(SlicerFile.Resolution);
/// <summary>
- /// Gets the <see cref="ROI"/> size, but if empty returns <see cref="src"/> size instead
+ /// Gets the <see cref="ROI"/> size, but if empty returns <paramref name="src"/> size instead
/// </summary>
/// <param name="src"></param>
/// <returns></returns>
public Size GetRoiSizeOrDefault(Mat? src) => src is null ? GetRoiSizeOrDefault() : GetRoiSizeOrDefault(src.Size);
/// <summary>
- /// Gets the <see cref="ROI"/> size, but if empty returns the size from <see cref="fallbackRectangle"/> instead
+ /// Gets the <see cref="ROI"/> size, but if empty returns the size from <paramref name="fallbackRectangle"/> instead
/// </summary>
/// <param name="fallbackRectangle"></param>
/// <returns></returns>
public Size GetRoiSizeOrDefault(Rectangle fallbackRectangle) => GetRoiSizeOrDefault(fallbackRectangle.Size);
/// <summary>
- /// Gets the <see cref="ROI"/> size, but if empty returns the <see cref="fallbackSize"/> instead
+ /// Gets the <see cref="ROI"/> size, but if empty returns the <paramref name="fallbackSize"/> instead
/// </summary>
/// <param name="fallbackSize"></param>
/// <returns></returns>
@@ -580,7 +580,7 @@ public abstract class Operation : BindableBase, IDisposable
public Size GetRoiSizeOrVolumeSize() => GetRoiSizeOrVolumeSize(_originalBoundingRectangle.Size);
/// <summary>
- /// Gets the <see cref="ROI"/> size, but if empty returns the <see cref="fallbackSize"/> instead
+ /// Gets the <see cref="ROI"/> size, but if empty returns the <paramref name="fallbackSize"/> instead
/// </summary>
/// <param name="fallbackSize"></param>
/// <returns></returns>
@@ -590,7 +590,7 @@ public abstract class Operation : BindableBase, IDisposable
}
/// <summary>
- /// Gets a cropped shared <see cref="Mat"/> from <see cref="src"/> by the <see cref="ROI"/>, but if empty return the <see cref="src"/> instead
+ /// Gets a cropped shared <see cref="Mat"/> from <paramref name="src"/> by the <see cref="ROI"/>, but if empty return the <paramref name="src"/> instead
/// </summary>
/// <param name="src"></param>
/// <returns></returns>
@@ -600,7 +600,7 @@ public abstract class Operation : BindableBase, IDisposable
}
/// <summary>
- /// Gets a cropped shared <see cref="Mat"/> from <see cref="src"/> by the <see cref="ROI"/>, but if empty crop by <see cref="fallbackRoi"/>
+ /// Gets a cropped shared <see cref="Mat"/> from <paramref name="src"/> by the <see cref="ROI"/>, but if empty crop by <paramref name="fallbackRoi"/>
/// </summary>
/// <param name="src"></param>
/// <param name="fallbackRoi"></param>
@@ -613,7 +613,7 @@ public abstract class Operation : BindableBase, IDisposable
}
/// <summary>
- /// Gets a cropped shared <see cref="Mat"/> from <see cref="src"/> by the <see cref="ROI"/>, but if empty crop by <see cref="OriginalBoundingRectangle"/>
+ /// Gets a cropped shared <see cref="Mat"/> by the <see cref="ROI"/>, but if empty crop by <see cref="OriginalBoundingRectangle"/>
/// </summary>
/// <param name="defaultMat"></param>
/// <returns></returns>
@@ -662,7 +662,7 @@ public abstract class Operation : BindableBase, IDisposable
}
/// <summary>
- /// Apply a mask to a mat <see cref="result"/>
+ /// Apply a mask to a mat <paramref name="result"/>
/// </summary>
/// <param name="original">Original untouched mat</param>
/// <param name="result">Mat to modify and apply the mask</param>
diff --git a/UVtools.Core/Printer/Machine.cs b/UVtools.Core/Printer/Machine.cs
index 76c997f..de5a890 100644
--- a/UVtools.Core/Printer/Machine.cs
+++ b/UVtools.Core/Printer/Machine.cs
@@ -266,6 +266,7 @@ namespace UVtools.Core.Printer
new(PrinterBrand.Peopoly, "Peopoly Phenom Noir", "Phenom Noir", 3840, 2160, 293.76f, 165.24f, 400f, FlipDirection.Horizontally),
new(PrinterBrand.Peopoly, "Peopoly Phenom XXL", "Phenom XXL", 3840, 2160, 527.04f, 296.46f, 550f, FlipDirection.Horizontally),
new(PrinterBrand.Peopoly, "Peopoly Phenom", "Phenom", 3840, 2160, 276.48f, 155.52f, 400f, FlipDirection.Horizontally),
+ new(PrinterBrand.Peopoly, "Peopoly Phenom Forge", "Phenom Forge", 5760, 3240, 288f, 162f, 350f, FlipDirection.Horizontally),
new(PrinterBrand.Phrozen, "Phrozen Shuffle 16", "Shuffle 16", 3840, 2160, 337.92f, 190.08f, 400f, FlipDirection.Horizontally),
new(PrinterBrand.Phrozen, "Phrozen Shuffle 4K", "Shuffle 4K", 2160, 3840, 68.04f, 120.96f, 170f, FlipDirection.None),
diff --git a/UVtools.Core/UVtools.Core.csproj b/UVtools.Core/UVtools.Core.csproj
index 691b7bd..9723ae4 100644
--- a/UVtools.Core/UVtools.Core.csproj
+++ b/UVtools.Core/UVtools.Core.csproj
@@ -10,7 +10,7 @@
<RepositoryUrl>https://github.com/sn4k3/UVtools</RepositoryUrl>
<PackageProjectUrl>https://github.com/sn4k3/UVtools</PackageProjectUrl>
<Description>MSLA/DLP, file analysis, calibration, repair, conversion and manipulation</Description>
- <Version>3.6.3</Version>
+ <Version>3.6.4</Version>
<Copyright>Copyright © 2020 PTRTECH</Copyright>
<PackageIcon>UVtools.png</PackageIcon>
<Platforms>AnyCPU;x64</Platforms>
@@ -20,23 +20,28 @@
<ApplicationIcon>UVtools.ico</ApplicationIcon>
<PackageReadmeFile>README.md</PackageReadmeFile>
<Nullable>enable</Nullable>
+ <GenerateDocumentationFile>True</GenerateDocumentationFile>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
- <DocumentationFile></DocumentationFile>
+ <DocumentationFile>..\documentation\$(AssemblyName).xml</DocumentationFile>
+ <NoWarn>1701;1702;1591</NoWarn>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+ <NoWarn>1701;1702;1591</NoWarn>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+ <NoWarn>1701;1702;1591</NoWarn>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+ <NoWarn>1701;1702;1591</NoWarn>
</PropertyGroup>
<ItemGroup>
@@ -67,11 +72,11 @@
<PackageReference Include="Emgu.CV.runtime.windows" Version="4.5.5.4823" />
<PackageReference Include="K4os.Compression.LZ4" Version="1.2.16" />
<PackageReference Include="KdTree" Version="1.4.1" />
- <PackageReference Include="Microsoft.CodeAnalysis.CSharp.Scripting" Version="4.2.0" />
+ <PackageReference Include="Microsoft.CodeAnalysis.CSharp.Scripting" Version="4.3.0" />
<PackageReference Include="Portable.BouncyCastle" Version="1.9.0" />
<PackageReference Include="System.Memory" Version="4.5.5" />
<PackageReference Include="System.Reflection.TypeExtensions" Version="4.7.0" />
- <PackageReference Include="System.Text.Json" Version="6.0.5" />
+ <PackageReference Include="System.Text.Json" Version="6.0.6" />
</ItemGroup>
<Target Name="PreparePackageReleaseNotesFromFile" BeforeTargets="GenerateNuspec">
diff --git a/UVtools.Installer/Code/HeatGeneratedFileList.wxs b/UVtools.Installer/Code/HeatGeneratedFileList.wxs
index 097666f..a1c0dcc 100644
--- a/UVtools.Installer/Code/HeatGeneratedFileList.wxs
+++ b/UVtools.Installer/Code/HeatGeneratedFileList.wxs
@@ -323,8 +323,8 @@
<Component Id="cmpE35DDB3C925C83E74C7DAAE6FEA6C156" Guid="*">
<File Id="filEAEAE1CB9E8AC1FF00B05453ABEE2ADF" KeyPath="yes" Source="$(var.HarvestPath)\mscordaccore.dll" />
</Component>
- <Component Id="cmp5DD57F8D8C67EF0DCE92B8C15E2B7E9C" Guid="*">
- <File Id="fil02F22B1868368ABD8A770D99B7002E15" KeyPath="yes" Source="$(var.HarvestPath)\mscordaccore_amd64_amd64_6.0.822.36306.dll" />
+ <Component Id="cmpDF0539C05F3B669297316A4721F7F597" Guid="*">
+ <File Id="fil801BA39FE5EF9977D6A6F557603017B8" KeyPath="yes" Source="$(var.HarvestPath)\mscordaccore_amd64_amd64_6.0.922.41905.dll" />
</Component>
<Component Id="cmpA5ABEAD31F33B1E5825EC6F159ABFB0F" Guid="*">
<File Id="fil1A6B0EBD5A5BF8DD0582A2665D3492F1" KeyPath="yes" Source="$(var.HarvestPath)\mscordbi.dll" />
@@ -878,6 +878,9 @@
<Component Id="cmp83E45273762A7A93634EBE91551A4FA5" Guid="*">
<File Id="fil13AB21C442190C7273AE9F058EC7B07D" KeyPath="yes" Source="$(var.HarvestPath)\UVtools.Core.pdb" />
</Component>
+ <Component Id="cmpEE46107CFBC91854F4AF8D9B7227EF68" Guid="*">
+ <File Id="fil768C40D446F1D5DA04C4145A6509E66F" KeyPath="yes" Source="$(var.HarvestPath)\UVtools.Core.xml" />
+ </Component>
<Component Id="cmp464D38F282C23D25F051F3F844B02AA2" Guid="*">
<File Id="filDDE9F5B59E8395C6FC232806AECB4DBF" KeyPath="yes" Source="$(var.HarvestPath)\UVtools.deps.json" />
</Component>
@@ -1139,6 +1142,9 @@
<Component Id="cmpA7D8D77725CFC4CD0D232CF2B7893808" Guid="*">
<File Id="filB6807C46EEB8600F42A7FE170EAF7FED" KeyPath="yes" Source="$(var.HarvestPath)\Assets\PrusaSlicer\printer\Nova3D Whale2.ini" />
</Component>
+ <Component Id="cmp485BD2BED7E5E10D4C55D78433B00FD5" Guid="*">
+ <File Id="filB4071F4EC7AD3960060AF39B0CFDD155" KeyPath="yes" Source="$(var.HarvestPath)\Assets\PrusaSlicer\printer\Peopoly Phenom Forge.ini" />
+ </Component>
<Component Id="cmp34F3A0B8AF8C7B72D078224E10CE220C" Guid="*">
<File Id="filD3749547564F5DE1F55024825F287BC1" KeyPath="yes" Source="$(var.HarvestPath)\Assets\PrusaSlicer\printer\Peopoly Phenom L.ini" />
</Component>
@@ -1661,7 +1667,7 @@
<ComponentRef Id="cmp3E4F3E4686A9B425B5812E5171CCDEEF" />
<ComponentRef Id="cmp16861E24C897764CA922EC062BA74EC9" />
<ComponentRef Id="cmpE35DDB3C925C83E74C7DAAE6FEA6C156" />
- <ComponentRef Id="cmp5DD57F8D8C67EF0DCE92B8C15E2B7E9C" />
+ <ComponentRef Id="cmpDF0539C05F3B669297316A4721F7F597" />
<ComponentRef Id="cmpA5ABEAD31F33B1E5825EC6F159ABFB0F" />
<ComponentRef Id="cmp5D6845991403E371A015DF7EBDF71F13" />
<ComponentRef Id="cmp57B8361D25AD503DC733F4039E5A38B0" />
@@ -1846,6 +1852,7 @@
<ComponentRef Id="cmpE03D8B3DF65D174191DAB33C1BD16E41" />
<ComponentRef Id="cmpBD1DB1738454F41358539855C0E669EA" />
<ComponentRef Id="cmp83E45273762A7A93634EBE91551A4FA5" />
+ <ComponentRef Id="cmpEE46107CFBC91854F4AF8D9B7227EF68" />
<ComponentRef Id="cmp464D38F282C23D25F051F3F844B02AA2" />
<ComponentRef Id="cmpCCBA0C7C3EBE22BCB7636FB758C297CD" />
<ComponentRef Id="cmp365721530759887AD50BF2F4D542A374" />
@@ -1932,6 +1939,7 @@
<ComponentRef Id="cmpB98CEE9A048421D2EB463A32274D4EA9" />
<ComponentRef Id="cmp757BD9F9BB8D5F637DECF5025C80F946" />
<ComponentRef Id="cmpA7D8D77725CFC4CD0D232CF2B7893808" />
+ <ComponentRef Id="cmp485BD2BED7E5E10D4C55D78433B00FD5" />
<ComponentRef Id="cmp34F3A0B8AF8C7B72D078224E10CE220C" />
<ComponentRef Id="cmpD8729DA2ED13E7BB47C049FE62A3FAA8" />
<ComponentRef Id="cmpAFE04B94A54B17A59E4D8F7107F732DB" />
diff --git a/UVtools.WPF/App.axaml.cs b/UVtools.WPF/App.axaml.cs
index 674362a..9a240b5 100644
--- a/UVtools.WPF/App.axaml.cs
+++ b/UVtools.WPF/App.axaml.cs
@@ -345,8 +345,8 @@ public class App : Application
#region Utilities
public static string ApplicationPath => AppContext.BaseDirectory;
- public static readonly string AppExecutable = Environment.ProcessPath!;
- public static readonly string AppExecutableQuoted = $"\"{AppExecutable}\"";
+ public static string AppExecutable => Environment.ProcessPath!;
+ public static string AppExecutableQuoted => $"\"{AppExecutable}\"";
public static void NewInstance(string filePath)
{
try
diff --git a/UVtools.WPF/MainWindow.Information.cs b/UVtools.WPF/MainWindow.Information.cs
index 36d7e2b..92021fd 100644
--- a/UVtools.WPF/MainWindow.Information.cs
+++ b/UVtools.WPF/MainWindow.Information.cs
@@ -16,7 +16,6 @@ using Avalonia;
using Avalonia.Controls;
using Avalonia.Input;
using MessageBox.Avalonia.Enums;
-using UVtools.Core;
using UVtools.Core.Layers;
using UVtools.Core.Objects;
using UVtools.Core.SystemOS;
@@ -239,11 +238,11 @@ public partial class MainWindow
try
{
- using TextWriter tw = new StreamWriter(file);
+ await using TextWriter tw = new StreamWriter(file);
foreach (var config in SlicerFile.Configs)
{
var type = config.GetType();
- tw.WriteLine($"[{type.Name}]");
+ await tw.WriteLineAsync($"[{type.Name}]");
foreach (var property in type.GetProperties(BindingFlags.Public | BindingFlags.Instance))
{
if (property.Name.Equals("Item")) continue;
@@ -253,14 +252,14 @@ public partial class MainWindow
case null:
continue;
case IList list:
- tw.WriteLine($"{property.Name} = {list.Count}");
+ await tw.WriteLineAsync($"{property.Name} = {list.Count}");
break;
default:
- tw.WriteLine($"{property.Name} = {value}");
+ await tw.WriteLineAsync($"{property.Name} = {value}");
break;
}
}
- tw.WriteLine();
+ await tw.WriteLineAsync();
}
tw.Close();
}
@@ -312,7 +311,6 @@ public partial class MainWindow
public void RefreshProperties()
{
SlicerProperties.Clear();
- if (SlicerFile.Configs is null) return;
foreach (var config in SlicerFile.Configs)
{
var type = config.GetType();
diff --git a/UVtools.WPF/UVtools.WPF.csproj b/UVtools.WPF/UVtools.WPF.csproj
index e776d8e..b01e5f0 100644
--- a/UVtools.WPF/UVtools.WPF.csproj
+++ b/UVtools.WPF/UVtools.WPF.csproj
@@ -12,7 +12,7 @@
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<RepositoryUrl>https://github.com/sn4k3/UVtools</RepositoryUrl>
<RepositoryType>Git</RepositoryType>
- <Version>3.6.3</Version>
+ <Version>3.6.4</Version>
<Platforms>AnyCPU;x64</Platforms>
<PackageIcon>UVtools.png</PackageIcon>
<PackageReadmeFile>README.md</PackageReadmeFile>
@@ -44,9 +44,9 @@
<PackageReference Include="Avalonia.Desktop" Version="0.10.18" />
<PackageReference Include="Avalonia.Diagnostics" Version="0.10.18" />
<PackageReference Include="MessageBox.Avalonia" Version="2.1.0" />
- <PackageReference Include="Projektanker.Icons.Avalonia" Version="5.4.0" />
- <PackageReference Include="Projektanker.Icons.Avalonia.FontAwesome" Version="5.4.0" />
- <PackageReference Include="Projektanker.Icons.Avalonia.MaterialDesign" Version="5.4.0" />
+ <PackageReference Include="Projektanker.Icons.Avalonia" Version="5.5.0" />
+ <PackageReference Include="Projektanker.Icons.Avalonia.FontAwesome" Version="5.5.0" />
+ <PackageReference Include="Projektanker.Icons.Avalonia.MaterialDesign" Version="5.5.0" />
<PackageReference Include="ThemeEditor.Controls.ColorPicker" Version="0.10.17" />
</ItemGroup>
<ItemGroup>
diff --git a/build/createRelease.ps1 b/build/createRelease.ps1
index 3f8b30b..a593403 100644
--- a/build/createRelease.ps1
+++ b/build/createRelease.ps1
@@ -223,7 +223,18 @@ $installer = "UVtools.Installer"
$msiOutputFile = "$rootFolder\UVtools.Installer\bin\x64\Release\UVtools.msi"
$msiProductFile = "$rootFolder\UVtools.Installer\Code\Product.wxs"
$msiSourceFiles = "$rootFolder\$publishFolder\${software}_win-x64_v$version"
-$msbuild = "`"${env:ProgramFiles}\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\MSBuild.exe`" /t:Build /p:Configuration=`"$buildWith`" /p:MSIProductVersion=`"$version`" /p:HarvestPath=`"$msiSourceFiles`""
+
+$msbuildPaths = "${env:ProgramFiles}\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\MSBuild.exe",
+ "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\MSBuild.exe",
+ "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe"
+$msbuild = $null
+foreach($path in $msbuildPaths) {
+ if (Test-Path -Path $path -PathType Leaf)
+ {
+ $msbuild = "`"$path`" /t:Build /p:Configuration=`"$buildWith`" /p:MSIProductVersion=`"$version`" /p:HarvestPath=`"$msiSourceFiles`""
+ break;
+ }
+}
Write-Output "
####################################
@@ -329,7 +340,7 @@ if($null -ne $enableNugetPublish -and $enableNugetPublish)
}
}
-foreach ($obj in $runtimes.GetEnumerator()) {
+foreach ($obj in $runtimes.GetEnumerator()) {
if(![string]::IsNullOrWhiteSpace($buildOnly) -and !$buildOnly.Equals($obj.Name)) {continue}
# Configuration
$deployStopWatch.Restart()
@@ -381,13 +392,13 @@ foreach ($obj in $runtimes.GetEnumerator()) {
}
else
{
- $args = '-b' # Bundle
+ $buildArgs = '-b' # Bundle
if($null -ne $zipPackages -and $zipPackages)
{
- $args += ' -z' # Zip
+ $buildArgs += ' -z' # Zip
}
- bash -c "'build/createRelease.sh' $args $runtime"
- #Start-Job { bash -c "'build/createRelease.sh' $using:args $using:runtime" }
+ bash -c "'build/createRelease.sh' $buildArgs $runtime"
+ #Start-Job { bash -c "'build/createRelease.sh' $using:buildArgs$buildArgs $using:runtime" }
}
$deployStopWatch.Stop()
@@ -441,65 +452,71 @@ if($null -ne $enableMSI -and $enableMSI)
$publishName = "${software}_${runtime}_v$version";
if ((Test-Path -Path $msiSourceFiles) -and ((Get-ChildItem "$msiSourceFiles" | Measure-Object).Count) -gt 0) {
- $msiTargetFile = "$publishFolder\$publishName.msi"
- Write-Output "################################"
- Write-Output "Clean and build MSI components manifest file"
+ if ($null -ne $msbuild)
+ {
+ $msiTargetFile = "$publishFolder\$publishName.msi"
+ Write-Output "################################"
+ Write-Output "Clean and build MSI components manifest file"
- Remove-Item "$msiTargetFile" -ErrorAction Ignore
+ Remove-Item "$msiTargetFile" -ErrorAction Ignore
- <#
- (Get-Content "$msiComponentsFile") -replace 'SourceDir="\.\.\\publish\\.+"', "SourceDir=`"..\publish\$publishName`"" | Out-File "$msiComponentsFile"
-
- $msiComponentsXml = [Xml] (Get-Content "$msiComponentsFile")
- foreach($element in $msiComponentsXml.Wix.Module.Directory.Directory)
- {
- if($element.Id -eq 'MergeRedirectFolder')
+ <#
+ (Get-Content "$msiComponentsFile") -replace 'SourceDir="\.\.\\publish\\.+"', "SourceDir=`"..\publish\$publishName`"" | Out-File "$msiComponentsFile"
+
+ $msiComponentsXml = [Xml] (Get-Content "$msiComponentsFile")
+ foreach($element in $msiComponentsXml.Wix.Module.Directory.Directory)
{
- wixCleanUpElement $element $msiSourceFiles
- $msiComponentsXml.Save($msiComponentsFile)
- break
+ if($element.Id -eq 'MergeRedirectFolder')
+ {
+ wixCleanUpElement $element $msiSourceFiles
+ $msiComponentsXml.Save($msiComponentsFile)
+ break
+ }
}
- }
- #>
+ #>
- if(Test-Path "$publishFolder\$publishName\UVtools.Core.dll" -PathType Leaf){
- Add-Type -Path "$publishFolder\$publishName\UVtools.Core.dll"
- } else {
- Write-Error "Unable to find UVtools.Core.dll"
- return
- }
+ if(Test-Path "$publishFolder\$publishName\UVtools.Core.dll" -PathType Leaf){
+ Add-Type -Path "$publishFolder\$publishName\UVtools.Core.dll"
+ } else {
+ Write-Error "Unable to find UVtools.Core.dll"
+ return
+ }
- # Add edit with UVtools possible extensions
- $extensions = [UVtools.Core.FileFormats.FileFormat]::AllFileExtensions;
- $extensionList = New-Object Collections.Generic.List[String]
- foreach($ext in $extensions)
- {
- if($ext.Extension.Contains('.')) { continue; } # Virtual extension
+ # Add edit with UVtools possible extensions
+ $extensions = [UVtools.Core.FileFormats.FileFormat]::AllFileExtensions;
+ $extensionList = New-Object Collections.Generic.List[String]
+ foreach($ext in $extensions)
+ {
+ if($ext.Extension.Contains('.')) { continue; } # Virtual extension
- $extKey = "System.FileName:&quot;*.$($ext.Extension.ToLowerInvariant())&quot;";
- if($extensionList.Contains($extKey)) { continue; } # Already here
- $extensionList.Add($extKey);
- }
- if($extensionList.Count -gt 0)
- {
- $regValue = [String]::Join(' OR ', $extensionList)
- (Get-Content "$msiProductFile") -replace '(?<A><RegistryValue Name="AppliesTo" Value=").+(?<B>" Type=.+)', "`${A}$regValue`${B}" | Out-File "$msiProductFile"
- }
+ $extKey = "System.FileName:&quot;*.$($ext.Extension.ToLowerInvariant())&quot;";
+ if($extensionList.Contains($extKey)) { continue; } # Already here
+ $extensionList.Add($extKey);
+ }
+ if($extensionList.Count -gt 0)
+ {
+ $regValue = [String]::Join(' OR ', $extensionList)
+ (Get-Content "$msiProductFile") -replace '(?<A><RegistryValue Name="AppliesTo" Value=").+(?<B>" Type=.+)', "`${A}$regValue`${B}" | Out-File "$msiProductFile"
+ }
- Write-Output "Building: $runtime MSI Installer"
+ Write-Output "Building: $runtime MSI Installer"
- # Clean and build MSI
- Remove-Item "$installer\obj" -Recurse -ErrorAction Ignore
- Remove-Item "$installer\bin" -Recurse -ErrorAction Ignore
- Invoke-Expression "& $msbuild $installer\$installer.wixproj"
+ # Clean and build MSI
+ Remove-Item "$installer\obj" -Recurse -ErrorAction Ignore
+ Remove-Item "$installer\bin" -Recurse -ErrorAction Ignore
+ Invoke-Expression "& $msbuild $installer\$installer.wixproj"
- Write-Output "Copying $runtime MSI to: $msiTargetFile"
- Copy-Item $msiOutputFile $msiTargetFile
+ Write-Output "Copying $runtime MSI to: $msiTargetFile"
+ Copy-Item $msiOutputFile $msiTargetFile
- Write-Output "Took: $($deployStopWatch.Elapsed)
- ################################
- "
+ Write-Output "Took: $($deployStopWatch.Elapsed)
+ ################################
+ "
+ }
+ else {
+ Write-Error "MSI build is enabled but can't run due the msbuild.exe path was not found."
+ }
}
#else {
# Write-Error "MSI build is enabled but the runtime '$runtime' is not found."
diff --git a/documentation/UVtools.Core.xml b/documentation/UVtools.Core.xml
new file mode 100644
index 0000000..c9e5725
--- /dev/null
+++ b/documentation/UVtools.Core.xml
@@ -0,0 +1,6815 @@
+<?xml version="1.0"?>
+<doc>
+ <assembly>
+ <name>UVtools.Core</name>
+ </assembly>
+ <members>
+ <member name="P:UVtools.Core.About.Born">
+ <summary>
+ Gets UVtools born date and time
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.About.YearsOld">
+ <summary>
+ Gets UVtools years
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.About.AgeStr">
+ <summary>
+ Return full age in a readable string
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.About.IsBirthday">
+ <summary>
+ Checks if today is UVtools birthday
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Converters.SpeedConverter.Convert(System.Single,UVtools.Core.SpeedUnit,UVtools.Core.SpeedUnit,System.Byte)">
+ <summary>
+ Converts a speed from one unit to another
+ </summary>
+ <param name="value"></param>
+ <param name="from"></param>
+ <param name="to"></param>
+ <param name="rounding"></param>
+ <returns></returns>
+ <exception cref="T:System.ArgumentOutOfRangeException"></exception>
+ </member>
+ <member name="M:UVtools.Core.Converters.TimeConverter.SecondsToMilliseconds(System.Single,System.Byte)">
+ <summary>
+ Converts seconds to milliseconds
+ </summary>
+ <param name="value"></param>
+ <param name="rounding"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Converters.TimeConverter.SecondsToMillisecondsUint(System.Single)">
+ <summary>
+ Converts seconds to milliseconds
+ </summary>
+ <param name="value"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Converters.TimeConverter.MillisecondsToSeconds(System.Single,System.Byte)">
+ <summary>
+ Converts milliseconds to seconds
+ </summary>
+ <param name="value"></param>
+ <param name="rounding"></param>
+ <returns></returns>
+ </member>
+ <member name="P:UVtools.Core.CoreSettings.MaxDegreeOfParallelism">
+ <summary>
+ Gets or sets the maximum number of concurrent tasks enabled by this ParallelOptions instance.
+ Less or equal to 0 will set to auto number
+ 1 = Single thread
+ n = Multi threads
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.CoreSettings.ParallelOptions">
+ <summary>
+ Gets the ParallelOptions with <see cref="P:UVtools.Core.CoreSettings.MaxDegreeOfParallelism"/> set
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.CoreSettings.GetParallelOptions(System.Threading.CancellationToken)">
+ <summary>
+ Gets the ParallelOptions with <see cref="P:UVtools.Core.CoreSettings.MaxDegreeOfParallelism"/> and the <see cref="T:System.Threading.CancellationToken"/> set
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.CoreSettings.GetParallelOptions(UVtools.Core.Operations.OperationProgress)">
+ <summary>
+ Gets the ParallelOptions with <see cref="P:UVtools.Core.CoreSettings.MaxDegreeOfParallelism"/> and the <see cref="T:System.Threading.CancellationToken"/> set
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.CoreSettings.EnableCuda">
+ <summary>
+ Gets or sets if operations run via CUDA when possible
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.CoreSettings.CanUseCuda">
+ <summary>
+ Gets if we can use cuda on operations
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.CoreSettings.DefaultLayerCompressionCodec">
+ <summary>
+ Gets or sets the default compression type for layers
+ </summary>
+ </member>
+ <member name="F:UVtools.Core.CoreSettings.AverageResin1000MlBottleCost">
+ <summary>
+ <para>The average resin 1000ml bottle cost, to use when bottle cost is not available.</para>
+ <para>Use 0 to disable.</para>
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.CoreSettings.DefaultSettingsFolder">
+ <summary>
+ Gets the default folder to save the settings
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.CoreSettings.DefaultSettingsFolderAndEnsureCreation">
+ <summary>
+ Gets the default folder to save the settings
+ </summary>
+ </member>
+ <member name="T:UVtools.Core.EmguCV.EmguContour">
+ <summary>
+ A contour cache for OpenCV
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.EmguCV.EmguContour.Area">
+ <summary>
+ Gets the area of the contour
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.EmguCV.EmguContour.Perimeter">
+ <summary>
+ Gets the perimeter of the contours
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.EmguCV.EmguContour.Centroid">
+ <summary>
+ Gets the centroid of the contour
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.EmguCV.EmguContour.Points">
+ <summary>
+ Gets or sets the contour <see cref="T:System.Drawing.Point"/>
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.EmguCV.EmguContour.IsEmpty">
+ <summary>
+ Gets if this contour have any point
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.EmguCV.EmguContour.IsInsideBounds(System.Drawing.Point)">
+ <summary>
+ Checks if a given <see cref="T:System.Drawing.Point"/> is inside the contour rectangle bounds
+ </summary>
+ <param name="point"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.EmguCV.EmguContour.IsInside(System.Drawing.Point)">
+ <summary>
+ Gets if a given <see cref="T:System.Drawing.Point"/> is inside the contour
+ </summary>
+ <param name="point"></param>
+ <returns></returns>
+ </member>
+ <member name="T:UVtools.Core.EmguCV.EmguContours">
+ <summary>
+ Utility methods for contour handling.
+ Use only with Tree type
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.EmguCV.EmguContours.GetContoursInside(Emgu.CV.Util.VectorOfVectorOfPoint,System.Int32[0:,0:],System.Drawing.Point,System.Boolean)">
+ <summary>
+ Gets contours inside a point
+ </summary>
+ <param name="contours"></param>
+ <param name="hierarchy"></param>
+ <param name="location"></param>
+ <param name="includeLimitingArea">If true it will include all limiting area, otherwise only outer contour will be returned</param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.EmguCV.EmguContours.GetContourInside(Emgu.CV.Util.VectorOfVectorOfPoint,System.Drawing.Point,System.Int32@)">
+ <summary>
+ Gets a contour given a location.
+ </summary>
+ <param name="contours"></param>
+ <param name="location"></param>
+ <param name="index">Contour index, -1 if not exists</param>
+ <returns>null if not exists</returns>
+ </member>
+ <member name="M:UVtools.Core.EmguCV.EmguContours.GetExternalContours(Emgu.CV.Util.VectorOfVectorOfPoint,System.Int32[0:,0:])">
+ <summary>
+ Gets only the outer most external contours
+ Only compatible with Tree type of contour detection
+ </summary>
+ <param name="contours"></param>
+ <param name="hierarchy"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.EmguCV.EmguContours.GetNegativeContours(Emgu.CV.Util.VectorOfVectorOfPoint,System.Int32[0:,0:])">
+ <summary>
+ Gets contours inside contours that are black pixels
+ </summary>
+ <param name="contours"></param>
+ <param name="hierarchy"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.EmguCV.EmguContours.GetContoursInGroups(Emgu.CV.Util.VectorOfVectorOfPoint,System.Int32[0:,0:])">
+ <summary>
+ Gets contours that are positive and negative pixels and group them by areas
+ Only compatible with Tree type of contour detection
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.EmguCV.EmguContours.GetPositiveContoursInGroups(Emgu.CV.Util.VectorOfVectorOfPoint,System.Int32[0:,0:])">
+ <summary>
+ Gets contours that are positive pixels and group them by areas
+ Only compatible with Tree type of contour detection
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.EmguCV.EmguContours.GetNegativeContoursInGroups(Emgu.CV.Util.VectorOfVectorOfPoint,System.Int32[0:,0:])">
+ <summary>
+ Gets contours inside contours that are black pixels and group them by areas
+ Only compatible with Tree type of contour detection
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.EmguCV.EmguContours.GetContourArea(Emgu.CV.Util.VectorOfVectorOfPoint)">
+ <summary>
+ Gets contour real area for a limited area
+ </summary>
+ <param name="contours"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.EmguCV.EmguContours.GetLargestContourArea(Emgu.CV.Util.VectorOfVectorOfPoint)">
+ <summary>
+ Gets the largest contour area from a contour list
+ </summary>
+ <param name="contours">Contour list</param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.EmguCV.EmguContours.GetContoursArea(System.Collections.Generic.List{Emgu.CV.Util.VectorOfVectorOfPoint},System.Boolean)">
+ <summary>
+ Gets contours real area for a group of contours
+ </summary>
+ <param name="contours">Grouped contours</param>
+ <param name="useParallel">True to run in parallel</param>
+ <returns>Array with same size with contours area</returns>
+ </member>
+ <member name="M:UVtools.Core.EmguCV.EmguContours.ContoursIntersect(Emgu.CV.Util.VectorOfVectorOfPoint,Emgu.CV.Util.VectorOfVectorOfPoint)">
+ <summary>
+ Checks if two contours intersects
+ </summary>
+ <param name="contour1">Contour 1</param>
+ <param name="contour2">Contour 2</param>
+ <returns></returns>
+ </member>
+ <member name="T:UVtools.Core.IndexStartNumber">
+ <summary>
+ Gets index start number, if starts on 0 or 1
+ </summary>
+ </member>
+ <member name="T:UVtools.Core.FlipDirection">
+ <summary>
+ Flip direction, same as <see cref="T:Emgu.CV.CvEnum.FlipType"/>, but add None which must be taken care/ignored on code
+ </summary>
+ </member>
+ <member name="T:UVtools.Core.RotateDirection">
+ <summary>
+ Rotate direction, same as <see cref="T:Emgu.CV.CvEnum.RotateFlags"/>, but add None which must be taken care/ignored on code
+ </summary>
+ </member>
+ <member name="F:UVtools.Core.RotateDirection.Rotate90Clockwise">
+ <summary>Rotate 90 degrees clockwise (0)</summary>
+ </member>
+ <member name="F:UVtools.Core.RotateDirection.Rotate180">
+ <summary>Rotate 180 degrees clockwise (1)</summary>
+ </member>
+ <member name="F:UVtools.Core.RotateDirection.Rotate90CounterClockwise">
+ <summary>Rotate 270 degrees clockwise (2)</summary>
+ </member>
+ <member name="F:UVtools.Core.SpeedUnit.MillimetersPerSecond">
+ <summary>
+ mm/s
+ </summary>
+ </member>
+ <member name="F:UVtools.Core.SpeedUnit.MillimetersPerMinute">
+ <summary>
+ mm/m
+ </summary>
+ </member>
+ <member name="F:UVtools.Core.SpeedUnit.CentimetersPerMinute">
+ <summary>
+ cm/m
+ </summary>
+ </member>
+ <member name="F:UVtools.Core.TimeUnits.Milliseconds">
+ <summary>
+ ms
+ </summary>
+ </member>
+ <member name="F:UVtools.Core.TimeUnits.Seconds">
+ <summary>
+ s
+ </summary>
+ </member>
+ <member name="T:UVtools.Core.IssuesOrderBy">
+ <summary>
+ Default order of issues to show on the UI list
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Extensions.DateTimeExtensions.Timestamp">
+ <summary>
+ Gets the Unix timestamp since Jan 1, 1970 UTC
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Extensions.DateTimeExtensions.TimestampSeconds">
+ <summary>
+ Gets the Unix timestamp in seconds since Jan 1, 1970 UTC
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Extensions.DateTimeExtensions.TimestampMinutes">
+ <summary>
+ Gets the Unix minutes in seconds since Jan 1, 1970 UTC
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Extensions.DateTimeExtensions.GetDateTimeFromTimestampSeconds(System.Double)">
+ <summary>
+ Gets the <see cref="T:System.DateTime"/> from a unix timestamp in seconds
+ </summary>
+ <param name="seconds"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.DateTimeExtensions.GetDateTimeFromTimestampMinutes(System.Double)">
+ <summary>
+ Gets the <see cref="T:System.DateTime"/> from a unix timestamp in minutes
+ </summary>
+ <param name="minutes"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.DateTimeExtensions.Age(System.DateTime)">
+ <summary>
+ Calculates the age in years of the current System.DateTime object today.
+ </summary>
+ <param name="birthDate">The date of birth</param>
+ <returns>Age in years today. 0 is returned for a future date of birth.</returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.DateTimeExtensions.Age(System.DateTime,System.DateTime)">
+ <summary>
+ Calculates the age in years of the current System.DateTime object on a later date.
+ </summary>
+ <param name="birthDate">The date of birth</param>
+ <param name="laterDate">The date on which to calculate the age.</param>
+ <returns>Age in years on a later day. 0 is returned as minimum.</returns>
+ </member>
+ <member name="F:UVtools.Core.Extensions.EmguExtensions.WhiteColor">
+ <summary>
+ White color: 255, 255, 255, 255
+ </summary>
+ </member>
+ <member name="F:UVtools.Core.Extensions.EmguExtensions.BlackColor">
+ <summary>
+ Black color: 0, 0, 0, 255
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.CreateBlankByteArray(Emgu.CV.Mat)">
+ <summary>
+ Create a byte array of size of this <see cref="T:Emgu.CV.Mat"/>
+ </summary>
+ <param name="mat"></param>
+ <returns>Blank byte array</returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.New(Emgu.CV.Mat)">
+ <summary>
+ Creates a new empty <see cref="T:Emgu.CV.Mat"/> with same size and type of the source
+ </summary>
+ <param name="mat"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.New(Emgu.CV.Mat,Emgu.CV.Structure.MCvScalar)">
+ <summary>
+ Creates a new empty <see cref="T:Emgu.CV.Mat"/> with same size and type of the source
+ </summary>
+ <param name="src"></param>
+ <param name="color"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.NewBlank(Emgu.CV.Mat)">
+ <summary>
+ Creates a new blanked (All zeros) <see cref="T:Emgu.CV.Mat"/> with same size and type of the source
+ </summary>
+ <param name="mat"></param>
+ <returns>Blanked <see cref="T:Emgu.CV.Mat"/></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.NewBlank(Emgu.CV.UMat)">
+ <summary>
+ Creates a new blanked (All zeros) <see cref="T:Emgu.CV.UMat"/> with same size and type of the source
+ </summary>
+ <param name="mat"></param>
+ <returns>Blanked <see cref="T:Emgu.CV.Mat"/></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.NewSetTo(Emgu.CV.Mat,Emgu.CV.Structure.MCvScalar)">
+ <summary>
+ Creates a <see cref="T:Emgu.CV.Mat"/> with same size and type of the source and set it to a color
+ </summary>
+ <param name="mat"></param>
+ <param name="color"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.InitMat(System.Drawing.Size,System.Int32,Emgu.CV.CvEnum.DepthType)">
+ <summary>
+ Creates a new <see cref="T:Emgu.CV.Mat"/> and zero it
+ </summary>
+ <param name="size"></param>
+ <param name="channels"></param>
+ <param name="depthType"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.InitUMat(System.Drawing.Size,System.Int32,Emgu.CV.CvEnum.DepthType)">
+ <summary>
+ Creates a new <see cref="T:Emgu.CV.UMat"/> and zero it
+ </summary>
+ <param name="size"></param>
+ <param name="channels"></param>
+ <param name="depthType"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.InitMat(System.Drawing.Size,Emgu.CV.Structure.MCvScalar,System.Int32,Emgu.CV.CvEnum.DepthType)">
+ <summary>
+ Creates a new <see cref="T:Emgu.CV.Mat"/> and set it to a <see cref="T:Emgu.CV.Structure.MCvScalar"/>
+ </summary>
+ <param name="size"></param>
+ <param name="color"></param>
+ <param name="channels"></param>
+ <param name="depthType"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.InitMats(System.UInt32)">
+ <summary>
+ Allocates a new array of mat's
+ </summary>
+ <param name="count">Array size</param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.InitMats(System.UInt32,System.Drawing.Size)">
+ <summary>
+ Allocates a new array of mat 's
+ </summary>
+ <param name="count">Array size</param>
+ <param name="size">Image size to create, use <see cref="F:System.Drawing.Size.Empty"/> to create a empty Mat</param>
+ <returns>New mat array</returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.ToGpuMat(Emgu.CV.Mat)">
+ <summary>
+ Create a new <see cref="T:Emgu.CV.Cuda.GpuMat"/> from <see cref="T:Emgu.CV.Mat"/>
+ </summary>
+ <param name="mat"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.GetUnmanagedMemoryStream(Emgu.CV.Mat,System.IO.FileAccess)">
+ <summary>
+ Gets the mat bytes as <see cref="T:System.IO.UnmanagedMemoryStream"/>
+ </summary>
+ <param name="mat"></param>
+ <param name="accessMode"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.GetBytePointer(Emgu.CV.Mat)">
+ <summary>
+ Gets the byte pointer of this <see cref="T:Emgu.CV.Mat"/>
+ </summary>
+ <param name="mat"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.GetDataByteSpan(Emgu.CV.Mat)">
+ <summary>
+ Gets the whole data span to manipulate or read pixels
+ </summary>
+ <param name="mat"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.GetDataByteSpan(Emgu.CV.Mat,System.Int32,System.Int32)">
+ <summary>
+ Gets the whole data span to manipulate or read pixels
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.GetDataByteSpan2D(Emgu.CV.Mat)">
+ <summary>
+ Gets the whole data span to manipulate or read pixels, use this when possibly using ROI
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.GetDataSpan``1(Emgu.CV.Mat,System.Int32,System.Int32)">
+ <summary>
+ Gets the data span to manipulate or read pixels given a length and offset
+ </summary>
+ <typeparam name="T"></typeparam>
+ <param name="mat"></param>
+ <param name="length"></param>
+ <param name="offset"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.GetPixelSpan``1(Emgu.CV.Mat,System.Int32,System.Int32)">
+ <summary>
+ Gets a single pixel span to manipulate or read pixels
+ </summary>
+ <typeparam name="T"></typeparam>
+ <param name="mat"></param>
+ <param name="x"></param>
+ <param name="y"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.GetPixelSpan``1(Emgu.CV.Mat,System.Int32)">
+ <summary>
+ Gets a single pixel span to manipulate or read pixels
+ </summary>
+ <typeparam name="T"></typeparam>
+ <param name="mat"></param>
+ <param name="pos"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.GetRowSpan``1(Emgu.CV.Mat,System.Int32,System.Int32,System.Int32)">
+ <summary>
+ Gets a row span to manipulate or read pixels
+ </summary>
+ <typeparam name="T"></typeparam>
+ <param name="mat"></param>
+ <param name="y"></param>
+ <param name="length"></param>
+ <param name="offset"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.GetColSpan``1(Emgu.CV.Mat,System.Int32,System.Int32,System.Int32)">
+ <summary>
+ Gets a col span to manipulate or read pixels
+ </summary>
+ <typeparam name="T"></typeparam>
+ <param name="mat"></param>
+ <param name="x"></param>
+ <param name="length"></param>
+ <param name="offset"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.FillSpan(Emgu.CV.Mat,System.Int32@,System.Int32,System.Byte,System.Byte)">
+ <summary>
+ Fill a mat span with a color
+ </summary>
+ <param name="mat">Mat to fill</param>
+ <param name="startPosition">Start position, this reference will increment by the <paramref name="length"/></param>
+ <param name="length">Length to fill</param>
+ <param name="color">Color to fill with</param>
+ <param name="colorFillMinThreshold">Ignore and fill to <paramref name="length"/> if <paramref name="color"/> is less than the threshold value</param>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.FillSpan(Emgu.CV.Mat,System.Int32,System.Int32,System.Int32,System.Byte,System.Byte)">
+ <summary>
+ Fill a mat span with a color
+ </summary>
+ <param name="mat">Mat to fill</param>
+ <param name="x"></param>
+ <param name="y"></param>
+ <param name="length">Length to fill</param>
+ <param name="color">Color to fill with</param>
+ <param name="colorFillMinThreshold">Ignore and set to <paramref name="length"/> if <paramref name="color"/> is less than the threshold value</param>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.FillSpan(Emgu.CV.Mat,System.Drawing.Point,System.Int32,System.Byte,System.Byte)">
+ <summary>
+ Fill a mat span with a color
+ </summary>
+ <param name="mat">Mat to fill</param>
+ <param name="position"></param>
+ <param name="length">Length to fill</param>
+ <param name="color">Color to fill with</param>
+ <param name="colorFillMinThreshold">Ignore and fill to <paramref name="length"/> if <paramref name="color"/> is less than the threshold value</param>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.GetRealStep(Emgu.CV.Mat)">
+ <summary>
+ .Step return the original Mat step, if ROI step still from original matrix which lead to errors.
+ Use this to get the real step size
+ </summary>
+ <param name="mat"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.GetLength(Emgu.CV.Mat)">
+ <summary>
+ Gets the total length of this <see cref="T:Emgu.CV.Mat"/>
+ </summary>
+ <param name="mat"></param>
+ <returns>The total length of this <see cref="T:Emgu.CV.Mat"/></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.GetPixelPos(Emgu.CV.Mat,System.Int32,System.Int32)">
+ <summary>
+ Gets a pixel index position on a span given X and Y
+ </summary>
+ <param name="mat"></param>
+ <param name="x">X coordinate</param>
+ <param name="y">Y coordinate</param>
+ <returns>The pixel index position</returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.GetPixelPos(Emgu.CV.Mat,System.Drawing.Point)">
+ <summary>
+ Gets a pixel index position on a span given X and Y
+ </summary>
+ <param name="mat"></param>
+ <param name="point">X and Y Location</param>
+ <returns>The pixel index position</returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.GetBytes(Emgu.CV.Mat)">
+ <summary>
+ Gets a byte array copy of this <see cref="T:Emgu.CV.Mat"/>
+ </summary>
+ <param name="mat"></param>
+ <returns>Byte array </returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.GetByte(Emgu.CV.Mat,System.Int32)">
+ <summary>
+ Gets a byte pixel at a position
+ </summary>
+ <param name="mat"></param>
+ <param name="pos"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.GetByte(Emgu.CV.Mat,System.Int32,System.Int32)">
+ <summary>
+ Gets a byte pixel at a position
+ </summary>
+ <param name="mat"></param>
+ <param name="x"></param>
+ <param name="y"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.GetByte(Emgu.CV.Mat,System.Drawing.Point)">
+ <summary>
+ Gets a byte pixel at a position
+ </summary>
+ <param name="mat"></param>
+ <param name="pos"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.SetByte(Emgu.CV.Mat,System.Int32,System.Byte)">
+ <summary>
+ Sets a byte pixel at a position
+ </summary>
+ <param name="mat"></param>
+ <param name="pixel"></param>
+ <param name="value"></param>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.SetByte(Emgu.CV.Mat,System.Int32,System.Byte[])">
+ <summary>
+ Sets a byte pixel at a position
+ </summary>
+ <param name="mat"></param>
+ <param name="pixel"></param>
+ <param name="value"></param>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.SetByte(Emgu.CV.Mat,System.Int32,System.Int32,System.Byte)">
+ <summary>
+ Sets a byte pixel at a position
+ </summary>
+ <param name="mat"></param>
+ <param name="x"></param>
+ <param name="y"></param>
+ <param name="value"></param>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.SetByte(Emgu.CV.Mat,System.Int32,System.Int32,System.Byte[])">
+ <summary>
+ Sets a byte pixel at a position
+ </summary>
+ <param name="mat"></param>
+ <param name="x"></param>
+ <param name="y"></param>
+ <param name="value"></param>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.SetBytes(Emgu.CV.Mat,System.Byte[])">
+ <summary>
+ Sets bytes
+ </summary>
+ <param name="mat"></param>
+ <param name="value"></param>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.GetPngByes(Emgu.CV.IInputArray)">
+ <summary>
+ Gets PNG byte array
+ </summary>
+ <param name="mat"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.CopyCenterToCenter(Emgu.CV.Mat,System.Drawing.Size,Emgu.CV.Mat)">
+ <summary>
+ Copy a region from <see cref="T:Emgu.CV.Mat"/> to center of other <see cref="T:Emgu.CV.Mat"/>
+ </summary>
+ <param name="src">Source <see cref="T:Emgu.CV.Mat"/> to be copied to</param>
+ <param name="size">Size of the center offset</param>
+ <param name="dst">Target <see cref="T:Emgu.CV.Mat"/> to paste the <paramref name="src"/></param>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.CopyRegionToCenter(Emgu.CV.Mat,System.Drawing.Rectangle,Emgu.CV.Mat)">
+ <summary>
+ Copy a region from <see cref="T:Emgu.CV.Mat"/> to center of other <see cref="T:Emgu.CV.Mat"/>
+ </summary>
+ <param name="src">Source <see cref="T:Emgu.CV.Mat"/> to be copied to</param>
+ <param name="region">Region to copy</param>
+ <param name="dst">Target <see cref="T:Emgu.CV.Mat"/> to paste the <paramref name="src"/></param>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.CopyToCenter(Emgu.CV.Mat,Emgu.CV.Mat)">
+ <summary>
+ Copy a <see cref="T:Emgu.CV.Mat"/> to center of other <see cref="T:Emgu.CV.Mat"/>
+ </summary>
+ <param name="src">Source <see cref="T:Emgu.CV.Mat"/> to be copied to</param>
+ <param name="dst">Target <see cref="T:Emgu.CV.Mat"/> to paste the <paramref name="src"/></param>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.Roi(Emgu.CV.Mat,System.Drawing.Rectangle)">
+ <summary>
+ Gets a Roi, but return source when roi is empty or have same size as source
+ </summary>
+ <param name="mat"></param>
+ <param name="roi"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.Roi(Emgu.CV.Mat,System.Drawing.Size)">
+ <summary>
+ Gets a Roi at x=0 and y=0 given a size, but return source when roi is empty or have same size as source
+ </summary>
+ <param name="mat"></param>
+ <param name="size"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.Roi(Emgu.CV.Mat,Emgu.CV.Mat)">
+ <summary>
+ Gets a Roi from a mat size, but return source when roi is empty or have same size as source
+ </summary>
+ <param name="mat"></param>
+ <param name="fromMat"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.RoiFromCenter(Emgu.CV.Mat,System.Drawing.Size)">
+ <summary>
+ Gets a Roi from center, but return source when have same size as source
+ </summary>
+ <param name="mat"></param>
+ <param name="size"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.NewMatFromCenterRoi(Emgu.CV.Mat,System.Drawing.Size,System.Drawing.Rectangle)">
+ <summary>
+ Gets a new mat obtained from it center at a target size and roi
+ </summary>
+ <param name="mat"></param>
+ <param name="targetSize"></param>
+ <param name="roi"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.IsZeroed(Emgu.CV.Mat,System.Byte,System.Int32,System.Int32)">
+ <summary>
+ Gets if a <see cref="T:Emgu.CV.Mat"/> is all zeroed by a threshold
+ </summary>
+ <param name="mat"></param>
+ <param name="threshold">Pixel brightness threshold</param>
+ <param name="startPos">Start pixel position</param>
+ <param name="length">Pixel span length</param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.FindFirstNegativePixel(Emgu.CV.Mat,System.Int32,System.Int32)">
+ <summary>
+ Finds the first negative (Black) pixel
+ </summary>
+ <param name="mat"></param>
+ <param name="startPos">Start pixel position</param>
+ <param name="length">Pixel span length</param>
+ <returns>Pixel position in the span, or -1 if not found</returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.FindFirstPositivePixel(Emgu.CV.Mat,System.Int32,System.Int32)">
+ <summary>
+ Finds the first positive pixel
+ </summary>
+ <param name="mat"></param>
+ <param name="startPos">Start pixel position</param>
+ <param name="length">Pixel span length</param>
+ <returns>Pixel position in the span, or -1 if not found</returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.FindFirstPixelEqualTo(Emgu.CV.Mat,System.Byte,System.Int32,System.Int32)">
+ <summary>
+ Finds the first pixel that is <paramref name="value"/>
+ </summary>
+ <param name="mat"></param>
+ <param name="value"></param>
+ <param name="startPos">Start pixel position</param>
+ <param name="length">Pixel span length</param>
+ <returns>Pixel position in the span, or -1 if not found</returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.FindFirstPixelLessThan(Emgu.CV.Mat,System.Byte,System.Int32,System.Int32)">
+ <summary>
+ Finds the first pixel that is at less than <paramref name="value"/>
+ </summary>
+ <param name="mat"></param>
+ <param name="value"></param>
+ <param name="startPos">Start pixel position</param>
+ <param name="length">Pixel span length</param>
+ <returns>Pixel position in the span, or -1 if not found</returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.FindFirstPixelEqualOrLessThan(Emgu.CV.Mat,System.Byte,System.Int32,System.Int32)">
+ <summary>
+ Finds the first pixel that is at less or equal than <paramref name="value"/>
+ </summary>
+ <param name="mat"></param>
+ <param name="value"></param>
+ <param name="startPos">Start pixel position</param>
+ <param name="length">Pixel span length</param>
+ <returns>Pixel position in the span, or -1 if not found</returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.FindFirstPixelGreaterThan(Emgu.CV.Mat,System.Byte,System.Int32,System.Int32)">
+ <summary>
+ Finds the first pixel that is at greater than <paramref name="value"/>
+ </summary>
+ <param name="mat"></param>
+ <param name="value"></param>
+ <param name="startPos">Start pixel position</param>
+ <param name="length">Pixel span length</param>
+ <returns>Pixel position in the span, or -1 if not found</returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.FindFirstPixelEqualOrGreaterThan(Emgu.CV.Mat,System.Byte,System.Int32,System.Int32)">
+ <summary>
+ Finds the first pixel that is at equal or greater than <paramref name="value"/>
+ </summary>
+ <param name="mat"></param>
+ <param name="value"></param>
+ <param name="startPos">Start pixel position</param>
+ <param name="length">Pixel span length</param>
+ <returns>Pixel position in the span, or -1 if not found</returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.Rotate(Emgu.CV.Mat,System.Double,System.Drawing.Size,System.Double)">
+ <summary>
+ Rotates a Mat by an angle while keeping the image size
+ </summary>
+ <param name="src"></param>
+ <param name="angle">Angle in degrees to rotate</param>
+ <param name="newSize"></param>
+ <param name="scale"></param>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.Rotate(Emgu.CV.Mat,Emgu.CV.Mat,System.Double,System.Drawing.Size,System.Double)">
+ <summary>
+ Rotates a Mat by an angle while keeping the image size
+ </summary>
+ <param name="src"></param>
+ <param name="dst"></param>
+ <param name="angle"></param>
+ <param name="newSize"></param>
+ <param name="scale"></param>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.RotateAdjustBounds(Emgu.CV.Mat,System.Double,System.Double)">
+ <summary>
+ Rotates a Mat by an angle while adjusting bounds to fit the rotated content
+ </summary>
+ <param name="src"></param>
+ <param name="angle"></param>
+ <param name="scale"></param>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.RotateAdjustBounds(Emgu.CV.Mat,Emgu.CV.Mat,System.Double,System.Double)">
+ <summary>
+ Rotates a Mat by an angle while adjusting bounds to fit the rotated content
+ </summary>
+ <param name="src"></param>
+ <param name="dst"></param>
+ <param name="angle"></param>
+ <param name="scale"></param>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.TransformFromCenter(Emgu.CV.Mat,System.Double,System.Double,System.Double,System.Double,System.Drawing.Size,Emgu.CV.CvEnum.Inter)">
+ <summary>
+ Scale image from it center, preserving src bounds
+ https://stackoverflow.com/a/62543674/933976
+ </summary>
+ <param name="src"><see cref="T:Emgu.CV.Mat"/> to transform</param>
+ <param name="xScale">X scale factor</param>
+ <param name="yScale">Y scale factor</param>
+ <param name="xTrans">X translation</param>
+ <param name="yTrans">Y translation</param>
+ <param name="dstSize">Destination size</param>
+ <param name="interpolation">Interpolation mode</param>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.Resize(Emgu.CV.Mat,System.Double,Emgu.CV.CvEnum.Inter)">
+ <summary>
+ Resize source mat proportional to a scale
+ </summary>
+ <param name="src"></param>
+ <param name="scale"></param>
+ <param name="interpolation"></param>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.CorrectThickness(System.Int32)">
+ <summary>
+ Correct openCV thickness which always results larger than specified
+ </summary>
+ <param name="thickness">Thickness to correct</param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.DrawRotatedSquare(Emgu.CV.Mat,System.Int32,System.Drawing.Point,Emgu.CV.Structure.MCvScalar,System.Int32,System.Int32,Emgu.CV.CvEnum.LineType)">
+ <summary>
+ Draw a rotated square around a center point
+ </summary>
+ <param name="src"></param>
+ <param name="size"></param>
+ <param name="center"></param>
+ <param name="color"></param>
+ <param name="angle"></param>
+ <param name="thickness"></param>
+ <param name="lineType"></param>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.DrawRotatedRectangle(Emgu.CV.Mat,System.Drawing.Size,System.Drawing.Point,Emgu.CV.Structure.MCvScalar,System.Int32,System.Int32,Emgu.CV.CvEnum.LineType)">
+ <summary>
+ Draw a rotated rectangle around a center point
+ </summary>
+ <param name="src"></param>
+ <param name="size"></param>
+ <param name="center"></param>
+ <param name="color"></param>
+ <param name="angle"></param>
+ <param name="thickness"></param>
+ <param name="lineType"></param>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.DrawPolygon(Emgu.CV.Mat,System.Int32,System.Int32,System.Drawing.Point,Emgu.CV.Structure.MCvScalar,System.Double,System.Int32,Emgu.CV.CvEnum.LineType,System.Nullable{Emgu.CV.CvEnum.FlipType})">
+ <summary>
+ Draw a polygon given number of sides and length
+ </summary>
+ <param name="src"></param>
+ <param name="sides">Number of polygon sides, Special: use 1 to draw a line and >= 100 to draw a native OpenCV circle</param>
+ <param name="radius">Radius</param>
+ <param name="center">Center position</param>
+ <param name="color"></param>
+ <param name="startingAngle"></param>
+ <param name="thickness"></param>
+ <param name="lineType"></param>
+ <param name="flip"></param>
+ </member>
+ <member name="F:UVtools.Core.Extensions.EmguExtensions.PutTextLineAlignment.None">
+ <summary>
+ Left aligned without trimming, openCV default call
+ </summary>
+ </member>
+ <member name="F:UVtools.Core.Extensions.EmguExtensions.PutTextLineAlignment.Left">
+ <summary>
+ Left aligned and trimmed
+ </summary>
+ </member>
+ <member name="F:UVtools.Core.Extensions.EmguExtensions.PutTextLineAlignment.Center">
+ <summary>
+ Center aligned and trimmed
+ </summary>
+ </member>
+ <member name="F:UVtools.Core.Extensions.EmguExtensions.PutTextLineAlignment.Right">
+ <summary>
+ Right aligned and trimmed
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.PutTextExtended(Emgu.CV.IInputOutputArray,System.String,System.Drawing.Point,Emgu.CV.CvEnum.FontFace,System.Double,Emgu.CV.Structure.MCvScalar,System.Int32,System.Int32,Emgu.CV.CvEnum.LineType,System.Boolean,UVtools.Core.Extensions.EmguExtensions.PutTextLineAlignment)">
+ <summary>
+ Extended OpenCV PutText to accepting line breaks and line alignment
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.PutTextRotated(Emgu.CV.Mat,System.String,System.Drawing.Point,Emgu.CV.CvEnum.FontFace,System.Double,Emgu.CV.Structure.MCvScalar,System.Int32,Emgu.CV.CvEnum.LineType,System.Boolean,UVtools.Core.Extensions.EmguExtensions.PutTextLineAlignment,System.Double)">
+ <summary>
+ Extended OpenCV PutText to accepting line breaks, line alignment and rotation
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.PutTextRotated(Emgu.CV.Mat,System.String,System.Drawing.Point,Emgu.CV.CvEnum.FontFace,System.Double,Emgu.CV.Structure.MCvScalar,System.Int32,System.Int32,Emgu.CV.CvEnum.LineType,System.Boolean,UVtools.Core.Extensions.EmguExtensions.PutTextLineAlignment,System.Double)">
+ <summary>
+ Extended OpenCV PutText to accepting line breaks, line alignment and rotation
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.FindContours(Emgu.CV.IInputOutputArray,Emgu.CV.CvEnum.RetrType,Emgu.CV.CvEnum.ChainApproxMethod,System.Drawing.Point)">
+ <summary>
+ Retrieves contours from the binary image as a contour tree. The pointer firstContour is filled by the function. It is provided as a convenient way to obtain the hierarchy value as int[,].
+ The function modifies the source image content
+ </summary>
+ <param name="mat">The source 8-bit single channel image. Non-zero pixels are treated as 1s, zero pixels remain 0s - that is image treated as binary. To get such a binary image from grayscale, one may use cvThreshold, cvAdaptiveThreshold or cvCanny. The function modifies the source image content</param>
+ <param name="mode">Retrieval mode</param>
+ <param name="method">Approximation method (for all the modes, except CV_RETR_RUNS, which uses built-in approximation). </param>
+ <param name="offset">Offset, by which every contour point is shifted. This is useful if the contours are extracted from the image ROI and then they should be analyzed in the whole image context</param>
+ <returns>The contour hierarchy</returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.FindContours(Emgu.CV.IInputOutputArray,System.Int32[0:,0:]@,Emgu.CV.CvEnum.RetrType,Emgu.CV.CvEnum.ChainApproxMethod,System.Drawing.Point)">
+ <summary>
+ Retrieves contours from the binary image as a contour tree. The pointer firstContour is filled by the function. It is provided as a convenient way to obtain the hierarchy value as int[,].
+ The function modifies the source image content
+ </summary>
+ <param name="mat">The source 8-bit single channel image. Non-zero pixels are treated as 1s, zero pixels remain 0s - that is image treated as binary. To get such a binary image from grayscale, one may use cvThreshold, cvAdaptiveThreshold or cvCanny. The function modifies the source image content</param>
+ <param name="hierarchy">The contour hierarchy</param>
+ <param name="mode">Retrieval mode</param>
+ <param name="method">Approximation method (for all the modes, except CV_RETR_RUNS, which uses built-in approximation). </param>
+ <param name="offset">Offset, by which every contour point is shifted. This is useful if the contours are extracted from the image ROI and then they should be analyzed in the whole image context</param>
+ <returns>Detected contours. Each contour is stored as a vector of points.</returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.Skeletonize(Emgu.CV.Mat,System.Int32@,System.Drawing.Size,Emgu.CV.CvEnum.ElementShape)">
+ <summary>
+ Determine the area (i.e. total number of pixels in the image),
+ initialize the output skeletonized image, and construct the
+ morphological structuring element
+ </summary>
+ <param name="src"></param>
+ <param name="iterations">Number of iterations required to perform the skeletoize</param>
+ <param name="ksize"></param>
+ <param name="elementShape"></param>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.Skeletonize(Emgu.CV.Mat,System.Drawing.Size,Emgu.CV.CvEnum.ElementShape)">
+ <summary>
+ Determine the area (i.e. total number of pixels in the image),
+ initialize the output skeletonized image, and construct the
+ morphological structuring element
+ </summary>
+ <param name="src"></param>
+ <param name="ksize"></param>
+ <param name="elementShape"></param>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.GetDynamicKernel(System.Int32@,Emgu.CV.CvEnum.ElementShape)">
+ <summary>
+ Reduces iterations to 1 and generate a kernel to match the iterations effect
+ </summary>
+ <param name="iterations"></param>
+ <param name="elementShape"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.EmguExtensions.DisposeIfSubMatrix(Emgu.CV.Mat)">
+ <summary>
+ Dispose this <see cref="T:Emgu.CV.Mat"/> if it's a sub matrix / roi
+ </summary>
+ <param name="mat">Mat to dispose</param>
+ </member>
+ <member name="M:UVtools.Core.Extensions.FileStreamExtensions.ReadToEnd(System.IO.FileStream)">
+ <summary>
+ Read from current position to the end of the file
+ </summary>
+ <param name="fs"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.FileStreamExtensions.SeekDoWorkAndRewind(System.IO.FileStream,System.Int64,System.Action)">
+ <summary>
+ Seek to a position, do work and rewind to initial position
+ </summary>
+ <param name="fs"></param>
+ <param name="action"></param>
+ <param name="offset"></param>
+ </member>
+ <member name="M:UVtools.Core.Extensions.PathExtensions.GetTemporaryDirectory(System.String,System.Boolean)">
+ <summary>
+ Gets a temporary directory path
+ </summary>
+ <param name="prepend">Prepend a string to temporary directory name</param>
+ <param name="createDirectory">True to create that directory, otherwise false</param>
+ <returns>The temporary directory path</returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.PathExtensions.GetTemporaryDirectory(System.Boolean)">
+ <summary>
+ Gets a temporary directory path
+ </summary>
+ <param name="createDirectory">True to create that directory, otherwise false</param>
+ <returns>The temporary directory path</returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.PathExtensions.GetTemporaryFilePathWithExtension(System.String,System.String)">
+ <summary>
+ Gets a temporary file with a extension and a prepend string
+ </summary>
+ <param name="extension">Extension name without the dot (.)</param>
+ <param name="prepend">Optional prepend file name</param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.SizeExtensions.HaveZero(System.Drawing.Size)">
+ <summary>
+ Gets if this size have a zero value on width or height
+ </summary>
+ <param name="size"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.SizeExtensions.Exchange(System.Drawing.Size)">
+ <summary>
+ Exchange width with height
+ </summary>
+ <param name="size"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.SizeExtensions.HaveZero(System.Drawing.SizeF)">
+ <summary>
+ Gets if this size have a zero value on width or height
+ </summary>
+ <param name="size"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.StreamExtensions.ToArray(System.IO.Stream)">
+ <summary>
+ Converts stream into byte array
+ </summary>
+ <param name="stream">Input</param>
+ <returns>Byte array data</returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.StringExtensions.FirstCharToUpper(System.String)">
+ <summary>
+ Upper the first character in a string
+ </summary>
+ <param name="input">Input string</param>
+ <returns>Modified string with fist character upper</returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.StringExtensions.Convert``1(System.String)">
+ <summary>
+ Converts a string into a target type
+ </summary>
+ <typeparam name="T">Target type to convert into</typeparam>
+ <param name="input">Value</param>
+ <returns>Converted value into target type</returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.TypeExtensions.CreateInstance(System.Type,System.Object[])">
+ <summary>
+ Creates a new instance of this type
+ </summary>
+ <param name="type"></param>
+ <param name="paramArray"></param>
+ </member>
+ <member name="M:UVtools.Core.Extensions.TypeExtensions.CreateInstance``1(System.Type,System.Object[])">
+ <summary>
+ Creates a new instance of this type
+ </summary>
+ <typeparam name="T">Target type</typeparam>
+ <param name="type"></param>
+ <param name="paramArray"></param>
+ <returns>New instance of {T}</returns>
+ </member>
+ <member name="F:UVtools.Core.Extensions.UnitExtensions.InchToMillimeter">
+ <summary>
+ 1 inch to 1 mm
+ </summary>
+ </member>
+ <member name="F:UVtools.Core.Extensions.UnitExtensions.MillimeterToInch">
+ <summary>
+ 1 mm to 1 inch
+ </summary>
+ </member>
+ <member name="T:UVtools.Core.Extensions.ZipArchiveExtensions.Overwrite">
+ <summary>
+ Used to specify what our overwrite policy
+ is for files we are extracting.
+ </summary>
+ </member>
+ <member name="T:UVtools.Core.Extensions.ZipArchiveExtensions.ArchiveAction">
+ <summary>
+ Used to identify what we will do if we are
+ trying to create a zip file and it already
+ exists.
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Extensions.ZipArchiveExtensions.ImprovedExtractToDirectory(System.String,System.String,UVtools.Core.Extensions.ZipArchiveExtensions.Overwrite)">
+ <summary>
+ Unzips the specified file to the given folder in a safe
+ manner. This plans for missing paths and existing files
+ and handles them gracefully.
+ </summary>
+ <param name="sourceArchiveFileName">
+ The name of the zip file to be extracted
+ </param>
+ <param name="destinationDirectoryName">
+ The directory to extract the zip file to
+ </param>
+ <param name="overwriteMethod">
+ Specifies how we are going to handle an existing file.
+ The default is IfNewer.
+ </param>
+ </member>
+ <member name="M:UVtools.Core.Extensions.ZipArchiveExtensions.ImprovedExtractToDirectory(System.IO.Compression.ZipArchive,System.String,UVtools.Core.Extensions.ZipArchiveExtensions.Overwrite)">
+ <summary>
+ Unzips the specified file to the given folder in a safe
+ manner. This plans for missing paths and existing files
+ and handles them gracefully.
+ </summary>
+ <param name="archive">
+ The zip file to be extracted
+ </param>
+ <param name="destinationDirectoryName">
+ The directory to extract the zip file to
+ </param>
+ <param name="overwriteMethod">
+ Specifies how we are going to handle an existing file.
+ The default is IfNewer.
+ </param>
+ <returns>The number of extracted files</returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.ZipArchiveExtensions.ImprovedExtractToFile(System.IO.Compression.ZipArchiveEntry,System.String,System.Boolean,UVtools.Core.Extensions.ZipArchiveExtensions.Overwrite)">
+ <summary>
+ Safely extracts a single file from a zip file
+ </summary>
+ <param name="entry">
+ The zip entry we are pulling the file from
+ </param>
+ <param name="destinationPath">
+ The root of where the file is going
+ </param>
+ <param name="preserveFullName">True to preserve full name and create all directories up to the file, otherwise false to extract the file just to <paramref name="destinationPath"/></param>
+ <param name="overwriteMethod">
+ Specifies how we are going to handle an existing file.
+ The default is Overwrite.IfNewer.
+ </param>
+ <returns>The extracted file path</returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.ZipArchiveExtensions.AddToArchive(System.String,System.Collections.Generic.List{System.String},UVtools.Core.Extensions.ZipArchiveExtensions.ArchiveAction,UVtools.Core.Extensions.ZipArchiveExtensions.Overwrite,System.IO.Compression.CompressionLevel)">
+ <summary>
+ Allows you to add files to an archive, whether the archive
+ already exists or not
+ </summary>
+ <param name="archiveFullName">
+ The name of the archive to you want to add your files to
+ </param>
+ <param name="files">
+ A set of file names that are to be added
+ </param>
+ <param name="action">
+ Specifies how we are going to handle an existing archive
+ </param>
+ <param name="fileOverwrite"></param>
+ <param name="compression">
+ Specifies what type of compression to use - defaults to Optimal
+ </param>
+ </member>
+ <member name="M:UVtools.Core.Extensions.ZipArchiveExtensions.GetPutFile(System.IO.Compression.ZipArchive,System.String)">
+ <summary>
+ Get or put a file into archive
+ </summary>
+ <param name="input"><see cref="T:System.IO.Compression.ZipArchive"/></param>
+ <param name="filename">Filename to create</param>
+ <returns>Created <see cref="T:System.IO.Compression.ZipArchiveEntry"/></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.ZipArchiveExtensions.PutFileContent(System.IO.Compression.ZipArchive,System.String,System.String,System.IO.Compression.ZipArchiveMode)">
+ <summary>
+ Create or update a file into archive and write content to it
+ </summary>
+ <param name="input"><see cref="T:System.IO.Compression.ZipArchive"/></param>
+ <param name="filename">Filename to create</param>
+ <param name="content">Content to write</param>
+ <param name="mode"></param>
+ <returns>Created <see cref="T:System.IO.Compression.ZipArchiveEntry"/></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.ZipArchiveExtensions.PutFileContent(System.IO.Compression.ZipArchive,System.String,System.Byte[],System.IO.Compression.ZipArchiveMode)">
+ <summary>
+ Create or update a file into archive and write content to it
+ </summary>
+ <param name="input"><see cref="T:System.IO.Compression.ZipArchive"/></param>
+ <param name="filename">Filename to create</param>
+ <param name="content">Content to write</param>
+ <param name="mode"></param>
+ <returns>Created <see cref="T:System.IO.Compression.ZipArchiveEntry"/></returns>
+ </member>
+ <member name="M:UVtools.Core.Extensions.ZipArchiveExtensions.PutFileContent(System.IO.Compression.ZipArchive,System.String,System.IO.Stream,System.IO.Compression.ZipArchiveMode)">
+ <summary>
+ Create or update a file into archive and write content to it
+ </summary>
+ <param name="input"><see cref="T:System.IO.Compression.ZipArchive"/></param>
+ <param name="filename">Filename to create</param>
+ <param name="content">Content to write</param>
+ <param name="mode"></param>
+ <returns>Created <see cref="T:System.IO.Compression.ZipArchiveEntry"/></returns>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.Header.Magic">
+ <summary>
+ Gets a magic number identifying the file type.
+ 0x12fd_0019 for cbddlp
+ 0x12fd_0086 for ctb
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.Header.Version">
+ <summary>
+ Gets the software version
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.Header.BedSizeX">
+ <summary>
+ Gets dimensions of the printer’s X output volume, in millimeters.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.Header.BedSizeY">
+ <summary>
+ Gets dimensions of the printer’s Y output volume, in millimeters.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.Header.BedSizeZ">
+ <summary>
+ Gets dimensions of the printer’s Z output volume, in millimeters.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.Header.TotalHeightMilimeter">
+ <summary>
+ Gets the height of the model described by this file, in millimeters.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.Header.LayerHeightMilimeter">
+ <summary>
+ Gets the layer height setting used at slicing, in millimeters. Actual height used by the machine is in the layer table.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.Header.LayerExposureSeconds">
+ <summary>
+ Gets the exposure time setting used at slicing, in seconds, for normal (non-bottom) layers, respectively. Actual time used by the machine is in the layer table.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.Header.BottomExposureSeconds">
+ <summary>
+ Gets the exposure time setting used at slicing, in seconds, for bottom layers. Actual time used by the machine is in the layer table.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.Header.LightOffDelay">
+ <summary>
+ Gets the light off time setting used at slicing, for normal layers, in seconds. Actual time used by the machine is in the layer table. Note that light_off_time_s appears in both the file header and ExtConfig.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.Header.BottomLayersCount">
+ <summary>
+ Gets number of layers configured as "bottom." Note that this field appears in both the file header and ExtConfig..
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.Header.ResolutionX">
+ <summary>
+ Gets the printer resolution along X axis, in pixels. This information is critical to correctly decoding layer images.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.Header.ResolutionY">
+ <summary>
+ Gets the printer resolution along Y axis, in pixels. This information is critical to correctly decoding layer images.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.Header.PreviewLargeOffsetAddress">
+ <summary>
+ Gets the file offsets of ImageHeader records describing the larger preview images.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.Header.LayersDefinitionOffsetAddress">
+ <summary>
+ Gets the file offset of a table of LayerHeader records giving parameters for each printed layer.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.Header.LayerCount">
+ <summary>
+ Gets the number of records in the layer table for the first level set. In ctb files, that’s equivalent to the total number of records, but records may be multiplied in antialiased cbddlp files.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.Header.PreviewSmallOffsetAddress">
+ <summary>
+ Gets the file offsets of ImageHeader records describing the smaller preview images.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.Header.PrintTime">
+ <summary>
+ Gets the estimated duration of print, in seconds.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.Header.ProjectorType">
+ <summary>
+ Gets the records whether this file was generated assuming normal (0) or mirrored (1) image projection. LCD printers are "mirrored" for this purpose.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.Header.PrintParametersOffsetAddress">
+ <summary>
+ Gets the print parameters table offset
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.Header.PrintParametersSize">
+ <summary>
+ Gets the print parameters table size in bytes.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.Header.AntiAliasLevel">
+ <summary>
+ Gets the number of times each layer image is repeated in the file.
+ This is used to implement antialiasing in cbddlp files. When greater than 1,
+ the layer table will actually contain layer_table_count * level_set_count entries.
+ See the section on antialiasing for details.
+ 1 for ctb
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.Header.LightPWM">
+ <summary>
+ Gets the PWM duty cycle for the UV illumination source on normal levels, respectively.
+ This appears to be an 8-bit quantity where 0xFF is fully on and 0x00 is fully off.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.Header.BottomLightPWM">
+ <summary>
+ Gets the PWM duty cycle for the UV illumination source on bottom levels, respectively.
+ This appears to be an 8-bit quantity where 0xFF is fully on and 0x00 is fully off.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.Header.EncryptionKey">
+ <summary>
+ Gets the key used to encrypt layer data, or 0 if encryption is not used.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.Header.SlicerOffset">
+ <summary>
+ Gets the slicer tablet offset
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.Header.SlicerSize">
+ <summary>
+ Gets the slicer table size in bytes
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.PrintParameters.BottomLiftHeight">
+ <summary>
+ Gets the distance to lift the build platform away from the vat after bottom layers, in millimeters.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.PrintParameters.BottomLiftSpeed">
+ <summary>
+ Gets the speed at which to lift the build platform away from the vat after bottom layers, in millimeters per minute.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.PrintParameters.LiftHeight">
+ <summary>
+ Gets the distance to lift the build platform away from the vat after normal layers, in millimeters.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.PrintParameters.LiftSpeed">
+ <summary>
+ Gets the speed at which to lift the build platform away from the vat after normal layers, in millimeters per minute.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.PrintParameters.RetractSpeed">
+ <summary>
+ Gets the speed to use when the build platform re-approaches the vat after lift, in millimeters per minute.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.PrintParameters.VolumeMl">
+ <summary>
+ Gets the estimated required resin, measured in milliliters. The volume number is derived from the model.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.PrintParameters.WeightG">
+ <summary>
+ Gets the estimated grams, derived from volume using configured factors for density.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.PrintParameters.CostDollars">
+ <summary>
+ Gets the estimated cost based on currency unit the user had configured. Derived from volume using configured factors for density and cost.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.PrintParameters.BottomLightOffDelay">
+ <summary>
+ Gets the light off time setting used at slicing, for bottom layers, in seconds. Actual time used by the machine is in the layer table. Note that light_off_time_s appears in both the file header and ExtConfig.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.PrintParameters.LightOffDelay">
+ <summary>
+ Gets the light off time setting used at slicing, for normal layers, in seconds. Actual time used by the machine is in the layer table. Note that light_off_time_s appears in both the file header and ExtConfig.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.PrintParameters.BottomLayerCount">
+ <summary>
+ Gets number of layers configured as "bottom." Note that this field appears in both the file header and ExtConfig.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.SlicerInfo.MachineNameAddress">
+ <summary>
+ Gets the machine name offset to a string naming the machine type, and its length in bytes.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.SlicerInfo.MachineNameSize">
+ <summary>
+ Gets the machine size in bytes
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.SlicerInfo.PerLayerSettings">
+ <summary>
+ Gets the parameter used to control encryption.
+ Not totally understood. 0/8 for cbddlp files, 0xF (15) for ctb files, 0x2000000F (536870927) for v3 ctb and 1073741839 for v4 ctb files to allow per layer parameters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.SlicerInfo.ModifiedTimestampMinutes">
+ <summary>
+ Gets the minutes since Jan 1, 1970 UTC
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.SlicerInfo.AntiAliasLevel">
+ <summary>
+ Gets the user-selected antialiasing level. For cbddlp files this will match the level_set_count. For ctb files, this number is essentially arbitrary.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.SlicerInfo.SoftwareVersion">
+ <summary>
+ Gets a version of software that generated this file, encoded with major, minor, and patch release in bytes starting from the MSB down.
+ (No provision is made to name the software being used, so this assumes that only one software package can generate the files.
+ Probably best to hardcode it at 0x01060300.)
+ </summary>17170480
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.SlicerInfo.MachineName">
+ <summary>
+ Gets the machine name. string is not nul-terminated.
+ The character encoding is currently unknown — all observed files in the wild use 7-bit ASCII characters only.
+ Note that the machine type here is set in the software profile, and is not the name the user assigned to the machine.
+ </summary>
+ </member>
+ <member name="T:UVtools.Core.FileFormats.ChituboxFile.Preview">
+ <summary>
+ The files contain two preview images.
+ These are shown on the printer display when choosing which file to print, sparing the poor printer from needing to render a 3D image from scratch.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.Preview.ResolutionX">
+ <summary>
+ Gets the X dimension of the preview image, in pixels.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.Preview.ResolutionY">
+ <summary>
+ Gets the Y dimension of the preview image, in pixels.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.Preview.ImageOffset">
+ <summary>
+ Gets the image offset of the encoded data blob.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.Preview.ImageLength">
+ <summary>
+ Gets the image length in bytes.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.LayerDef.PositionZ">
+ <summary>
+ Gets the build platform Z position for this layer, measured in millimeters.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.LayerDef.ExposureTime">
+ <summary>
+ Gets the exposure time for this layer, in seconds.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.LayerDef.LightOffSeconds">
+ <summary>
+ Gets how long to keep the light off after exposing this layer, in seconds.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.LayerDef.DataAddress">
+ <summary>
+ Gets the layer image offset to encoded layer data, and its length in bytes.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.LayerDef.DataSize">
+ <summary>
+ Gets the layer image length in bytes.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.LayerDefEx.LayerDef">
+ <summary>
+ Gets a copy of layer data definition
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.ChituboxFile.LayerDefEx.TotalSize">
+ <summary>
+ Gets the total size of ctbImageInfo and Image data
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.CTBEncryptedFile.SlicerSettings.ChecksumValue">
+ <summary>
+ Checksum of unix timestamp
+ </summary>
+ </member>
+ <member name="T:UVtools.Core.FileFormats.CTBEncryptedFile.Preview">
+ <summary>
+ The files contain two preview images.
+ These are shown on the printer display when choosing which file to print, sparing the poor printer from needing to render a 3D image from scratch.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.CTBEncryptedFile.Preview.ResolutionX">
+ <summary>
+ Gets the X dimension of the preview image, in pixels.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.CTBEncryptedFile.Preview.ResolutionY">
+ <summary>
+ Gets the Y dimension of the preview image, in pixels.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.CTBEncryptedFile.Preview.ImageOffset">
+ <summary>
+ Gets the image offset of the encoded data blob.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.CTBEncryptedFile.Preview.ImageLength">
+ <summary>
+ Gets the image length in bytes.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.CXDLPFile.Header.HeaderSize">
+ <summary>
+ Gets the size of the header
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.CXDLPFile.Header.HeaderValue">
+ <summary>
+ Gets the header name
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.CXDLPFile.Header.PrinterModelSize">
+ <summary>
+ Gets the size of the printer model
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.CXDLPFile.Header.PrinterModelArray">
+ <summary>
+ Gets the printer model
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.CXDLPFile.Header.LayerCount">
+ <summary>
+ Gets the number of records in the layer table
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.CXDLPFile.Header.ResolutionX">
+ <summary>
+ Gets the printer resolution along X axis, in pixels. This information is critical to correctly decoding layer images.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.CXDLPFile.Header.ResolutionY">
+ <summary>
+ Gets the printer resolution along Y axis, in pixels. This information is critical to correctly decoding layer images.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.CXDLPFile.Footer.FooterSize">
+ <summary>
+ Gets the size of the header
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.CXDLPFile.Footer.FooterValue">
+ <summary>
+ Gets the header name
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.CXDLPv1File.Header.HeaderSize">
+ <summary>
+ Gets the size of the header
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.CXDLPv1File.Header.HeaderValue">
+ <summary>
+ Gets the header name
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.CXDLPv1File.Header.LayerCount">
+ <summary>
+ Gets the number of records in the layer table
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.CXDLPv1File.Header.ResolutionX">
+ <summary>
+ Gets the printer resolution along X axis, in pixels. This information is critical to correctly decoding layer images.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.CXDLPv1File.Header.ResolutionY">
+ <summary>
+ Gets the printer resolution along Y axis, in pixels. This information is critical to correctly decoding layer images.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.CXDLPv1File.Footer.FooterSize">
+ <summary>
+ Gets the size of the header
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.CXDLPv1File.Footer.FooterValue">
+ <summary>
+ Gets the header name
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.Magic">
+ <summary>
+ Gets a magic number identifying the file type.
+ 0xBD3C7AC8 for fdg
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.Version">
+ <summary>
+ Gets the software version
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.LayerCount">
+ <summary>
+ Gets the number of records in the layer table
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.BottomLayersCount">
+ <summary>
+ Gets number of layers configured as "bottom." Note that this field appears in both the file header and ExtConfig..
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.ProjectorType">
+ <summary>
+ Gets the records whether this file was generated assuming normal (0) or mirrored (1) image projection. LCD printers are "mirrored" for this purpose.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.ResolutionX">
+ <summary>
+ Gets the printer resolution along X axis, in pixels. This information is critical to correctly decoding layer images.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.ResolutionY">
+ <summary>
+ Gets the printer resolution along Y axis, in pixels. This information is critical to correctly decoding layer images.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.LayerHeightMilimeter">
+ <summary>
+ Gets the layer height setting used at slicing, in millimeters. Actual height used by the machine is in the layer table.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.LayerExposureSeconds">
+ <summary>
+ Gets the exposure time setting used at slicing, in seconds, for normal (non-bottom) layers, respectively. Actual time used by the machine is in the layer table.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.BottomExposureSeconds">
+ <summary>
+ Gets the exposure time setting used at slicing, in seconds, for bottom layers. Actual time used by the machine is in the layer table.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.PreviewLargeOffsetAddress">
+ <summary>
+ Gets the file offsets of ImageHeader records describing the larger preview images.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.PreviewSmallOffsetAddress">
+ <summary>
+ Gets the file offsets of ImageHeader records describing the smaller preview images.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.LayersDefinitionOffsetAddress">
+ <summary>
+ Gets the file offset of a table of LayerHeader records giving parameters for each printed layer.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.PrintTime">
+ <summary>
+ Gets the estimated duration of print, in seconds.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.AntiAliasLevel">
+ <summary>
+ ?
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.LightPWM">
+ <summary>
+ Gets the PWM duty cycle for the UV illumination source on normal levels, respectively.
+ This appears to be an 8-bit quantity where 0xFF is fully on and 0x00 is fully off.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.BottomLightPWM">
+ <summary>
+ Gets the PWM duty cycle for the UV illumination source on bottom levels, respectively.
+ This appears to be an 8-bit quantity where 0xFF is fully on and 0x00 is fully off.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.OverallHeightMilimeter">
+ <summary>
+ Gets the height of the model described by this file, in millimeters.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.BedSizeX">
+ <summary>
+ Gets dimensions of the printer’s X output volume, in millimeters.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.BedSizeY">
+ <summary>
+ Gets dimensions of the printer’s Y output volume, in millimeters.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.BedSizeZ">
+ <summary>
+ Gets dimensions of the printer’s Z output volume, in millimeters.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.EncryptionKey">
+ <summary>
+ Gets the key used to encrypt layer data, or 0 if encryption is not used.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.VolumeMl">
+ <summary>
+ Gets the estimated required resin, measured in milliliters. The volume number is derived from the model.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.WeightG">
+ <summary>
+ Gets the estimated grams, derived from volume using configured factors for density.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.CostDollars">
+ <summary>
+ Gets the estimated cost based on currency unit the user had configured. Derived from volume using configured factors for density and cost.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.MachineNameAddress">
+ <summary>
+ Gets the machine name offset to a string naming the machine type, and its length in bytes.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.MachineNameSize">
+ <summary>
+ Gets the machine size in bytes
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.MachineName">
+ <summary>
+ Gets the machine name. string is not nul-terminated.
+ The character encoding is currently unknown — all observed files in the wild use 7-bit ASCII characters only.
+ Note that the machine type here is set in the software profile, and is not the name the user assigned to the machine.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.BottomLightOffDelay">
+ <summary>
+ Gets the light off time setting used at slicing, for bottom layers, in seconds. Actual time used by the machine is in the layer table. Note that light_off_time_s appears in both the file header and ExtConfig.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.LightOffDelay">
+ <summary>
+ Gets the light off time setting used at slicing, for normal layers, in seconds. Actual time used by the machine is in the layer table. Note that light_off_time_s appears in both the file header and ExtConfig.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.BottomLiftHeight">
+ <summary>
+ Gets the distance to lift the build platform away from the vat after bottom layers, in millimeters.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.BottomLiftSpeed">
+ <summary>
+ Gets the speed at which to lift the build platform away from the vat after bottom layers, in millimeters per minute.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.LiftHeight">
+ <summary>
+ Gets the distance to lift the build platform away from the vat after normal layers, in millimeters.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.LiftSpeed">
+ <summary>
+ Gets the speed at which to lift the build platform away from the vat after normal layers, in millimeters per minute.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.RetractSpeed">
+ <summary>
+ Gets the speed to use when the build platform re-approaches the vat after lift, in millimeters per minute.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Header.ModifiedTimestampMinutes">
+ <summary>
+ Gets the minutes since Jan 1, 1970 UTC
+ </summary>
+ </member>
+ <member name="T:UVtools.Core.FileFormats.FDGFile.Preview">
+ <summary>
+ The files contain two preview images.
+ These are shown on the printer display when choosing which file to print, sparing the poor printer from needing to render a 3D image from scratch.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Preview.ResolutionX">
+ <summary>
+ Gets the X dimension of the preview image, in pixels.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Preview.ResolutionY">
+ <summary>
+ Gets the Y dimension of the preview image, in pixels.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Preview.ImageOffset">
+ <summary>
+ Gets the image offset of the encoded data blob.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.Preview.ImageLength">
+ <summary>
+ Gets the image length in bytes.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.LayerDef.LayerPositionZ">
+ <summary>
+ Gets the build platform Z position for this layer, measured in millimeters.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.LayerDef.LayerExposure">
+ <summary>
+ Gets the exposure time for this layer, in seconds.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.LayerDef.LightOffDelay">
+ <summary>
+ Gets how long to keep the light off after exposing this layer, in seconds.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.LayerDef.DataAddress">
+ <summary>
+ Gets the layer image offset to encoded layer data, and its length in bytes.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FDGFile.LayerDef.DataSize">
+ <summary>
+ Gets the layer image length in bytes.
+ </summary>
+ </member>
+ <member name="T:UVtools.Core.FileFormats.FileExtension">
+ <summary>
+ Represents a file extension for slicer file formats
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileExtension.FileFormatType">
+ <summary>
+ Stores a specific <see cref="T:UVtools.Core.FileFormats.FileFormat"/> type that should be used to create with this FileExtension instance
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileExtension.Extension">
+ <summary>
+ Gets the extension name without the dot (.)
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileExtension.Description">
+ <summary>
+ Gets the extension description
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileExtension.IsVisibleOnFileFilters">
+ <summary>
+ Gets if the extension shows up on open file dialog filters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileExtension.IsVisibleOnConvertMenu">
+ <summary>
+ Gets if the extension shows up on convert to menu
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileExtension.Tag">
+ <summary>
+ Gets a tag object
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileExtension.Filter">
+ <summary>
+ Gets the file filter for open and save dialogs
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileExtension.#ctor(System.Type,System.String,System.String,System.Boolean,System.Boolean,System.Object)">
+ <summary>
+ Constructor
+ </summary>
+ <param name="fileFormatType">The exact <see cref="T:UVtools.Core.FileFormats.FileFormat"/> type</param>
+ <param name="extension">The extension name without the dot (.)</param>
+ <param name="description">The extension description</param>
+ <param name="isVisibleOnFileFilters">True if this extension is visible on open file dialog filters</param>
+ <param name="isVisibleOnConvertMenu">True if this extension is visible on convert to menu</param>
+ <param name="tag">Tag object</param>
+ </member>
+ <member name="T:UVtools.Core.FileFormats.FileFormat">
+ <summary>
+ Slicer <see cref="T:UVtools.Core.FileFormats.FileFormat"/> representation
+ </summary>
+ </member>
+ <member name="T:UVtools.Core.FileFormats.FileFormat.FileFormatType">
+ <summary>
+ Enumeration of file format types
+ </summary>
+ </member>
+ <member name="T:UVtools.Core.FileFormats.FileFormat.FileThumbnailSize">
+ <summary>
+ Enumeration of file thumbnail size types
+ </summary>
+ </member>
+ <member name="F:UVtools.Core.FileFormats.FileFormat.TransitionLayerTypes.Firmware">
+ <summary>
+ Firmware transition layers are handled by printer firmware
+ </summary>
+ </member>
+ <member name="F:UVtools.Core.FileFormats.FileFormat.TransitionLayerTypes.Software">
+ <summary>
+ Software transition layers are handled by software and written on layer data
+ </summary>
+ </member>
+ <member name="T:UVtools.Core.FileFormats.FileFormat.FileDecodeType">
+ <summary>
+ File decode type
+ </summary>
+ </member>
+ <member name="F:UVtools.Core.FileFormats.FileFormat.FileDecodeType.Full">
+ <summary>
+ Decodes all the file information and caches layer images
+ </summary>
+ </member>
+ <member name="F:UVtools.Core.FileFormats.FileFormat.FileDecodeType.Partial">
+ <summary>
+ Decodes only the information in the file and thumbnails, no layer image is read nor cached, fast
+ </summary>
+ </member>
+ <member name="T:UVtools.Core.FileFormats.FileFormat.FileImageType">
+ <summary>
+ Image data type
+ </summary>
+ </member>
+ <member name="F:UVtools.Core.FileFormats.FileFormat.FileImageType.Png24BgrAA">
+ <summary>
+ eg: Nova Bene4
+ </summary>
+ </member>
+ <member name="F:UVtools.Core.FileFormats.FileFormat.FileImageType.Png24RgbAA">
+ <summary>
+ eg: Uniformation GKone
+ </summary>
+ </member>
+ <member name="T:UVtools.Core.FileFormats.FileFormat.PrintParameterModifier">
+ <summary>
+ Available Print Parameters to modify
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.PrintParameterModifier.Name">
+ <summary>
+ Gets the name
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.PrintParameterModifier.Description">
+ <summary>
+ Gets the description
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.PrintParameterModifier.ValueUnit">
+ <summary>
+ Gets the value unit
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.PrintParameterModifier.Minimum">
+ <summary>
+ Gets the minimum value
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.PrintParameterModifier.Maximum">
+ <summary>
+ Gets the maximum value
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.PrintParameterModifier.Increment">
+ <summary>
+ Gets the incrementing value for the dropdown
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.PrintParameterModifier.DecimalPlates">
+ <summary>
+ Gets the number of decimal plates
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.PrintParameterModifier.OldValue">
+ <summary>
+ Gets or sets the current / old value
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.PrintParameterModifier.NewValue">
+ <summary>
+ Gets or sets the new value
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.PrintParameterModifier.HasChanged">
+ <summary>
+ Gets if the value has changed
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.AvailableFormats">
+ <summary>
+ Gets the available formats to process
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.AllFileFilters">
+ <summary>
+ Gets all filters for open and save file dialogs
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.FileExtensionsCount">
+ <summary>
+ Gets the count of available file extensions
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.FindByExtensionOrFilePath(System.String,System.Boolean)">
+ <summary>
+ Find <see cref="T:UVtools.Core.FileFormats.FileFormat"/> by an extension
+ </summary>
+ <param name="extensionOrFilePath"> name to find</param>
+ <param name="createNewInstance">True to create a new instance of found file format, otherwise will return a pre created one which should be used for read-only purpose</param>
+ <returns><see cref="T:UVtools.Core.FileFormats.FileFormat"/> object or null if not found</returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.FindByExtensionOrFilePath(System.String,System.Byte@,System.Boolean)">
+ <summary>
+ Find <see cref="T:UVtools.Core.FileFormats.FileFormat"/> by an extension
+ </summary>
+ <param name="extensionOrFilePath"> name to find</param>
+ <param name="fileFormatsSharingExt">Number of file formats sharing the input extension</param>
+ <param name="createNewInstance">True to create a new instance of found file format, otherwise will return a pre created one which should be used for read-only purpose</param>
+ <returns><see cref="T:UVtools.Core.FileFormats.FileFormat"/> object or null if not found</returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.FindByType(System.String,System.Boolean)">
+ <summary>
+ Find <see cref="T:UVtools.Core.FileFormats.FileFormat"/> by an type name
+ </summary>
+ <param name="type">Type name to find</param>
+ <param name="createNewInstance">True to create a new instance of found file format, otherwise will return a pre created one which should be used for read-only purpose</param>
+ <returns><see cref="T:UVtools.Core.FileFormats.FileFormat"/> object or null if not found</returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.FindByAnyMeans(System.String,System.Boolean)">
+ <summary>
+ Find <see cref="T:UVtools.Core.FileFormats.FileFormat"/> by any means (type name, extension, filepath)
+ </summary>
+ <param name="name">Name to find</param>
+ <param name="createNewInstance">True to create a new instance of found file format, otherwise will return a pre created one which should be used for read-only purpose</param>
+ <returns><see cref="T:UVtools.Core.FileFormats.FileFormat"/> object or null if not found</returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.FindByType(System.Type,System.Boolean)">
+ <summary>
+ Find <see cref="T:UVtools.Core.FileFormats.FileFormat"/> by an type
+ </summary>
+ <param name="type">Type to find</param>
+ <param name="createNewInstance">True to create a new instance of found file format, otherwise will return a pre created one which should be used for read-only purpose</param>
+ <returns><see cref="T:UVtools.Core.FileFormats.FileFormat"/> object or null if not found</returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.CopyParameters(UVtools.Core.FileFormats.FileFormat,UVtools.Core.FileFormats.FileFormat)">
+ <summary>
+ Copy parameters from one file to another
+ </summary>
+ <param name="from">From source file</param>
+ <param name="to">To target file</param>
+ <returns>Number of affected parameters</returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.CompressLayer(System.IO.Stream)">
+ <summary>
+ Compress a layer from a <see cref="T:System.IO.Stream"/>
+ </summary>
+ <param name="input"><see cref="T:System.IO.Stream"/> to compress</param>
+ <returns>Compressed byte array</returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.CompressLayer(System.Byte[])">
+ <summary>
+ Compress a layer from a byte array
+ </summary>
+ <param name="input">byte array to compress</param>
+ <returns>Compressed byte array</returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.DecompressLayer(System.Byte[])">
+ <summary>
+ Decompress a layer from a byte array
+ </summary>
+ <param name="input">byte array to decompress</param>
+ <returns>Decompressed byte array</returns>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.FileType">
+ <summary>
+ Gets the file format type
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.LayerImageType">
+ <summary>
+ Gets the layer image data type used on this file format
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.FileExtensions">
+ <summary>
+ Gets the valid file extensions for this <see cref="T:UVtools.Core.FileFormats.FileFormat"/>
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.FormatSpeedUnit">
+ <summary>
+ The speed unit used by this file format in his internal data
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.PrintParameterModifiers">
+ <summary>
+ Gets the available <see cref="T:UVtools.Core.FileFormats.FileFormat.PrintParameterModifier"/>
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.PrintParameterPerLayerModifiers">
+ <summary>
+ Gets the available <see cref="T:UVtools.Core.FileFormats.FileFormat.PrintParameterModifier"/> per layer
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.HavePrintParameterModifier(UVtools.Core.FileFormats.FileFormat.PrintParameterModifier)">
+ <summary>
+ Checks if a <see cref="T:UVtools.Core.FileFormats.FileFormat.PrintParameterModifier"/> exists on print parameters
+ </summary>
+ <param name="modifier"></param>
+ <returns>True if exists, otherwise false</returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.HaveLayerParameterModifier(UVtools.Core.FileFormats.FileFormat.PrintParameterModifier)">
+ <summary>
+ Checks if a <see cref="T:UVtools.Core.FileFormats.FileFormat.PrintParameterModifier"/> exists on layer parameters
+ </summary>
+ <param name="modifier"></param>
+ <returns>True if exists, otherwise false</returns>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.FileFilter">
+ <summary>
+ Gets the file filter for open and save dialogs
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.FileFilterAvalonia">
+ <summary>
+ Gets all valid file extensions for Avalonia file dialog
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.FileFilterExtensionsOnly">
+ <summary>
+ Gets all valid file extensions in "*.extension1;*.extension2" format
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.SuppressRebuildProperties">
+ <summary>
+ Gets or sets if change a global property should rebuild every layer data based on them
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.TemporaryOutputFileFullPath">
+ <summary>
+ Gets the temporary output file path to use on save and encode
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.FileFullPath">
+ <summary>
+ Gets the input file path loaded into this <see cref="T:UVtools.Core.FileFormats.FileFormat"/>
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.AvailableVersions">
+ <summary>
+ Gets the available versions to set in this file format
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.AvailableVersionsCount">
+ <summary>
+ Gets the amount of available versions in this file format
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.DefaultVersion">
+ <summary>
+ Gets the default version to use in this file when not setting the version
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.Version">
+ <summary>
+ Gets or sets the version of this file format
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.ThumbnailsCount">
+ <summary>
+ Gets the thumbnails count present in this file format
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.CreatedThumbnailsCount">
+ <summary>
+ Gets the number of created thumbnails
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.ThumbnailsOriginalSize">
+ <summary>
+ Gets the original thumbnail sizes
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.Thumbnails">
+ <summary>
+ Gets the thumbnails for this <see cref="T:UVtools.Core.FileFormats.FileFormat"/>
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.Layers">
+ <summary>
+ Layers List
+ </summary>
+ </member>
+ <member name="F:UVtools.Core.FileFormats.FileFormat.FirstLayerIndex">
+ <summary>
+ First layer index, this is always 0
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.LastLayerIndex">
+ <summary>
+ Gets the last layer index
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.FirstLayer">
+ <summary>
+ Gets the first layer
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.LastBottomLayer">
+ <summary>
+ Gets the last bottom layer
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.FirstNormalLayer">
+ <summary>
+ Gets the first normal layer
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.LastLayer">
+ <summary>
+ Gets the last layer
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.SmallestBottomLayer">
+ <summary>
+ Gets the smallest bottom layer using the pixel count
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.LargestBottomLayer">
+ <summary>
+ Gets the largest bottom layer using the pixel count
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.SmallestNormalLayer">
+ <summary>
+ Gets the smallest normal layer using the pixel count
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.LargestNormalLayer">
+ <summary>
+ Gets the largest layer using the pixel count
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.SmallestLayer">
+ <summary>
+ Gets the smallest normal layer using the pixel count
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.LargestLayer">
+ <summary>
+ Gets the largest layer using the pixel count
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.BottomLayers">
+ <summary>
+ Gets all bottom layers
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.NormalLayers">
+ <summary>
+ Gets all normal layers
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.TransitionLayers">
+ <summary>
+ Gets all transition layers
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.TsmcLayers">
+ <summary>
+ Gets all layers that use TSMC values
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.SamePositionedLayers">
+ <summary>
+ Gets all layers on same position but exclude the first layer on that position
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.AllLayersAreUsingGlobalParameters">
+ <summary>
+ True if all layers are using same value parameters as global settings, otherwise false
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.AnyLayerIsUsingTSMC">
+ <summary>
+ True if any layer is using TSMC, otherwise false when none of layers is using TSMC
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.IsUsingTSMC">
+ <summary>
+ True if the file global property is using TSMC, otherwise false when not using
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.IsModified">
+ <summary>
+ Gets if any layer got modified, otherwise false
+ Sets all layers `IsModified` flag
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.BoundingRectangle">
+ <summary>
+ Gets the bounding rectangle of the model
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.BoundingRectangleMillimeters">
+ <summary>
+ Gets the bounding rectangle of the object in millimeters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.RequireFullEncode">
+ <summary>
+ Gets or sets if modifications require a full encode to save
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.Resolution">
+ <summary>
+ Gets the image width and height resolution
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.ResolutionX">
+ <summary>
+ Gets the image width resolution
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.ResolutionY">
+ <summary>
+ Gets the image height resolution
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.DisplayPixelCount">
+ <summary>
+ Gets the display total number of pixels (<see cref="P:UVtools.Core.FileFormats.FileFormat.ResolutionX"/> * <see cref="P:UVtools.Core.FileFormats.FileFormat.ResolutionY"/>)
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.Display">
+ <summary>
+ Gets the size of display in millimeters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.DisplayWidth">
+ <summary>
+ Gets or sets the display width in millimeters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.DisplayHeight">
+ <summary>
+ Gets or sets the display height in millimeters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.DisplayDiagonal">
+ <summary>
+ Gets the display diagonal in millimeters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.DisplayDiagonalInches">
+ <summary>
+ Gets the display diagonal in inch's
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.DisplayAspectRatio">
+ <summary>
+ Gets the display ratio
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.DisplayMirror">
+ <summary>
+ Gets or sets if images need to be mirrored on lcd to print on the correct orientation
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.IsDisplayPortrait">
+ <summary>
+ Gets if the display is in portrait mode
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.IsDisplayLandscape">
+ <summary>
+ Gets if the display is in landscape mode
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.MachineZ">
+ <summary>
+ Gets or sets the maximum printer build Z volume
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.Xppmm">
+ <summary>
+ Gets or sets the pixels per mm on X direction
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.Yppmm">
+ <summary>
+ Gets or sets the pixels per mm on Y direction
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.Ppmm">
+ <summary>
+ Gets or sets the pixels per mm
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.PpmmMax">
+ <summary>
+ Gets the maximum (Width or Height) pixels per mm
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.PixelWidth">
+ <summary>
+ Gets the pixel width in millimeters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.PixelHeight">
+ <summary>
+ Gets the pixel height in millimeters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.PixelSize">
+ <summary>
+ Gets the pixel size in millimeters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.PixelSizeMax">
+ <summary>
+ Gets the maximum pixel between width and height in millimeters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.PixelArea">
+ <summary>
+ Gets the pixel area in millimeters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.PixelWidthMicrons">
+ <summary>
+ Gets the pixel width in microns
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.PixelHeightMicrons">
+ <summary>
+ Gets the pixel height in microns
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.PixelSizeMicrons">
+ <summary>
+ Gets the pixel size in microns
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.PixelSizeMicronsMax">
+ <summary>
+ Gets the maximum pixel between width and height in microns
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.PixelAreaMicrons">
+ <summary>
+ Gets the pixel area in millimeters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.Volume">
+ <summary>
+ Gets the file volume (XYZ) in mm^3
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.HaveAntiAliasing">
+ <summary>
+ Checks if this file have AntiAliasing
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.IsAntiAliasingEmulated">
+ <summary>
+ Gets if the AntiAliasing is emulated/fake with fractions of the time or if is real grey levels
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.AntiAliasing">
+ <summary>
+ Gets or sets the AntiAliasing level
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.LayerHeight">
+ <summary>
+ Gets Layer Height in mm
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.LayerHeightUm">
+ <summary>
+ Gets Layer Height in um
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.PrintHeight">
+ <summary>
+ Gets or sets the print height in mm
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.SupportPerLayerSettings">
+ <summary>
+ Checks if this file format supports per layer settings
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.LayerCount">
+ <summary>
+ Gets or sets the layer count
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.BottomLayersHeight">
+ <summary>
+ Gets or sets the total height for the bottom layers in millimeters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.BottomLayerCount">
+ <summary>
+ Gets or sets the number of initial layer count
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.TransitionLayerType">
+ <summary>
+ Gets the transition layer type
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.TransitionLayerCount">
+ <summary>
+ Gets or sets the number of transition layers
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.HaveTransitionLayers">
+ <summary>
+ Gets if have transition layers
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.MaximumPossibleTransitionLayerCount">
+ <summary>
+ Gets the maximum transition layers this layer collection supports
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.NormalLayerCount">
+ <summary>
+ Gets the number of normal layer count
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.BottomLightOffDelay">
+ <summary>
+ Gets or sets the bottom layer off time in seconds
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.LightOffDelay">
+ <summary>
+ Gets or sets the layer off time in seconds
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.BottomWaitTimeBeforeCure">
+ <summary>
+ Gets or sets the bottom time in seconds to wait before cure the layer
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.WaitTimeBeforeCure">
+ <summary>
+ Gets or sets the time in seconds to wait after cure the layer
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.BottomExposureTime">
+ <summary>
+ Gets or sets the initial exposure time for <see cref="P:UVtools.Core.FileFormats.FileFormat.BottomLayerCount"/> in seconds
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.ExposureTime">
+ <summary>
+ Gets or sets the normal layer exposure time in seconds
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.BottomWaitTimeAfterCure">
+ <summary>
+ Gets or sets the bottom time in seconds to wait after cure the layer
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.WaitTimeAfterCure">
+ <summary>
+ Gets or sets the time in seconds to wait after cure the layer
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.BottomLiftHeightTotal">
+ <summary>
+ Gets: Total bottom lift height (lift1 + lift2)
+ Sets: Bottom lift1 with value and lift2 with 0
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.LiftHeightTotal">
+ <summary>
+ Gets: Total lift height (lift1 + lift2)
+ Sets: Lift1 with value and lift2 with 0
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.BottomLiftHeight">
+ <summary>
+ Gets or sets the bottom lift height in mm
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.BottomLiftSpeed">
+ <summary>
+ Gets or sets the bottom lift speed in mm/min
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.LiftHeight">
+ <summary>
+ Gets or sets the lift height in mm
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.LiftSpeed">
+ <summary>
+ Gets or sets the speed in mm/min
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.BottomLiftHeight2">
+ <summary>
+ Gets or sets the second bottom lift height in mm
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.BottomLiftSpeed2">
+ <summary>
+ Gets or sets the second bottom lift speed in mm/min
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.LiftHeight2">
+ <summary>
+ Gets or sets the second lift height in mm (This is the closer to fep retract)
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.LiftSpeed2">
+ <summary>
+ Gets or sets the second speed in mm/min (This is the closer to fep retract)
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.BottomWaitTimeAfterLift">
+ <summary>
+ Gets or sets the bottom time in seconds to wait after lift / before retract
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.WaitTimeAfterLift">
+ <summary>
+ Gets or sets the time in seconds to wait after lift / before retract
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.BottomRetractHeightTotal">
+ <summary>
+ Gets: Total bottom retract height (retract1 + retract2) alias of <see cref="P:UVtools.Core.FileFormats.FileFormat.BottomLiftHeightTotal"/>
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.RetractHeightTotal">
+ <summary>
+ Gets: Total retract height (retract1 + retract2) alias of <see cref="P:UVtools.Core.FileFormats.FileFormat.LiftHeightTotal"/>
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.BottomRetractHeight">
+ <summary>
+ Gets the bottom retract height in mm
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.BottomRetractSpeed">
+ <summary>
+ Gets the speed in mm/min for the bottom retracts
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.RetractHeight">
+ <summary>
+ Gets the retract height in mm
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.RetractSpeed">
+ <summary>
+ Gets the speed in mm/min for the retracts
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.BottomRetractHeight2">
+ <summary>
+ Gets or sets the second bottom retract height in mm
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.BottomRetractSpeed2">
+ <summary>
+ Gets the speed in mm/min for the retracts
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.RetractHeight2">
+ <summary>
+ Gets or sets the second retract height in mm
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.RetractSpeed2">
+ <summary>
+ Gets the speed in mm/min for the retracts
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.BottomLightPWM">
+ <summary>
+ Gets or sets the bottom pwm value from 0 to 255
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.LightPWM">
+ <summary>
+ Gets or sets the pwm value from 0 to 255
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.MinimumBottomSpeed">
+ <summary>
+ Gets the minimum used speed for bottom layers in mm/min
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.MinimumNormalSpeed">
+ <summary>
+ Gets the minimum used speed for normal bottom layers in mm/min
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.MinimumSpeed">
+ <summary>
+ Gets the minimum used speed in mm/min
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.MaximumBottomSpeed">
+ <summary>
+ Gets the maximum used speed for bottom layers in mm/min
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.MaximumNormalSpeed">
+ <summary>
+ Gets the maximum used speed for normal bottom layers in mm/min
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.MaximumSpeed">
+ <summary>
+ Gets the maximum used speed in mm/min
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.PrintTime">
+ <summary>
+ Gets the estimate print time in seconds
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.PrintTimeComputed">
+ <summary>
+ Gets the calculated estimate print time in seconds
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.PrintTimeHours">
+ <summary>
+ Gets the estimate print time in hours
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.PrintTimeString">
+ <summary>
+ Gets the estimate print time in hours and minutes formatted
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.StartingMaterialMilliliters">
+ <summary>
+ Gets the starting material milliliters when the file was loaded
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.MaterialMilliliters">
+ <summary>
+ Gets the estimate used material in ml
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.MaterialGrams">
+ <summary>
+ Gets the estimate material in grams
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.StartingMaterialCost">
+ <summary>
+ Gets the starting material cost when the file was loaded
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.MaterialCost">
+ <summary>
+ Gets the estimate material cost
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.MaterialMilliliterCost">
+ <summary>
+ Gets the material cost per one milliliter
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.MaterialName">
+ <summary>
+ Gets the material name
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.MachineName">
+ <summary>
+ Gets the machine name
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.GCode">
+ <summary>
+ Gets the GCode, returns null if not supported
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.GCodeStr">
+ <summary>
+ Gets the GCode, returns null if not supported
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.SupportsGCode">
+ <summary>
+ Gets if this file format supports gcode
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.HaveGCode">
+ <summary>
+ Gets if this file have available gcode to read
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.SuppressRebuildGCode">
+ <summary>
+ Disable or enable the gcode auto rebuild when needed, set this to false to manually write your own gcode
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.Configs">
+ <summary>
+ Get all configuration objects with properties and values
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.IsValid">
+ <summary>
+ Gets if this file is valid to read
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.SetLayer(System.UInt32,UVtools.Core.Layers.Layer,System.Boolean)">
+ <summary>
+ Sets a layer
+ </summary>
+ <param name="index">Layer index</param>
+ <param name="layer">Layer to add</param>
+ <param name="makeClone">True to add a clone of the layer</param>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.SetLayers(System.Collections.Generic.IEnumerable{UVtools.Core.Layers.Layer},System.Boolean)">
+ <summary>
+ Add a list of layers
+ </summary>
+ <param name="layers">Layers to add</param>
+ <param name="makeClone">True to add a clone of layers</param>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.GetLayer(System.UInt32)">
+ <summary>
+ Get layer given index
+ </summary>
+ <param name="index">Layer index</param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.Clear">
+ <summary>
+ Clears all definitions and properties, it also dispose valid candidates
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.CanProcess(System.String)">
+ <summary>
+ Check if a file is valid and can be processed before read it against the <see cref="T:UVtools.Core.FileFormats.FileFormat"/> decode scheme
+ </summary>
+ <param name="fileFullPath"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.FileValidation(System.String)">
+ <summary>
+ Validate if a file is a valid <see cref="T:UVtools.Core.FileFormats.FileFormat"/>
+ </summary>
+ <param name="fileFullPath">Full file path</param>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.IsExtensionValid(System.String,System.Boolean)">
+ <summary>
+ Checks if a extension is valid under the <see cref="T:UVtools.Core.FileFormats.FileFormat"/>
+ </summary>
+ <param name="extension">Extension to check without the dot (.)</param>
+ <param name="isFilePath">True if <paramref name="extension"/> is a full file path, otherwise false for extension only</param>
+ <returns>True if valid, otherwise false</returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.GetFileExtensions(System.String,System.String)">
+ <summary>
+ Gets all valid file extensions in a specified format
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.GetThumbnail(System.UInt32)">
+ <summary>
+ Gets a thumbnail by it height or lower
+ </summary>
+ <param name="maxHeight">Max height allowed</param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.GetThumbnail(System.Boolean)">
+ <summary>
+ Gets a thumbnail by the largest or smallest
+ </summary>
+ <param name="largest">True to get the largest, otherwise false</param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.SetThumbnails(Emgu.CV.Mat[])">
+ <summary>
+ Sets thumbnails from a list of thumbnails and clone them
+ </summary>
+ <param name="images"></param>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.SetThumbnails(Emgu.CV.Mat)">
+ <summary>
+ Sets all thumbnails the same image
+ </summary>
+ <param name="image">Image to set</param>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.SetThumbnail(System.Int32,System.String)">
+ <summary>
+ Sets a thumbnail from a disk file
+ </summary>
+ <param name="index">Thumbnail index</param>
+ <param name="filePath"></param>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.OnBeforeEncode(System.Boolean)">
+ <summary>
+ Triggers before attempt to save/encode the file
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.OnAfterEncode(System.Boolean)">
+ <summary>
+ Triggers after save/encode the file
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.EncodeInternally(UVtools.Core.Operations.OperationProgress)">
+ <summary>
+ Encode to an output file
+ </summary>
+ <param name="progress"></param>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.Encode(System.String,UVtools.Core.Operations.OperationProgress)">
+ <summary>
+ Encode to an output file
+ </summary>
+ <param name="fileFullPath">Output file</param>
+ <param name="progress"></param>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.DecodeInternally(UVtools.Core.Operations.OperationProgress)">
+ <summary>
+ Decode a slicer file
+ </summary>
+ <param name="progress"></param>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.Decode(System.String,UVtools.Core.Operations.OperationProgress)">
+ <summary>
+ Decode a slicer file
+ </summary>
+ <param name="fileFullPath">file path to load, use null to reload file</param>
+ <param name="progress"></param>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.Decode(System.String,UVtools.Core.FileFormats.FileFormat.FileDecodeType,UVtools.Core.Operations.OperationProgress)">
+ <summary>
+ Decode a slicer file
+ </summary>
+ <param name="fileFullPath">file path to load, use null to reload file</param>
+ <param name="fileDecodeType"></param>
+ <param name="progress"></param>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.Reload(UVtools.Core.FileFormats.FileFormat.FileDecodeType,UVtools.Core.Operations.OperationProgress)">
+ <summary>
+ Reloads the file
+ </summary>
+ <param name="fileDecodeType"></param>
+ <param name="progress"></param>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.Reload(UVtools.Core.Operations.OperationProgress)">
+ <summary>
+ Reloads the file
+ </summary>
+ <param name="progress"></param>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.ReloadAsync(UVtools.Core.FileFormats.FileFormat.FileDecodeType,UVtools.Core.Operations.OperationProgress)">
+ <summary>
+ Reloads the file
+ </summary>
+ <param name="fileDecodeType"></param>
+ <param name="progress"></param>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.ReloadAsync(UVtools.Core.Operations.OperationProgress)">
+ <summary>
+ Reloads the file
+ </summary>
+ <param name="progress"></param>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.Extract(System.String,System.Boolean,System.Boolean,UVtools.Core.Operations.OperationProgress)">
+ <summary>
+ Extract contents to a folder
+ </summary>
+ <param name="path">Path to folder where content will be extracted</param>
+ <param name="genericConfigExtract"></param>
+ <param name="genericLayersExtract"></param>
+ <param name="progress"></param>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.ResetCurrentTransitionLayers(System.Boolean)">
+ <summary>
+ Re-set exposure time to the transition layers
+ </summary>
+ <param name="resetExposureTimes">True to default all the previous transition layers exposure time, otherwise false</param>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.SetTransitionLayers(System.UInt16,System.Boolean)">
+ <summary>
+ Set transition layers and exposure times, but do not set that count to file property <see cref="P:UVtools.Core.FileFormats.FileFormat.TransitionLayerCount"/>
+ </summary>
+ <param name="transitionLayerCount">Number of transition layers to set</param>
+ <param name="resetExposureTimes">True to default all the previous transition layers exposure time, otherwise false</param>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.GetHeightFromLayer(System.UInt32,System.Boolean)">
+ <summary>
+ Get height in mm from layer height
+ </summary>
+ <param name="layerIndex"></param>
+ <param name="realHeight"></param>
+ <returns>The height in mm</returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.GetBottomOrNormalValue``1(System.UInt32,``0,``0)">
+ <summary>
+ Gets the global value for bottom or normal layers based on layer index
+ </summary>
+ <typeparam name="T">Type of value</typeparam>
+ <param name="layerIndex">Layer index</param>
+ <param name="bottomValue">Initial value</param>
+ <param name="normalValue">Normal value</param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.GetBottomOrNormalValue``1(UVtools.Core.Layers.Layer,``0,``0)">
+ <summary>
+ Gets the global value for bottom or normal layers based on layer
+ </summary>
+ <typeparam name="T">Type of value</typeparam>
+ <param name="layer">Layer</param>
+ <param name="bottomValue">Initial value</param>
+ <param name="normalValue">Normal value</param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.RefreshPrintParametersModifiersValues">
+ <summary>
+ Refresh print parameters globals with this file settings
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.RefreshPrintParametersPerLayerModifiersValues(System.UInt32)">
+ <summary>
+ Refresh print parameters per layer globals with this file settings
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.GetValueFromPrintParameterModifier(UVtools.Core.FileFormats.FileFormat.PrintParameterModifier)">
+ <summary>
+ Gets the value attributed to <see cref="T:UVtools.Core.FileFormats.FileFormat.PrintParameterModifier"/>
+ </summary>
+ <param name="modifier">Modifier to use</param>
+ <returns>A value</returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.SetValueFromPrintParameterModifier(UVtools.Core.FileFormats.FileFormat.PrintParameterModifier,System.Decimal)">
+ <summary>
+ Sets a property value attributed to <paramref name="modifier"/>
+ </summary>
+ <param name="modifier">Modifier to use</param>
+ <param name="value">Value to set</param>
+ <returns>True if set, otherwise false <paramref name="modifier"/> not found</returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.SetValuesFromPrintParametersModifiers">
+ <summary>
+ Sets properties from print parameters
+ </summary>
+ <returns>Number of affected parameters</returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.GetBottomWaitTimeBeforeCure">
+ <summary>
+ Gets the bottom wait time before cure, if not available calculate it from light off delay
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.GetNormalWaitTimeBeforeCure">
+ <summary>
+ Gets the wait time before cure, if not available calculate it from light off delay
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.SetWaitTimeBeforeCureOrLightOffDelay(System.Boolean,System.Single,System.Boolean)">
+ <summary>
+ Attempt to set wait time before cure if supported, otherwise fall-back to light-off delay
+ </summary>
+ <param name="isBottomLayer">True to set to bottom properties, otherwise false</param>
+ <param name="time">The time to set</param>
+ <param name="zeroLightOffDelayCalculateBase">When true and time is zero, it will calculate light-off delay without extra time, otherwise false to set light-off delay to 0 when time is 0</param>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.RebuildGCode">
+ <summary>
+ Rebuilds GCode based on current settings
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.Save(UVtools.Core.Operations.OperationProgress)">
+ <summary>
+ Saves current configuration on input file
+ </summary>
+ <param name="progress"></param>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.SaveAs(System.String,UVtools.Core.Operations.OperationProgress)">
+ <summary>
+ Saves current configuration on a copy
+ </summary>
+ <param name="filePath">File path to save copy as, use null to overwrite active file (Same as <see cref="M:UVtools.Core.FileFormats.FileFormat.Save(UVtools.Core.Operations.OperationProgress)"/>)</param>
+ <param name="progress"></param>
+ <exception cref="T:System.ArgumentNullException"><see cref="P:UVtools.Core.FileFormats.FileFormat.FileFullPath"/></exception>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.PartialSaveInternally(UVtools.Core.Operations.OperationProgress)">
+ <summary>
+ Partial save of the file, this is the file information only.
+ When this function is called it's already ready to save to file
+ </summary>
+ <param name="progress"></param>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.OnBeforeConvertFrom(UVtools.Core.FileFormats.FileFormat)">
+ <summary>
+ Triggers when a conversion is valid and before start converting values
+ </summary>
+ <param name="source">Source file format</param>
+ <returns>True to continue the conversion, otherwise false to stop</returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.OnBeforeConvertTo(UVtools.Core.FileFormats.FileFormat)">
+ <summary>
+ Triggers when a conversion is valid and before start converting values
+ </summary>
+ <param name="output">Target file format</param>
+ <returns>True to continue the conversion, otherwise false to stop</returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.OnAfterConvertFrom(UVtools.Core.FileFormats.FileFormat)">
+ <summary>
+ Triggers when the conversion is made but before encoding
+ </summary>
+ <param name="source">Source file format</param>
+ <returns>True to continue the conversion, otherwise false to stop</returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.OnAfterConvertTo(UVtools.Core.FileFormats.FileFormat)">
+ <summary>
+ Triggers when the conversion is made but before encoding
+ </summary>
+ <param name="output">Output file format</param>
+ <returns>True to continue the conversion, otherwise false to stop</returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.Convert(System.Type,System.String,System.UInt32,UVtools.Core.Operations.OperationProgress)">
+ <summary>
+ Converts this file type to another file type
+ </summary>
+ <param name="to">Target file format</param>
+ <param name="fileFullPath">Output path file</param>
+ <param name="version">File version to use</param>
+ <param name="progress"></param>
+ <returns>The converted file if successful, otherwise null</returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.Convert(UVtools.Core.FileFormats.FileFormat,System.String,System.UInt32,UVtools.Core.Operations.OperationProgress)">
+ <summary>
+ Converts this file type to another file type
+ </summary>
+ <param name="to">Target file format</param>
+ <param name="fileFullPath">Output path file</param>
+ <param name="version">File version</param>
+ <param name="progress"></param>
+ <returns>TThe converted file if successful, otherwise null</returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.ChangeLayersCompressionMethod(UVtools.Core.Layers.LayerCompressionCodec,UVtools.Core.Operations.OperationProgress)">
+ <summary>
+ Changes the compression method of all layers to a new method
+ </summary>
+ <param name="newCodec">The new method to change to</param>
+ <param name="progress"></param>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.ValidateAntiAliasingLevel">
+ <summary>
+ Validate AntiAlias Level
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.SuppressRebuildPropertiesWork(System.Action,System.Boolean,System.Boolean,System.String)">
+ <summary>
+ SuppressRebuildProperties = true, call the invoker and reset SuppressRebuildProperties = false
+ </summary>
+ <param name="action">Action work</param>
+ <param name="callRebuildOnEnd">True to force rebuild the layer properties after the work and before reset to false</param>
+ <param name="recalculateZPos">True to recalculate z position of each layer (requires <paramref name="callRebuildOnEnd"/> = true), otherwise false</param>
+ <param name="property">Property name to change for each layer, use null to update all properties (requires <paramref name="callRebuildOnEnd"/> = true)</param>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.SuppressRebuildPropertiesWork(System.Func{System.Boolean},System.Boolean,System.Boolean,System.String)">
+ <summary>
+ SuppressRebuildProperties = true, call the invoker and reset SuppressRebuildProperties = false
+ </summary>
+ <param name="action">Action work</param>
+ <param name="callRebuildOnEnd">True to force rebuild the layer properties after the work and before reset to false</param>
+ <param name="recalculateZPos">True to recalculate z position of each layer (requires <paramref name="callRebuildOnEnd"/> = true), otherwise false</param>
+ <param name="property">Property name to change for each layer, use null to update all properties (requires <paramref name="callRebuildOnEnd"/> = true)</param>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.MillimetersXToPixels(System.UInt16,System.UInt32)">
+ <summary>
+ Converts millimeters to pixels given the current resolution and display size
+ </summary>
+ <param name="mm">Millimeters to convert</param>
+ <param name="fallbackToPixels">Fallback to this value in pixels if no ratio is available to make the convertion</param>
+ <returns>Pixels</returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.MillimetersYToPixels(System.UInt16,System.UInt32)">
+ <summary>
+ Converts millimeters to pixels given the current resolution and display size
+ </summary>
+ <param name="mm">Millimeters to convert</param>
+ <param name="fallbackToPixels">Fallback to this value in pixels if no ratio is available to make the convertion</param>
+ <returns>Pixels</returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.MillimetersToPixels(System.UInt16,System.UInt32)">
+ <summary>
+ Converts millimeters to pixels given the current resolution and display size
+ </summary>
+ <param name="mm">Millimeters to convert</param>
+ <param name="fallbackToPixels">Fallback to this value in pixels if no ratio is available to make the convertion</param>
+ <returns>Pixels</returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.PixelToDisplayPositionX(System.Int32,System.Byte)">
+ <summary>
+ From a pixel position get the equivalent position on the display
+ </summary>
+ <param name="x">X position in pixels</param>
+ <param name="precision">Decimal precision</param>
+ <returns>Display position in millimeters</returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.PixelToDisplayPositionY(System.Int32,System.Byte)">
+ <summary>
+ From a pixel position get the equivalent position on the display
+ </summary>
+ <param name="y">Y position in pixels</param>
+ <param name="precision">Decimal precision</param>
+ <returns>Display position in millimeters</returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.PixelToDisplayPosition(System.Int32,System.Int32,System.Byte)">
+ <summary>
+ From a pixel position get the equivalent position on the display
+ </summary>
+ <param name="x">X position in pixels</param>
+ <param name="y">Y position in pixels</param>
+ <param name="precision">Decimal precision</param>
+ <returns>Resolution position in pixels</returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.DisplayToPixelPositionX(System.Single)">
+ <summary>
+ From a pixel position get the equivalent position on the display
+ </summary>
+ <param name="x">X position in millimeters</param>
+ <returns>Resolution position in pixels</returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.DisplayToPixelPositionY(System.Single)">
+ <summary>
+ From a pixel position get the equivalent position on the display
+ </summary>
+ <param name="y">Y position in millimeters</param>
+ <returns>Resolution position in pixels</returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.DisplayToPixelPosition(System.Single,System.Single)">
+ <summary>
+ From a pixel position get the equivalent position on the display
+ </summary>
+ <param name="x">X position in millimeters</param>
+ <param name="y">Y position in millimeters</param>
+ <returns>Resolution position in pixels</returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.CreateMatWithDummyPixel(System.Drawing.Point,System.Byte)">
+ <summary>
+ Creates a empty mat of file <see cref="P:UVtools.Core.FileFormats.FileFormat.Resolution"/> size and create a dummy pixel to prevent a empty layer detection
+ </summary>
+ <param name="dummyPixelLocation">Location to set the dummy pixel, use a negative value (-1,-1) to set to the bounding center</param>
+ <param name="dummyPixelBrightness">Dummy pixel brightness</param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.CreateMatWithDummyPixel(System.Drawing.Point)">
+ <summary>
+ Creates a empty mat of file <see cref="P:UVtools.Core.FileFormats.FileFormat.Resolution"/> size and create a dummy pixel to prevent a empty layer detection
+ </summary>
+ <param name="dummyPixelLocation">Location to set the dummy pixel, use a negative value (-1,-1) to set to the bounding center</param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.CreateMatWithDummyPixel(System.Byte)">
+ <summary>
+ Creates a empty mat of file <see cref="P:UVtools.Core.FileFormats.FileFormat.Resolution"/> size
+ </summary>
+ <param name="dummyPixelBrightness">Dummy pixel brightness</param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.CreateMatWithDummyPixel">
+ <summary>
+ Creates a empty mat of file <see cref="P:UVtools.Core.FileFormats.FileFormat.Resolution"/> size
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.CreateMat(System.Boolean)">
+ <summary>
+ Creates a empty mat of file <see cref="P:UVtools.Core.FileFormats.FileFormat.Resolution"/> size
+ </summary>
+ <param name="initMat">True to black out the mat</param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.CloneLayers">
+ <summary>
+ Clone layers
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.ReallocateNew(System.UInt32,System.Boolean)">
+ <summary>
+ Reallocate with new size
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.Reallocate(System.UInt32,System.Boolean)">
+ <summary>
+ Reallocate layer count with a new size
+ </summary>
+ <param name="newLayerCount">New layer count</param>
+ <param name="initBlack"></param>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.ReallocateInsert(System.UInt32,System.UInt32,System.Boolean)">
+ <summary>
+ Reallocate at given index
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.ReallocateKeepRange(System.UInt32,System.UInt32)">
+ <summary>
+ Reallocate at a kept range
+ </summary>
+ <param name="startLayerIndex"></param>
+ <param name="endLayerIndex"></param>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.ReallocateStart(System.UInt32,System.Boolean)">
+ <summary>
+ Reallocate at start
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.ReallocateEnd(System.UInt32,System.Boolean)">
+ <summary>
+ Reallocate at end
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.AllocateFromMat(Emgu.CV.Mat[],UVtools.Core.Operations.OperationProgress)">
+ <summary>
+ Allocate layers from a Mat array
+ </summary>
+ <param name="mats"></param>
+ <param name="progress"></param>
+ <returns>The new Layer array</returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.AllocateAndSetFromMat(Emgu.CV.Mat[],UVtools.Core.Operations.OperationProgress)">
+ <summary>
+ Allocate layers from a Mat array and set them to the current file
+ </summary>
+ <param name="mats"></param>
+ <param name="progress"></param>
+ /// <returns>The new Layer array</returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.LayerExists(System.Int32)">
+ <summary>
+ Checks if a layer index exists in the collection
+ </summary>
+ <param name="layerIndex">Layer index to check</param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.LayerExists(System.UInt32)">
+ <summary>
+ Checks if a layer index exists in the collection
+ </summary>
+ <param name="layerIndex">Layer index to check</param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.SanitizeLayers">
+ <summary>
+ Re-assign layer indexes and parent <see cref="T:UVtools.Core.FileFormats.FileFormat"/>
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.Sanitize">
+ <summary>
+ Sanitize file and thrown exception if a severe problem is found
+ </summary>
+ <returns>True if one or more corrections has been applied, otherwise false</returns>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.RebuildLayersProperties(System.Boolean,System.String)">
+ <summary>
+ Rebuild layer properties based on slice settings
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.FileFormats.FileFormat.SetNoLiftForSamePositionedLayers(System.Boolean)">
+ <summary>
+ Set LiftHeight to 0 if previous and current have same PositionZ
+ <param name="zeroLightOffDelay">If true also set light off to 0, otherwise current value will be kept.</param>
+ </summary>
+ </member>
+ <member name="T:UVtools.Core.FileFormats.FlashForgeSVGXFile.Preview">
+ <summary>
+ The files contain two preview images.
+ These are shown on the printer display when choosing which file to print, sparing the poor printer from needing to render a 3D image from scratch.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FlashForgeSVGXFile.Preview.Identifier">
+ <summary>
+ Gets or sets the identifier, BM = bitmap?
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FlashForgeSVGXFile.Preview.TableSize">
+ <summary>
+ Gets or sets the table total size
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.FlashForgeSVGXFile.Preview.ResolutionY">
+ <summary>
+ Gets the Y dimension of the preview image, in pixels.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.GR1File.Header.HeaderValue">
+ <summary>
+ Gets the file tag = MKSDLP
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.LGSFile.Header.Name">
+ <summary>
+ Gets the model name
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.MDLPFile.Header.HeaderValue">
+ <summary>
+ Gets the file tag = MKSDLP
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.OSFFile.OSFSettings.Mirror">
+ <summary>
+ (0x00 not mirrored, 0x01 X-axis mirroring, 0x02 Y-axis mirroring, 0x03 XY-axis mirroring)
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.OSFFile.OSFSettings.TransitionType">
+ <summary>
+ (0x00 linear transition)
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.OSFFile.OSFSettings.AccelerationType">
+ <summary>
+ (0x00: S-shaped acceleration, 0x01: T-shaped acceleration, Default Value: S-shaped acceleration, currently only supports S-shaped acceleration)
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.OSFFile.OSFLayerDef.Mark">
+ <summary>
+ OD OA begins, indicating that the model + support is included; the beginning of 0D 0B, indicating that the layer only has support data
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.OSLAFile.Preview.ResolutionX">
+ <summary>
+ Gets the X dimension of the preview image, in pixels.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.OSLAFile.Preview.ResolutionY">
+ <summary>
+ Gets the Y dimension of the preview image, in pixels.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.OSLAFile.Preview.ImageLength">
+ <summary>
+ Gets the image length in bytes.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.FileMark.Mark">
+ <summary>
+ Gets the file mark placeholder
+ Fixed to "ANYCUBIC"
+ 00
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.FileMark.Version">
+ <summary>
+ Gets the file format version
+ 0C
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.FileMark.NumberOfTables">
+ <summary>
+ Gets the area num
+ 10, 4 for v1, 5 for v515, 8 for v516?
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.FileMark.HeaderAddress">
+ <summary>
+ Gets the header start address
+ 14
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.FileMark.SoftwareAddress">
+ <summary>
+ 18
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.FileMark.PreviewAddress">
+ <summary>
+ Gets the preview start offset
+ 1C
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.FileMark.LayerImageColorTableAddress">
+ <summary>
+ 20, Spotted on version 515 only
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.FileMark.LayerDefinitionAddress">
+ <summary>
+ Gets the layer definition start address
+ 24
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.FileMark.ExtraAddress">
+ <summary>
+ 28, Spotted on version 516 only
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.FileMark.MachineAddress">
+ <summary>
+ 2C, Spotted on version 516 only
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.FileMark.LayerImageAddress">
+ <summary>
+ Gets layer image start address
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.FileMark.ModelAddress">
+ <summary>
+ Spotted on version 517 only
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.SectionHeader.Mark">
+ <summary>
+ Gets the section mark placeholder
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.SectionHeader.Length">
+ <summary>
+ Gets the length of this section
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.Header.Section">
+ <summary>
+ 30
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.Header.PixelSizeUm">
+ <summary>
+ 40
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.Header.LayerHeight">
+ <summary>
+ Layer height in mm
+ 44
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.Header.ExposureTime">
+ <summary>
+ 48
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.Header.WaitTimeBeforeCure">
+ <summary>
+ 4C
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.Header.BottomExposureTime">
+ <summary>
+ 50
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.Header.BottomLayersCount">
+ <summary>
+ 54
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.Header.LiftHeight">
+ <summary>
+ 58
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.Header.LiftSpeed">
+ <summary>
+ Gets the lift speed in mm/s
+ 5C
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.Header.RetractSpeed">
+ <summary>
+ Gets the retract speed in mm/s
+ 60
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.Header.VolumeMl">
+ <summary>
+ 64
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.Header.AntiAliasing">
+ <summary>
+ 68
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.Header.ResolutionX">
+ <summary>
+ 6C
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.Header.ResolutionY">
+ <summary>
+ 70
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.Header.WeightG">
+ <summary>
+ 74
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.Header.Price">
+ <summary>
+ 78
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.Header.PriceCurrencySymbol">
+ <summary>
+ 24 00 00 00 $ or ¥ C2 A5 00 00 or € = E2 82 AC 00
+ 7C
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.Header.PerLayerOverride">
+ <summary>
+ 80
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.Header.PrintTime">
+ <summary>
+ 84
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.Header.TransitionLayerCount">
+ <summary>
+ 88, spotted on 516
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.Header.TransitionLayerType">
+ <summary>
+ 8C, spotted on 516
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.HeaderV516.AdvancedMode">
+ <summary>
+ 0 = Basic mode | 1 = Advanced mode which allows TSMC
+ </summary>
+ </member>
+ <member name="T:UVtools.Core.FileFormats.PhotonWorkshopFile.Preview">
+ <summary>
+ The files contain two preview images.
+ These are shown on the printer display when choosing which file to print, sparing the poor printer from needing to render a 3D image from scratch.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.Preview.Section">
+ <summary>
+ 90
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.Preview.ResolutionX">
+ <summary>
+ Gets the image width, in pixels.
+ A0
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.Preview.Mark">
+ <summary>
+ Gets the operation mark 'x'
+ A4
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.Preview.ResolutionY">
+ <summary>
+ Gets the image height, in pixels.
+ A8
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.LayerDef.DataAddress">
+ <summary>
+ Gets the layer image offset to encoded layer data, and its length in bytes.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.LayerDef.DataLength">
+ <summary>
+ Gets the layer image length in bytes.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.LayerDef.ExposureTime">
+ <summary>
+ Gets the exposure time for this layer, in seconds.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.LayerDef.LayerHeight">
+ <summary>
+ Gets the layer height for this layer, measured in millimeters.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PhotonWorkshopFile.LayerDefinition.Section">
+ <summary>
+ 1269C
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.Magic">
+ <summary>
+ Gets a magic number identifying the file type.
+ 0x12fd_0019 for cbddlp
+ 0x12fd_0086 for ctb
+ 0x9FDA83AE for phz
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.Version">
+ <summary>
+ Gets the software version
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.LayerHeightMilimeter">
+ <summary>
+ Gets the layer height setting used at slicing, in millimeters. Actual height used by the machine is in the layer table.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.LayerExposureSeconds">
+ <summary>
+ Gets the exposure time setting used at slicing, in seconds, for normal (non-bottom) layers, respectively. Actual time used by the machine is in the layer table.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.BottomExposureSeconds">
+ <summary>
+ Gets the exposure time setting used at slicing, in seconds, for bottom layers. Actual time used by the machine is in the layer table.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.BottomLayersCount">
+ <summary>
+ Gets number of layers configured as "bottom." Note that this field appears in both the file header and ExtConfig..
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.ResolutionX">
+ <summary>
+ Gets the printer resolution along X axis, in pixels. This information is critical to correctly decoding layer images.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.ResolutionY">
+ <summary>
+ Gets the printer resolution along Y axis, in pixels. This information is critical to correctly decoding layer images.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.PreviewLargeOffsetAddress">
+ <summary>
+ Gets the file offsets of ImageHeader records describing the larger preview images.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.LayersDefinitionOffsetAddress">
+ <summary>
+ Gets the file offset of a table of LayerHeader records giving parameters for each printed layer.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.LayerCount">
+ <summary>
+ Gets the number of records in the layer table for the first level set. In ctb files, that’s equivalent to the total number of records, but records may be multiplied in antialiased cbddlp files.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.PreviewSmallOffsetAddress">
+ <summary>
+ Gets the file offsets of ImageHeader records describing the smaller preview images.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.PrintTime">
+ <summary>
+ Gets the estimated duration of print, in seconds.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.ProjectorType">
+ <summary>
+ Gets the records whether this file was generated assuming normal (0) or mirrored (1) image projection. LCD printers are "mirrored" for this purpose.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.AntiAliasLevel">
+ <summary>
+ Gets the number of times each layer image is repeated in the file.
+ This is used to implement antialiasing in cbddlp files. When greater than 1,
+ the layer table will actually contain layer_table_count * level_set_count entries.
+ See the section on antialiasing for details.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.LightPWM">
+ <summary>
+ Gets the PWM duty cycle for the UV illumination source on normal levels, respectively.
+ This appears to be an 8-bit quantity where 0xFF is fully on and 0x00 is fully off.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.BottomLightPWM">
+ <summary>
+ Gets the PWM duty cycle for the UV illumination source on bottom levels, respectively.
+ This appears to be an 8-bit quantity where 0xFF is fully on and 0x00 is fully off.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.OverallHeightMilimeter">
+ <summary>
+ Gets the height of the model described by this file, in millimeters.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.BedSizeX">
+ <summary>
+ Gets dimensions of the printer’s X output volume, in millimeters.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.BedSizeY">
+ <summary>
+ Gets dimensions of the printer’s Y output volume, in millimeters.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.BedSizeZ">
+ <summary>
+ Gets dimensions of the printer’s Z output volume, in millimeters.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.EncryptionKey">
+ <summary>
+ Gets the key used to encrypt layer data, or 0 if encryption is not used.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.BottomLightOffDelay">
+ <summary>
+ Gets the light off time setting used at slicing, for bottom layers, in seconds. Actual time used by the machine is in the layer table. Note that light_off_time_s appears in both the file header and ExtConfig.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.LightOffDelay">
+ <summary>
+ Gets the light off time setting used at slicing, for normal layers, in seconds. Actual time used by the machine is in the layer table. Note that light_off_time_s appears in both the file header and ExtConfig.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.BottomLayersCount2">
+ <summary>
+ Gets number of layers configured as "bottom." Note that this field appears in both the file header and ExtConfig.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.BottomLiftHeight">
+ <summary>
+ Gets the distance to lift the build platform away from the vat after bottom layers, in millimeters.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.BottomLiftSpeed">
+ <summary>
+ Gets the speed at which to lift the build platform away from the vat after bottom layers, in millimeters per minute.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.LiftHeight">
+ <summary>
+ Gets the distance to lift the build platform away from the vat after normal layers, in millimeters.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.LiftSpeed">
+ <summary>
+ Gets the speed at which to lift the build platform away from the vat after normal layers, in millimeters per minute.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.RetractSpeed">
+ <summary>
+ Gets the speed to use when the build platform re-approaches the vat after lift, in millimeters per minute.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.VolumeMl">
+ <summary>
+ Gets the estimated required resin, measured in milliliters. The volume number is derived from the model.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.WeightG">
+ <summary>
+ Gets the estimated grams, derived from volume using configured factors for density.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.CostDollars">
+ <summary>
+ Gets the estimated cost based on currency unit the user had configured. Derived from volume using configured factors for density and cost.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.MachineNameAddress">
+ <summary>
+ Gets the machine name offset to a string naming the machine type, and its length in bytes.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.MachineNameSize">
+ <summary>
+ Gets the machine size in bytes
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.MachineName">
+ <summary>
+ Gets the machine name. string is not nul-terminated.
+ The character encoding is currently unknown — all observed files in the wild use 7-bit ASCII characters only.
+ Note that the machine type here is set in the software profile, and is not the name the user assigned to the machine.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.EncryptionMode">
+ <summary>
+ Gets the parameter used to control encryption.
+ Not totally understood. 0 for cbddlp files, 0xF for ctb files, 0x1c (28) for phz
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Header.ModifiedTimestampMinutes">
+ <summary>
+ Gets the minutes since Jan 1, 1970 UTC
+ </summary>
+ </member>
+ <member name="T:UVtools.Core.FileFormats.PHZFile.Preview">
+ <summary>
+ The files contain two preview images.
+ These are shown on the printer display when choosing which file to print, sparing the poor printer from needing to render a 3D image from scratch.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Preview.ResolutionX">
+ <summary>
+ Gets the X dimension of the preview image, in pixels.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Preview.ResolutionY">
+ <summary>
+ Gets the Y dimension of the preview image, in pixels.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Preview.ImageOffset">
+ <summary>
+ Gets the image offset of the encoded data blob.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.Preview.ImageLength">
+ <summary>
+ Gets the image length in bytes.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.LayerDef.PositionZ">
+ <summary>
+ Gets the build platform Z position for this layer, measured in millimeters.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.LayerDef.ExposureTime">
+ <summary>
+ Gets the exposure time for this layer, in seconds.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.LayerDef.LightOffDelay">
+ <summary>
+ Gets how long to keep the light off after exposing this layer, in seconds.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.LayerDef.DataAddress">
+ <summary>
+ Gets the layer image offset to encoded layer data, and its length in bytes.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.FileFormats.PHZFile.LayerDef.DataSize">
+ <summary>
+ Gets the layer image length in bytes.
+ </summary>
+ </member>
+ <member name="F:UVtools.Core.GCode.GCodeBuilder.GCodeTimeUnits.Milliseconds">
+ <summary>
+ ms
+ </summary>
+ </member>
+ <member name="F:UVtools.Core.GCode.GCodeBuilder.GCodeTimeUnits.Seconds">
+ <summary>
+ s
+ </summary>
+ </member>
+ <member name="F:UVtools.Core.GCode.GCodeBuilder.GCodeSpeedUnits.MillimetersPerSecond">
+ <summary>
+ mm/s
+ </summary>
+ </member>
+ <member name="F:UVtools.Core.GCode.GCodeBuilder.GCodeSpeedUnits.MillimetersPerMinute">
+ <summary>
+ mm/m
+ </summary>
+ </member>
+ <member name="F:UVtools.Core.GCode.GCodeBuilder.GCodeSpeedUnits.CentimetersPerMinute">
+ <summary>
+ cm/m
+ </summary>
+ </member>
+ <member name="F:UVtools.Core.GCode.GCodeBuilder.GCodeShowImagePositions.FirstLine">
+ <summary>
+ Show image at start of each layer block commands
+ </summary>
+ </member>
+ <member name="F:UVtools.Core.GCode.GCodeBuilder.GCodeShowImagePositions.WhenRequired">
+ <summary>
+ Show image just before exposing / turning LED ON
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.GCode.GCodeBuilder.ConvertFromSeconds(System.Single)">
+ <summary>
+ Converts seconds to current gcode norm
+ </summary>
+ <param name="seconds"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.GCode.GCodeBuilder.ConvertFromMillimetersPerMinute(System.Single)">
+ <summary>
+ Converts speed in mm/min to current gcode norm
+ </summary>
+ <param name="mmMin">Millimeters per minute</param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.GCode.GCodeBuilder.ConvertToSeconds(System.Single)">
+ <summary>
+ Converts time from current gcode norm in <see cref="P:UVtools.Core.GCode.GCodeBuilder.GCodeTimeUnit"/> to s
+ </summary>
+ <param name="time">Time in <see cref="P:UVtools.Core.GCode.GCodeBuilder.GCodeTimeUnit"/></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.GCode.GCodeBuilder.ConvertToMillimetersPerMinute(System.Single)">
+ <summary>
+ Converts speed from current gcode norm in <see cref="P:UVtools.Core.GCode.GCodeBuilder.GCodeSpeedUnit"/> to mm/min
+ </summary>
+ <param name="speed">Speed in <see cref="P:UVtools.Core.GCode.GCodeBuilder.GCodeSpeedUnit"/></param>
+ <returns></returns>
+ </member>
+ <member name="P:UVtools.Core.GCode.GCodeCommand.Enabled">
+ <summary>
+ Gets or sets if this command is enabled
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.GCode.GCodeCommand.Command">
+ <summary>
+ Gets or sets the command name
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.GCode.GCodeCommand.Arguments">
+ <summary>
+ Gets or sets the arguments for this command
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.GCode.GCodeCommand.Comment">
+ <summary>
+ Gets or sets the comment
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.GCode.GCodeLayer.SetLayer(System.Boolean)">
+ <summary>
+ Set gathered data to the layer
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Gerber.Apertures.Aperture.Index">
+ <summary>
+ Gets the index of this aperture
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Gerber.Apertures.Aperture.Name">
+ <summary>
+ Gets the aperture name
+ </summary>
+ </member>
+ <member name="F:UVtools.Core.Gerber.GerberZerosSuppressionType.NoSuppression">
+ <summary>
+ Do not omit zeros
+ </summary>
+ </member>
+ <member name="F:UVtools.Core.Gerber.GerberZerosSuppressionType.Leading">
+ <summary>
+ Omit left zeros
+ </summary>
+ </member>
+ <member name="F:UVtools.Core.Gerber.GerberZerosSuppressionType.Trail">
+ <summary>
+ Omit right zeros
+ </summary>
+ </member>
+ <member name="T:UVtools.Core.Gerber.GerberDocument">
+ <summary>
+ https://www.ucamco.com/files/downloads/file_en/456/gerber-layer-format-specification-revision-2022-02_en.pdf?ac97011bf6bce9aaf0b1aac43d84b05f
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Gerber.Macro.Name">
+ <summary>
+ Gets the macro name
+ </summary>
+ </member>
+ <member name="T:UVtools.Core.Gerber.Primitives.CenterLinePrimitive">
+ <summary>
+ A vector line is a rectangle defined by its line width, start and end points. The line ends are rectangular.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Gerber.Primitives.CenterLinePrimitive.ExposureExpression">
+ <summary>
+ Exposure off/on (0/1)
+ 1
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Gerber.Primitives.CenterLinePrimitive.WidthExpression">
+ <summary>
+ Width ≥ 0
+ 2
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Gerber.Primitives.CenterLinePrimitive.HeightExpression">
+ <summary>
+ Height ≥ 0
+ 3
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Gerber.Primitives.CenterLinePrimitive.CenterXExpression">
+ <summary>
+ Center point X coordinate
+ 4
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Gerber.Primitives.CenterLinePrimitive.CenterYExpression">
+ <summary>
+ Center point Y coordinate
+ 5
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Gerber.Primitives.CenterLinePrimitive.RotationExpression">
+ <summary>
+ Rotation angle, in degrees counterclockwise, a decimal.
+ The primitive is rotated around the origin of the macro definition, i.e. the (0, 0) point of macro coordinates.
+ 6
+ </summary>
+ </member>
+ <member name="T:UVtools.Core.Gerber.Primitives.CirclePrimitive">
+ <summary>
+ A circle primitive is defined by its center point and diameter.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Gerber.Primitives.CirclePrimitive.ExposureExpression">
+ <summary>
+ Exposure off/on (0/1)
+ 1
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Gerber.Primitives.CirclePrimitive.DiameterExpression">
+ <summary>
+ Diameter ≥ 0
+ 2
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Gerber.Primitives.CirclePrimitive.CenterXExpression">
+ <summary>
+ Center X coordinate.
+ 3
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Gerber.Primitives.CirclePrimitive.CenterYExpression">
+ <summary>
+ Center Y coordinate.
+ 4
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Gerber.Primitives.CirclePrimitive.RotationExpression">
+ <summary>
+ Rotation angle, in degrees counterclockwise, a decimal.
+ The primitive is rotated around the origin of the macro definition, i.e. the (0, 0) point of macro coordinates.
+ 5
+ </summary>
+ </member>
+ <member name="T:UVtools.Core.Gerber.Primitives.CommentPrimitive">
+ <summary>
+ The comment primitive has no effect on the image but adds human-readable comments in an AM command.
+ The comment primitive starts with the ‘0’ code followed by a space and then a single-line text string.
+ The text string follows the syntax for strings in section 3.4.3.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Gerber.Primitives.CommentPrimitive.Comment">
+ <summary>
+ The comment
+ 1
+ </summary>
+ </member>
+ <member name="T:UVtools.Core.Gerber.Primitives.OutlinePrimitive">
+ <summary>
+ An outline primitive is an area defined by its outline or contour.
+ The outline is a polygon, consisting of linear segments only, defined by its start vertex and n subsequent vertices.
+ The outline must be closed, i.e. the last vertex must be equal to the start vertex.
+ The outline must comply with all the requirements of a contour according to 4.10.3.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Gerber.Primitives.OutlinePrimitive.ExposureExpression">
+ <summary>
+ Exposure off/on (0/1)
+ 1
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Gerber.Primitives.OutlinePrimitive.VerticesCountExpression">
+ <summary>
+ The number of vertices of the outline = the number of coordinate pairs minus one. An integer ≥3.
+ 2
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Gerber.Primitives.OutlinePrimitive.CoordinatesExpression">
+ <summary>
+ subsequent X and Y coordinates.
+ The X and Y coordinates are not modal: both X and Y must be specified for all points.
+ 2+n
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Gerber.Primitives.OutlinePrimitive.RotationExpression">
+ <summary>
+ Rotation angle, in degrees counterclockwise, a decimal.
+ The primitive is rotated around the origin of the macro definition, i.e. the (0, 0) point of macro coordinates.
+ </summary>
+ </member>
+ <member name="T:UVtools.Core.Gerber.Primitives.PolygonPrimitive">
+ <summary>
+ A polygon primitive is a regular polygon defined by the number of vertices n, the center point and the diameter of the circumscribed circle.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Gerber.Primitives.PolygonPrimitive.ExposureExpression">
+ <summary>
+ Exposure off/on (0/1)
+ 1
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Gerber.Primitives.PolygonPrimitive.VerticesCountExpression">
+ <summary>
+ Diameter ≥ 0
+ 2
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Gerber.Primitives.PolygonPrimitive.CenterXExpression">
+ <summary>
+ Center X coordinate.
+ 3
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Gerber.Primitives.PolygonPrimitive.CenterYExpression">
+ <summary>
+ Center Y coordinate.
+ 4
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Gerber.Primitives.PolygonPrimitive.DiameterExpression">
+ <summary>
+ Diameter ≥ 0
+ 5
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Gerber.Primitives.PolygonPrimitive.RotationExpression">
+ <summary>
+ Rotation angle, in degrees counterclockwise, a decimal.
+ The primitive is rotated around the origin of the macro definition, i.e. the (0, 0) point of macro coordinates.
+ 6
+ </summary>
+ </member>
+ <member name="T:UVtools.Core.Gerber.Primitives.VectorLinePrimitive">
+ <summary>
+ A vector line is a rectangle defined by its line width, start and end points. The line ends are rectangular.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Gerber.Primitives.VectorLinePrimitive.ExposureExpression">
+ <summary>
+ Exposure off/on (0/1)
+ 1
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Gerber.Primitives.VectorLinePrimitive.LineWidthExpression">
+ <summary>
+ Width of the line ≥ 0
+ 2
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Gerber.Primitives.VectorLinePrimitive.StartXExpression">
+ <summary>
+ Start point X coordinate
+ 3
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Gerber.Primitives.VectorLinePrimitive.StartYExpression">
+ <summary>
+ Start point Y coordinate
+ 4
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Gerber.Primitives.VectorLinePrimitive.EndXExpression">
+ <summary>
+ End point X coordinate
+ 5
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Gerber.Primitives.VectorLinePrimitive.EndYExpression">
+ <summary>
+ Start point Y coordinate
+ 6
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Gerber.Primitives.VectorLinePrimitive.RotationExpression">
+ <summary>
+ Rotation angle, in degrees counterclockwise, a decimal.
+ The primitive is rotated around the origin of the macro definition, i.e. the (0, 0) point of macro coordinates.
+ 7
+ </summary>
+ </member>
+ <member name="T:UVtools.Core.Helpers">
+ <summary>
+ A helper class with utilities
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Helpers.Serializer">
+ <summary>
+ Gets the <see cref="T:BinarySerialization.BinarySerializer"/> instance
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Issue.Parent">
+ <summary>
+ Gets the issue type associated
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Issue.Layer">
+ <summary>
+ Gets the layer where this issue is present
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Issue.LayerIndex">
+ <summary>
+ Gets the layer index
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Issue.BoundingRectangle">
+ <summary>
+ Gets the bounding rectangle of the area
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Issue.PixelsCount">
+ <summary>
+ Gets the number of pixels
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Issue.Area">
+ <summary>
+ Gets the area of the issue
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.IssueOfContours.Contours">
+ <summary>
+ Gets the points contours of the issue
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.IssueOfPoints.Points">
+ <summary>
+ Gets the points containing the coordinates of the issue
+ </summary>
+ </member>
+ <member name="T:UVtools.Core.Layers.Layer">
+ <summary>
+ Represent a Layer
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.SlicerFile">
+ <summary>
+ Gets or sets the parent SlicerFile
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.NonZeroPixelCount">
+ <summary>
+ Gets the number of non zero pixels on this layer image
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.NonZeroPixelRatio">
+ <summary>
+ Gets the ratio between non zero pixels and display number of pixels
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.NonZeroPixelPercentage">
+ <summary>
+ Gets the percentage of non zero pixels relative to the display number of pixels
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.IsEmpty">
+ <summary>
+ Gets if this layer is empty/all black pixels
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.Area">
+ <summary>
+ Gets the layer area (XY) in mm^2
+ Pixel size * number of pixels
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.Volume">
+ <summary>
+ Gets the layer volume (XYZ) in mm^3
+ Pixel size * number of pixels * layer height
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.BoundingRectangle">
+ <summary>
+ Gets the bounding rectangle for the image area
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.BoundingRectangleMillimeters">
+ <summary>
+ Gets the bounding rectangle for the image area in millimeters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.IsFirstLayer">
+ <summary>
+ Gets if is the first layer
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.IsIntermediateLayer">
+ <summary>
+ Gets if layer is between first and last layer, aka, not first nor last layer
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.IsLastLayer">
+ <summary>
+ Gets if is the last layer
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.IsBottomLayer">
+ <summary>
+ Gets if is in the bottom layer group
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.IsNormalLayer">
+ <summary>
+ Gets if is in the normal layer group
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.IsTransitionLayer">
+ <summary>
+ Gets if this layer is also an transition layer
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.PreviousLayer">
+ <summary>
+ Gets the previous layer, returns null if no previous layer
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.PreviousHeightLayer">
+ <summary>
+ Gets the previous layer with a different height from the current, returns null if no previous layer
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Layers.Layer.GetPreviousLayerWithAtLeastPixelCountOf(System.UInt32)">
+ <summary>
+ Gets the previous layer matching at least <param name="numberOfPixels"/> pixels, returns null if no previous layer
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.NextLayer">
+ <summary>
+ Gets the next layer, returns null if no next layer
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.NextHeightLayer">
+ <summary>
+ Gets the next layer with a different height from the current, returns null if no next layer
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Layers.Layer.GetNextLayerWithAtLeastPixelCountOf(System.UInt32)">
+ <summary>
+ Gets the next layer matching at least <param name="numberOfPixels"/> pixels, returns null if no next layer
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.Index">
+ <summary>
+ Gets the layer index
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.Number">
+ <summary>
+ Gets the layer number, 1 started
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.PositionZ">
+ <summary>
+ Gets or sets the absolute layer position on Z in mm
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.RelativePositionZ">
+ <summary>
+ Gets the relative layer position on Z in mm (Relative to the previous layer)
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.WaitTimeBeforeCure">
+ <summary>
+ Gets or sets the wait time in seconds before cure the layer
+ AKA: Light-off delay
+ Chitubox: Rest time after retract
+ Lychee: Wait before print
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.ExposureTime">
+ <summary>
+ Gets or sets the exposure time in seconds
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.WaitTimeAfterCure">
+ <summary>
+ Gets or sets the wait time in seconds after cure the layer
+ Chitubox: Rest time before lift
+ Lychee: Wait after print
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.LightOffDelay">
+ <summary>
+ Gets or sets the layer off time in seconds
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.LiftHeightTotal">
+ <summary>
+ Gets: Total lift height (lift1 + lift2)
+ Sets: Lift1 with value and lift2 with 0
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.LiftHeight">
+ <summary>
+ Gets or sets the lift height in mm
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.LiftSpeed">
+ <summary>
+ Gets or sets the speed in mm/min
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.LiftHeight2">
+ <summary>
+ Gets or sets the lift height in mm
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.LiftSpeed2">
+ <summary>
+ Gets or sets the speed in mm/min
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.RetractHeightTotal">
+ <summary>
+ Gets: Total retract height (retract1 + retract2) alias of <see cref="P:UVtools.Core.Layers.Layer.LiftHeightTotal"/>
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.RetractHeight">
+ <summary>
+ Gets the retract height in mm
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.RetractSpeed">
+ <summary>
+ Gets the speed in mm/min for the retracts
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.RetractHeight2">
+ <summary>
+ Gets or sets the second retract height in mm
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.RetractSpeed2">
+ <summary>
+ Gets the speed in mm/min for the retracts
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.LightPWM">
+ <summary>
+ Gets or sets the pwm value from 0 to 255
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.MinimumSpeed">
+ <summary>
+ Gets the minimum used speed in mm/min
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.MaximumSpeed">
+ <summary>
+ Gets the maximum used speed in mm/min
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.CanExpose">
+ <summary>
+ Gets if this layer can be exposed to UV light
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.LayerHeight">
+ <summary>
+ Gets the layer height in millimeters of this layer
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.MaterialMilliliters">
+ <summary>
+ Gets the computed material milliliters spent on this layer
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.MaterialMillilitersPercent">
+ <summary>
+ Gets the computed material milliliters percentage compared to the rest of the model
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.CompressionCodec">
+ <summary>
+ Gets or sets the compression method used to cache the image
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.CompressedBytes">
+ <summary>
+ Gets or sets layer image compressed data
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.HaveImage">
+ <summary>
+ True if this layer have an valid initialized image, otherwise false
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.LayerMat">
+ <summary>
+ Gets or sets a new image instance
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.BrgMat">
+ <summary>
+ Gets a new Brg image instance
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.Filename">
+ <summary>
+ Gets a computed layer filename, padding zeros are equal to layer count digits
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.IsModified">
+ <summary>
+ Gets if layer image has been modified
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.IsUsingGlobalParameters">
+ <summary>
+ Gets if this layer have same value parameters as global settings
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.Layer.IsUsingTSMC">
+ <summary>
+ True if this layer is using TSMC values, otherwise false
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Layers.Layer.ResetParameters">
+ <summary>
+ Reset all parameters to the default values from the global parameters
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Layers.Layer.GetArea">
+ <summary>
+ Gets the layer area (XY) in mm^2
+ Pixel size * number of pixels
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Layers.Layer.GetArea(System.Byte)">
+ <summary>
+ Gets the layer area (XY) in mm^2
+ Pixel size * number of pixels
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Layers.Layer.GetVolume">
+ <summary>
+ Gets the layer volume (XYZ) in mm^3
+ Pixel size * number of pixels * layer height
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Layers.Layer.GetVolume(System.Byte)">
+ <summary>
+ Gets the layer volume (XYZ) in mm^3
+ Pixel size * number of pixels * layer height
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Layers.Layer.GetWaitTimeBeforeCure">
+ <summary>
+ Gets the wait time before cure, if not available calculate it from light off delay
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Layers.Layer.SetWaitTimeBeforeCureOrLightOffDelay(System.Single,System.Boolean)">
+ <summary>
+ Attempt to set wait time before cure if supported, otherwise fallback to light-off delay
+ </summary>
+ <param name="time">The time to set</param>
+ <param name="zeroLightOffDelayCalculateBase">When true and time is zero, it will calculate light-off delay without extra time, otherwise false to set light-off delay to 0 when time is 0</param>
+ </member>
+ <member name="M:UVtools.Core.Layers.Layer.SetNoDelays">
+ <summary>
+ Zero all 'wait times / delays' for this layer
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Layers.Layer.CopyParametersTo(UVtools.Core.Layers.Layer)">
+ <summary>
+ Copy all parameters from this layer to an target layer
+ </summary>
+ <param name="layer"></param>
+ </member>
+ <member name="M:UVtools.Core.Layers.Layer.CopyExposureTo(UVtools.Core.Layers.Layer)">
+ <summary>
+ Copy all exposure parameters from this layer to an target layer
+ </summary>
+ <param name="layer"></param>
+ </member>
+ <member name="M:UVtools.Core.Layers.Layer.CopyWaitTimesTo(UVtools.Core.Layers.Layer)">
+ <summary>
+ Copy all wait parameters from this layer to an target layer
+ </summary>
+ <param name="layer"></param>
+ </member>
+ <member name="M:UVtools.Core.Layers.Layer.CopyLiftTo(UVtools.Core.Layers.Layer)">
+ <summary>
+ Copy all lift parameters from this layer to an target layer
+ </summary>
+ <param name="layer"></param>
+ </member>
+ <member name="M:UVtools.Core.Layers.Layer.CopyImageTo(UVtools.Core.Layers.Layer)">
+ <summary>
+ Copy the image and related parameters from this layer to an target layer
+ </summary>
+ <param name="layer"></param>
+ </member>
+ <member name="P:UVtools.Core.Layers.IslandDetectionConfiguration.Enabled">
+ <summary>
+ Gets or sets if the detection is enabled
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.IslandDetectionConfiguration.WhiteListLayers">
+ <summary>
+ Gets or sets a list of layers to check for islands, absent layers will not be checked.
+ Set to null to check every layer
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.IslandDetectionConfiguration.EnhancedDetection">
+ <summary>
+ Combines the island and overhang detections for a better more realistic detection and to discard false-positives. (Slower)
+ If enabled, and when a island is found, it will check for overhangs on that same island, if no overhang found then the island will be discarded and considered safe, otherwise it will flag as an island issue.
+ Note: Overhangs settings will be used to configure the detection.Enabling Overhangs is not required for this procedure to work.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.IslandDetectionConfiguration.AllowDiagonalBonds">
+ <summary>
+ Gets the setting for whether or not diagonal bonds are considered when evaluation islands.
+ If true, all 8 neighbors of a pixel (including diagonals) will be considered when finding
+ individual components on the layer, if false only 4 neighbors (right, left, above, below)
+ will be considered..
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.IslandDetectionConfiguration.BinaryThreshold">
+ <summary>
+ Gets or sets the binary threshold, all pixels below this value will turn in black, otherwise white
+ Set to 0 to disable this operation
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.IslandDetectionConfiguration.RequiredAreaToProcessCheck">
+ <summary>
+ Gets the required area size (x*y) to consider process a island (0-65535)
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.IslandDetectionConfiguration.RequiredPixelBrightnessToProcessCheck">
+ <summary>
+ Gets the required brightness for check a pixel under a island (0-255)
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.IslandDetectionConfiguration.RequiredPixelsToSupport">
+ <summary>
+ Gets the required number of pixels to support a island and discard it as a issue (0-255)
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.IslandDetectionConfiguration.RequiredPixelsToSupportMultiplier">
+ <summary>
+ Gets the required multiplier from the island pixels to support same island and discard it as a issue
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.IslandDetectionConfiguration.RequiredPixelBrightnessToSupport">
+ <summary>
+ Gets the required brightness of supporting pixels to count as a valid support (0-255)
+ </summary>
+ </member>
+ <member name="T:UVtools.Core.Layers.OverhangDetectionConfiguration">
+ <summary>
+ Overhang configuration
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.OverhangDetectionConfiguration.Enabled">
+ <summary>
+ Gets or sets if the detection is enabled
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.OverhangDetectionConfiguration.WhiteListLayers">
+ <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>
+ </member>
+ <member name="P:UVtools.Core.Layers.OverhangDetectionConfiguration.IndependentFromIslands">
+ <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>
+ </member>
+ <member name="P:UVtools.Core.Layers.OverhangDetectionConfiguration.RequiredPixelsToConsider">
+ <summary>
+ After compute overhangs, masses with a number of pixels bellow this number will be discarded (Not a overhang)
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.OverhangDetectionConfiguration.ErodeIterations">
+ <summary>
+ Previous layer will be subtracted from current layer, after will erode by this value.
+ The survived pixels are potential overhangs.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.ResinTrapDetectionConfiguration.Enabled">
+ <summary>
+ Gets or sets if the detection is enabled
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.ResinTrapDetectionConfiguration.StartLayerIndex">
+ <summary>
+ Gets or sets the starting layer index for the detection which will also be considered a drain layer.
+ Use this setting to bypass complicated rafts by selected the model first real layer.
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.ResinTrapDetectionConfiguration.BinaryThreshold">
+ <summary>
+ Gets or sets the binary threshold, all pixels below this value will turn in black, otherwise white
+ Set to 0 to disable this operation
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.ResinTrapDetectionConfiguration.RequiredAreaToProcessCheck">
+ <summary>
+ Gets the required area size (x*y) to consider process a hollow area (0-255)
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.ResinTrapDetectionConfiguration.RequiredBlackPixelsToDrain">
+ <summary>
+ Gets the number of black pixels required to consider a drain
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.ResinTrapDetectionConfiguration.MaximumPixelBrightnessToDrain">
+ <summary>
+ Gets the maximum pixel brightness to be a drain pixel (0-150)
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.ResinTrapDetectionConfiguration.DetectSuctionCups">
+ <summary>
+ Gets if suction cups can also be detected together with resin traps
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.ResinTrapDetectionConfiguration.RequiredAreaToConsiderSuctionCup">
+ <summary>
+ Required minimum area to be considered a suction cup
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.ResinTrapDetectionConfiguration.RequiredHeightToConsiderSuctionCup">
+ <summary>
+ Required minimum height (in mm) to be considered a suction cup
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.TouchingBoundDetectionConfiguration.Enabled">
+ <summary>
+ Gets if the detection is enabled
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.TouchingBoundDetectionConfiguration.MinimumPixelBrightness">
+ <summary>
+ Gets the minimum pixel brightness to be a touching bound
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.TouchingBoundDetectionConfiguration.MarginLeft">
+ <summary>
+ Gets or sets the margin in pixels from left edge to check for touching white pixels
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.TouchingBoundDetectionConfiguration.MarginTop">
+ <summary>
+ Gets or sets the margin in pixels from top to check for touching white pixels
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.TouchingBoundDetectionConfiguration.MarginRight">
+ <summary>
+ Gets or sets the margin in pixels from right edge to check for touching white pixels
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.TouchingBoundDetectionConfiguration.MarginBottom">
+ <summary>
+ Gets or sets the margin in pixels from bottom edge to check for touching white pixels
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.PrintHeightDetectionConfiguration.Enabled">
+ <summary>
+ Gets if the detection is enabled
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.PrintHeightDetectionConfiguration.Offset">
+ <summary>
+ Get the offset from top to sum to printer max Z height
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.MainIssue.Type">
+ <summary>
+ Gets the issue type associated
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.MainIssue.StartLayer">
+ <summary>
+ Gets the layer where issue is present and starts
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.MainIssue.EndLayer">
+ <summary>
+ Gets the layer where issue ends
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.MainIssue.StartLayerIndex">
+ <summary>
+ Gets the layer index
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.MainIssue.EndLayerIndex">
+ <summary>
+ Gets the layer index
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.MainIssue.LayerRangeCount">
+ <summary>
+ Gets the number of layers in this range
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.MainIssue.TotalHeight">
+ <summary>
+ Gets the total height that represents this issue
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.MainIssue.BoundingRectangle">
+ <summary>
+ Gets the bounding rectangle of the area
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.MainIssue.PixelCount">
+ <summary>
+ Gets the area of the issue
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.MainIssue.Area">
+ <summary>
+ Gets the area of the issue
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Layers.MainIssue.Childs">
+ <summary>
+ Gets all issues inside this main issue
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Managers.ClipboardItem.LayerCount">
+ <summary>
+ Gets the LayerCount for this clip
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Managers.ClipboardItem.LayerHeight">
+ <summary>
+ Gets the LayerHeight for this clip
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Managers.ClipboardItem.Resolution">
+ <summary>
+ Gets the Resolution for this clip
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Managers.ClipboardItem.Description">
+ <summary>
+ Gets the description of this operation
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Managers.ClipboardManager.CurrentIndex">
+ <summary>
+ Gets the index of current item
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Managers.ClipboardManager.Reset">
+ <summary>
+ Clears the manager
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Managers.ClipboardManager.Init(UVtools.Core.FileFormats.FileFormat)">
+ <summary>
+ Clears and init clipboard
+ </summary>
+ <param name="slicerFile"></param>
+ </member>
+ <member name="M:UVtools.Core.Managers.ClipboardManager.Snapshot(UVtools.Core.Layers.Layer[])">
+ <summary>
+ Snapshot layers and prepare manager to collect modified layers with <see cref="M:UVtools.Core.Managers.ClipboardManager.Clip(System.String,UVtools.Core.Layers.Layer[],System.Boolean)"/>
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Managers.ClipboardManager.Clip(System.String,UVtools.Core.Layers.Layer[],System.Boolean)">
+ <summary>
+ Collect differences and create a clip
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Managers.ClipboardManager.Clip(UVtools.Core.Operations.Operation,UVtools.Core.Layers.Layer[],System.Boolean)">
+ <summary>
+ Collect differences and create a clip
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Managers.IssueManager.GetVisible">
+ <summary>
+ Gets the visible <see cref="T:UVtools.Core.Layers.MainIssue"/> aka not ignored
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Managers.KernelCacheManager.Clear">
+ <summary>
+ Clears and dispose all the cache
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Managers.KernelCacheManager.Dispose">
+ <inheritdoc />
+ </member>
+ <member name="P:UVtools.Core.Managers.MatCacheManager.SlicerFile">
+ <summary>
+ Gets the slicer file
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Managers.MatCacheManager.CacheCount">
+ <summary>
+ Gets or sets the cache count of items to keep in memory
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Managers.MatCacheManager.ElementsPerCache">
+ <summary>
+ Gets the number of cached elements per a cache entry
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Managers.MatCacheManager.LayerIndexStart">
+ <summary>
+ Gets the starting layer index range
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Managers.MatCacheManager.LayerIndexEnd">
+ <summary>
+ Gets the ending layer index range
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Managers.MatCacheManager.CollectionSize">
+ <summary>
+ Gets the size of this collection
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Managers.MatCacheManager.Rotate">
+ <summary>
+ Gets the image rotation to cache
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Managers.MatCacheManager.Flip">
+ <summary>
+ Gets the image flip to cache
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Managers.MatCacheManager.StripAntiAliasing">
+ <summary>
+ Gets if striping anti-aliasing is enabled, cache will be threshold'ed
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Managers.MatCacheManager.Direction">
+ <summary>
+ Gets or sets the cache direction, false to go backwards, true to go forward
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Managers.MatCacheManager.UseRawIndexInsteadOfLayerIndex">
+ <summary>
+ If enabled it will not calculate the cache index given a layer index, set this to true to use your own indexing without pair them with layers
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Managers.MatCacheManager.AutoDispose">
+ <summary>
+ Gets or sets the auto dispose mode, it will dispose all mat's below of above passed index
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Managers.MatCacheManager.AutoDisposeKeepLast">
+ <summary>
+ Gets or sets the amount of last mats to keep cached when <see cref="P:UVtools.Core.Managers.MatCacheManager.AutoDispose"/> is enabled
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Managers.MatCacheManager.MatCache">
+ <summary>
+ Gets the cache mat array
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Managers.MatCacheManager.AfterCacheAction">
+ <summary>
+ Gets or sets the action to trigger after cache the initial <see cref="T:Emgu.CV.Mat"/>
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Managers.MatCacheManager.LayerIndexToCacheIndex(System.UInt32)">
+ <summary>
+ Gets the cache index from a layer index, required when layer range is not 0 started
+ </summary>
+ <param name="layerIndex"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Managers.MatCacheManager.CacheIndexToLayerIndex(System.UInt32)">
+ <summary>
+ Gets the layer index from the cache index, required when layer range is not 0 started
+ </summary>
+ <param name="index"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Managers.MatCacheManager.Get(System.UInt32)">
+ <summary>
+ Gets all cached mat's given an index
+ </summary>
+ <param name="layerIndex"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Managers.MatCacheManager.Consume(System.UInt32)">
+ <summary>
+ Consume and dispose the cached Mats for given layer index
+ </summary>
+ <param name="layerIndex"></param>
+ </member>
+ <member name="M:UVtools.Core.Managers.MatCacheManager.ClearButKeep(System.UInt32,System.UInt16)">
+ <summary>
+ Clears and dispose the cache but keep the selected index and optionally the last n indexes
+ </summary>
+ <param name="layerIndex"></param>
+ <param name="keepLast"></param>
+ </member>
+ <member name="M:UVtools.Core.Managers.MatCacheManager.Clear">
+ <summary>
+ Clears and dispose all the cache
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Managers.MatCacheManager.Dispose">
+ <inheritdoc />
+ </member>
+ <member name="P:UVtools.Core.Managers.MaterialManager.Instance">
+ <summary>
+ Instance of <see cref="T:UVtools.Core.Managers.MaterialManager"/> (singleton)
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Managers.MaterialManager.BottlesInStock">
+ <summary>
+ Gets the total number of bottles in stock
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Managers.MaterialManager.OwnedBottles">
+ <summary>
+ Gets the total number of bottles ever owned
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Managers.MaterialManager.ConsumedVolume">
+ <summary>
+ Gets the total of consumed volume in milliliters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Managers.MaterialManager.ConsumedVolumeLiters">
+ <summary>
+ Gets the total of consumed volume in liters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Managers.MaterialManager.VolumeInStock">
+ <summary>
+ Gets the total volume in stock in milliliters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Managers.MaterialManager.VolumeInStockLiters">
+ <summary>
+ Gets the total volume in stock in liters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Managers.MaterialManager.TotalCost">
+ <summary>
+ Gets the total costs
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Managers.MaterialManager.PrintTime">
+ <summary>
+ Gets the total print time in hours
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Managers.MaterialManager.PrintTimeSpan">
+ <summary>
+ Gets the total print time
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Managers.MaterialManager.Load">
+ <summary>
+ Load settings from file
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Managers.MaterialManager.Save">
+ <summary>
+ Save settings to file
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.MeshFormats.MeshFile.FileFormat">
+ <summary>
+ Gets the file format for this mesh
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.MeshFormats.MeshFile.SlicerFile">
+ <summary>
+ Gets the <see cref="P:UVtools.Core.MeshFormats.MeshFile.FileFormat"/> from model export
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.MeshFormats.MeshFile.FilePath">
+ <summary>
+ Gets the file path of the stream
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.MeshFormats.MeshFile.Filename">
+ <summary>
+ Gets the file name with extension from <see cref="P:UVtools.Core.MeshFormats.MeshFile.FilePath"/>
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.MeshFormats.MeshFile.MeshStream">
+ <summary>
+ Gets the current file stream
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.MeshFormats.MeshFile.VertexCount">
+ <summary>
+ Gets the number of vertexes, this is often triangle count * 3
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.MeshFormats.MeshFile.TriangleCount">
+ <summary>
+ Gets the number of triangles
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.MeshFormats.MeshFile.BeginWrite">
+ <summary>
+ Call once before write content to the file, use this to build up the header if any
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.MeshFormats.MeshFile.WriteTriangle(System.Numerics.Vector3,System.Numerics.Vector3,System.Numerics.Vector3,System.Numerics.Vector3)">
+ <summary>
+ Writes an triangle to the file
+ </summary>
+ <param name="p1"></param>
+ <param name="p2"></param>
+ <param name="p3"></param>
+ <param name="normal"></param>
+ </member>
+ <member name="M:UVtools.Core.MeshFormats.MeshFile.EndWrite">
+ <summary>
+ Call once before close the file, use this to build up the footer if any
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.MeshFormats.MeshFile.Dispose">
+ <inheritdoc />
+ </member>
+ <member name="P:UVtools.Core.Network.MappedDevice.IsEnabled">
+ <summary>
+ Gets or sets if this device is enabled
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Network.MappedDevice.Path">
+ <summary>
+ Gets or sets the full path for the location
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Network.MappedDevice.Name">
+ <summary>
+ Gets or sets the path name alias
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Network.MappedDevice.CompatibleExtensions">
+ <summary>
+ Gets or sets the compatible extensions with this device.
+ Empty or null to be compatible with everything
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Network.RemotePrinter.Name">
+ <summary>
+ Gets or sets the alias name for this printer.
+ Not used on requests
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Network.RemotePrinter.Host">
+ <summary>
+ Gets or sets the host/ip for the requests
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Network.RemotePrinter.Port">
+ <summary>
+ Gets or sets the host port for the requests.
+ Use 0 to not use a port
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Network.RemotePrinter.CompatibleExtensions">
+ <summary>
+ Gets or sets the compatible extensions with this device.
+ Empty or null to be compatible with everything
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Network.RemotePrinter.IsValid">
+ <summary>
+ Gets if this host is valid
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Network.RemotePrinterRequest.Type">
+ <summary>
+ Gets or sets this request type
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Network.RemotePrinterRequest.Method">
+ <summary>
+ Gets or sets this request method
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Network.RemotePrinterRequest.Path">
+ <summary>
+ Gets or sets the request path, eg: print/file/{0}
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Network.RemotePrinterRequest.GetFormattedPath(System.Object[])">
+ <summary>
+ Gets the path with formatted arguments
+ </summary>
+ <param name="parameters"></param>
+ <returns></returns>
+ </member>
+ <member name="T:UVtools.Core.Objects.BindableBase">
+ <summary>
+ Implementation of <see cref="T:System.ComponentModel.INotifyPropertyChanged" /> to simplify models.
+ </summary>
+ </member>
+ <member name="F:UVtools.Core.Objects.BindableBase._propertyChanged">
+ <summary>
+ Multicast event for property change notifications.
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Objects.BindableBase.RaisePropertyChanged(System.String)">
+ <summary>
+ Notifies listeners that a property value has changed.
+ </summary>
+ <param name="propertyName">
+ Name of the property used to notify listeners. This
+ value is optional and can be provided automatically when invoked from compilers
+ that support <see cref="T:System.Runtime.CompilerServices.CallerMemberNameAttribute" />.
+ </param>
+ </member>
+ <member name="P:UVtools.Core.Objects.ExposureItem.LayerHeight">
+ <summary>
+ Gets or sets the layer height in millimeters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Objects.ExposureItem.BottomExposure">
+ <summary>
+ Gets or sets the bottom exposure in seconds
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Objects.ExposureItem.Exposure">
+ <summary>
+ Gets or sets the bottom exposure in seconds
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Objects.ExposureItem.Brightness">
+ <summary>
+ Gets or sets the brightness level
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Objects.MappedProcess.IsEnabled">
+ <summary>
+ Gets or sets if this device is enabled
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Objects.MappedProcess.ApplicationPath">
+ <summary>
+ Gets or sets the full path for the application
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Objects.MappedProcess.Name">
+ <summary>
+ Gets or sets the path name alias
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Objects.MappedProcess.Arguments">
+ <summary>
+ Gets or sets the arguments for the application
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Objects.MappedProcess.CompatibleExtensions">
+ <summary>
+ Gets or sets the compatible extensions with this device.
+ Empty or null to be compatible with everything
+ </summary>
+ </member>
+ <member name="T:UVtools.Core.Objects.Material">
+ <summary>
+ Represents a material to feed in the printer
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Objects.Material.BottleVolume">
+ <summary>
+ Gets or sets the bottle volume in milliliters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Objects.Material.BottleWeight">
+ <summary>
+ Gets or sets the bottle weight in grams
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Objects.Material.Density">
+ <summary>
+ Gets or sets the material density in g/ml
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Objects.Material.BottleCost">
+ <summary>
+ Gets or sets the bottle cost
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Objects.Material.BottlesInStock">
+ <summary>
+ Gets or sets the number of bottles in stock
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Objects.Material.BottleRemainingVolume">
+ <summary>
+ Gets or sets the current bottle remaining material in milliliters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Objects.Material.VolumeInStock">
+ <summary>
+ Gets the total available volume in stock in milliliters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Objects.Material.ConsumedBottles">
+ <summary>
+ Gets the number of consumed bottles
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Objects.Material.OwnedBottles">
+ <summary>
+ Gets the total number of owned bottles
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Objects.Material.ConsumedVolume">
+ <summary>
+ Gets or sets the total number of consumed volume in milliliters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Objects.Material.ConsumedVolumeLiters">
+ <summary>
+ Gets total number of consumed volume in liters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Objects.Material.PrintTime">
+ <summary>
+ Gets or sets the total print time using with material in hours
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Objects.Material.GetVolumeCost(System.Decimal)">
+ <summary>
+ Gets the cost for a given volume
+ </summary>
+ <param name="volume">Volume in ml</param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Objects.Material.GetVolumeGrams(System.Decimal)">
+ <summary>
+ Gets the grams for a given volume
+ </summary>
+ <param name="volume">Volume in ml</param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Objects.Material.Consume(System.Decimal,System.Double)">
+ <summary>
+ Consume material from current bottle and manage stock
+ </summary>
+ <param name="volume">Volume to consume in milliliters</param>
+ <param name="printSeconds">Time in seconds it took to print</param>
+ <returns>True if still have bottles in stock, otherwise false</returns>
+ </member>
+ <member name="M:UVtools.Core.Objects.Material.AddPrintTimeSeconds(System.Double)">
+ <summary>
+ Add print time with this material
+ </summary>
+ <param name="seconds">Seconds to add</param>
+ </member>
+ <member name="T:UVtools.Core.Objects.NullTerminatedUintStringBigEndian">
+ <summary>
+ A string that always end with 0x00 if not null
+ It contains the string length as uint
+ </summary>
+ </member>
+ <member name="T:UVtools.Core.Objects.UInt24BigEndian">
+ <summary>
+ A string that always end with 0x00 if not null
+ It contains the string length as uint
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.ImportedFrom">
+ <summary>
+ Gets or sets from where this option got loaded/imported
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.SlicerFile">
+ <summary>
+ Gets or sets the parent <see cref="T:UVtools.Core.FileFormats.FileFormat"/>
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.OriginalBoundingRectangle">
+ <summary>
+ Gets the bounding rectangle of the model, preserved from any change during and after execution
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.Tag">
+ <summary>
+ Gets or sets any object which is not used internally
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.Id">
+ <summary>
+ Gets the ID name of this operation, this comes from class name with "Operation" removed
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.StartLayerRangeSelection">
+ <summary>
+ Gets the starting layer selection
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.LayerRangeSelection">
+ <summary>
+ Gets the last used layer range selection, returns none if custom
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.LayerRangeString">
+ <summary>
+ Gets a string representing the layer range, used with profiles
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.LayerIndexEndEnabled">
+ <summary>
+ Gets if the LayerIndexEnd selector is enabled
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.PassActualLayerIndex">
+ <summary>
+ Gets if this operation should set layer range to the actual layer index on layer preview
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.CanRunInPartialMode">
+ <summary>
+ Gets if this operation can run in a file open as partial mode
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.CanROI">
+ <summary>
+ Gets if this operation can make use of ROI
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.CanMask">
+ <summary>
+ Gets if this operation can make use maskable areas
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.CanHaveProfiles">
+ <summary>
+ Gets if this operation can store profiles
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.CanCancel">
+ <summary>
+ Gets if this operation supports cancellation
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.IconClass">
+ <summary>
+ Gets the icon class to show on the UI
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.Title">
+ <summary>
+ Gets the title of this operation
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.Description">
+ <summary>
+ Gets a descriptive text of this operation
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.ButtonOkText">
+ <summary>
+ Gets the Ok button text
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.ConfirmationText">
+ <summary>
+ Gets the confirmation text for the operation
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.ProgressTitle">
+ <summary>
+ Gets the progress window title
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.ProgressAction">
+ <summary>
+ Gets the progress action name
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.HaveAction">
+ <summary>
+ Gets if this operation have a action text
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.LayerIndexStart">
+ <summary>
+ Gets the start layer index where operation will starts in
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.LayerIndexEnd">
+ <summary>
+ Gets the end layer index where operation will ends in
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.LayerRangeHaveBottoms">
+ <summary>
+ Gets if any bottom layer is included in the selected layer range
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.LayerRangeHaveNormals">
+ <summary>
+ Gets if any normal layer is included in the selected layer range
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.LayerRangeCount">
+ <summary>
+ Gets the number of selected layers
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.ProfileName">
+ <summary>
+ Gets the name for this profile
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.ProfileIsDefault">
+ <summary>
+ Gets if this profile is the default to load
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.ROI">
+ <summary>
+ Gets or sets an ROI to process this operation
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.HaveROI">
+ <summary>
+ Gets if there is an ROI associated
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.MaskPoints">
+ <summary>
+ Gets or sets an Mask to process this operation
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.HaveMask">
+ <summary>
+ Gets if there is masks associated
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.HaveROIorMask">
+ <summary>
+ Gets if there is roi or masks associated
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.HaveExecuted">
+ <summary>
+ Gets if this operation have been executed once
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.IsValidated">
+ <summary>
+ Gets if this operation have validated at least once
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.Operation.CanSpawn">
+ <summary>
+ Gets if the operation can spawn
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.ValidateSpawn">
+ <summary>
+ Gets if this operation can spawn under the <see cref="P:UVtools.Core.Operations.Operation.SlicerFile"/>
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.ValidateSpawn(System.String@)">
+ <summary>
+ Gets if this operation can spawn under the <see cref="P:UVtools.Core.Operations.Operation.SlicerFile"/>
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.ValidateInternally">
+ <summary>
+ Validates the operation, return null or empty if validates
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.Validate">
+ <summary>
+ Validates the operation
+ </summary>
+ <returns>null or empty if validates, otherwise return a string with error message</returns>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.CanValidate">
+ <summary>
+ Gets if the operation is able to execute
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.SelectAllLayers">
+ <summary>
+ Selects all layers from first to last layer
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.SelectCurrentLayer(System.UInt32)">
+ <summary>
+ Selects one layer
+ </summary>
+ <param name="layerIndex">Layer index to select</param>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.SelectBottomLayers">
+ <summary>
+ Selects all bottom layers
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.SelectNormalLayers">
+ <summary>
+ Selects all normal layers
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.SelectFirstLayer">
+ <summary>
+ Select the first layer (0)
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.SelectLastLayer">
+ <summary>
+ Select the last layer
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.SelectFirstToCurrentLayer(System.UInt32)">
+ <summary>
+ Selects from first to a layer index
+ </summary>
+ <param name="currentLayerIndex">To layer index to select</param>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.SelectCurrentToLastLayer(System.UInt32)">
+ <summary>
+ Selects from a layer index to the last layer
+ </summary>
+ <param name="currentLayerIndex">From layer index to select</param>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.SelectLayers(UVtools.Core.LayerRangeSelection)">
+ <summary>
+ Selects layer given a range type
+ </summary>
+ <param name="range"></param>
+ <exception cref="T:System.NotImplementedException"></exception>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.InitWithSlicerFile">
+ <summary>
+ Called to init the object when <see cref="P:UVtools.Core.Operations.Operation.SlicerFile"/> changes
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.ClearROI">
+ <summary>
+ Clears the ROI and set to empty
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.ClearROIandMasks">
+ <summary>
+ Clear <see cref="P:UVtools.Core.Operations.Operation.ROI"/> and <see cref="P:UVtools.Core.Operations.Operation.MaskPoints"/>
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.SetROIIfEmpty(System.Drawing.Rectangle)">
+ <summary>
+ Set <see cref="P:UVtools.Core.Operations.Operation.ROI"/> only if not set already
+ </summary>
+ <param name="roi">ROI to set</param>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.GetRoiSizeOrDefault">
+ <summary>
+ Gets the <see cref="P:UVtools.Core.Operations.Operation.ROI"/> size, but if empty returns the file resolution size instead
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.GetRoiSizeOrDefault(Emgu.CV.Mat)">
+ <summary>
+ Gets the <see cref="P:UVtools.Core.Operations.Operation.ROI"/> size, but if empty returns <paramref name="src"/> size instead
+ </summary>
+ <param name="src"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.GetRoiSizeOrDefault(System.Drawing.Rectangle)">
+ <summary>
+ Gets the <see cref="P:UVtools.Core.Operations.Operation.ROI"/> size, but if empty returns the size from <paramref name="fallbackRectangle"/> instead
+ </summary>
+ <param name="fallbackRectangle"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.GetRoiSizeOrDefault(System.Drawing.Size)">
+ <summary>
+ Gets the <see cref="P:UVtools.Core.Operations.Operation.ROI"/> size, but if empty returns the <paramref name="fallbackSize"/> instead
+ </summary>
+ <param name="fallbackSize"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.GetRoiSizeOrVolumeSize">
+ <summary>
+ Gets the <see cref="P:UVtools.Core.Operations.Operation.ROI"/> size, but if empty returns the model volume bounds size instead
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.GetRoiSizeOrVolumeSize(System.Drawing.Size)">
+ <summary>
+ Gets the <see cref="P:UVtools.Core.Operations.Operation.ROI"/> size, but if empty returns the <paramref name="fallbackSize"/> instead
+ </summary>
+ <param name="fallbackSize"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.GetRoiOrDefault(Emgu.CV.Mat)">
+ <summary>
+ Gets a cropped shared <see cref="T:Emgu.CV.Mat"/> from <paramref name="src"/> by the <see cref="P:UVtools.Core.Operations.Operation.ROI"/>, but if empty return the <paramref name="src"/> instead
+ </summary>
+ <param name="src"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.GetRoiOrDefault(Emgu.CV.Mat,System.Drawing.Rectangle)">
+ <summary>
+ Gets a cropped shared <see cref="T:Emgu.CV.Mat"/> from <paramref name="src"/> by the <see cref="P:UVtools.Core.Operations.Operation.ROI"/>, but if empty crop by <paramref name="fallbackRoi"/>
+ </summary>
+ <param name="src"></param>
+ <param name="fallbackRoi"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.GetRoiOrVolumeBounds(Emgu.CV.Mat)">
+ <summary>
+ Gets a cropped shared <see cref="T:Emgu.CV.Mat"/> by the <see cref="P:UVtools.Core.Operations.Operation.ROI"/>, but if empty crop by <see cref="P:UVtools.Core.Operations.Operation.OriginalBoundingRectangle"/>
+ </summary>
+ <param name="defaultMat"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.GetRoiOrVolumeBounds">
+ <summary>
+ Gets the <see cref="P:UVtools.Core.Operations.Operation.ROI"/>, but if empty returns <see cref="P:UVtools.Core.Operations.Operation.OriginalBoundingRectangle"/>
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.ClearMasks">
+ <summary>
+ Clears all masks
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.SetMasksIfEmpty(System.Drawing.Point[][])">
+ <summary>
+ Sets masks only if they are empty
+ </summary>
+ <param name="points"></param>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.GetMask(Emgu.CV.Mat)">
+ <summary>
+ Returns a mask given <see cref="P:UVtools.Core.Operations.Operation.MaskPoints"/>
+ </summary>
+ <param name="mat"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.ApplyMask(Emgu.CV.Mat,Emgu.CV.Mat,Emgu.CV.Mat)">
+ <summary>
+ Apply a mask to a mat <paramref name="result"/>
+ </summary>
+ <param name="original">Original untouched mat</param>
+ <param name="result">Mat to modify and apply the mask</param>
+ <param name="mask">Mask</param>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.ApplyMask(Emgu.CV.Mat,Emgu.CV.Mat)">
+ <summary>
+ Gets a mask and apply it
+ </summary>
+ <param name="original">Original unmodified image</param>
+ <param name="result">Result image which will also be modified</param>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.ExecuteInternally(UVtools.Core.Operations.OperationProgress)">
+ <summary>
+ Execute the operation internally, to be override by class
+ </summary>
+ <param name="progress"></param>
+ <returns></returns>
+ <exception cref="T:System.NotImplementedException"></exception>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.Execute(UVtools.Core.Operations.OperationProgress)">
+ <summary>
+ Execute the operation
+ </summary>
+ <param name="progress"></param>
+ <returns></returns>
+ <exception cref="T:System.InvalidOperationException"></exception>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.Execute(Emgu.CV.Mat,System.Object[])">
+ <summary>
+ Execute the operation on a given <see cref="T:Emgu.CV.Mat"/>
+ </summary>
+ <param name="mat"></param>
+ <param name="arguments"></param>
+ <returns></returns>
+ <exception cref="T:System.NotImplementedException"></exception>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.GetSelectedLayerRange">
+ <summary>
+ Get the selected layer range in a new array, array index will not match layer index when a range is selected
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.CopyConfigurationTo(UVtools.Core.Operations.Operation)">
+ <summary>
+ Copy this operation base configuration to another operation.
+ Layer range, ROI, Masks
+ </summary>
+ <param name="operation"></param>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.Serialize(System.String,System.Boolean)">
+ <summary>
+ Serialize class to XML file
+ </summary>
+ <param name="path"></param>
+ <param name="indent"></param>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.Clone">
+ <summary>
+ Clone object
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.Deserialize(System.String)">
+ <summary>
+ Deserialize <see cref="T:UVtools.Core.Operations.Operation"/> from a XML file
+ </summary>
+ <param name="path">XML file path</param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.Deserialize(System.String,System.Type)">
+ <summary>
+ Deserialize <see cref="T:UVtools.Core.Operations.Operation"/> from a XML file
+ </summary>
+ <param name="path">XML file path</param>
+ <param name="type"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Operations.Operation.Deserialize(System.String,UVtools.Core.Operations.Operation)">
+ <summary>
+ Deserialize <see cref="T:UVtools.Core.Operations.Operation"/> from a XML file
+ </summary>
+ <param name="path">XML file path</param>
+ <param name="operation"></param>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Operations.OperationCalibrateBloomingEffect.GetLayerPreview">
+ <summary>
+ Gets the layers
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Operations.OperationCalibrateElephantFoot.GetLayers">
+ <summary>
+ Gets the bottom and normal layers, 0 = bottom | 1 = normal
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="P:UVtools.Core.Operations.OperationCalibrateExposureFinder.Holes">
+ <summary>
+ Gets all holes in pixels and ordered
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.OperationCalibrateExposureFinder.Bars">
+ <summary>
+ Gets all holes in pixels and ordered
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.OperationCalibrateExposureFinder.MultipleBrightnessValuesArray">
+ <summary>
+ Gets all holes in pixels and ordered
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.OperationCalibrateExposureFinder.BullsEyes">
+ <summary>
+ Gets all holes in pixels and ordered
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Operations.OperationCalibrateGrayscale.GetLayers">
+ <summary>
+ Gets the bottom and normal layers, 0 = bottom | 1 = normal
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Operations.OperationCalibrateLiftHeight.GetLayers">
+ <summary>
+ Gets the bottom and normal layers, 0 = bottom | 1 = normal
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="P:UVtools.Core.Operations.OperationDynamicLayerHeight.ExposureTableDictionary">
+ <summary>
+ Gets the exposure table into a dictionary where key is the layer height
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.OperationEditParameters.PerLayerOverride">
+ <summary>
+ Gets or sets if parameters are global or per layer inside a layer range
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.OperationEditParameters.SetNumberOfLayer">
+ <summary>
+ Gets or sets the number of sequential layers to set the parameters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.OperationEditParameters.SkipNumberOfLayer">
+ <summary>
+ Gets or sets the number of sequential layers to skip after set a layer
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.OperationIPrintedThisFile.Multiplier">
+ <summary>
+ Number of times this file has been printed
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.OperationLayerClone.KeepSamePositionZ">
+ <summary>
+ Gets or sets if cloned layers will keep same position z or get the height rebuilt
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.OperationLayerClone.Clones">
+ <summary>
+ Gets or sets the number of clones
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Operations.OperationLightBleedCompensation.GetDimMats">
+ <summary>
+ Get the cached dim mat's
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Operations.OperationMask.LoadFromFile(System.String,System.Boolean,System.Drawing.Size)">
+ <summary>
+ Loads mask from a image file
+ </summary>
+ <param name="filePath"></param>
+ <param name="invertMask"></param>
+ <param name="maskSize"></param>
+ </member>
+ <member name="M:UVtools.Core.Operations.OperationPattern.Fill">
+ <summary>
+ Fills the plate with maximum cols and rows
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.OperationPixelDimming.AlternatePatternPerLayers">
+ <summary>
+ Use the alternate pattern every <see cref="P:UVtools.Core.Operations.OperationPixelDimming.AlternatePatternPerLayers"/> layers
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.OperationProgress.CanCancel">
+ <summary>
+ Gets or sets if operation can be cancelled
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.OperationProgress.Title">
+ <summary>
+ Gets or sets the item name for the operation
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.OperationProgress.ItemName">
+ <summary>
+ Gets or sets the item name for the operation
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.OperationProgress.ProcessedItems">
+ <summary>
+ Gets or sets the number of processed items
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.OperationProgress.ItemCount">
+ <summary>
+ Gets or sets the total of item count on this operation
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.OperationProgress.Tag">
+ <summary>
+ Gets or sets an tag
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.OperationProgress.RemainingItems">
+ <summary>
+ Gets the remaining items to be processed
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.OperationProgress.ProgressPercent">
+ <summary>
+ Gets the progress from 0 to 100%
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.OperationRaiseOnPrintFinish.PositionZ">
+ <summary>
+ Sets or gets the Z position to raise to
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.OperationRaiseOnPrintFinish.OutputDummyPixel">
+ <summary>
+ True to output a dummy pixel on bounding rectangle position to avoid empty layer and blank image, otherwise set to false
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.OperationSolidify.MinimumArea">
+ <summary>
+ Gets the minimum required area to solidify it
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.OperationTimelapse.RaisePositionZ">
+ <summary>
+ Sets or gets the Z position to raise to
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.OperationTimelapse.OutputDummyPixel">
+ <summary>
+ True to output a dummy pixel on bounding rectangle position to avoid empty layer and blank image, otherwise set to false
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.OperationTimelapse.RaiseEachNthHeight">
+ <summary>
+ Gets or sets the alternating height in millimeters to raise when, it will raise only at each defined millimeters and skip the same next millimeters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.OperationTimelapse.RaiseEachNthLayers">
+ <summary>
+ Gets or sets the alternating layer count to raise when, it will raise only at each defined layers and skip the same next layers
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.OperationTimelapse.NumberOfLifts">
+ <summary>
+ Gets the total number of additional lifts
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Operations.OperationTimelapse.EnsureLastLayer">
+ <summary>
+ Gets or sets if last layer must be ensured in the sequence,
+ If true, it will generate an obligatory additional layer to cover the last layer
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.PixelEditor.PixelOperation.Index">
+ <summary>
+ Gets or sets the index number to show on GUI
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.PixelEditor.PixelOperation.OperationType">
+ <summary>
+ Gets the <see cref="T:UVtools.Core.PixelEditor.PixelOperation.PixelOperationType"/>
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.PixelEditor.PixelOperation.LayerIndex">
+ <summary>
+ Gets the layer index
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.PixelEditor.PixelOperation.Location">
+ <summary>
+ Gets the location of the operation
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.PixelEditor.PixelOperation.LineType">
+ <summary>
+ Gets the <see cref="P:UVtools.Core.PixelEditor.PixelOperation.LineType"/> for the draw operation
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.PixelEditor.PixelOperation.Size">
+ <summary>
+ Gets the total size of the operation
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Printer.Machine.Xppmm">
+ <summary>
+ Gets or sets the pixels per mm on X direction
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Printer.Machine.Yppmm">
+ <summary>
+ Gets or sets the pixels per mm on Y direction
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Printer.Machine.Ppmm">
+ <summary>
+ Gets or sets the pixels per mm
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Printer.Machine.PpmmMax">
+ <summary>
+ Gets the maximum (Width or Height) pixels per mm
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Printer.Machine.PixelWidth">
+ <summary>
+ Gets the pixel width in millimeters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Printer.Machine.PixelHeight">
+ <summary>
+ Gets the pixel height in millimeters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Printer.Machine.PixelSize">
+ <summary>
+ Gets the pixel size in millimeters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Printer.Machine.PixelSizeMax">
+ <summary>
+ Gets the maximum pixel between width and height in millimeters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Printer.Machine.PixelArea">
+ <summary>
+ Gets the pixel area in millimeters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Printer.Machine.PixelWidthMicrons">
+ <summary>
+ Gets the pixel width in microns
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Printer.Machine.PixelHeightMicrons">
+ <summary>
+ Gets the pixel height in microns
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Printer.Machine.PixelSizeMicrons">
+ <summary>
+ Gets the pixel size in microns
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Printer.Machine.PixelSizeMicronsMax">
+ <summary>
+ Gets the maximum pixel between width and height in microns
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Printer.Machine.PixelAreaMicrons">
+ <summary>
+ Gets the pixel area in millimeters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Printer.Machine.Machines">
+ <summary>
+ Preset list of machines
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Printer.Machine.GetMachinesFromPrusaSlicer">
+ <summary>
+ Gets all machines from PrusaSlicer profiles
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="P:UVtools.Core.Scripting.ScriptBaseInput.Label">
+ <summary>
+ Gets the input label
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Scripting.ScriptBaseInput.ToolTip">
+ <summary>
+ Gets the hover tooltip for this input
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Scripting.ScriptBaseInput.Unit">
+ <summary>
+ Gets the value representative unit name
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Scripting.ScriptBaseInput`1.Value">
+ <summary>
+ Gets or sets the value for this input
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Scripting.ScriptConfiguration.Name">
+ <summary>
+ Gets the script name
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Scripting.ScriptConfiguration.Description">
+ <summary>
+ Gets the script description of what it does
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Scripting.ScriptConfiguration.Author">
+ <summary>
+ Gets the script author name
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Scripting.ScriptConfiguration.Version">
+ <summary>
+ Gets the script version
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Scripting.ScriptConfiguration.MinimumVersionToRun">
+ <summary>
+ Gets the minimum version able to run this script
+ Scripts were introduced on v2.8
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Scripting.ScriptConfiguration.UserInputs">
+ <summary>
+ List of user inputs to show on GUI for configuration of the script
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Scripting.ScriptFileDialogInput.Title">
+ <summary>
+ Gets or sets the title for the dialog
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Scripting.ScriptFileDialogInput.Directory">
+ <summary>
+ Gets or sets the default directory to open the dialog in
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Scripting.ScriptFileDialogInput.InitialFilename">
+ <summary>
+ Gets or sets the initial filename to be on the dialog
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Scripting.ScriptFileDialogInput.Filters">
+ <summary>
+ Gets or sets the file filters on the dropdown list
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Scripting.ScriptGlobals.SlicerFile">
+ <summary>
+ Gets the loaded slicer file
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Scripting.ScriptGlobals.Progress">
+ <summary>
+ Gets the progress operation for loading bar
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Scripting.ScriptGlobals.Operation">
+ <summary>
+ Gets the current operation holding the layer range, mask, roi, etc
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Scripting.ScriptGlobals.Script">
+ <summary>
+ Gets the script configuration
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Scripting.ScriptNumericalInput`1.Minimum">
+ <summary>
+ Gets the minimum for this input
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Scripting.ScriptNumericalInput`1.Maximum">
+ <summary>
+ Gets the minimum for this input
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Scripting.ScriptNumericalInput`1.Increment">
+ <summary>
+ Gets the increment value for this
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Scripting.ScriptNumericalInput`1.DecimalPlates">
+ <summary>
+ Gets the number of decimal plates to round the value
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Scripting.ScriptOpenFileDialogInput.AllowMultiple">
+ <summary>
+ Gets or sets if allow multiple file selection
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Scripting.ScriptOpenFileDialogInput.Files">
+ <summary>
+ Gets or sets the selected files
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Scripting.ScriptOpenFolderDialogInput.Title">
+ <summary>
+ Gets the title for the dialog
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Scripting.ScriptParser.ParseScriptFromText(System.String)">
+ <summary>
+ Parse the script and clean forbidden keywords
+ </summary>
+ <param name="text">Text to parse</param>
+ <returns>The parsed text</returns>
+ </member>
+ <member name="P:UVtools.Core.Scripting.ScriptSaveFileDialogInput.DefaultExtension">
+ <summary>
+ Gets or sets the default extension for the dialog
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Scripting.ScriptTextBoxInput.MultiLine">
+ <summary>
+ Gets if this input accepts multi lines
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Scripting.ScriptToggleSwitchInput.OffText">
+ <summary>
+ Gets or sets the text when the switch is turned off
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Scripting.ScriptToggleSwitchInput.OnText">
+ <summary>
+ Gets or sets the text when the switch is turned on
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Slicer.Slicer.Resolution">
+ <summary>
+ Gets the size of resolution
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Slicer.Slicer.Display">
+ <summary>
+ Gets the size of display
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Slicer.Slicer.Ppmm">
+ <summary>
+ Gets the pixels per millimeters
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Suggestions.Suggestion.SlicerFile">
+ <summary>
+ Gets or sets the <see cref="T:UVtools.Core.FileFormats.FileFormat"/>
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Suggestions.Suggestion.Enabled">
+ <summary>
+ Gets or sets if this suggestion is enabled
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Suggestions.Suggestion.AutoApply">
+ <summary>
+ Gets or sets if this suggestion can be auto applied once file load
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Suggestions.Suggestion.ApplyWhen">
+ <summary>
+ Gets or sets when to apply the suggestion
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Suggestions.Suggestion.IsInformativeOnly">
+ <summary>
+ Gets if this suggestion is informative only and contain no actions to execute
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Suggestions.Suggestion.IsAvailable">
+ <summary>
+ Gets if this suggestion is available given the <see cref="P:UVtools.Core.Suggestions.Suggestion.SlicerFile"/>
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Suggestions.Suggestion.IsApplied">
+ <summary>
+ Gets if this suggestion is already applied given the <see cref="P:UVtools.Core.Suggestions.Suggestion.SlicerFile"/>
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Suggestions.Suggestion.Title">
+ <summary>
+ Gets the title for this suggestion
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Suggestions.Suggestion.Message">
+ <summary>
+ Gets the message for this suggestion
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Suggestions.Suggestion.ToolTip">
+ <summary>
+ Gets the tooltip message
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.Suggestions.Suggestion.ConfirmationMessage">
+ <summary>
+ Gets the confirmation message before apply the suggestion
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.Suggestions.Suggestion.Validate">
+ <summary>
+ Validates the settings and return a string message if got any error
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.Suggestions.Suggestion.ExecuteInternally">
+ <summary>
+ Executes and applies the suggestion
+ </summary>
+ <returns></returns>
+ <exception cref="T:System.NotImplementedException"></exception>
+ </member>
+ <member name="M:UVtools.Core.Suggestions.Suggestion.Execute">
+ <summary>
+ Executes and applies the suggestion
+ </summary>
+ <returns></returns>
+ <exception cref="T:System.InvalidOperationException"></exception>
+ </member>
+ <member name="M:UVtools.Core.Suggestions.Suggestion.ExecuteIfAutoApply">
+ <summary>
+ Executes only if this suggestion is marked with <see cref="P:UVtools.Core.Suggestions.Suggestion.AutoApply"/> as true
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:UVtools.Core.SystemOS.SystemAware.IsRunningLinuxAppImage(System.String@)">
+ <summary>
+ Gets if is running under Linux and under AppImage format
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.SystemOS.SystemAware.IsRunningLinuxAppImage">
+ <summary>
+ Gets if is running under Linux and under AppImage format
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="P:UVtools.Core.SystemOS.SystemAware.IsRunningMacOSApp">
+ <summary>
+ Gets if is running under MacOS and under app format
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.SystemOS.SystemAware.OperatingSystemName">
+ <summary>
+ Gets the main name of the operative system
+ </summary>
+ </member>
+ <member name="P:UVtools.Core.SystemOS.SystemAware.OperatingSystemNameWithArch">
+ <summary>
+ Gets the main name of the operative system with architecture
+ </summary>
+ </member>
+ <member name="M:UVtools.Core.SystemOS.Windows.USB.GetUSBHandler(System.String)">
+ <summary>
+ Get the USB handler
+ </summary>
+ <param name="driveLetter">This should be the drive letter. Format: F:/, C:/..</param>
+ </member>
+ <member name="M:UVtools.Core.SystemOS.Windows.USB.USBEject(System.String)">
+ <summary>
+ Eject an USB drive
+ </summary>
+ <param name="driveLetter">This should be the drive letter. Format: F:/, C:/..</param>
+ </member>
+ <member name="P:UVtools.WPF.Structures.SuggestionManager.FilePath">
+ <summary>
+ Default filepath for store
+ </summary>
+ </member>
+ <member name="P:UVtools.WPF.Structures.SuggestionManager.Suggestions">
+ <summary>
+ Gets all suggestions
+ </summary>
+ </member>
+ <member name="P:UVtools.WPF.Structures.SuggestionManager.Instance">
+ <summary>
+ Instance (singleton)
+ </summary>
+ </member>
+ <member name="M:UVtools.WPF.Structures.SuggestionManager.Reset(System.Boolean)">
+ <summary>
+ Reset to defaults
+ </summary>
+ <param name="save">True to save settings on file, otherwise false</param>
+ </member>
+ <member name="M:UVtools.WPF.Structures.SuggestionManager.Load">
+ <summary>
+ Load settings from file
+ </summary>
+ </member>
+ <member name="M:UVtools.WPF.Structures.SuggestionManager.Save">
+ <summary>
+ Save settings to file
+ </summary>
+ </member>
+ <member name="T:System.Collections.ObjectModel.RangeObservableCollection`1">
+ <summary>
+ Implementation of a dynamic data collection based on generic Collection&lt;T&gt;,
+ implementing INotifyCollectionChanged to notify listeners
+ when items get added, removed or the whole list is refreshed.
+ </summary>
+ </member>
+ <member name="M:System.Collections.ObjectModel.RangeObservableCollection`1.#ctor">
+ <summary>
+ Initializes a new instance of ObservableCollection that is empty and has default initial capacity.
+ </summary>
+ </member>
+ <member name="M:System.Collections.ObjectModel.RangeObservableCollection`1.#ctor(System.Collections.Generic.IEnumerable{`0})">
+ <summary>
+ Initializes a new instance of the ObservableCollection class that contains
+ elements copied from the specified collection and has sufficient capacity
+ to accommodate the number of elements copied.
+ </summary>
+ <param name="collection">The collection whose elements are copied to the new list.</param>
+ <remarks>
+ The elements are copied onto the ObservableCollection in the
+ same order they are read by the enumerator of the collection.
+ </remarks>
+ <exception cref="T:System.ArgumentNullException"> collection is a null reference </exception>
+ </member>
+ <member name="M:System.Collections.ObjectModel.RangeObservableCollection`1.#ctor(System.Collections.Generic.List{`0})">
+ <summary>
+ Initializes a new instance of the ObservableCollection class
+ that contains elements copied from the specified list
+ </summary>
+ <param name="list">The list whose elements are copied to the new list.</param>
+ <remarks>
+ The elements are copied onto the ObservableCollection in the
+ same order they are read by the enumerator of the list.
+ </remarks>
+ <exception cref="T:System.ArgumentNullException"> list is a null reference </exception>
+ </member>
+ <member name="P:System.Collections.ObjectModel.RangeObservableCollection`1.AllowDuplicates">
+ <summary>
+ Gets or sets a value indicating whether this collection acts as a <see cref="T:System.Collections.Generic.HashSet`1"/>,
+ disallowing duplicate items, based on <see cref="P:System.Collections.ObjectModel.RangeObservableCollection`1.Comparer"/>.
+ This might indeed consume background performance, but in the other hand,
+ it will pay off in UI performance as less required UI updates are required.
+ </summary>
+ </member>
+ <member name="M:System.Collections.ObjectModel.RangeObservableCollection`1.ReplaceCollection(System.Collections.Generic.IEnumerable{`0})">
+ <summary>
+ Clear the list and set a collection in place
+ </summary>
+ <param name="collection">
+ The collection whose elements should be added to the end of the <see cref="T:System.Collections.ObjectModel.ObservableCollection`1"/>.
+ The collection itself cannot be null, but it can contain elements that are null, if type T is a reference type.
+ </param>
+ <exception cref="T:System.ArgumentNullException"><paramref name="collection"/> is null.</exception>
+ </member>
+ <member name="M:System.Collections.ObjectModel.RangeObservableCollection`1.AddRange(System.Collections.Generic.IEnumerable{`0})">
+ <summary>
+ Adds the elements of the specified collection to the end of the <see cref="T:System.Collections.ObjectModel.ObservableCollection`1"/>.
+ </summary>
+ <param name="collection">
+ The collection whose elements should be added to the end of the <see cref="T:System.Collections.ObjectModel.ObservableCollection`1"/>.
+ The collection itself cannot be null, but it can contain elements that are null, if type T is a reference type.
+ </param>
+ <exception cref="T:System.ArgumentNullException"><paramref name="collection"/> is null.</exception>
+ </member>
+ <member name="M:System.Collections.ObjectModel.RangeObservableCollection`1.InsertRange(System.Int32,System.Collections.Generic.IEnumerable{`0})">
+ <summary>
+ Inserts the elements of a collection into the <see cref="T:System.Collections.ObjectModel.ObservableCollection`1"/> at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which the new elements should be inserted.</param>
+ <param name="collection">The collection whose elements should be inserted into the List{T}.
+ The collection itself cannot be null, but it can contain elements that are null, if type T is a reference type.</param>
+ <exception cref="T:System.ArgumentNullException"><paramref name="collection"/> is null.</exception>
+ <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="index"/> is not in the collection range.</exception>
+ </member>
+ <member name="M:System.Collections.ObjectModel.RangeObservableCollection`1.RemoveRange(System.Collections.Generic.IEnumerable{`0})">
+ <summary>
+ Removes the first occurence of each item in the specified collection from the <see cref="T:System.Collections.ObjectModel.ObservableCollection`1"/>.
+ </summary>
+ <param name="collection">The items to remove.</param>
+ <exception cref="T:System.ArgumentNullException"><paramref name="collection"/> is null.</exception>
+ </member>
+ <member name="M:System.Collections.ObjectModel.RangeObservableCollection`1.RemoveAll(System.Predicate{`0})">
+ <summary>
+ Iterates over the collection and removes all items that satisfy the specified match.
+ </summary>
+ <remarks>The complexity is O(n).</remarks>
+ <param name="match"></param>
+ <returns>Returns the number of elements that where </returns>
+ <exception cref="T:System.ArgumentNullException"><paramref name="match"/> is null.</exception>
+ </member>
+ <member name="M:System.Collections.ObjectModel.RangeObservableCollection`1.RemoveAll(System.Int32,System.Int32,System.Predicate{`0})">
+ <summary>
+ Iterates over the specified range within the collection and removes all items that satisfy the specified match.
+ </summary>
+ <remarks>The complexity is O(n).</remarks>
+ <param name="index">The index of where to start performing the search.</param>
+ <param name="count">The number of items to iterate on.</param>
+ <param name="match"></param>
+ <returns>Returns the number of elements that where </returns>
+ <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="index"/> is out of range.</exception>
+ <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="count"/> is out of range.</exception>
+ <exception cref="T:System.ArgumentNullException"><paramref name="match"/> is null.</exception>
+ </member>
+ <member name="M:System.Collections.ObjectModel.RangeObservableCollection`1.RemoveRange(System.Int32,System.Int32)">
+ <summary>
+ Removes a range of elements from the <see cref="T:System.Collections.ObjectModel.ObservableCollection`1"/>>.
+ </summary>
+ <param name="index">The zero-based starting index of the range of elements to remove.</param>
+ <param name="count">The number of elements to remove.</param>
+ <exception cref="T:System.ArgumentOutOfRangeException">The specified range is exceeding the collection.</exception>
+ </member>
+ <member name="M:System.Collections.ObjectModel.RangeObservableCollection`1.ReplaceRange(System.Collections.Generic.IEnumerable{`0})">
+ <summary>
+ Clears the current collection and replaces it with the specified collection,
+ using <see cref="P:System.Collections.ObjectModel.RangeObservableCollection`1.Comparer"/>.
+ </summary>
+ <param name="collection">The items to fill the collection with, after clearing it.</param>
+ <exception cref="T:System.ArgumentNullException"><paramref name="collection"/> is null.</exception>
+ </member>
+ <member name="M:System.Collections.ObjectModel.RangeObservableCollection`1.ReplaceRange(System.Int32,System.Int32,System.Collections.Generic.IEnumerable{`0})">
+ <summary>
+ Removes the specified range and inserts the specified collection in its position, leaving equal items in equal positions intact.
+ </summary>
+ <param name="index">The index of where to start the replacement.</param>
+ <param name="count">The number of items to be replaced.</param>
+ <param name="collection">The collection to insert in that location.</param>
+ <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="index"/> is out of range.</exception>
+ <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="count"/> is out of range.</exception>
+ <exception cref="T:System.ArgumentNullException"><paramref name="collection"/> is null.</exception>
+ </member>
+ <member name="M:System.Collections.ObjectModel.RangeObservableCollection`1.ClearItems">
+ <summary>
+ Called by base class Collection&lt;T&gt; when the list is being cleared;
+ raises a CollectionChanged event to any listeners.
+ </summary>
+ </member>
+ <member name="M:System.Collections.ObjectModel.RangeObservableCollection`1.InsertItem(System.Int32,`0)">
+ <inheritdoc/>
+ </member>
+ <member name="M:System.Collections.ObjectModel.RangeObservableCollection`1.SetItem(System.Int32,`0)">
+ <inheritdoc/>
+ </member>
+ <member name="M:System.Collections.ObjectModel.RangeObservableCollection`1.OnCollectionChanged(System.Collections.Specialized.NotifyCollectionChangedEventArgs)">
+ <summary>
+ Raise CollectionChanged event to any listeners.
+ Properties/methods modifying this ObservableCollection will raise
+ a collection changed event through this virtual method.
+ </summary>
+ <remarks>
+ When overriding this method, either call its base implementation
+ </remarks>
+ </member>
+ <member name="M:System.Collections.ObjectModel.RangeObservableCollection`1.OnEssentialPropertiesChanged">
+ <summary>
+ Helper to raise Count property and the Indexer property.
+ </summary>
+ </member>
+ <member name="M:System.Collections.ObjectModel.RangeObservableCollection`1.OnIndexerPropertyChanged">
+ <summary>
+ /// Helper to raise a PropertyChanged event for the Indexer property
+ /// </summary>
+ </member>
+ <member name="M:System.Collections.ObjectModel.RangeObservableCollection`1.OnCollectionChanged(System.Collections.Specialized.NotifyCollectionChangedAction,System.Object,System.Object,System.Int32)">
+ <summary>
+ Helper to raise CollectionChanged event to any listeners
+ </summary>
+ </member>
+ <member name="M:System.Collections.ObjectModel.RangeObservableCollection`1.OnCollectionReset">
+ <summary>
+ Helper to raise CollectionChanged event with action == Reset to any listeners
+ </summary>
+ </member>
+ <member name="M:System.Collections.ObjectModel.RangeObservableCollection`1.OnRangeReplaced(System.Int32,System.Collections.Generic.ICollection{`0},System.Collections.Generic.ICollection{`0})">
+ <summary>
+ Helper to raise event for clustered action and clear cluster.
+ </summary>
+ <param name="followingItemIndex">The index of the item following the replacement block.</param>
+ <param name="newCluster"></param>
+ <param name="oldCluster"></param>
+ </member>
+ <member name="T:System.Collections.ObjectModel.EventArgsCache">
+ <remarks>
+ To be kept outside <see cref="T:System.Collections.ObjectModel.ObservableCollection`1"/>, since otherwise, a new instance will be created for each generic type used.
+ </remarks>
+ </member>
+ </members>
+</doc>