Refactor pageNumber/pageIndex concept
This commit is contained in:
parent
b312719d7e
commit
f0687c4d50
54
src/api.js
54
src/api.js
@ -68,8 +68,8 @@
|
|||||||
if (this.worker)
|
if (this.worker)
|
||||||
this.worker.terminate();
|
this.worker.terminate();
|
||||||
|
|
||||||
for (var n in this.pageCache)
|
this.pageCache = [];
|
||||||
delete this.pageCache[n];
|
this.pagePromises = [];
|
||||||
},
|
},
|
||||||
setupFakeWorker: function WorkerTransport_setupFakeWorker() {
|
setupFakeWorker: function WorkerTransport_setupFakeWorker() {
|
||||||
// If we don't use a worker, just post/sendMessage to the main thread.
|
// If we don't use a worker, just post/sendMessage to the main thread.
|
||||||
@ -92,7 +92,7 @@
|
|||||||
function WorkerTransport_setupMessageHandler(messageHandler) {
|
function WorkerTransport_setupMessageHandler(messageHandler) {
|
||||||
this.messageHandler = messageHandler;
|
this.messageHandler = messageHandler;
|
||||||
|
|
||||||
messageHandler.on('doc', function transportPage(data) {
|
messageHandler.on('getdoc', function transportDoc(data) {
|
||||||
var pdfInfo = data.pdfInfo;
|
var pdfInfo = data.pdfInfo;
|
||||||
var pdfDocument = new PdfDocumentWrapper(pdfInfo, this);
|
var pdfDocument = new PdfDocumentWrapper(pdfInfo, this);
|
||||||
this.pdfDocument = pdfDocument;
|
this.pdfDocument = pdfDocument;
|
||||||
@ -102,19 +102,16 @@
|
|||||||
messageHandler.on('getpage', function transportPage(data) {
|
messageHandler.on('getpage', function transportPage(data) {
|
||||||
var pageInfo = data.pageInfo;
|
var pageInfo = data.pageInfo;
|
||||||
var page = new PdfPageWrapper(pageInfo, this);
|
var page = new PdfPageWrapper(pageInfo, this);
|
||||||
this.pageCache[pageInfo.pageNumber] = page;
|
this.pageCache[pageInfo.pageIndex] = page;
|
||||||
var promises = this.pagePromises[pageInfo.pageNumber];
|
var promise = this.pagePromises[pageInfo.pageIndex];
|
||||||
delete this.pagePromises[pageInfo.pageNumber];
|
promise.resolve(page);
|
||||||
for (var i = 0, ii = promises.length; i < ii; ++i)
|
|
||||||
promises[i].resolve(page);
|
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
messageHandler.on('page', function transportPage(data) {
|
messageHandler.on('renderpage', function transportRender(data) {
|
||||||
var pageNum = data.pageNum;
|
var page = this.pageCache[data.pageIndex];
|
||||||
var page = this.pageCache[pageNum - 1];
|
|
||||||
var depFonts = data.depFonts;
|
var depFonts = data.depFonts;
|
||||||
|
|
||||||
//page.stats.timeEnd('Page Request');
|
page.stats.timeEnd('Page Request');
|
||||||
page.startRenderingFromOperatorList(data.operatorList, depFonts);
|
page.startRenderingFromOperatorList(data.operatorList, depFonts);
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
@ -197,20 +194,17 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
sendData: function WorkerTransport_sendData(data) {
|
sendData: function WorkerTransport_sendData(data) {
|
||||||
this.messageHandler.send('doc_request', data);
|
this.messageHandler.send('getdoc_request', data);
|
||||||
},
|
},
|
||||||
|
|
||||||
getPage: function WorkerTransport_getPage(n, promise) {
|
getPage: function WorkerTransport_getPage(pageNumber, promise) {
|
||||||
if (this.pageCache[n - 1]) {
|
var pageIndex = pageNumber - 1;
|
||||||
promise.resolve(this.pageCache[n - 1]);
|
if (pageIndex in this.pagePromises)
|
||||||
return;
|
return this.pagePromises[pageIndex];
|
||||||
}
|
var promise = new PDFJS.Promise('Page ' + pageNumber);
|
||||||
if ((n - 1) in this.pagePromises) {
|
this.pagePromises[pageIndex] = promise;
|
||||||
this.pagePromises[n - 1].push(promise);
|
this.messageHandler.send('getpage_request', { pageIndex: pageIndex });
|
||||||
return;
|
return promise;
|
||||||
}
|
|
||||||
this.pagePromises[n - 1] = [promise];
|
|
||||||
this.messageHandler.send('getpage_request', {pageNumber: n - 1});
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
function PdfPageWrapper(pageInfo, transport) {
|
function PdfPageWrapper(pageInfo, transport) {
|
||||||
@ -221,7 +215,7 @@
|
|||||||
}
|
}
|
||||||
PdfPageWrapper.prototype = {
|
PdfPageWrapper.prototype = {
|
||||||
get pageNumber() {
|
get pageNumber() {
|
||||||
return this.pageInfo.pageNumber;
|
return this.pageInfo.pageIndex + 1;
|
||||||
},
|
},
|
||||||
get rotate() {
|
get rotate() {
|
||||||
return this.pageInfo.rotate;
|
return this.pageInfo.rotate;
|
||||||
@ -255,8 +249,10 @@
|
|||||||
if (!this.displayReadyPromise) {
|
if (!this.displayReadyPromise) {
|
||||||
this.displayReadyPromise = new Promise();
|
this.displayReadyPromise = new Promise();
|
||||||
|
|
||||||
//this.stats.time('Page Request');
|
this.stats.time('Page Request');
|
||||||
this.transport.messageHandler.send('page_request', this.pageNumber + 1);
|
this.transport.messageHandler.send('renderpage_request', {
|
||||||
|
pageIndex: this.pageNumber - 1
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
var callback = (function complete(error) {
|
var callback = (function complete(error) {
|
||||||
@ -389,9 +385,7 @@
|
|||||||
return this.pdfInfo.fingerprint;
|
return this.pdfInfo.fingerprint;
|
||||||
},
|
},
|
||||||
getPage: function(number) {
|
getPage: function(number) {
|
||||||
var promise = new PDFJS.Promise();
|
return this.transport.getPage(number);
|
||||||
this.transport.getPage(number, promise);
|
|
||||||
return promise;
|
|
||||||
},
|
},
|
||||||
getDestinations: function() {
|
getDestinations: function() {
|
||||||
var promise = new PDFJS.Promise();
|
var promise = new PDFJS.Promise();
|
||||||
|
@ -85,7 +85,7 @@ var WorkerMessageHandler = {
|
|||||||
handler.send('test', data instanceof Uint8Array);
|
handler.send('test', data instanceof Uint8Array);
|
||||||
});
|
});
|
||||||
|
|
||||||
handler.on('doc_request', function wphSetupDoc(data) {
|
handler.on('getdoc_request', function wphSetupDoc(data) {
|
||||||
// Create only the model of the PDFDoc, which is enough for
|
// Create only the model of the PDFDoc, which is enough for
|
||||||
// processing the content of the pdf.
|
// processing the content of the pdf.
|
||||||
pdfModel = new PDFDocModel(new Stream(data));
|
pdfModel = new PDFDocModel(new Stream(data));
|
||||||
@ -97,13 +97,14 @@ var WorkerMessageHandler = {
|
|||||||
info: pdfModel.info,
|
info: pdfModel.info,
|
||||||
metadata: pdfModel.catalog.metadata
|
metadata: pdfModel.catalog.metadata
|
||||||
};
|
};
|
||||||
handler.send('doc', {pdfInfo: doc});
|
handler.send('getdoc', {pdfInfo: doc});
|
||||||
});
|
});
|
||||||
|
|
||||||
handler.on('getpage_request', function wphSetupTest(data) {
|
handler.on('getpage_request', function wphSetupTest(data) {
|
||||||
var pdfPage = pdfModel.getPage(data.pageNumber + 1);
|
var pageNumber = data.pageIndex + 1;
|
||||||
|
var pdfPage = pdfModel.getPage(pageNumber);
|
||||||
var page = {
|
var page = {
|
||||||
pageNumber: data.pageNumber,
|
pageIndex: data.pageIndex,
|
||||||
rotate: pdfPage.rotate,
|
rotate: pdfPage.rotate,
|
||||||
ref: pdfPage.ref,
|
ref: pdfPage.ref,
|
||||||
view: pdfPage.view,
|
view: pdfPage.view,
|
||||||
@ -112,8 +113,8 @@ var WorkerMessageHandler = {
|
|||||||
handler.send('getpage', {pageInfo: page});
|
handler.send('getpage', {pageInfo: page});
|
||||||
});
|
});
|
||||||
|
|
||||||
handler.on('page_request', function wphSetupPageRequest(pageNum) {
|
handler.on('renderpage_request', function wphSetupPageRequest(data) {
|
||||||
pageNum = parseInt(pageNum);
|
var pageNum = data.pageIndex + 1;
|
||||||
|
|
||||||
|
|
||||||
// The following code does quite the same as
|
// The following code does quite the same as
|
||||||
@ -170,8 +171,8 @@ var WorkerMessageHandler = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
handler.send('page', {
|
handler.send('renderpage', {
|
||||||
pageNum: pageNum,
|
pageIndex: data.pageIndex,
|
||||||
operatorList: operatorList,
|
operatorList: operatorList,
|
||||||
depFonts: Object.keys(fonts)
|
depFonts: Object.keys(fonts)
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user