Merge pull request #14096 from Snuffleupagus/spreadMode-preRender
Pre-render *one* additional page when spreadModes are enabled
This commit is contained in:
commit
dedff3c982
@ -1250,10 +1250,16 @@ class BaseViewer {
|
||||
const scrollAhead = this._isScrollModeHorizontal
|
||||
? this.scroll.right
|
||||
: this.scroll.down;
|
||||
const preRenderExtra =
|
||||
this._scrollMode === ScrollMode.VERTICAL &&
|
||||
this._spreadMode !== SpreadMode.NONE &&
|
||||
!this.isInPresentationMode;
|
||||
|
||||
const pageView = this.renderingQueue.getHighestPriority(
|
||||
visiblePages,
|
||||
this._pages,
|
||||
scrollAhead
|
||||
scrollAhead,
|
||||
preRenderExtra
|
||||
);
|
||||
if (pageView) {
|
||||
this._ensurePdfPageLoaded(pageView).then(() => {
|
||||
|
@ -102,8 +102,9 @@ class PDFRenderingQueue {
|
||||
* @param {Object} visible
|
||||
* @param {Array} views
|
||||
* @param {boolean} scrolledDown
|
||||
* @param {boolean} [preRenderExtra]
|
||||
*/
|
||||
getHighestPriority(visible, views, scrolledDown) {
|
||||
getHighestPriority(visible, views, scrolledDown, preRenderExtra = false) {
|
||||
/**
|
||||
* The state has changed. Figure out which page has the highest priority to
|
||||
* render next (if any).
|
||||
@ -126,20 +127,20 @@ class PDFRenderingQueue {
|
||||
}
|
||||
}
|
||||
|
||||
// All the visible views have rendered; try to render next/previous pages.
|
||||
if (scrolledDown) {
|
||||
const nextPageIndex = visible.last.id;
|
||||
// IDs start at 1, so no need to add 1.
|
||||
if (views[nextPageIndex] && !this.isViewFinished(views[nextPageIndex])) {
|
||||
return views[nextPageIndex];
|
||||
}
|
||||
} else {
|
||||
const previousPageIndex = visible.first.id - 2;
|
||||
if (
|
||||
views[previousPageIndex] &&
|
||||
!this.isViewFinished(views[previousPageIndex])
|
||||
) {
|
||||
return views[previousPageIndex];
|
||||
// All the visible views have rendered; try to render next/previous page.
|
||||
// (IDs start at 1, so no need to add 1 when `scrolledDown === true`.)
|
||||
let preRenderIndex = scrolledDown ? visible.last.id : visible.first.id - 2;
|
||||
let preRenderView = views[preRenderIndex];
|
||||
|
||||
if (preRenderView && !this.isViewFinished(preRenderView)) {
|
||||
return preRenderView;
|
||||
}
|
||||
if (preRenderExtra) {
|
||||
preRenderIndex += scrolledDown ? 1 : -1;
|
||||
preRenderView = views[preRenderIndex];
|
||||
|
||||
if (preRenderView && !this.isViewFinished(preRenderView)) {
|
||||
return preRenderView;
|
||||
}
|
||||
}
|
||||
// Everything that needs to be rendered has been.
|
||||
|
Loading…
x
Reference in New Issue
Block a user