2
0
Эх сурвалжийг харах

Merge pull request #463 from PixiEditor/lock-alpha-serialization

Added lock alpha and updated parser
Krzysztof Krysiński 2 жил өмнө
parent
commit
6a5523b1d8

+ 8 - 0
src/PixiEditor/Helpers/DocumentViewModelBuilder.cs

@@ -172,6 +172,8 @@ internal class DocumentViewModelBuilder : ChildrenBuilder
         
         public int OffsetY { get; set; }
         
+        public bool LockAlpha { get; set; }
+
         public new LayerBuilder WithName(string name) => base.WithName(name) as LayerBuilder;
         
         public new LayerBuilder WithVisibility(bool visibility) => base.WithVisibility(visibility) as LayerBuilder;
@@ -181,6 +183,12 @@ internal class DocumentViewModelBuilder : ChildrenBuilder
         public new LayerBuilder WithBlendMode(BlendMode blendMode) => base.WithBlendMode(blendMode) as LayerBuilder;
         
         public new LayerBuilder WithClipToBelow(bool value) => base.WithClipToBelow(value) as LayerBuilder;
+
+        public LayerBuilder WithLockAlpha(bool layerLockAlpha)
+        {
+            LockAlpha = layerLockAlpha;
+            return this;
+        }
         
         public new LayerBuilder WithMask(Action<MaskBuilder> mask) => base.WithMask(mask) as LayerBuilder;
         

+ 1 - 0
src/PixiEditor/Helpers/Extensions/PixiParserDocumentEx.cs

@@ -61,6 +61,7 @@ internal static class PixiParserDocumentEx
                 .WithBlendMode((PixiEditor.ChangeableDocument.Enums.BlendMode)(int)layer.BlendMode)
                 .WithRect(layer.Width, layer.Height, layer.OffsetX, layer.OffsetY)
                 .WithClipToBelow(layer.ClipToMemberBelow)
+                .WithLockAlpha(layer.LockAlpha)
                 .WithMask(layer.Mask,
                     (x, m) => x.WithVisibility(m.Enabled).WithSurface(m.Width, m.Height,
                         x => x.WithImage(m.ImageBytes, m.OffsetX, m.OffsetY)));

+ 1 - 1
src/PixiEditor/PixiEditor.csproj

@@ -236,7 +236,7 @@
 		<PackageReference Include="Newtonsoft.Json" Version="13.0.2-beta2" />
 		<PackageReference Include="OneOf" Version="3.0.223" />
 		<PackageReference Include="PixiEditor.ColorPicker" Version="3.3.1" />
-		<PackageReference Include="PixiEditor.Parser" Version="3.1.0" />
+		<PackageReference Include="PixiEditor.Parser" Version="3.2.0" />
 		<PackageReference Include="PixiEditor.Parser.Skia" Version="3.0.0" />
 		<PackageReference Include="System.Drawing.Common" Version="7.0.0" />
 		<PackageReference Include="WpfAnimatedGif" Version="2.0.2" />

+ 2 - 2
src/PixiEditor/Properties/AssemblyInfo.cs

@@ -50,5 +50,5 @@ using System.Windows;
 // You can specify all the values or you can default the Build and Revision Numbers
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("0.1.9.6")]
-[assembly: AssemblyFileVersion("0.1.9.6")]
+[assembly: AssemblyVersion("0.1.9.7")]
+[assembly: AssemblyFileVersion("0.1.9.7")]

+ 2 - 1
src/PixiEditor/ViewModels/SubViewModels/Document/DocumentViewModel.Serialization.cs

@@ -117,7 +117,8 @@ internal partial class DocumentViewModel
         {
             Width = result?.Size.X ?? 0, Height = result?.Size.Y ?? 0, OffsetX = tightBounds?.X ?? 0, OffsetY = tightBounds?.Y ?? 0,
             Enabled = layer.IsVisible, BlendMode = (BlendMode)(int)layer.BlendMode, ImageBytes = bytes,
-            ClipToMemberBelow = layer.ClipToMemberBelow, Name = layer.Name, 
+            ClipToMemberBelow = layer.ClipToMemberBelow, Name = layer.Name,
+            LockAlpha = layer.LockTransparency,
             Opacity = layer.Opacity, Mask = GetMask(layer.Mask, layer.MaskIsVisible)
         };
 

+ 5 - 0
src/PixiEditor/ViewModels/SubViewModels/Document/DocumentViewModel.cs

@@ -232,6 +232,11 @@ internal partial class DocumentViewModel : NotifyableObject
             
             acc.AddActions(new StructureMemberClipToMemberBelow_Action(member.ClipToMemberBelow, member.GuidValue));
 
+            if (member is DocumentViewModelBuilder.LayerBuilder layerBuilder)
+            {
+                acc.AddActions(new LayerLockTransparency_Action(layerBuilder.GuidValue, layerBuilder.LockAlpha));
+            }
+
             if (member is DocumentViewModelBuilder.LayerBuilder layer && layer.Surface is not null)
             {
                 PasteImage(member.GuidValue, layer.Surface, layer.Width, layer.Height, layer.OffsetX, layer.OffsetY, false);