mirror of
https://github.com/zen-browser/pdf.js.git
synced 2025-07-09 09:45:42 +02:00
Fix #7798: Refactor scratch canvas usage.
Fixes extra canvas create calls. Fixes unnecessary call of `new DOMCanvasFactory`. Fixes undefined error of DOMCanvasFactory. Fixes failures in some of the tests. Fixes expected behaviour. Remove unused vars.
This commit is contained in:
parent
e132fa976e
commit
32817633c9
6 changed files with 64 additions and 25 deletions
|
@ -61,9 +61,9 @@ var warn = sharedUtil.warn;
|
|||
var FontFaceObject = displayFontLoader.FontFaceObject;
|
||||
var FontLoader = displayFontLoader.FontLoader;
|
||||
var CanvasGraphics = displayCanvas.CanvasGraphics;
|
||||
var createScratchCanvas = displayCanvas.createScratchCanvas;
|
||||
var Metadata = displayMetadata.Metadata;
|
||||
var getDefaultSetting = displayDOMUtils.getDefaultSetting;
|
||||
var DOMCanvasFactory = displayDOMUtils.DOMCanvasFactory;
|
||||
|
||||
var DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536
|
||||
|
||||
|
@ -697,6 +697,9 @@ var PDFDocumentProxy = (function PDFDocumentProxyClosure() {
|
|||
* called each time the rendering is paused. To continue
|
||||
* rendering call the function that is the first argument
|
||||
* to the callback.
|
||||
* @property {Object} canvasFactory - (optional) The factory that will be used
|
||||
* when creating canvases. The default value is
|
||||
* {DOMCanvasFactory}.
|
||||
*/
|
||||
|
||||
/**
|
||||
|
@ -805,6 +808,7 @@ var PDFPageProxy = (function PDFPageProxyClosure() {
|
|||
var renderingIntent = (params.intent === 'print' ? 'print' : 'display');
|
||||
var renderInteractiveForms = (params.renderInteractiveForms === true ?
|
||||
true : /* Default */ false);
|
||||
var canvasFactory = params.canvasFactory || new DOMCanvasFactory();
|
||||
|
||||
if (!this.intentStates[renderingIntent]) {
|
||||
this.intentStates[renderingIntent] = Object.create(null);
|
||||
|
@ -834,7 +838,8 @@ var PDFPageProxy = (function PDFPageProxyClosure() {
|
|||
this.objs,
|
||||
this.commonObjs,
|
||||
intentState.operatorList,
|
||||
this.pageNumber);
|
||||
this.pageNumber,
|
||||
canvasFactory);
|
||||
internalRenderTask.useRequestAnimationFrame = renderingIntent !== 'print';
|
||||
if (!intentState.renderTasks) {
|
||||
intentState.renderTasks = [];
|
||||
|
@ -1727,6 +1732,12 @@ var WorkerTransport = (function WorkerTransportClosure() {
|
|||
return Promise.reject(new Error('Worker was destroyed'));
|
||||
}
|
||||
|
||||
if (typeof document === 'undefined') {
|
||||
// Make sure that this code is not executing in node.js, as
|
||||
// it's using DOM image, and there is no library to support that.
|
||||
return Promise.reject(new Error('"document" is not defined.'));
|
||||
}
|
||||
|
||||
var imageUrl = data[0];
|
||||
var components = data[1];
|
||||
if (components !== 3 && components !== 1) {
|
||||
|
@ -1742,7 +1753,9 @@ var WorkerTransport = (function WorkerTransportClosure() {
|
|||
var size = width * height;
|
||||
var rgbaLength = size * 4;
|
||||
var buf = new Uint8Array(size * components);
|
||||
var tmpCanvas = createScratchCanvas(width, height);
|
||||
var tmpCanvas = document.createElement('canvas');
|
||||
tmpCanvas.width = width;
|
||||
tmpCanvas.height = height;
|
||||
var tmpCtx = tmpCanvas.getContext('2d');
|
||||
tmpCtx.drawImage(img, 0, 0);
|
||||
var data = tmpCtx.getImageData(0, 0, width, height).data;
|
||||
|
@ -2030,7 +2043,7 @@ var RenderTask = (function RenderTaskClosure() {
|
|||
var InternalRenderTask = (function InternalRenderTaskClosure() {
|
||||
|
||||
function InternalRenderTask(callback, params, objs, commonObjs, operatorList,
|
||||
pageNumber) {
|
||||
pageNumber, canvasFactory) {
|
||||
this.callback = callback;
|
||||
this.params = params;
|
||||
this.objs = objs;
|
||||
|
@ -2038,6 +2051,7 @@ var InternalRenderTask = (function InternalRenderTaskClosure() {
|
|||
this.operatorListIdx = null;
|
||||
this.operatorList = operatorList;
|
||||
this.pageNumber = pageNumber;
|
||||
this.canvasFactory = canvasFactory;
|
||||
this.running = false;
|
||||
this.graphicsReadyCallback = null;
|
||||
this.graphicsReady = false;
|
||||
|
@ -2068,7 +2082,8 @@ var InternalRenderTask = (function InternalRenderTaskClosure() {
|
|||
|
||||
var params = this.params;
|
||||
this.gfx = new CanvasGraphics(params.canvasContext, this.commonObjs,
|
||||
this.objs, params.imageLayer);
|
||||
this.objs, this.canvasFactory,
|
||||
params.imageLayer);
|
||||
|
||||
this.gfx.beginDrawing(params.transform, params.viewport, transparency);
|
||||
this.operatorListIdx = 0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue