From 5e4912c836e084ce5d13882a0d35036e3af9f804 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 (only one callsite) was renamed/rewritten to simply extend the `get` method instead. Also, there will now be a warning printed if it's used before the data is ready, which may be useful for debugging purposes. 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 | 2 +- src/display/api.js | 39 +++++++++++++++------------------ src/display/canvas.js | 2 +- 3 files changed, 20 insertions(+), 23 deletions(-) diff --git a/src/display/annotation_layer.js b/src/display/annotation_layer.js index 27113f8182777a..0b47488b6cb985 100644 --- a/src/display/annotation_layer.js +++ b/src/display/annotation_layer.js @@ -448,7 +448,7 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement { let font = null; if (this.data.fontRefName) { - font = this.page.commonObjs.getData(this.data.fontRefName); + font = this.page.commonObjs.getSafely(this.data.fontRefName); } this._setTextStyle(element, font); } diff --git a/src/display/api.js b/src/display/api.js index 56553bc21d77d2..29e49c7077be2c 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; } @@ -2257,34 +2257,31 @@ class PDFObjects { } /** - * Resolves the object `objId` with optional `data`. + * Returns the data of `objId` if the object exists, null otherwise. */ - resolve(objId, data) { - const obj = this._ensureObj(objId); - - obj.resolved = true; - obj.data = data; - obj.capability.resolve(data); + getSafely(objId) { + try { + return this.get(objId); + } catch (ex) { + warn(`PDFObjects.getSafely: "${ex && ex.message}".`); + } + return null; } - isResolved(objId) { + has(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. + * Resolves the object `objId` with optional `data`. */ - getData(objId) { - const obj = this._objs[objId]; - if (!obj || !obj.resolved) { - return null; - } - return obj.data; + resolve(objId, data) { + const obj = this._ensureObj(objId); + + obj.resolved = true; + obj.data = data; + obj.capability.resolve(data); } clear() { diff --git a/src/display/canvas.js b/src/display/canvas.js index 2ea4ec31a2c2cc..af39bf7636bda9 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; }