Browse Source

Basic color picker tool implemented

flabbet 3 years ago
parent
commit
a77f75ad36

+ 29 - 0
src/PixiEditor/Models/DocumentModels/UpdateableChangeExecutors/ColorPickerToolExecutor.cs

@@ -0,0 +1,29 @@
+using PixiEditor.Models.Enums;
+
+namespace PixiEditor.Models.DocumentModels.UpdateableChangeExecutors;
+
+internal class ColorPickerToolExecutor : UpdateableChangeExecutor
+{
+    public override ExecutionState Start()
+    {
+        ColorsViewModel colorsViewModel = ViewModelMain.Current?.ColorsSubViewModel;
+        
+        if(document is null || controller is null)
+        {
+            return ExecutionState.Error;
+        }
+        
+        colorsViewModel.PrimaryColor = document.PickColor(controller.LastPixelPosition, false);
+        return ExecutionState.Success;
+    }
+
+    public override void OnLeftMouseButtonUp()
+    {
+        onEnded?.Invoke(this);
+    }
+
+    public override void ForceStop()
+    {
+        
+    }
+}

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

@@ -315,8 +315,11 @@ internal class DocumentViewModel : NotifyableObject
     public void UseOpacitySlider() => Helpers.ChangeController.TryStartUpdateableChange<StructureMemberOpacityExecutor>();
 
     public void UsePenTool() => Helpers.ChangeController.TryStartUpdateableChange<PenToolExecutor>();
+    
     public void UseEraserTool() => Helpers.ChangeController.TryStartUpdateableChange<EraserToolExecutor>();
 
+    public void UseColorPickerTool() => Helpers.ChangeController.TryStartUpdateableChange<ColorPickerToolExecutor>();
+
     public void UseRectangleTool() => Helpers.ChangeController.TryStartUpdateableChange<RectangleToolExecutor>();
 
     public void UseEllipseTool() => Helpers.ChangeController.TryStartUpdateableChange<EllipseToolExecutor>();

+ 6 - 0
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/ColorPickerToolViewModel.cs

@@ -1,4 +1,5 @@
 using System.Windows.Input;
+using ChunkyImageLib.DataHolders;
 using PixiEditor.Models.Commands.Attributes.Commands;
 
 namespace PixiEditor.ViewModels.SubViewModels.Tools.Tools;
@@ -17,6 +18,11 @@ internal class ColorPickerToolViewModel : ToolViewModel
 
     public override string Tooltip => $"Picks the primary color from the canvas. ({Shortcut})";
 
+    public override void OnLeftMouseButtonDown(VecD pos)
+    {
+        ViewModelMain.Current?.DocumentManagerSubViewModel.ActiveDocument?.UseColorPickerTool();
+    }
+
     public override void UpdateActionDisplay(bool ctrlIsDown, bool shiftIsDown, bool altIsDown)
     {
         /*