|
@@ -1,9 +1,11 @@
|
|
using System;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.Generic;
|
|
|
|
+using System.Diagnostics;
|
|
using System.Linq;
|
|
using System.Linq;
|
|
using System.Windows.Input;
|
|
using System.Windows.Input;
|
|
using System.Windows.Media;
|
|
using System.Windows.Media;
|
|
using System.Windows.Media.Imaging;
|
|
using System.Windows.Media.Imaging;
|
|
|
|
+using PixiEditor.Helpers.Extensions;
|
|
using PixiEditor.Models.DataHolders;
|
|
using PixiEditor.Models.DataHolders;
|
|
using PixiEditor.Models.ImageManipulation;
|
|
using PixiEditor.Models.ImageManipulation;
|
|
using PixiEditor.Models.Layers;
|
|
using PixiEditor.Models.Layers;
|
|
@@ -82,16 +84,16 @@ namespace PixiEditor.Models.Controllers
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
- for (int i = 0; i < lastModifiedLayers.Length; i++)
|
|
|
|
|
|
+ foreach (var modifiedLayer in lastModifiedLayers)
|
|
{
|
|
{
|
|
- Layer layer = Manager.ActiveDocument.Layers[lastModifiedLayers[i].LayerIndex];
|
|
|
|
|
|
+ Layer layer = Manager.ActiveDocument.Layers[modifiedLayer.LayerIndex];
|
|
|
|
|
|
- BitmapPixelChanges oldValues = ApplyToLayer(layer, lastModifiedLayers[i]).PixelChanges;
|
|
|
|
|
|
+ BitmapPixelChanges oldValues = ApplyToLayer(layer, modifiedLayer).PixelChanges;
|
|
|
|
|
|
BitmapChanged?.Invoke(this, new BitmapChangedEventArgs(
|
|
BitmapChanged?.Invoke(this, new BitmapChangedEventArgs(
|
|
- lastModifiedLayers[i].PixelChanges,
|
|
|
|
|
|
+ modifiedLayer.PixelChanges,
|
|
oldValues,
|
|
oldValues,
|
|
- lastModifiedLayers[i].LayerIndex));
|
|
|
|
|
|
+ modifiedLayer.LayerIndex));
|
|
Manager.ActiveDocument.GeneratePreviewLayer();
|
|
Manager.ActiveDocument.GeneratePreviewLayer();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -120,7 +122,7 @@ namespace PixiEditor.Models.Controllers
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
- UseToolOnPreviewLayer(mouseMoveCords);
|
|
|
|
|
|
+ UseToolOnPreviewLayer(mouseMoveCords, tool.ClearPreviewLayerOnEachIteration);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -179,19 +181,35 @@ namespace PixiEditor.Models.Controllers
|
|
return new BitmapPixelChanges(values);
|
|
return new BitmapPixelChanges(values);
|
|
}
|
|
}
|
|
|
|
|
|
- private void UseToolOnPreviewLayer(List<Coordinates> mouseMove)
|
|
|
|
|
|
+ private void UseToolOnPreviewLayer(List<Coordinates> mouseMove, bool clearPreviewLayer = true)
|
|
{
|
|
{
|
|
LayerChange[] modifiedLayers;
|
|
LayerChange[] modifiedLayers;
|
|
if (mouseMove.Count > 0 && mouseMove[0] != lastMousePos)
|
|
if (mouseMove.Count > 0 && mouseMove[0] != lastMousePos)
|
|
{
|
|
{
|
|
- Manager.ActiveDocument.GeneratePreviewLayer();
|
|
|
|
|
|
+ if (clearPreviewLayer || Manager.ActiveDocument.PreviewLayer == null)
|
|
|
|
+ {
|
|
|
|
+ Manager.ActiveDocument.GeneratePreviewLayer();
|
|
|
|
+ }
|
|
|
|
+
|
|
modifiedLayers = ((BitmapOperationTool)Manager.SelectedTool).Use(
|
|
modifiedLayers = ((BitmapOperationTool)Manager.SelectedTool).Use(
|
|
Manager.ActiveDocument.ActiveLayer,
|
|
Manager.ActiveDocument.ActiveLayer,
|
|
mouseMove.ToArray(),
|
|
mouseMove.ToArray(),
|
|
Manager.PrimaryColor);
|
|
Manager.PrimaryColor);
|
|
BitmapPixelChanges[] changes = modifiedLayers.Select(x => x.PixelChanges).ToArray();
|
|
BitmapPixelChanges[] changes = modifiedLayers.Select(x => x.PixelChanges).ToArray();
|
|
Manager.ActiveDocument.PreviewLayer.SetPixels(BitmapPixelChanges.CombineOverride(changes));
|
|
Manager.ActiveDocument.PreviewLayer.SetPixels(BitmapPixelChanges.CombineOverride(changes));
|
|
- lastModifiedLayers = modifiedLayers;
|
|
|
|
|
|
+ if (clearPreviewLayer || lastModifiedLayers == null)
|
|
|
|
+ {
|
|
|
|
+ lastModifiedLayers = modifiedLayers;
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ for (int i = 0; i < modifiedLayers.Length; i++)
|
|
|
|
+ {
|
|
|
|
+ lastModifiedLayers[i] = new LayerChange(
|
|
|
|
+ BitmapPixelChanges.CombineOverride(
|
|
|
|
+ lastModifiedLayers[i].PixelChanges, modifiedLayers[i].PixelChanges), lastModifiedLayers[i].LayerIndex);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|