From 60da2d882bf432f474b033ccd489cd647fe125d2 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Wed, 7 Nov 2018 14:36:29 +0100 Subject: [PATCH] [api-minor] Refactor/simplify the `PDFObject` class First of all, note how there's currently *two* methods for checking if a certain object exists, which seems completely unwarranted. Furthermore, the rarely used `getData` method was removed and its only callsite changed to use a combination of `PDFObjects.{has, get}` instead. Finally, the methods were rearranged slightly, to bring the most important ones (for an API user) to the top of the class. --- src/display/annotation_layer.js | 5 +++-- src/display/api.js | 29 +++++++---------------------- src/display/canvas.js | 2 +- 3 files changed, 11 insertions(+), 25 deletions(-) diff --git a/src/display/annotation_layer.js b/src/display/annotation_layer.js index 27113f818..5b66faba9 100644 --- a/src/display/annotation_layer.js +++ b/src/display/annotation_layer.js @@ -447,8 +447,9 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement { element.style.display = 'table-cell'; let font = null; - if (this.data.fontRefName) { - font = this.page.commonObjs.getData(this.data.fontRefName); + if (this.data.fontRefName && + this.page.commonObjs.has(this.data.fontRefName)) { + font = this.page.commonObjs.get(this.data.fontRefName); } this._setTextStyle(element, font); } diff --git a/src/display/api.js b/src/display/api.js index 784fc30ff..a3ff31530 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -1885,7 +1885,7 @@ class WorkerTransport { } const [id, type, exportedData] = data; - if (this.commonObjs.hasData(id)) { + if (this.commonObjs.has(id)) { return; } @@ -1937,7 +1937,7 @@ class WorkerTransport { const [id, pageIndex, type, imageData] = data; const pageProxy = this.pageCache[pageIndex]; - if (pageProxy.objs.hasData(id)) { + if (pageProxy.objs.has(id)) { return; } @@ -2256,6 +2256,11 @@ class PDFObjects { return obj.data; } + has(objId) { + const obj = this._objs[objId]; + return (obj ? obj.resolved : false); + } + /** * Resolves the object `objId` with optional `data`. */ @@ -2267,26 +2272,6 @@ class PDFObjects { obj.capability.resolve(data); } - isResolved(objId) { - const obj = this._objs[objId]; - return (obj ? obj.resolved : false); - } - - hasData(objId) { - return this.isResolved(objId); - } - - /** - * Returns the data of `objId` if the object exists, null otherwise. - */ - getData(objId) { - const obj = this._objs[objId]; - if (!obj || !obj.resolved) { - return null; - } - return obj.data; - } - clear() { this._objs = Object.create(null); } diff --git a/src/display/canvas.js b/src/display/canvas.js index 2ea4ec31a..af39bf763 100644 --- a/src/display/canvas.js +++ b/src/display/canvas.js @@ -810,7 +810,7 @@ var CanvasGraphics = (function CanvasGraphicsClosure() { // If the promise isn't resolved yet, add the continueCallback // to the promise and bail out. - if (!objsPool.isResolved(depObjId)) { + if (!objsPool.has(depObjId)) { objsPool.get(depObjId, continueCallback); return i; }