Browse Source

fixed System.Drawing.Common being deprecated on non windows

Vicente Penades Armengot 10 months ago
parent
commit
c3af55b6f3

+ 1 - 0
Directory.Packages.props

@@ -25,6 +25,7 @@
     <PackageVersion Include="GltfValidator" Version="2.0.0-dev.3.10.202411282031" />
     <PackageVersion Include="ErrorProne.NET.Structs" Version="0.6.1-beta.1" />
     <PackageVersion Include="Microsoft.CodeAnalysis.NetAnalyzers" Version="9.0.0" />
+    <PackageVersion Include="SixLabors.ImageSharp" Version="3.1.6" />
   </ItemGroup>
 
   <ItemGroup>

+ 31 - 20
tests/SharpGLTF.ThirdParty.Tests/MeltyPlayerTests.cs

@@ -14,6 +14,10 @@ using SharpGLTF.Scenes;
 using SharpGLTF.Schema2;
 using SharpGLTF.Transforms;
 
+
+
+using static Plotly.Literals;
+
 namespace SharpGLTF.ThirdParty
 {    
     internal class MeltyPlayerTests
@@ -91,27 +95,10 @@ namespace SharpGLTF.ThirdParty
 
             // generate texture
             var diffuseImageSize = 2 * gridSize;
-            var occlusionImageSize = gridSize;
-
-            MemoryImage diffuseImage, occlusionImage;
-            {
-                using var img = new Bitmap(diffuseImageSize, diffuseImageSize, PixelFormat.Format32bppArgb);
-
-                using var mem = new MemoryStream();
-                img.Save(mem, ImageFormat.Png);
+            var occlusionImageSize = gridSize;            
 
-                mem.TryGetBuffer(out var bytes);
-                diffuseImage = new MemoryImage(bytes);
-            }
-            {
-                using var img = new Bitmap(occlusionImageSize, occlusionImageSize, PixelFormat.Format32bppArgb);
-
-                using var mem = new MemoryStream();
-                img.Save(mem, ImageFormat.Png);
-
-                mem.TryGetBuffer(out var bytes);
-                occlusionImage = new MemoryImage(bytes);
-            }
+            var diffuseImage = _CreateEmptyImage(diffuseImageSize);
+            var occlusionImage = _CreateEmptyImage(occlusionImageSize);            
 
             var material = MaterialBuilder.CreateDefault().WithSpecularGlossinessShader();
             material.UseChannel(KnownChannel.Diffuse)
@@ -171,5 +158,29 @@ namespace SharpGLTF.ThirdParty
                 GC.WaitForFullGCComplete();
             }
         }
+
+        private static MemoryImage _CreateEmptyImage(int diffuseImageSize)
+        {
+            #if NET452_OR_GREATER
+
+            using var img = new Bitmap(diffuseImageSize, diffuseImageSize, PixelFormat.Format32bppArgb);
+
+            using var mem = new MemoryStream();
+            img.Save(mem, System.Drawing.Imaging.ImageFormat.Png);
+
+            mem.TryGetBuffer(out var bytes);
+            return new MemoryImage(bytes);
+            #else
+
+            using var img = new SixLabors.ImageSharp.Image<SixLabors.ImageSharp.PixelFormats.Argb32>(diffuseImageSize, diffuseImageSize);
+
+            using var mem = new MemoryStream();
+            SixLabors.ImageSharp.ImageExtensions.SaveAsPng(img, mem);
+
+            mem.TryGetBuffer(out var bytes);
+            return new MemoryImage(bytes);
+
+#endif
+        }
     }
 }

+ 9 - 2
tests/SharpGLTF.ThirdParty.Tests/SharpGLTF.ThirdParty.Tests.csproj

@@ -14,8 +14,15 @@
   <ItemGroup>
     <PackageReference Include="NUnit" />
     <PackageReference Include="NUnit3TestAdapter" />
-    <PackageReference Include="Microsoft.NET.Test.Sdk" />
-    <PackageReference Include="System.Drawing.Common" />    
+    <PackageReference Include="Microsoft.NET.Test.Sdk" />    
+  </ItemGroup>
+
+  <ItemGroup Condition=" '$(TargetFramework)' == 'net471' " >    
+    <PackageReference Include="System.Drawing.Common" />
+  </ItemGroup>
+
+  <ItemGroup Condition=" '$(TargetFramework)' != 'net471' " >
+    <PackageReference Include="SixLabors.ImageSharp" />
   </ItemGroup>
 
   <ItemGroup>