/// <summary> /// Applies pixels from preview layer to selected layer. /// </summary> public void ApplyPreviewLayer() { if (previewLayerChanges == null) { return; } Layer[] layers = new Layer[previewLayerChanges.Count]; for (int i = 0; i < layers.Length; i++) { layers[i] = Manager.ActiveDocument.Layers.First(x => x.LayerGuid == previewLayerChanges[i].LayerGuid); } if (layers.Length > 0) { IEnumerable <LayerChange> oldValues = ApplyToLayers(layers, previewLayerChanges.ToArray()); foreach (var oldValue in oldValues) { var previewChanges = previewLayerChanges.First(x => x.LayerGuid == oldValue.LayerGuid); BitmapChanged?.Invoke(this, new BitmapChangedEventArgs( previewChanges.PixelChanges, oldValue.PixelChanges, previewChanges.LayerGuid)); } Manager.ActiveDocument.GeneratePreviewLayer(); } previewLayerChanges = null; }
private void UseTool(List <Coordinates> mouseMoveCords, BitmapOperationTool tool, Color color) { if (Keyboard.IsKeyDown(Key.LeftShift) && !MouseCordsNotInLine(mouseMoveCords)) { mouseMoveCords = GetSquareCoordiantes(mouseMoveCords); } if (!tool.RequiresPreviewLayer) { LayerChange[] modifiedLayers = tool.Use(Manager.ActiveLayer, mouseMoveCords.ToArray(), color); LayerChange[] oldPixelsValues = new LayerChange[modifiedLayers.Length]; for (int i = 0; i < modifiedLayers.Length; i++) { Layer layer = Manager.ActiveDocument.Layers.First(x => x.LayerGuid == modifiedLayers[i].LayerGuid); oldPixelsValues[i] = ApplyToLayer(layer, modifiedLayers[i]); BitmapChanged?.Invoke(this, new BitmapChangedEventArgs( modifiedLayers[i].PixelChanges, oldPixelsValues[i].PixelChanges, modifiedLayers[i].LayerGuid)); } } else { UseToolOnPreviewLayer(mouseMoveCords, tool.ClearPreviewLayerOnEachIteration); } }
/// <summary> /// Applies pixels from preview layer to selected layer. /// </summary> public void ApplyPreviewLayer() { if (previewLayerChanges == null) { return; } foreach (var modifiedLayer in previewLayerChanges) { Layer layer = Manager.ActiveDocument.Layers.FirstOrDefault(x => x.LayerGuid == modifiedLayer.LayerGuid); if (layer != null) { BitmapPixelChanges oldValues = ApplyToLayer(layer, modifiedLayer).PixelChanges; BitmapChanged?.Invoke(this, new BitmapChangedEventArgs( modifiedLayer.PixelChanges, oldValues, modifiedLayer.LayerGuid)); Manager.ActiveDocument.GeneratePreviewLayer(); } } previewLayerChanges = null; }
/// <summary> /// Applies pixels from preview layer to selected layer /// </summary> public void StopAction() { if (_lastModifiedLayers == null) { return; } for (int i = 0; i < _lastModifiedLayers.Length; i++) { var layer = Manager.ActiveDocument.Layers[_lastModifiedLayers[i].LayerIndex]; BitmapPixelChanges oldValues = ApplyToLayer(layer, _lastModifiedLayers[i]).PixelChanges; BitmapChanged?.Invoke(this, new BitmapChangedEventArgs(_lastModifiedLayers[i].PixelChanges, oldValues, _lastModifiedLayers[i].LayerIndex)); Manager.PreviewLayer = null; } }
public void UseTool(IReadOnlyList <Coordinates> recordedMouseMovement, BitmapOperationTool tool, SKColor color) { if (Manager.ActiveDocument.Layers.Count == 0) { return; } if (!tool.RequiresPreviewLayer) { tool.Use(Manager.ActiveLayer, null, Manager.ActiveDocument.Layers, recordedMouseMovement, color); BitmapChanged?.Invoke(this, null); } else { UseToolOnPreviewLayer(recordedMouseMovement, tool.ClearPreviewLayerOnEachIteration); } }
private void UseTool(List <Coordinates> mouseMoveCords, BitmapOperationTool tool, Color color) { if (sizeSetting == null) { sizeSetting = tool.Toolbar.GetSetting <SizeSetting>("ToolSize"); } int thickness = sizeSetting != null ? sizeSetting.Value : 1; bool shiftDown = Keyboard.IsKeyDown(Key.LeftShift); if (shiftDown && tool.UsesShift) { bool mouseInLine = MouseCordsNotInLine(mouseMoveCords, thickness); if (!mouseInLine) { mouseMoveCords = GetSquareCoordiantes(mouseMoveCords); } else { mouseMoveCords = GetLineCoordinates(mouseMoveCords, thickness); } } if (!tool.RequiresPreviewLayer) { LayerChange[] modifiedLayers = tool.Use(Manager.ActiveLayer, mouseMoveCords, color); LayerChange[] oldPixelsValues = new LayerChange[modifiedLayers.Length]; for (int i = 0; i < modifiedLayers.Length; i++) { Layer layer = Manager.ActiveDocument.Layers.First(x => x.LayerGuid == modifiedLayers[i].LayerGuid); oldPixelsValues[i] = ApplyToLayer(layer, modifiedLayers[i]); BitmapChanged?.Invoke(this, new BitmapChangedEventArgs( modifiedLayers[i].PixelChanges, oldPixelsValues[i].PixelChanges, modifiedLayers[i].LayerGuid)); } } else { UseToolOnPreviewLayer(mouseMoveCords, tool.ClearPreviewLayerOnEachIteration); } }
/// <summary> /// Applies pixels from preview layer to selected layer. /// </summary> public void ApplyPreviewLayer() { var previewLayer = Manager.ActiveDocument.PreviewLayer; var activeLayer = Manager.ActiveLayer; Int32Rect dirtyRect = new Int32Rect(previewLayer.OffsetX, previewLayer.OffsetY, previewLayer.Width, previewLayer.Height); activeLayer.DynamicResizeAbsolute(dirtyRect); previewLayer.LayerBitmap.SkiaSurface.Draw( activeLayer.LayerBitmap.SkiaSurface.Canvas, previewLayer.OffsetX - activeLayer.OffsetX, previewLayer.OffsetY - activeLayer.OffsetY, Surface.BlendingPaint ); Manager.ActiveLayer.InvokeLayerBitmapChange(dirtyRect); BitmapChanged?.Invoke(this, null); }