Ejemplo n.º 1
0
        public async Task <Stream> PlotToStream(ViewPortViewModelBase viewModel, Drawing drawing, ViewPort viewPort)
        {
            var             stream         = new MemoryStream();
            IPlotterFactory plotterFactory = viewModel switch
            {
                PdfPlotterViewModel _ => _pdfPlotterFactory,
                SvgPlotterViewModel _ => _svgPlotterFactory,
                            _ => throw new System.Exception($"Unexpected view model: {viewModel?.GetType().Name}"),
            };
            var plotter = plotterFactory.CreatePlotter(viewModel);
            await plotter.Plot(drawing, viewPort, stream, _workspace.FileSystemService.GetContentResolverRelativeToPath(drawing.Settings.FileName));

            stream.Seek(0, SeekOrigin.Begin);
            return(stream);
        }
Ejemplo n.º 2
0
        public ViewPortViewModelBase CreateAndPopulateViewModel(ClientPlotSettings settings, DrawingSettings drawingSettings, string plotTypeOverride = null)
        {
            ViewPortViewModelBase viewModel = null;

            switch (plotTypeOverride ?? settings.PlotType)
            {
            case "pdf":
                var pdfViewModel = (PdfPlotterViewModel)_pdfPlotterFactory.CreatePlotterViewModel();
                pdfViewModel.DisplayWidth  = settings.Width;
                pdfViewModel.DisplayHeight = settings.Height;
                viewModel = pdfViewModel;
                break;

            case "svg":
                var svgViewModel = (SvgPlotterViewModel)_svgPlotterFactory.CreatePlotterViewModel();
                svgViewModel.PlotAsDocument = true;
                svgViewModel.DisplayWidth   = settings.Width;
                svgViewModel.DisplayHeight  = settings.Height;
                svgViewModel.OutputWidth    = settings.Width;
                svgViewModel.OutputHeight   = settings.Height;
                viewModel = svgViewModel;
                break;
            }

            if (viewModel is object)
            {
                var transform   = _workspace.ActiveViewPort.GetTransformationMatrixWindowsStyle(Agent.Width, Agent.Height).Inverse();
                var topLeft     = transform.Transform(settings.Viewport.TopLeft.ToPoint());
                var bottomRight = transform.Transform(settings.Viewport.BottomRight.ToPoint());
                viewModel.ViewPortType = settings.ViewPortType;
                viewModel.ScalingType  = settings.ScalingType;
                var(scaleA, scaleB)    = settings.GetUnitAdjustedScale(drawingSettings);
                viewModel.ScaleA       = scaleA;
                viewModel.ScaleB       = scaleB;
                viewModel.BottomLeft   = new Point(topLeft.X, bottomRight.Y, 0.0);
                viewModel.TopRight     = new Point(bottomRight.X, topLeft.Y, 0.0);
            }

            return(viewModel);
        }