Refactors GetAnnotationsRequest and GetPageRequest
This commit is contained in:
parent
2008f74185
commit
cc9643cf32
@ -258,23 +258,19 @@ var WorkerMessageHandler = PDFJS.WorkerMessageHandler = {
|
|||||||
}, onFailure);
|
}, onFailure);
|
||||||
});
|
});
|
||||||
|
|
||||||
handler.on('GetPageRequest', function wphSetupGetPage(data) {
|
handler.on('GetPage', function wphSetupGetPage(data) {
|
||||||
var pageIndex = data.pageIndex;
|
return pdfManager.getPage(data.pageIndex).then(function(page) {
|
||||||
pdfManager.getPage(pageIndex).then(function(page) {
|
|
||||||
var rotatePromise = pdfManager.ensure(page, 'rotate');
|
var rotatePromise = pdfManager.ensure(page, 'rotate');
|
||||||
var refPromise = pdfManager.ensure(page, 'ref');
|
var refPromise = pdfManager.ensure(page, 'ref');
|
||||||
var viewPromise = pdfManager.ensure(page, 'view');
|
var viewPromise = pdfManager.ensure(page, 'view');
|
||||||
|
|
||||||
Promise.all([rotatePromise, refPromise, viewPromise]).then(
|
return Promise.all([rotatePromise, refPromise, viewPromise]).then(
|
||||||
function(results) {
|
function(results) {
|
||||||
var page = {
|
return {
|
||||||
pageIndex: data.pageIndex,
|
|
||||||
rotate: results[0],
|
rotate: results[0],
|
||||||
ref: results[1],
|
ref: results[1],
|
||||||
view: results[2]
|
view: results[2]
|
||||||
};
|
};
|
||||||
|
|
||||||
handler.send('GetPage', { pageInfo: page });
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -327,16 +323,9 @@ var WorkerMessageHandler = PDFJS.WorkerMessageHandler = {
|
|||||||
pdfManager.updatePassword(data);
|
pdfManager.updatePassword(data);
|
||||||
});
|
});
|
||||||
|
|
||||||
handler.on('GetAnnotationsRequest', function wphSetupGetAnnotations(data) {
|
handler.on('GetAnnotations', function wphSetupGetAnnotations(data) {
|
||||||
pdfManager.getPage(data.pageIndex).then(function(page) {
|
return pdfManager.getPage(data.pageIndex).then(function(page) {
|
||||||
pdfManager.ensure(page, 'getAnnotationsData', []).then(
|
return pdfManager.ensure(page, 'getAnnotationsData', []);
|
||||||
function(annotationsData) {
|
|
||||||
handler.send('GetAnnotations', {
|
|
||||||
pageIndex: data.pageIndex,
|
|
||||||
annotations: annotationsData
|
|
||||||
});
|
|
||||||
}
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -387,7 +387,8 @@ var PDFDocumentProxy = (function PDFDocumentProxyClosure() {
|
|||||||
* @class
|
* @class
|
||||||
*/
|
*/
|
||||||
var PDFPageProxy = (function PDFPageProxyClosure() {
|
var PDFPageProxy = (function PDFPageProxyClosure() {
|
||||||
function PDFPageProxy(pageInfo, transport) {
|
function PDFPageProxy(pageIndex, pageInfo, transport) {
|
||||||
|
this.pageIndex = pageIndex;
|
||||||
this.pageInfo = pageInfo;
|
this.pageInfo = pageInfo;
|
||||||
this.transport = transport;
|
this.transport = transport;
|
||||||
this.stats = new StatTimer();
|
this.stats = new StatTimer();
|
||||||
@ -403,7 +404,7 @@ var PDFPageProxy = (function PDFPageProxyClosure() {
|
|||||||
* @return {number} Page number of the page. First page is 1.
|
* @return {number} Page number of the page. First page is 1.
|
||||||
*/
|
*/
|
||||||
get pageNumber() {
|
get pageNumber() {
|
||||||
return this.pageInfo.pageIndex + 1;
|
return this.pageIndex + 1;
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* @return {number} The number of degrees the page is rotated clockwise.
|
* @return {number} The number of degrees the page is rotated clockwise.
|
||||||
@ -443,14 +444,13 @@ var PDFPageProxy = (function PDFPageProxyClosure() {
|
|||||||
* annotation objects.
|
* annotation objects.
|
||||||
*/
|
*/
|
||||||
getAnnotations: function PDFPageProxy_getAnnotations() {
|
getAnnotations: function PDFPageProxy_getAnnotations() {
|
||||||
if (this.annotationsCapability) {
|
if (this.annotationsPromise) {
|
||||||
return this.annotationsCapability.promise;
|
return this.annotationsPromise;
|
||||||
}
|
}
|
||||||
|
|
||||||
var capability = createPromiseCapability();
|
var promise = this.transport.getAnnotations(this.pageIndex);
|
||||||
this.annotationsCapability = capability;
|
this.annotationsPromise = promise;
|
||||||
this.transport.getAnnotations(this.pageInfo.pageIndex);
|
return promise;
|
||||||
return capability.promise;
|
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* Begins the process of rendering a page to the desired context.
|
* Begins the process of rendering a page to the desired context.
|
||||||
@ -576,6 +576,7 @@ var PDFPageProxy = (function PDFPageProxyClosure() {
|
|||||||
delete this.intentStates[intent];
|
delete this.intentStates[intent];
|
||||||
}, this);
|
}, this);
|
||||||
this.objs.clear();
|
this.objs.clear();
|
||||||
|
this.annotationsPromise = null;
|
||||||
this.pendingDestroy = false;
|
this.pendingDestroy = false;
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
@ -631,7 +632,7 @@ var WorkerTransport = (function WorkerTransportClosure() {
|
|||||||
this.commonObjs = new PDFObjects();
|
this.commonObjs = new PDFObjects();
|
||||||
|
|
||||||
this.pageCache = [];
|
this.pageCache = [];
|
||||||
this.pageCapabilities = [];
|
this.pagePromises = [];
|
||||||
this.downloadInfoCapability = createPromiseCapability();
|
this.downloadInfoCapability = createPromiseCapability();
|
||||||
this.passwordCallback = null;
|
this.passwordCallback = null;
|
||||||
|
|
||||||
@ -699,7 +700,7 @@ var WorkerTransport = (function WorkerTransportClosure() {
|
|||||||
WorkerTransport.prototype = {
|
WorkerTransport.prototype = {
|
||||||
destroy: function WorkerTransport_destroy() {
|
destroy: function WorkerTransport_destroy() {
|
||||||
this.pageCache = [];
|
this.pageCache = [];
|
||||||
this.pageCapabilities = [];
|
this.pagePromises = [];
|
||||||
var self = this;
|
var self = this;
|
||||||
this.messageHandler.sendWithPromise('Terminate', null).then(function () {
|
this.messageHandler.sendWithPromise('Terminate', null).then(function () {
|
||||||
FontLoader.clear();
|
FontLoader.clear();
|
||||||
@ -821,20 +822,6 @@ var WorkerTransport = (function WorkerTransportClosure() {
|
|||||||
this.downloadInfoCapability.resolve(data);
|
this.downloadInfoCapability.resolve(data);
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
messageHandler.on('GetPage', function transportPage(data) {
|
|
||||||
var pageInfo = data.pageInfo;
|
|
||||||
var page = new PDFPageProxy(pageInfo, this);
|
|
||||||
this.pageCache[pageInfo.pageIndex] = page;
|
|
||||||
var promise = this.pageCapabilities[pageInfo.pageIndex];
|
|
||||||
promise.resolve(page);
|
|
||||||
}, this);
|
|
||||||
|
|
||||||
messageHandler.on('GetAnnotations', function transportAnnotations(data) {
|
|
||||||
var annotations = data.annotations;
|
|
||||||
var promise = this.pageCache[data.pageIndex].annotationsCapability;
|
|
||||||
promise.resolve(annotations);
|
|
||||||
}, this);
|
|
||||||
|
|
||||||
messageHandler.on('StartRenderPage', function transportRender(data) {
|
messageHandler.on('StartRenderPage', function transportRender(data) {
|
||||||
var page = this.pageCache[data.pageIndex];
|
var page = this.pageCache[data.pageIndex];
|
||||||
|
|
||||||
@ -943,7 +930,7 @@ var WorkerTransport = (function WorkerTransportClosure() {
|
|||||||
var components = data[1];
|
var components = data[1];
|
||||||
if (components != 3 && components != 1) {
|
if (components != 3 && components != 1) {
|
||||||
return Promise.reject(
|
return Promise.reject(
|
||||||
new Error('Only 3 component or 1 component can be returned'));
|
new Error('Only 3 components or 1 component can be returned'));
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Promise(function (resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
@ -978,7 +965,6 @@ var WorkerTransport = (function WorkerTransportClosure() {
|
|||||||
};
|
};
|
||||||
img.src = imageUrl;
|
img.src = imageUrl;
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -1010,13 +996,18 @@ var WorkerTransport = (function WorkerTransportClosure() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var pageIndex = pageNumber - 1;
|
var pageIndex = pageNumber - 1;
|
||||||
if (pageIndex in this.pageCapabilities) {
|
if (pageIndex in this.pagePromises) {
|
||||||
return this.pageCapabilities[pageIndex].promise;
|
return this.pagePromises[pageIndex];
|
||||||
}
|
}
|
||||||
capability = createPromiseCapability();
|
var promise = this.messageHandler.sendWithPromise('GetPage', {
|
||||||
this.pageCapabilities[pageIndex] = capability;
|
pageIndex: pageIndex
|
||||||
this.messageHandler.send('GetPageRequest', { pageIndex: pageIndex });
|
}).then(function (pageInfo) {
|
||||||
return capability.promise;
|
var page = new PDFPageProxy(pageIndex, pageInfo, this);
|
||||||
|
this.pageCache[pageIndex] = page;
|
||||||
|
return page;
|
||||||
|
}.bind(this));
|
||||||
|
this.pagePromises[pageIndex] = promise;
|
||||||
|
return promise;
|
||||||
},
|
},
|
||||||
|
|
||||||
getPageIndex: function WorkerTransport_getPageIndexByRef(ref) {
|
getPageIndex: function WorkerTransport_getPageIndexByRef(ref) {
|
||||||
@ -1024,7 +1015,7 @@ var WorkerTransport = (function WorkerTransportClosure() {
|
|||||||
},
|
},
|
||||||
|
|
||||||
getAnnotations: function WorkerTransport_getAnnotations(pageIndex) {
|
getAnnotations: function WorkerTransport_getAnnotations(pageIndex) {
|
||||||
this.messageHandler.send('GetAnnotationsRequest',
|
return this.messageHandler.sendWithPromise('GetAnnotations',
|
||||||
{ pageIndex: pageIndex });
|
{ pageIndex: pageIndex });
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -1448,7 +1448,6 @@ MessageHandler.prototype = {
|
|||||||
* @param {String} actionName Action to call.
|
* @param {String} actionName Action to call.
|
||||||
* @param {JSON} data JSON data to send.
|
* @param {JSON} data JSON data to send.
|
||||||
* @param {Array} [transfers] Optional list of transfers/ArrayBuffers.
|
* @param {Array} [transfers] Optional list of transfers/ArrayBuffers.
|
||||||
* @param {boolean} withPromise true if response if expected.
|
|
||||||
* @returns {Promise} Promise to be resolved with response data.
|
* @returns {Promise} Promise to be resolved with response data.
|
||||||
*/
|
*/
|
||||||
sendWithPromise:
|
sendWithPromise:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user