Beispiel #1
0
        private static Document ResizeDocument(DocumentWorkspace documentWorkspace, AnchorEdge initialAnchor, ColorBgra background, bool loadAndSaveMaintainAspect, bool saveAnchor)
        {
            Document document2;

            CleanupManager.RequestCleanup();
            IWin32Window owner    = documentWorkspace;
            Document     document = documentWorkspace.Document;
            Size         size     = document.Size;

            using (CanvasSizeDialog dialog = new CanvasSizeDialog())
            {
                bool flag;
                if (loadAndSaveMaintainAspect)
                {
                    flag = AppSettings.Instance.Workspace.LastMaintainAspectRatioCS.Value;
                }
                else
                {
                    flag = false;
                }
                dialog.OriginalSize      = document.Size;
                dialog.OriginalDpuUnit   = document.DpuUnit;
                dialog.OriginalDpu       = document.DpuX;
                dialog.ImageWidth        = size.Width;
                dialog.ImageHeight       = size.Height;
                dialog.LayerCount        = document.Layers.Count;
                dialog.AnchorEdge        = initialAnchor;
                dialog.Units             = dialog.OriginalDpuUnit;
                dialog.Resolution        = document.DpuX;
                dialog.Units             = AppSettings.Instance.Workspace.LastNonPixelUnits.Value;
                dialog.ConstrainToAspect = flag;
                DialogResult    result     = dialog.ShowDialog(owner);
                Size            newSize    = new Size(dialog.ImageWidth, dialog.ImageHeight);
                MeasurementUnit units      = dialog.Units;
                double          resolution = dialog.Resolution;
                if (result == DialogResult.Cancel)
                {
                    return(null);
                }
                if (loadAndSaveMaintainAspect)
                {
                    AppSettings.Instance.Workspace.LastMaintainAspectRatioCS.Value = dialog.ConstrainToAspect;
                }
                if (saveAnchor)
                {
                    AppSettings.Instance.Workspace.LastCanvasSizeAnchorEdge.Value = dialog.AnchorEdge;
                }
                if (((newSize == document.Size) && (units == document.DpuUnit)) && (resolution == document.DpuX))
                {
                    document2 = null;
                }
                else
                {
                    try
                    {
                        documentWorkspace.FlushTool();
                        CleanupManager.RequestCleanup();
                        Document document3 = ResizeDocument(document, newSize, dialog.AnchorEdge, background);
                        document3.DpuUnit = units;
                        document3.DpuX    = resolution;
                        document3.DpuY    = resolution;
                        document2         = document3;
                    }
                    catch (OutOfMemoryException exception)
                    {
                        ExceptionDialog.ShowErrorDialog(owner, PdnResources.GetString("CanvasSizeAction.ResizeDocument.OutOfMemory"), exception.ToString());
                        document2 = null;
                    }
                    catch (Exception)
                    {
                        document2 = null;
                    }
                }
            }
            return(document2);
        }
Beispiel #2
0
        public override HistoryMemento PerformAction(DocumentWorkspace docWorkspace)
        {
            int                 newWidth;
            int                 newHeight;
            MeasurementUnit     newDpuUnit;
            double              newDpu;
            ResamplingAlgorithm algorithm = AppSettings.Instance.Workspace.LastResamplingMethod.Value;

            if (algorithm == ResamplingAlgorithm.SuperSampling)
            {
                algorithm = ResamplingAlgorithm.Fant;
            }
            bool flag = AppSettings.Instance.Workspace.LastMaintainAspectRatio.Value;

            using (ResizeDialog dialog = new ResizeDialog())
            {
                dialog.OriginalSize        = docWorkspace.Document.Size;
                dialog.OriginalDpuUnit     = docWorkspace.Document.DpuUnit;
                dialog.OriginalDpu         = docWorkspace.Document.DpuX;
                dialog.ImageHeight         = docWorkspace.Document.Height;
                dialog.ImageWidth          = docWorkspace.Document.Width;
                dialog.ResamplingAlgorithm = algorithm;
                dialog.LayerCount          = docWorkspace.Document.Layers.Count;
                dialog.Units             = dialog.OriginalDpuUnit;
                dialog.Resolution        = docWorkspace.Document.DpuX;
                dialog.Units             = AppSettings.Instance.Workspace.LastNonPixelUnits.Value;
                dialog.ConstrainToAspect = flag;
                if (dialog.ShowDialog(docWorkspace) == DialogResult.Cancel)
                {
                    return(null);
                }
                AppSettings.Instance.Workspace.LastResamplingMethod.Value    = dialog.ResamplingAlgorithm;
                AppSettings.Instance.Workspace.LastMaintainAspectRatio.Value = dialog.ConstrainToAspect;
                newDpuUnit = dialog.Units;
                newWidth   = dialog.ImageWidth;
                newHeight  = dialog.ImageHeight;
                newDpu     = dialog.Resolution;
                algorithm  = dialog.ResamplingAlgorithm;
                if (newDpuUnit != MeasurementUnit.Pixel)
                {
                    AppSettings.Instance.Workspace.LastNonPixelUnits.Value = newDpuUnit;
                    if (docWorkspace.AppWorkspace.Units != MeasurementUnit.Pixel)
                    {
                        docWorkspace.AppWorkspace.Units = newDpuUnit;
                    }
                }
                if (((docWorkspace.Document.Size == new Size(dialog.ImageWidth, dialog.ImageHeight)) && (docWorkspace.Document.DpuX == newDpu)) && (docWorkspace.Document.DpuUnit == newDpuUnit))
                {
                    return(null);
                }
            }
            if ((newWidth == docWorkspace.Document.Width) && (newHeight == docWorkspace.Document.Height))
            {
                MetadataHistoryMemento memento2 = new MetadataHistoryMemento(StaticName, PdnResources.GetImageResource(StaticImageName), docWorkspace);
                docWorkspace.Document.DpuUnit = newDpuUnit;
                docWorkspace.Document.DpuX    = newDpu;
                docWorkspace.Document.DpuY    = newDpu;
                return(memento2);
            }
            docWorkspace.FlushTool();
            using (TaskProgressDialog progressDialog = new TaskProgressDialog())
            {