Browse Source

Refactor FileMaxSizeCheckers to ease the input "max size" specifications and the actual size check

Xiphereal 3 years ago
parent
commit
50073c1e3e

+ 12 - 5
PixiEditor/Models/DataHolders/RecentlyOpenedDocument.cs

@@ -90,13 +90,16 @@ namespace PixiEditor.Models.DataHolders
 
                 const int MaxWidthInPixels = 1080;
                 const int MaxHeightInPixels = 1080;
-                const int MaxLayerCount = 5;
-                PixiFileMaxSizeChecker pixiFileMaxSizeChecker =
-                    new PixiFileMaxSizeChecker(maxPixelCountAllowed: MaxWidthInPixels * MaxHeightInPixels * MaxLayerCount);
+                PixiFileMaxSizeChecker pixiFileMaxSizeChecker = new PixiFileMaxSizeChecker()
+                {
+                    MaxAllowedWidthInPixels = MaxWidthInPixels,
+                    MaxAllowedHeightInPixels = MaxHeightInPixels,
+                    MaxAllowedLayerCount = 5,
+                };
 
                 return pixiFileMaxSizeChecker.IsFileUnderMaxSize(serializableDocument) ?
                     writeableBitmap
-                    : writeableBitmap.Resize(width: 1080, height: 1080, WriteableBitmapExtensions.Interpolation.Bilinear);
+                    : writeableBitmap.Resize(width: MaxWidthInPixels, height: MaxHeightInPixels, WriteableBitmapExtensions.Interpolation.Bilinear);
             }
             else if (FileExtension is ".png" or ".jpg" or ".jpeg")
             {
@@ -113,7 +116,11 @@ namespace PixiEditor.Models.DataHolders
 
                 const int MaxWidthInPixels = 2048;
                 const int MaxHeightInPixels = 2048;
-                ImageFileMaxSizeChecker imageFileMaxSizeChecker = new ImageFileMaxSizeChecker(maxPixelCountAllowed: MaxWidthInPixels * MaxHeightInPixels);
+                ImageFileMaxSizeChecker imageFileMaxSizeChecker = new ImageFileMaxSizeChecker()
+                {
+                    MaxAllowedWidthInPixels = MaxWidthInPixels,
+                    MaxAllowedHeightInPixels = MaxHeightInPixels,
+                };
 
                 return imageFileMaxSizeChecker.IsFileUnderMaxSize(bitmap) ?
                     bitmap

+ 5 - 4
PixiEditor/Models/IO/ImageFileMaxSizeChecker.cs

@@ -4,16 +4,17 @@ namespace PixiEditor.Models.IO
 {
     internal class ImageFileMaxSizeChecker
     {
-        private readonly int maxPixelCountAllowed;
+        public int MaxAllowedWidthInPixels { get; init; } = 2048;
+        public int MaxAllowedHeightInPixels { get; init; } = 2048;
 
-        public ImageFileMaxSizeChecker(int maxPixelCountAllowed)
+        public ImageFileMaxSizeChecker()
         {
-            this.maxPixelCountAllowed = maxPixelCountAllowed;
         }
 
         public bool IsFileUnderMaxSize(WriteableBitmap fileToCheck)
         {
-            return fileToCheck.PixelHeight * fileToCheck.PixelWidth < maxPixelCountAllowed;
+            return fileToCheck.PixelWidth <= MaxAllowedWidthInPixels
+                && fileToCheck.PixelHeight <= MaxAllowedHeightInPixels;
         }
     }
 }

+ 7 - 4
PixiEditor/Models/IO/PixiFileMaxSizeChecker.cs

@@ -4,16 +4,19 @@ namespace PixiEditor.Models.IO
 {
     internal class PixiFileMaxSizeChecker
     {
-        private readonly int maxPixelCountAllowed;
+        public int MaxAllowedWidthInPixels { get; init; } = 1080;
+        public int MaxAllowedHeightInPixels { get; init; } = 1080;
+        public int MaxAllowedLayerCount { get; init; } = 5;
 
-        public PixiFileMaxSizeChecker(int maxPixelCountAllowed)
+        public PixiFileMaxSizeChecker()
         {
-            this.maxPixelCountAllowed = maxPixelCountAllowed;
         }
 
         public bool IsFileUnderMaxSize(SerializableDocument fileToCheck)
         {
-            return fileToCheck.Height * fileToCheck.Width * fileToCheck.Layers.Count < maxPixelCountAllowed;
+            return fileToCheck.Width <= MaxAllowedWidthInPixels
+                && fileToCheck.Height <= MaxAllowedHeightInPixels
+                && fileToCheck.Layers.Count <= MaxAllowedLayerCount;
         }
     }
 }