Browse Source

Fixed move indexes

flabbet 4 years ago
parent
commit
d1d7e60521

+ 2 - 2
PixiEditor/Models/Controllers/BitmapManager.cs

@@ -125,11 +125,11 @@ namespace PixiEditor.Models.Controllers
 
                 if (IsOperationTool(SelectedTool))
                 {
-                    BitmapOperations.ExecuteTool(newPosition, MouseController.LastMouseMoveCoordinates.ToList(), (BitmapOperationTool)SelectedTool);
+                    BitmapOperations.ExecuteTool(newPosition, MouseController.LastMouseMoveCoordinates, (BitmapOperationTool)SelectedTool);
                 }
                 else
                 {
-                    ReadonlyToolUtility.ExecuteTool(MouseController.LastMouseMoveCoordinates.ToArray(), (ReadonlyTool)SelectedTool);
+                    ReadonlyToolUtility.ExecuteTool(MouseController.LastMouseMoveCoordinates, (ReadonlyTool)SelectedTool);
                 }
             }
         }

+ 8 - 3
PixiEditor/Models/Controllers/BitmapOperationsUtility.cs

@@ -25,6 +25,8 @@ namespace PixiEditor.Models.Controllers
 
         private Coordinates lastMousePos;
 
+        private SizeSetting sizeSetting;
+
         public BitmapOperationsUtility(BitmapManager manager)
         {
             Manager = manager;
@@ -58,7 +60,7 @@ namespace PixiEditor.Models.Controllers
         }
 
         /// <summary>
-        ///     Executes tool Use() method with given parameters. NOTE: mouseMove is reversed inside function!.
+        ///     Executes tool Use() method with given parameters. NOTE: [0] is a start point, [^1] is latest.
         /// </summary>
         /// <param name="newPos">Most recent coordinates.</param>
         /// <param name="mouseMove">Last mouse movement coordinates.</param>
@@ -72,7 +74,6 @@ namespace PixiEditor.Models.Controllers
                     return;
                 }
 
-                mouseMove.Reverse();
                 UseTool(mouseMove, tool, Manager.PrimaryColor);
 
                 lastMousePos = newPos;
@@ -119,7 +120,11 @@ namespace PixiEditor.Models.Controllers
 
         private void UseTool(List<Coordinates> mouseMoveCords, BitmapOperationTool tool, Color color)
         {
-            SizeSetting sizeSetting = tool.Toolbar.GetSetting<SizeSetting>("ToolSize");
+            if(sizeSetting == null)
+            {
+                sizeSetting = tool.Toolbar.GetSetting<SizeSetting>("ToolSize");
+            }
+
             int thickness = sizeSetting != null ? sizeSetting.Value : 1;
 
             bool shiftDown = Keyboard.IsKeyDown(Key.LeftShift);

+ 1 - 1
PixiEditor/Models/Controllers/MouseMovementController.cs

@@ -40,7 +40,7 @@ namespace PixiEditor.Models.Controllers
             {
                 if (LastMouseMoveCoordinates.Count == 0 || mouseCoordinates != LastMouseMoveCoordinates[^1])
                 {
-                    LastMouseMoveCoordinates.Add(mouseCoordinates);
+                    LastMouseMoveCoordinates.Insert(0, mouseCoordinates);
                     MousePositionChanged?.Invoke(this, new MouseMovementEventArgs(mouseCoordinates));
                 }
             }

+ 3 - 2
PixiEditor/Models/Controllers/ReadonlyToolUtility.cs

@@ -1,11 +1,12 @@
-using PixiEditor.Models.Position;
+using System.Collections.Generic;
+using PixiEditor.Models.Position;
 using PixiEditor.Models.Tools;
 
 namespace PixiEditor.Models.Controllers
 {
     public class ReadonlyToolUtility
     {
-        public void ExecuteTool(Coordinates[] mouseMove, ReadonlyTool tool)
+        public void ExecuteTool(List<Coordinates> mouseMove, ReadonlyTool tool)
         {
             tool.Use(mouseMove);
         }

+ 0 - 4
PixiEditor/Models/DataHolders/Document/Document.Layers.cs

@@ -592,10 +592,6 @@ namespace PixiEditor.Models.DataHolders
             {
                 newIndex += above ? 1 : -1;
             }
-            else if (above)
-            {
-                newIndex++;
-            }
 
             return Math.Clamp(newIndex, 0, Layers.Count - 1);
         }

+ 3 - 2
PixiEditor/Models/Tools/ReadonlyTool.cs

@@ -1,9 +1,10 @@
-using PixiEditor.Models.Position;
+using System.Collections.Generic;
+using PixiEditor.Models.Position;
 
 namespace PixiEditor.Models.Tools
 {
     public abstract class ReadonlyTool : Tool
     {
-        public abstract void Use(Coordinates[] pixels);
+        public abstract void Use(List<Coordinates> pixels);
     }
 }

+ 3 - 2
PixiEditor/Models/Tools/Tools/ColorPickerTool.cs

@@ -1,4 +1,5 @@
-using System.Drawing;
+using System.Collections.Generic;
+using System.Drawing;
 using System.Windows.Input;
 using PixiEditor.Models.Position;
 using PixiEditor.ViewModels;
@@ -21,7 +22,7 @@ namespace PixiEditor.Models.Tools.Tools
             ViewModelMain.Current.ColorsSubViewModel.PrimaryColor = GetColorUnderMouse();
         }
 
-        public override void Use(Coordinates[] coordinates)
+        public override void Use(List<Coordinates> coordinates)
         {
             ViewModelMain.Current.ColorsSubViewModel.PrimaryColor = GetColorUnderMouse();
         }

+ 3 - 2
PixiEditor/Models/Tools/Tools/MoveViewportTool.cs

@@ -1,4 +1,5 @@
-using System.Drawing;
+using System.Collections.Generic;
+using System.Drawing;
 using System.Windows.Input;
 using PixiEditor.Models.Position;
 using PixiEditor.ViewModels;
@@ -44,7 +45,7 @@ namespace PixiEditor.Models.Tools.Tools
             }
         }
 
-        public override void Use(Coordinates[] pixels)
+        public override void Use(List<Coordinates> pixels)
         {
         }
     }

+ 2 - 2
PixiEditor/Models/Tools/Tools/SelectTool.cs

@@ -50,7 +50,7 @@ namespace PixiEditor.Models.Tools.Tools
             SelectionHelpers.AddSelectionUndoStep(ViewModelMain.Current.BitmapManager.ActiveDocument, oldSelectedPoints, SelectionType);
         }
 
-        public override void Use(Coordinates[] pixels)
+        public override void Use(List<Coordinates> pixels)
         {
             Select(pixels);
         }
@@ -81,7 +81,7 @@ namespace PixiEditor.Models.Tools.Tools
             return GetRectangleSelectionForPoints(new Coordinates(0, 0), new Coordinates(document.Width - 1, document.Height - 1));
         }
 
-        private void Select(Coordinates[] pixels)
+        private void Select(List<Coordinates> pixels)
         {
             IEnumerable<Coordinates> selection = GetRectangleSelectionForPoints(pixels[^1], pixels[0]);
             ViewModelMain.Current.BitmapManager.ActiveDocument.ActiveSelection.SetSelection(selection, SelectionType);

+ 2 - 1
PixiEditor/Models/Tools/Tools/ZoomTool.cs

@@ -1,4 +1,5 @@
 using System;
+using System.Collections.Generic;
 using System.Windows;
 using System.Windows.Input;
 using PixiEditor.Models.Position;
@@ -79,7 +80,7 @@ namespace PixiEditor.Models.Tools.Tools
             ViewModelMain.Current.BitmapManager.ActiveDocument.ZoomPercentage = percentage;
         }
 
-        public override void Use(Coordinates[] pixels)
+        public override void Use(List<Coordinates> pixels)
         {
         }
     }

+ 3 - 2
PixiEditorTests/ModelsTests/ControllersTests/MockedSinglePixelPenTool.cs

@@ -1,4 +1,5 @@
-using System.Windows.Media;
+using System.Collections.Generic;
+using System.Windows.Media;
 using PixiEditor.Models.DataHolders;
 using PixiEditor.Models.Layers;
 using PixiEditor.Models.Position;
@@ -8,7 +9,7 @@ namespace PixiEditorTests.ModelsTests.ControllersTests
 {
     public class MockedSinglePixelPenTool : BitmapOperationTool
     {
-        public override LayerChange[] Use(Layer layer, Coordinates[] mouseMove, Color color)
+        public override LayerChange[] Use(Layer layer, List<Coordinates> mouseMove, Color color)
         {
             return Only(BitmapPixelChanges.FromSingleColoredArray(new[] { mouseMove[0] }, color), layer.LayerGuid);
         }