Bladeren bron

Added force pressure

Krzysztof Krysiński 1 maand geleden
bovenliggende
commit
11834d5f69

+ 1 - 1
src/PixiEditor.ChangeableDocument/Changeables/Brushes/BrushData.cs

@@ -9,7 +9,7 @@ public struct BrushData
     public bool AntiAliasing { get; set; }
     public float StrokeWidth { get; set; }
     public Guid TargetBrushNodeId { get; set; }
-
+    public bool ForcePressure { get; set; }
 
     public BrushData(IReadOnlyNodeGraph brushGraph, Guid targetBrushNodeId)
     {

+ 4 - 2
src/PixiEditor.ChangeableDocument/Changeables/Brushes/BrushEngine.cs

@@ -220,7 +220,9 @@ public class BrushEngine : IDisposable
         {
             var data = new BrushData(previous, brushData.TargetBrushNodeId)
             {
-                AntiAliasing = brushData.AntiAliasing, StrokeWidth = brushData.StrokeWidth,
+                AntiAliasing = brushData.AntiAliasing,
+                StrokeWidth = brushData.StrokeWidth,
+                ForcePressure = brushData.ForcePressure
             };
 
             var previousBrushNode = previous.AllNodes.FirstOrDefault(x => x is BrushOutputNode) as BrushOutputNode;
@@ -244,7 +246,7 @@ public class BrushEngine : IDisposable
 
         bool autoPosition = brushNode.AutoPosition.Value;
         bool fitToStrokeSize = brushNode.FitToStrokeSize.Value;
-        float pressure = brushNode.Pressure.Value;
+        float pressure = brushData.ForcePressure && brushNode.Pressure.Connection == null ? context.PointerInfo.Pressure : brushNode.Pressure.Value;
         var content = brushNode.Content.Value;
         var contentTexture = brushNode.ContentTexture;
         bool antiAliasing = brushData.AntiAliasing;

+ 4 - 1
src/PixiEditor.ChangeableDocument/Changes/Drawing/LineBasedPen_UpdateableChange.cs

@@ -98,7 +98,10 @@ internal class LineBasedPen_UpdateableChange : UpdateableChange
     {
         if (brushOutputNode != null)
         {
-            brushData = new BrushData(brushData.BrushGraph, brushData.TargetBrushNodeId) { StrokeWidth = strokeWidth, AntiAliasing = antiAliasing };
+            brushData = new BrushData(brushData.BrushGraph, brushData.TargetBrushNodeId)
+            {
+                StrokeWidth = strokeWidth, AntiAliasing = antiAliasing, ForcePressure = brushData.ForcePressure
+            };
         }
     }
 

+ 2 - 1
src/PixiEditor/Data/Localization/Languages/en.json

@@ -1250,5 +1250,6 @@
   "OPENED_DOCUMENT": "Opened Document",
   "BUILT_IN": "Built-in",
   "LOCAL": "Local",
-  "TOOL_CONFIG": "Tool Config"
+  "TOOL_CONFIG": "Tool Config",
+  "FORCE_PRESSURE_SETTING": "Force Pressure"
 }

+ 1 - 1
src/PixiEditor/Models/DocumentModels/UpdateableChangeExecutors/BrushBasedExecutor.cs

@@ -211,7 +211,7 @@ internal class BrushBasedExecutor : UpdateableChangeExecutor
             UpdateBrushNodes();
         }
 
-        if (name is nameof(IBrushToolbar.ToolSize) or nameof(IBrushToolbar.AntiAliasing))
+        if (name is nameof(IBrushToolbar.ToolSize) or nameof(IBrushToolbar.AntiAliasing) or nameof(IBrushToolbar.ForcePressure))
         {
             brushData = BrushToolbar.CreateBrushData();
         }

+ 1 - 0
src/PixiEditor/Models/Handlers/Toolbars/IBrushToolbar.cs

@@ -10,6 +10,7 @@ namespace PixiEditor.Models.Handlers.Toolbars;
 internal interface IBrushToolbar : IToolbar, IToolSizeToolbar
 {
     public bool AntiAliasing { get; set; }
+    public bool ForcePressure { get; set; }
     public Brush Brush { get; set; }
     public BrushData CreateBrushData();
     public BrushData LastBrushData { get; }

+ 13 - 1
src/PixiEditor/ViewModels/Tools/ToolSettings/Toolbars/BrushToolbar.cs

@@ -41,6 +41,12 @@ internal class BrushToolbar : Toolbar, IBrushToolbar
         set => GetSetting<EnumSettingViewModel<StabilizationMode>>(nameof(StabilizationMode)).Value = value;
     }
 
+    public bool ForcePressure
+    {
+        get => GetSetting<BoolSettingViewModel>(nameof(ForcePressure)).Value;
+        set => GetSetting<BoolSettingViewModel>(nameof(ForcePressure)).Value = value;
+    }
+
     public BrushData CreateBrushData()
     {
         Brush? brush = Brush;
@@ -50,7 +56,12 @@ internal class BrushToolbar : Toolbar, IBrushToolbar
         }
 
         var pipe = Brush.Document.ShareGraph();
-        var data = new BrushData(pipe.TryAccessData(), Brush.OutputNodeId) { AntiAliasing = AntiAliasing, StrokeWidth = (float)ToolSize };
+        var data = new BrushData(pipe.TryAccessData(), Brush.OutputNodeId)
+        {
+            AntiAliasing = AntiAliasing,
+            StrokeWidth = (float)ToolSize,
+            ForcePressure = ForcePressure
+        };
 
         pipe.Dispose();
         return data;
@@ -83,6 +94,7 @@ internal class BrushToolbar : Toolbar, IBrushToolbar
         };
 
         AddSetting(stabilizationSetting);
+        AddSetting(new BoolSettingViewModel(nameof(ForcePressure), "FORCE_PRESSURE_SETTING"));
 
         foreach (var aSetting in Settings)
         {