Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #6
0
        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);
        }