コード例 #1
0
        private void PageDecodedHandler(DjvuPage page, TextLayerZone textLayer, CancellationToken ct)
        {
            if (ct.IsCancellationRequested)
            {
                return;
            }

            Page = page;

            _pageViewObserver = State.ZoomFactorObserver;
            _pageViewObserver.ZoomFactorChanging += HandleZoomFactorChanging;
            _pageViewObserver.ZoomFactorChanged  += HandleZoomFactorChanged;

            Width  = State.Width;
            Height = State.Height;

            CreateThumbnailSurface();

            if (!_pageViewObserver.IsZooming)
            {
                CreateContentSurface();
            }

            TextLayer = textLayer != null ? new[] { textLayer } : Array.Empty <TextLayerZone>();
        }
コード例 #2
0
 public PageViewControlState(DjvuDocument document, uint pageNumber, double width, double height, PageViewObserver zoomFactorObserver)
 {
     Document           = document;
     PageNumber         = pageNumber;
     Width              = width;
     Height             = height;
     ZoomFactorObserver = zoomFactorObserver;
 }
コード例 #3
0
        private void OnTextLayerChanged()
        {
            if (TextLayer != null)
            {
                _pageViewObserver = State.ZoomFactorObserver;
                _pageViewObserver.SelectionChanging += HandleSelectionChanging;
                _pageViewObserver.SearchHighlightingRedrawingRequested += HandleSearchHighlightingRedrawingRequested;

                RedrawSelection();
                RedrawSearchHighlighting();
            }
            else
            {
                _pageViewObserver.SelectionChanging -= HandleSelectionChanging;
                _pageViewObserver.SearchHighlightingRedrawingRequested -= HandleSearchHighlightingRedrawingRequested;
                _pageViewObserver = null;

                selectionShape.Data          = null;
                searchHighlightingShape.Data = null;
            }
        }
コード例 #4
0
        private void CleanUp()
        {
            if (_pageViewObserver != null)
            {
                _pageViewObserver.ZoomFactorChanging -= HandleZoomFactorChanging;
                _pageViewObserver.ZoomFactorChanged  -= HandleZoomFactorChanged;
                _pageViewObserver = null;
            }

            if (_contentVsis != null)
            {
                _contentVsis.Dispose();
                _contentVsis = null;
            }

            _thumbnailSis = null;
            thumbnailContentCanvas.Background = null;
            contentCanvas.Background          = null;
            contentCanvas.Children.Clear();
            Page      = null;
            TextLayer = null;
        }
コード例 #5
0
        private void Load()
        {
            if (Source == null || _containerSize == null)
            {
                return;
            }

            _pageViewObserver = new PageViewObserver();

            var pageInfos    = Source.GetPageInfos();
            var maxPageWidth = pageInfos.Max(pageInfo => pageInfo.Width);

            _pageStates = new PageViewControlState[Source.PageCount];

            for (uint i = 0; i < _pageStates.Length; i++)
            {
                var    pageInfo   = pageInfos[i];
                double pageWidth  = pageInfo.Width;
                double pageHeight = pageInfo.Height;

                var scaleFactor = pageWidth / maxPageWidth;
                var aspectRatio = pageWidth / pageHeight;
                var width       = scaleFactor * _containerSize.Value.Width;
                var height      = width / aspectRatio;

                _pageStates[i] = new PageViewControlState(
                    document: Source,
                    pageNumber: i + 1,
                    width: width,
                    height: height,
                    zoomFactorObserver: _pageViewObserver);
            }

            PageNumber           = 1;
            listView.ItemsSource = _pageStates;
        }
コード例 #6
0
 private void Unload()
 {
     _pageViewObserver    = null;
     _pageStates          = null;
     listView.ItemsSource = null;
 }