Refactors draw method in PDFPageView; makes optional some PDFPageViewOptions options
This commit is contained in:
parent
2ac7ac4678
commit
2565e627a3
@ -154,3 +154,22 @@ var AnnotationsLayerBuilder = (function AnnotationsLayerBuilderClosure() {
|
|||||||
};
|
};
|
||||||
return AnnotationsLayerBuilder;
|
return AnnotationsLayerBuilder;
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @constructor
|
||||||
|
* @implements IPDFAnnotationsLayerFactory
|
||||||
|
*/
|
||||||
|
function DefaultAnnotationsLayerFactory() {}
|
||||||
|
DefaultAnnotationsLayerFactory.prototype = {
|
||||||
|
/**
|
||||||
|
* @param {HTMLDivElement} pageDiv
|
||||||
|
* @param {PDFPage} pdfPage
|
||||||
|
* @returns {AnnotationsLayerBuilder}
|
||||||
|
*/
|
||||||
|
createAnnotationsLayerBuilder: function (pageDiv, pdfPage) {
|
||||||
|
return new AnnotationsLayerBuilder({
|
||||||
|
pageDiv: pageDiv,
|
||||||
|
pdfPage: pdfPage
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
@ -67,9 +67,9 @@ IRenderableView.prototype = {
|
|||||||
*/
|
*/
|
||||||
get renderingState() {},
|
get renderingState() {},
|
||||||
/**
|
/**
|
||||||
* @param {function} callback - The draw completion callback.
|
* @returns {Promise} Resolved on draw completion.
|
||||||
*/
|
*/
|
||||||
draw: function (callback) {},
|
draw: function () {},
|
||||||
resume: function () {},
|
resume: function () {},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -14,7 +14,8 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
/* globals RenderingStates, PDFJS, CustomStyle, CSS_UNITS, getOutputScale */
|
/* globals RenderingStates, PDFJS, CustomStyle, CSS_UNITS, getOutputScale,
|
||||||
|
TextLayerBuilder, AnnotationsLayerBuilder, Promise */
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
@ -286,7 +287,7 @@ var PDFPageView = (function PDFPageViewClosure() {
|
|||||||
return this.viewport.convertToPdfPoint(x, y);
|
return this.viewport.convertToPdfPoint(x, y);
|
||||||
},
|
},
|
||||||
|
|
||||||
draw: function PDFPageView_draw(callback) {
|
draw: function PDFPageView_draw() {
|
||||||
if (this.renderingState !== RenderingStates.INITIAL) {
|
if (this.renderingState !== RenderingStates.INITIAL) {
|
||||||
console.error('Must be in new state before drawing');
|
console.error('Must be in new state before drawing');
|
||||||
}
|
}
|
||||||
@ -373,6 +374,12 @@ var PDFPageView = (function PDFPageViewClosure() {
|
|||||||
ctx.scale(outputScale.sx, outputScale.sy);
|
ctx.scale(outputScale.sx, outputScale.sy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var resolveRenderPromise, rejectRenderPromise;
|
||||||
|
var promise = new Promise(function (resolve, reject) {
|
||||||
|
resolveRenderPromise = resolve;
|
||||||
|
rejectRenderPromise = reject;
|
||||||
|
});
|
||||||
|
|
||||||
// Rendering area
|
// Rendering area
|
||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
@ -385,6 +392,7 @@ var PDFPageView = (function PDFPageViewClosure() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (error === 'cancelled') {
|
if (error === 'cancelled') {
|
||||||
|
rejectRenderPromise(error);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -412,14 +420,16 @@ var PDFPageView = (function PDFPageViewClosure() {
|
|||||||
});
|
});
|
||||||
div.dispatchEvent(event);
|
div.dispatchEvent(event);
|
||||||
|
|
||||||
callback();
|
if (!error) {
|
||||||
|
resolveRenderPromise(undefined);
|
||||||
|
} else {
|
||||||
|
rejectRenderPromise(error);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var renderContext = {
|
var renderContinueCallback = null;
|
||||||
canvasContext: ctx,
|
if (this.renderingQueue) {
|
||||||
viewport: this.viewport,
|
renderContinueCallback = function renderContinueCallback(cont) {
|
||||||
// intent: 'default', // === 'display'
|
|
||||||
continueCallback: function pdfViewcContinueCallback(cont) {
|
|
||||||
if (!self.renderingQueue.isHighestPriority(self)) {
|
if (!self.renderingQueue.isHighestPriority(self)) {
|
||||||
self.renderingState = RenderingStates.PAUSED;
|
self.renderingState = RenderingStates.PAUSED;
|
||||||
self.resume = function resumeCallback() {
|
self.resume = function resumeCallback() {
|
||||||
@ -429,7 +439,14 @@ var PDFPageView = (function PDFPageViewClosure() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
cont();
|
cont();
|
||||||
}
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
var renderContext = {
|
||||||
|
canvasContext: ctx,
|
||||||
|
viewport: this.viewport,
|
||||||
|
// intent: 'default', // === 'display'
|
||||||
|
continueCallback: renderContinueCallback
|
||||||
};
|
};
|
||||||
var renderTask = this.renderTask = this.pdfPage.render(renderContext);
|
var renderTask = this.renderTask = this.pdfPage.render(renderContext);
|
||||||
|
|
||||||
@ -462,6 +479,7 @@ var PDFPageView = (function PDFPageViewClosure() {
|
|||||||
if (self.onBeforeDraw) {
|
if (self.onBeforeDraw) {
|
||||||
self.onBeforeDraw();
|
self.onBeforeDraw();
|
||||||
}
|
}
|
||||||
|
return promise;
|
||||||
},
|
},
|
||||||
|
|
||||||
beforePrint: function PDFPageView_beforePrint() {
|
beforePrint: function PDFPageView_beforePrint() {
|
||||||
|
@ -165,7 +165,10 @@ var PDFRenderingQueue = (function PDFRenderingQueueClosure() {
|
|||||||
break;
|
break;
|
||||||
case RenderingStates.INITIAL:
|
case RenderingStates.INITIAL:
|
||||||
this.highestPriorityPage = view.renderingId;
|
this.highestPriorityPage = view.renderingId;
|
||||||
view.draw(this.renderHighestPriority.bind(this));
|
var continueRendering = function () {
|
||||||
|
this.renderHighestPriority();
|
||||||
|
}.bind(this);
|
||||||
|
view.draw().then(continueRendering, continueRendering);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -385,3 +385,24 @@ var TextLayerBuilder = (function TextLayerBuilderClosure() {
|
|||||||
};
|
};
|
||||||
return TextLayerBuilder;
|
return TextLayerBuilder;
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @constructor
|
||||||
|
* @implements IPDFTextLayerFactory
|
||||||
|
*/
|
||||||
|
function DefaultTextLayerFactory() {}
|
||||||
|
DefaultTextLayerFactory.prototype = {
|
||||||
|
/**
|
||||||
|
* @param {HTMLDivElement} textLayerDiv
|
||||||
|
* @param {number} pageIndex
|
||||||
|
* @param {PageViewport} viewport
|
||||||
|
* @returns {TextLayerBuilder}
|
||||||
|
*/
|
||||||
|
createTextLayerBuilder: function (textLayerDiv, pageIndex, viewport) {
|
||||||
|
return new TextLayerBuilder({
|
||||||
|
textLayerDiv: textLayerDiv,
|
||||||
|
pageIndex: pageIndex,
|
||||||
|
viewport: viewport
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
@ -139,17 +139,22 @@ var ThumbnailView = function thumbnailView(container, id, defaultViewport,
|
|||||||
return !this.hasImage;
|
return !this.hasImage;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.draw = function thumbnailViewDraw(callback) {
|
this.draw = function thumbnailViewDraw() {
|
||||||
if (this.renderingState !== RenderingStates.INITIAL) {
|
if (this.renderingState !== RenderingStates.INITIAL) {
|
||||||
console.error('Must be in new state before drawing');
|
console.error('Must be in new state before drawing');
|
||||||
}
|
}
|
||||||
|
|
||||||
this.renderingState = RenderingStates.RUNNING;
|
this.renderingState = RenderingStates.RUNNING;
|
||||||
if (this.hasImage) {
|
if (this.hasImage) {
|
||||||
callback();
|
return Promise.resolve(undefined);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var resolveRenderPromise, rejectRenderPromise;
|
||||||
|
var promise = new Promise(function (resolve, reject) {
|
||||||
|
resolveRenderPromise = resolve;
|
||||||
|
rejectRenderPromise = reject;
|
||||||
|
});
|
||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
var ctx = this.getPageDrawContext();
|
var ctx = this.getPageDrawContext();
|
||||||
var drawViewport = this.viewport.clone({ scale: this.scale });
|
var drawViewport = this.viewport.clone({ scale: this.scale });
|
||||||
@ -171,14 +176,15 @@ var ThumbnailView = function thumbnailView(container, id, defaultViewport,
|
|||||||
this.pdfPage.render(renderContext).promise.then(
|
this.pdfPage.render(renderContext).promise.then(
|
||||||
function pdfPageRenderCallback() {
|
function pdfPageRenderCallback() {
|
||||||
self.renderingState = RenderingStates.FINISHED;
|
self.renderingState = RenderingStates.FINISHED;
|
||||||
callback();
|
resolveRenderPromise(undefined);
|
||||||
},
|
},
|
||||||
function pdfPageRenderError(error) {
|
function pdfPageRenderError(error) {
|
||||||
self.renderingState = RenderingStates.FINISHED;
|
self.renderingState = RenderingStates.FINISHED;
|
||||||
callback();
|
rejectRenderPromise(error);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
this.hasImage = true;
|
this.hasImage = true;
|
||||||
|
return promise;
|
||||||
};
|
};
|
||||||
|
|
||||||
function getTempCanvas(width, height) {
|
function getTempCanvas(width, height) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user