Esempio n. 1
0
    public void Save(Stream stream, object?item, object?options)
    {
        if (item is null)
        {
            return;
        }

        var ic = options as IImageCache;

        if (options is null)
        {
            return;
        }

        IShapeRenderer renderer = new SkiaSharpRendererViewModel(_serviceProvider);

        renderer.State.DrawShapeState = ShapeStateFlags.Printable;
        renderer.State.ImageCache     = ic;

        var presenter = new ExportPresenter();

        IProjectExporter exporter = new PdfSkiaSharpExporter(renderer, presenter, 72.0f);

        if (item is PageContainerViewModel page)
        {
            var dataFlow = _serviceProvider.GetService <DataFlow>();
            var db       = (object)page.Properties;
            var record   = (object)page.Record;

            dataFlow.Bind(page.Template, db, record);
            dataFlow.Bind(page, db, record);

            exporter.Save(stream, page);
        }
        else if (item is DocumentContainerViewModel document)
        {
            var dataFlow = _serviceProvider.GetService <DataFlow>();

            dataFlow.Bind(document);

            exporter.Save(stream, document);
        }
        else if (item is ProjectContainerViewModel project)
        {
            var dataFlow = _serviceProvider.GetService <DataFlow>();

            dataFlow.Bind(project);

            exporter.Save(stream, project);
        }
    }
Esempio n. 2
0
        public void Save(Stream stream, object item, object options)
        {
            if (item is null)
            {
                return;
            }

            var ic = options as IImageCache;

            if (options is null)
            {
                return;
            }

            var renderer = new SkiaSharpRendererViewModel(_serviceProvider);

            renderer.State.DrawShapeState = ShapeStateFlags.Printable;
            renderer.State.ImageCache     = ic;

            var presenter = new ExportPresenter();

            IProjectExporter exporter = new JpegSkiaSharpExporter(renderer, presenter);

            if (item is PageContainerViewModel page)
            {
                var dataFlow = _serviceProvider.GetService <DataFlow>();
                var db       = (object)page.Properties;
                var record   = (object)page.Record;

                dataFlow.Bind(page.Template, db, record);
                dataFlow.Bind(page, db, record);

                exporter.Save(stream, page);
            }
            else if (item is DocumentContainerViewModel document)
            {
                throw new NotSupportedException("Saving documents as jpeg drawing is not supported.");
            }
            else if (item is ProjectContainerViewModel project)
            {
                throw new NotSupportedException("Saving projects as jpeg drawing is not supported.");
            }
        }