Example #1
0
        private Rectangle[] ConsolidateRects(Rectangle[] scans)
        {
            if (scans.Length == 0)
            {
                return(Array.Empty <Rectangle>());
            }

            SegmentedList <Rectangle> cons = new SegmentedList <Rectangle>();
            int current = 0;

            cons.Add(scans[0]);

            for (int i = 1; i < scans.Length; ++i)
            {
                if (scans[i].Left == cons[current].Left &&
                    scans[i].Right == cons[current].Right &&
                    scans[i].Top == cons[current].Bottom)
                {
                    Rectangle cc = cons[current];
                    cc.Height     = scans[i].Bottom - cons[current].Top;
                    cons[current] = cc;
                }
                else
                {
                    cons.Add(scans[i]);
                    current = cons.Count - 1;
                }
            }

            return(cons.ToArrayEx());
        }
Example #2
0
        private Rectangle[] ConsolidateRects(Rectangle[] scans)
        {
            if (scans.Length == 0)
            {
                return(Array.Empty <Rectangle>());
            }
            SegmentedList <Rectangle> items = new SegmentedList <Rectangle>();
            int num = 0;

            items.Add(scans[0]);
            for (int i = 1; i < scans.Length; i++)
            {
                Rectangle rectangle = items[num];
                if (scans[i].Left == rectangle.Left)
                {
                    rectangle = items[num];
                    if (scans[i].Right == rectangle.Right)
                    {
                        rectangle = items[num];
                        if (scans[i].Top == rectangle.Bottom)
                        {
                            Rectangle rectangle2 = items[num];
                            rectangle         = items[num];
                            rectangle2.Height = scans[i].Bottom - rectangle.Top;
                            items[num]        = rectangle2;
                            continue;
                        }
                    }
                }
                items.Add(scans[i]);
                num = items.Count - 1;
            }
            return(items.ToArrayEx <Rectangle>());
        }
Example #3
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);
        }
Example #4
0
        public HistoryMemento ImportMultipleFiles(DocumentWorkspace documentWorkspace, string[] fileNames)
        {
            HistoryMemento memento = null;
            SegmentedList <HistoryMemento> historyMementos = new SegmentedList <HistoryMemento>();
            Rectangle empty = Rectangle.Empty;

            foreach (string str in fileNames)
            {
                HistoryMemento item = this.ImportOneFile(documentWorkspace, str, out empty);
                if (item != null)
                {
                    historyMementos.Add(item);
                }
                else
                {
                    this.Rollback(historyMementos);
                    historyMementos.Clear();
                    break;
                }
            }
            if ((empty.Width > 0) && (empty.Height > 0))
            {
                SelectionHistoryMemento memento3 = new SelectionHistoryMemento(null, null, documentWorkspace);
                historyMementos.Add(memento3);
                using (documentWorkspace.Selection.UseChangeScope())
                {
                    documentWorkspace.Selection.Reset();
                    documentWorkspace.Selection.SetContinuation(empty.ToRectInt32(), SelectionCombineMode.Replace);
                    documentWorkspace.Selection.CommitContinuation();
                }
            }
            if (historyMementos.Count > 0)
            {
                HistoryMemento[] actions = historyMementos.ToArrayEx <HistoryMemento>();
                memento = new CompoundHistoryMemento(StaticName, StaticImage, actions);
            }
            return(memento);
        }