/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
-/*
- PDFDoc.prototype = {
- destroy: function PDFDoc_destroy() {
- if (this.worker)
- this.worker.terminate();
-
- if (this.fontWorker)
- this.fontWorker.terminate();
-
- for (var n in this.pageCache)
- delete this.pageCache[n];
-
- delete this.data;
- delete this.stream;
- delete this.pdf;
- delete this.catalog;
- }
- };
-*/
-
(function pdfApiWrapper() {
function WorkerTransport(promise) {
this.workerReadyPromise = promise;
var messageHandler = new MessageHandler('main', worker);
this.messageHandler = messageHandler;
- messageHandler.on('test', function pdfDocTest(supportTypedArray) {
+ messageHandler.on('test', function transportTest(supportTypedArray) {
if (supportTypedArray) {
this.worker = worker;
this.setupMessageHandler(messageHandler);
this.setupFakeWorker();
}
WorkerTransport.prototype = {
+ destroy: function WorkerTransport_destroy() {
+ if (this.worker)
+ this.worker.terminate();
+
+ for (var n in this.pageCache)
+ delete this.pageCache[n];
+ },
setupFakeWorker: function WorkerTransport_setupFakeWorker() {
// If we don't use a worker, just post/sendMessage to the main thread.
var fakeWorker = {
WorkerMessageHandler.setup(messageHandler);
},
- setupMessageHandler: function WorkerTransport_setupMessageHandler(messageHandler) {
+ setupMessageHandler:
+ function WorkerTransport_setupMessageHandler(messageHandler) {
this.messageHandler = messageHandler;
- messageHandler.on('doc', function pdfDocPage(data) {
+ messageHandler.on('doc', function transportPage(data) {
var pdfInfo = data.pdfInfo;
var pdfDocument = new PdfDocumentWrapper(pdfInfo, this);
this.pdfDocument = pdfDocument;
- this.workerReadyPromise.resolve(pdfDocument)
+ this.workerReadyPromise.resolve(pdfDocument);
}, this);
- messageHandler.on('getpage', function pdfDocPage(data) {
+ messageHandler.on('getpage', function transportPage(data) {
var pageInfo = data.pageInfo;
var page = new PdfPageWrapper(pageInfo, this);
this.pageCache[pageInfo.pageNumber] = page;
promises[i].resolve(page);
}, this);
- messageHandler.on('page', function pdfDocPage(data) {
+ messageHandler.on('page', function transportPage(data) {
var pageNum = data.pageNum;
var page = this.pageCache[pageNum - 1];
var depFonts = data.depFonts;
page.startRenderingFromOperatorList(data.operatorList, depFonts);
}, this);
- messageHandler.on('obj', function pdfDocObj(data) {
+ messageHandler.on('obj', function transportObj(data) {
var id = data[0];
var type = data[1];
}
}, this);
- messageHandler.on('page_error', function pdfDocError(data) {
+ messageHandler.on('page_error', function transportError(data) {
var page = this.pageCache[data.pageNum];
if (page.displayReadyPromise)
page.displayReadyPromise.reject(data.error);
},
startRenderingFromOperatorList:
- function Page_startRenderingFromOperatorList(operatorList, fonts) {
+ function PdfPageWrapper_startRenderingFromOperatorList(operatorList,
+ fonts) {
var self = this;
this.operatorList = operatorList;
);
},
- ensureFonts: function Page_ensureFonts(fonts, callback) {
+ ensureFonts: function PdfPageWrapper_ensureFonts(fonts, callback) {
this.stats.time('Font Loading');
// Convert the font names to the corresponding font obj.
for (var i = 0, ii = fonts.length; i < ii; i++) {
);
},
- display: function Page_display(gfx, viewport, callback) {
+ display: function PdfPageWrapper_display(gfx, viewport, callback) {
var stats = this.stats;
stats.time('Rendering');
-/* REMOVE ???
- var xref = this.xref;
- var resources = this.resources;
- assertWellFormed(isDict(resources), 'invalid page resources');
-
- gfx.xref = xref;
- gfx.res = resources;
- REMOVE END */
-
gfx.beginDrawing(viewport);
var startIdx = 0;
},
getOutline: function() {
var promise = new PDFJS.Promise();
- var outline = this.pdfInfo.documentOutline;
+ var outline = this.pdfInfo.outline;
promise.resolve(outline);
return promise;
},
metadata: metadata ? new PDFJS.Metadata(metadata) : null
});
return promise;
+ },
+ destroy: function() {
+ this.transport.destroy();
}
};