Browse Source

Merge pull request #69 from PixiEditor/master

0.1.3.1 PNG Export Hotfix
Krzysztof Krysiński 4 years ago
parent
commit
cb47dd6806

+ 19 - 7
PixiEditor/Models/ImageManipulation/BitmapUtils.cs

@@ -41,13 +41,25 @@ namespace PixiEditor.Models.ImageManipulation
             using (finalBitmap.GetBitmapContext())
             using (finalBitmap.GetBitmapContext())
             {
             {
                 for (int i = 0; i < layers.Length; i++)
                 for (int i = 0; i < layers.Length; i++)
-                for (int y = 0; y < finalBitmap.Height; y++)
-                for (int x = 0; x < finalBitmap.Width; x++)
-                {
-                    Color color = layers[i].GetPixelWithOffset(x, y);
-                    color = Color.FromArgb((byte)(color.A * layers[i].Opacity), color.R,color.G, color.B);
-                    if (color.A != 0 || color.R != 0 || color.B != 0 || color.G != 0) finalBitmap.SetPixel(x, y, color);
-                }
+                    for (int y = 0; y < finalBitmap.Height; y++)
+                        for (int x = 0; x < finalBitmap.Width; x++)
+                        {
+                            Color color = layers[i].GetPixelWithOffset(x, y);
+                            if (i > 0 && color.A < 255)
+                            {
+                                var lastLayerPixel = layers[i - 1].GetPixelWithOffset(x, y);
+                                byte r = (byte)((color.R * color.A / 255) + (lastLayerPixel.R * lastLayerPixel.A * (255 - color.A) / (255 * 255)));
+                                byte g = (byte)((color.G * color.A / 255) + (lastLayerPixel.G * lastLayerPixel.A * (255 - color.A) / (255 * 255)));
+                                byte b = (byte)((color.B * color.A / 255) + (lastLayerPixel.B * lastLayerPixel.A * (255 - color.A) / (255 * 255)));
+                                byte a = (byte)(color.A + (lastLayerPixel.A * (255 - color.A) / 255));
+                                color = Color.FromArgb((byte)(a * layers[i].Opacity), r, g, b);
+                            }
+                            else
+                            {
+                                color = Color.FromArgb((byte)(color.A * layers[i].Opacity), color.R, color.G, color.B);
+                            }
+                            if (color.A != 0 || color.R != 0 || color.B != 0 || color.G != 0) finalBitmap.SetPixel(x, y, color);
+                        }
             }
             }
 
 
             return finalBitmap;
             return finalBitmap;

+ 2 - 2
PixiEditor/PixiEditor.csproj

@@ -42,13 +42,13 @@
     </None>
     </None>
   </ItemGroup>
   </ItemGroup>
   <ItemGroup>
   <ItemGroup>
-    <PackageReference Include="Dirkster.AvalonDock.Themes.VS2013" Version="4.30.0" />
+    <PackageReference Include="Dirkster.AvalonDock.Themes.VS2013" Version="4.40.0" />
     <PackageReference Include="Expression.Blend.Sdk">
     <PackageReference Include="Expression.Blend.Sdk">
       <Version>1.0.2</Version>
       <Version>1.0.2</Version>
     </PackageReference>
     </PackageReference>
     <PackageReference Include="Extended.Wpf.Toolkit" Version="3.8.2" />
     <PackageReference Include="Extended.Wpf.Toolkit" Version="3.8.2" />
     <PackageReference Include="MvvmLightLibs" Version="5.4.1.1" />
     <PackageReference Include="MvvmLightLibs" Version="5.4.1.1" />
-    <PackageReference Include="PixiEditor.ColorPicker" Version="1.0.0" />
+    <PackageReference Include="PixiEditor.ColorPicker" Version="1.0.1" />
     <PackageReference Include="System.Drawing.Common" Version="4.7.0" />
     <PackageReference Include="System.Drawing.Common" Version="4.7.0" />
     <PackageReference Include="WriteableBitmapEx">
     <PackageReference Include="WriteableBitmapEx">
       <Version>1.6.7</Version>
       <Version>1.6.7</Version>

+ 2 - 2
PixiEditor/Properties/AssemblyInfo.cs

@@ -50,5 +50,5 @@ using System.Windows;
 // by using the '*' as shown below:
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
 // [assembly: AssemblyVersion("1.0.*")]
 
 
-[assembly: AssemblyVersion("0.1.3.0")]
-[assembly: AssemblyFileVersion("0.1.3.0")]
+[assembly: AssemblyVersion("0.1.3.1")]
+[assembly: AssemblyFileVersion("0.1.3.1")]

+ 5 - 5
PixiEditorTests/PixiEditorTests.csproj

@@ -12,19 +12,19 @@
   </PropertyGroup>
   </PropertyGroup>
 
 
   <ItemGroup>
   <ItemGroup>
-    <PackageReference Include="Codecov" Version="1.12.1" />
-    <PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="3.0.0">
+    <PackageReference Include="Codecov" Version="1.12.3" />
+    <PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="3.3.0">
       <PrivateAssets>all</PrivateAssets>
       <PrivateAssets>all</PrivateAssets>
       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
     </PackageReference>
     </PackageReference>
-    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.6.1" />
+    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.7.1" />
     <PackageReference Include="OpenCover" Version="4.7.922" />
     <PackageReference Include="OpenCover" Version="4.7.922" />
     <PackageReference Include="xunit" Version="2.4.1" />
     <PackageReference Include="xunit" Version="2.4.1" />
-    <PackageReference Include="xunit.runner.visualstudio" Version="2.4.2">
+    <PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
       <PrivateAssets>all</PrivateAssets>
       <PrivateAssets>all</PrivateAssets>
       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
     </PackageReference>
     </PackageReference>
-    <PackageReference Include="Xunit.StaFact" Version="0.3.18" />
+    <PackageReference Include="Xunit.StaFact" Version="1.0.37" />
   </ItemGroup>
   </ItemGroup>
 
 
   <ItemGroup>
   <ItemGroup>

BIN
Screenshot.png


+ 3 - 2
windows-x64-release.yml

@@ -5,7 +5,8 @@
 
 
 trigger:
 trigger:
 - release
 - release
-- cd-azure-pipelines
+
+pr: none
 
 
 pool:
 pool:
   vmImage: 'windows-latest'
   vmImage: 'windows-latest'
@@ -84,7 +85,7 @@ steps:
 - task: ArchiveFiles@2
 - task: ArchiveFiles@2
   inputs:
   inputs:
     rootFolderOrFile: 'Builds\PixiEditor-x64-light'
     rootFolderOrFile: 'Builds\PixiEditor-x64-light'
-    includeRootFolder: true
+    includeRootFolder: false
     archiveType: 'zip'
     archiveType: 'zip'
     archiveFile: 'PixiEditor.$(TagVersion).x64.zip'
     archiveFile: 'PixiEditor.$(TagVersion).x64.zip'
     replaceExistingArchive: true
     replaceExistingArchive: true

+ 2 - 2
windows-x86-release.yml

@@ -5,7 +5,7 @@
 
 
 trigger:
 trigger:
 - release
 - release
-- cd-azure-pipelines
+pr: none
 
 
 pool:
 pool:
   vmImage: 'windows-latest'
   vmImage: 'windows-latest'
@@ -84,7 +84,7 @@ steps:
 - task: ArchiveFiles@2
 - task: ArchiveFiles@2
   inputs:
   inputs:
     rootFolderOrFile: 'Builds\PixiEditor-x86-light'
     rootFolderOrFile: 'Builds\PixiEditor-x86-light'
-    includeRootFolder: true
+    includeRootFolder: false
     archiveType: 'zip'
     archiveType: 'zip'
     archiveFile: 'PixiEditor.$(TagVersion).x86.zip'
     archiveFile: 'PixiEditor.$(TagVersion).x86.zip'
     replaceExistingArchive: true
     replaceExistingArchive: true