public override HistoryMemento OnExecute(IHistoryWorkspace historyWorkspace) { if (this.layerIndex < 0 || this.layerIndex >= historyWorkspace.Document.Layers.Count) { throw new ArgumentOutOfRangeException("layerIndex = " + layerIndex + ", expected [0, " + historyWorkspace.Document.Layers.Count + ")"); } Layer newLayer = null; newLayer = (Layer)historyWorkspace.ActiveLayer.Clone(); newLayer.IsBackground = false; int newIndex = 1 + this.layerIndex; HistoryMemento ha = new NewLayerHistoryMemento( StaticName, StaticImage, historyWorkspace, newIndex); EnterCriticalRegion(); historyWorkspace.Document.Layers.Insert(newIndex, newLayer); newLayer.Invalidate(); return(ha); }
private HistoryMemento ImportOneLayer(DocumentWorkspace documentWorkspace, BitmapLayer layer) { SegmentedList <HistoryMemento> items = new SegmentedList <HistoryMemento>(); bool flag = true; if (flag && !documentWorkspace.Selection.IsEmpty) { HistoryMemento item = new DeselectFunction().Execute(documentWorkspace); items.Add(item); } if (flag && ((layer.Width > documentWorkspace.Document.Width) || (layer.Height > documentWorkspace.Document.Height))) { HistoryMemento memento3 = this.DoCanvasResize(documentWorkspace, layer.Size); if (memento3 == null) { flag = false; } else { items.Add(memento3); } } if (flag && (layer.Size != documentWorkspace.Document.Size)) { BitmapLayer layer2; try { using (new WaitCursorChanger(documentWorkspace)) { CleanupManager.RequestCleanup(); layer2 = CanvasSizeAction.ResizeLayer(layer, documentWorkspace.Document.Size, AnchorEdge.TopLeft, ColorBgra.White.NewAlpha(0)); } } catch (OutOfMemoryException exception) { ExceptionDialog.ShowErrorDialog(documentWorkspace, PdnResources.GetString("ImportFromFileAction.ImportOneLayer.OutOfMemory"), exception); flag = false; layer2 = null; } if (layer2 != null) { layer.Dispose(); layer = layer2; } } if (flag) { NewLayerHistoryMemento memento4 = new NewLayerHistoryMemento(string.Empty, null, documentWorkspace, documentWorkspace.Document.Layers.Count); documentWorkspace.Document.Layers.Add(layer); items.Add(memento4); } if (flag) { return(new CompoundHistoryMemento(string.Empty, null, items.ToArrayEx <HistoryMemento>())); } this.Rollback(items); return(null); }
public override HistoryMemento OnExecute(IHistoryWorkspace historyWorkspace) { BitmapLayer layer = RetryManager.RunMemorySensitiveOperation <BitmapLayer>(() => new BitmapLayer(historyWorkspace.Document.Width, historyWorkspace.Document.Height)); string format = PdnResources.GetString("AddNewBlankLayer.LayerName.Format"); layer.Name = string.Format(format, (1 + historyWorkspace.Document.Layers.Count).ToString()); int layerIndex = historyWorkspace.ActiveLayerIndex + 1; NewLayerHistoryMemento memento = new NewLayerHistoryMemento(PdnResources.GetString("AddNewBlankLayer.HistoryMementoName"), PdnResources.GetImageResource("Icons.MenuLayersAddNewLayerIcon.png"), historyWorkspace, layerIndex); base.EnterCriticalRegion(); historyWorkspace.Document.Layers.Insert(layerIndex, layer); return(memento); }
public override HistoryMemento OnExecute(IHistoryWorkspace historyWorkspace) { if ((this.layerIndex < 0) || (this.layerIndex >= historyWorkspace.Document.Layers.Count)) { object[] objArray1 = new object[] { "layerIndex = ", this.layerIndex, ", expected [0, ", historyWorkspace.Document.Layers.Count, ")" }; throw new ArgumentOutOfRangeException(string.Concat(objArray1)); } Layer item = null; item = RetryManager.RunMemorySensitiveOperation <Layer>(() => (Layer)historyWorkspace.ActiveLayer.Clone()); item.IsBackground = false; int layerIndex = 1 + this.layerIndex; HistoryMemento memento = new NewLayerHistoryMemento(StaticName, StaticImage, historyWorkspace, layerIndex); base.EnterCriticalRegion(); historyWorkspace.Document.Layers.Insert(layerIndex, item); item.Invalidate(); return(memento); }
public override HistoryMemento OnExecute(IHistoryWorkspace historyWorkspace) { BitmapLayer newLayer = null; newLayer = new BitmapLayer(historyWorkspace.Document.Width, historyWorkspace.Document.Height); string newLayerNameFormat = PdnResources.GetString("AddNewBlankLayer.LayerName.Format"); newLayer.Name = string.Format(newLayerNameFormat, (1 + historyWorkspace.Document.Layers.Count).ToString()); NewLayerHistoryMemento ha = new NewLayerHistoryMemento( PdnResources.GetString("AddNewBlankLayer.HistoryMementoName"), ImageResource.Get("Icons.MenuLayersAddNewLayerIcon.png"), historyWorkspace, historyWorkspace.Document.Layers.Count); EnterCriticalRegion(); historyWorkspace.Document.Layers.Add(newLayer); return(ha); }
private HistoryMemento ImportOneLayer(DocumentWorkspace documentWorkspace, BitmapLayer layer) { HistoryMemento retHA; List <HistoryMemento> historyMementos = new List <HistoryMemento>(); bool success = true; if (success) { if (!documentWorkspace.Selection.IsEmpty) { HistoryMemento ha = new DeselectFunction().Execute(documentWorkspace); historyMementos.Add(ha); } } if (success) { if (layer.Width > documentWorkspace.Document.Width || layer.Height > documentWorkspace.Document.Height) { HistoryMemento ha = DoCanvasResize(documentWorkspace, layer.Size); if (ha == null) { success = false; } else { historyMementos.Add(ha); } } } if (success) { if (layer.Size != documentWorkspace.Document.Size) { BitmapLayer newLayer; try { using (new WaitCursorChanger(documentWorkspace)) { Utility.GCFullCollect(); newLayer = CanvasSizeAction.ResizeLayer((BitmapLayer)layer, documentWorkspace.Document.Size, AnchorEdge.TopLeft, ColorBgra.White.NewAlpha(0)); } } catch (OutOfMemoryException) { Utility.ErrorBox(documentWorkspace, PdnResources.GetString("ImportFromFileAction.ImportOneLayer.OutOfMemory")); success = false; newLayer = null; } if (newLayer != null) { layer.Dispose(); layer = newLayer; } } } if (success) { NewLayerHistoryMemento nlha = new NewLayerHistoryMemento(string.Empty, null, documentWorkspace, documentWorkspace.Document.Layers.Count); documentWorkspace.Document.Layers.Add(layer); historyMementos.Add(nlha); } if (success) { HistoryMemento[] has = historyMementos.ToArray(); retHA = new CompoundHistoryMemento(string.Empty, null, has); } else { Rollback(historyMementos); retHA = null; } return(retHA); }