Skip to content

Commit

Permalink
[api-minor] Refactor/simplify the PDFObject class
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
Snuffleupagus committed Nov 7, 2018
1 parent 9b4afa5 commit 5e4912c
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 23 deletions.
2 changes: 1 addition & 1 deletion src/display/annotation_layer.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down
39 changes: 18 additions & 21 deletions src/display/api.js
Original file line number Diff line number Diff line change
Expand Up @@ -1885,7 +1885,7 @@ class WorkerTransport {
}

const [id, type, exportedData] = data;
if (this.commonObjs.hasData(id)) {
if (this.commonObjs.has(id)) {
return;
}

Expand Down Expand Up @@ -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;
}

Expand Down Expand Up @@ -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() {
Expand Down
2 changes: 1 addition & 1 deletion src/display/canvas.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down

0 comments on commit 5e4912c

Please sign in to comment.