public AvaloniaContainerPresenter(IToolContext context, IContainerView view)
 {
     _context                  = context;
     _view                     = view;
     _renderTarget             = null;
     _editorContainerPresenter = new SkiaEditorContainerPresenter(_context, _view);
 }
        public void InitializeWith(IContainerPresenter containerPresenter, IReadOnlyList <ISubPresenterItem> subPresenterItems)
        {
            for (int i = 0; i < subPresenterItems.Count; i++)
            {
                var subPresenterItem = subPresenterItems[i];
                subPresenterItem.Index = i;
                var presenter = _container.Resolve <TSubPresenter>(subPresenterItem.PresenterType);
                _allSubPresenters.Add(subPresenterItem, presenter);
                containerPresenter.AddSubItemView(subPresenterItem, presenter.BaseView);
            }

            //needs to be done last so that the list of sub presenters is available
            base.InitializeWith(containerPresenter);
        }
示例#3
0
        public void Dispose()
        {
            if (_renderTarget != null)
            {
                _renderTarget.Dispose();
                _renderTarget = null;
            }

            if (_editorContainerPresenter != null)
            {
                _editorContainerPresenter.Dispose();
                _editorContainerPresenter = null;
            }
        }
示例#4
0
        protected override void Context()
        {
            _eventPublisher = A.Fake <IEventPublisher>();
            _subPresenter1  = A.Fake <ISubPresenter1>();
            _subPresenter2  = A.Fake <ISubPresenter2>();
            _subPresenter3  = A.Fake <ISubPresenter3>();
            _container      = A.Fake <IContainer>();
            A.CallTo(() => _container.Resolve <ISubPresenter>(typeof(ISubPresenter1))).Returns(_subPresenter1);
            A.CallTo(() => _container.Resolve <ISubPresenter>(typeof(ISubPresenter2))).Returns(_subPresenter2);
            A.CallTo(() => _container.Resolve <ISubPresenter>(typeof(ISubPresenter3))).Returns(_subPresenter3);

            _containerPresenter = A.Fake <IContainerPresenter>();
            sut = new SubPresenterItemManager <ISubPresenter>(_container, _eventPublisher);
            sut.InitializeWith(_containerPresenter, SubPresenterItems.All);
        }
示例#5
0
        private PdfPage Add(PdfDocument pdf, PageContainerViewModel container, IContainerPresenter presenter)
        {
            // Create A3 page size with Landscape orientation.
            var pdfPage = pdf.AddPage();

            pdfPage.Size        = PageSize.A3;
            pdfPage.Orientation = PageOrientation.Landscape;

            var dataFlow = _serviceProvider.GetService <DataFlow>();
            var db       = (object)container.Properties;
            var record   = (object)container.Record;

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

            using (XGraphics gfx = XGraphics.FromPdfPage(pdfPage))
            {
                // Calculate x and y page scale factors.
                double scaleX = pdfPage.Width.Value / container.Template.Width;
                double scaleY = pdfPage.Height.Value / container.Template.Height;
                double scale  = Math.Min(scaleX, scaleY);

                // Set scaling function.
                _scaleToPage = (value) => value * scale;

                // Draw container template contents to pdf graphics.
                Fill(gfx, 0, 0, pdfPage.Width.Value / scale, pdfPage.Height.Value / scale, container.Template.Background);


                // Draw template contents to pdf graphics.
                presenter.Render(gfx, this, null, container.Template, 0, 0);

                // Draw page contents to pdf graphics.
                presenter.Render(gfx, this, null, container, 0, 0);
            }

            return(pdfPage);
        }
示例#6
0
 /// <summary>
 /// Initializes a new instance of the <see cref="PdfSkiaSharpExporter"/> class.
 /// </summary>
 /// <param name="renderer">The shape renderer.</param>
 /// <param name="presenter">The container presenter.</param>
 /// <param name="targetDpi">The target renderer dpi.</param>
 public PdfSkiaSharpExporter(IShapeRenderer renderer, IContainerPresenter presenter, float targetDpi = 72.0f)
 {
     _renderer  = renderer;
     _presenter = presenter;
     _targetDpi = targetDpi;
 }
示例#7
0
 /// <summary>
 /// Initializes a new instance of the <see cref="PngSkiaSharpExporter"/> class.
 /// </summary>
 /// <param name="renderer">The shape renderer.</param>
 /// <param name="presenter">The container presenter.</param>
 public PngSkiaSharpExporter(IShapeRenderer renderer, IContainerPresenter presenter)
 {
     _renderer  = renderer;
     _presenter = presenter;
 }