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>(); }
public PageViewControlState(DjvuDocument document, uint pageNumber, double width, double height, PageViewObserver zoomFactorObserver) { Document = document; PageNumber = pageNumber; Width = width; Height = height; ZoomFactorObserver = zoomFactorObserver; }
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; } }
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; }
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; }
private void Unload() { _pageViewObserver = null; _pageStates = null; listView.ItemsSource = null; }