From 2cbb3f377a7931cc66fae4145c84e99154028327 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tiago=20Concei=C3=A7=C3=A3o?= Date: Mon, 29 Jun 2020 05:18:33 +0100 Subject: v0.6.0.0 * (Add) UVtools now notify when a new version available is detected * (Add) Mutator "Flip" * (Add) Mutator "Rotate" * (Add) User Settings - Many parameters can now be customized to needs * (Add) File load elapsed time into Title bar * (Add) Outline - Print Volume bounds * (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) 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 insland instead of search in every pixel by pixel * (Improvement) ResinTrap detection and corrected some cases where it can't detect a drain * (Improvement) Better memory optimization by dispose all objects on operations * (Improvement) Image engine changed to use only OpenCV Mat instead of two and avoid converting from one to another, as result there's a huge performance gain in some operations (#6) * (Improvement) UVtools now rely on UVtools.Core, and drop the UVtools.Parser. The Core now perform all operations and transformations inplace of the GUI * (Improvement) If error occur during save it will show a message with the error * (Improvement) When rotate layer it will zoom to fit * (Improvement) Allow zoom to fit to print volume area instead of whole build volume * (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) 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) * (Fix) cws: Wrong # char on .gcode file prevent from printing (#4) --- UVtools.Core/Extensions/EmguExtensions.cs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'UVtools.Core/Extensions/EmguExtensions.cs') diff --git a/UVtools.Core/Extensions/EmguExtensions.cs b/UVtools.Core/Extensions/EmguExtensions.cs index a96a50f..735c41a 100644 --- a/UVtools.Core/Extensions/EmguExtensions.cs +++ b/UVtools.Core/Extensions/EmguExtensions.cs @@ -27,11 +27,10 @@ namespace UVtools.Core.Extensions return new Span(mat.DataPointer.ToPointer(), mat.GetLength()); } - public static Span GetPixelRowSpan(this Mat mat, int y) + public static unsafe Span GetPixelRowSpan(this Mat mat, int y) { - int offset = y * mat.Step; - //IntPtr ptr = IntPtr.Add(mat.DataPointer, offset); - return mat.GetPixelSpan().Slice(offset, mat.Step); + return new Span(IntPtr.Add(mat.DataPointer, y * mat.Step).ToPointer(), mat.Step); + //return mat.GetPixelSpan().Slice(offset, mat.Step); } /// @@ -44,17 +43,19 @@ namespace UVtools.Core.Extensions /// X translation /// Y translation /// Interpolation mode - public static void ScaleFromCenter(this Mat src, double xScale, double yScale, double xTrans = 0, double yTrans = 0, Inter interpolation = Inter.Linear) + public static void TransformFromCenter(this Mat src, double xScale, double yScale, double xTrans = 0, double yTrans = 0, Inter interpolation = Inter.Linear) { //var dst = new Mat(src.Size, src.Depth, src.NumberOfChannels); - var translateTransform = new Matrix(2, 3) + using (var translateTransform = new Matrix(2, 3) { [0, 0] = xScale, // xScale [1, 1] = yScale, // yScale [0, 2] = xTrans + (src.Width - src.Width * xScale) / 2.0, //x translation + compensation of x scaling [1, 2] = yTrans + (src.Height - src.Height * yScale) / 2.0 // y translation + compensation of y scaling - }; - CvInvoke.WarpAffine(src, src, translateTransform, src.Size, interpolation); + }) + { + CvInvoke.WarpAffine(src, src, translateTransform, src.Size, interpolation); + } } /// -- cgit v1.2.3