Convert PDFObjects
, in src/display/api.js
, to an ES6 class
Also changes all occurrences of `var` to `const`, and marks internal properties/methods as "private".
This commit is contained in:
parent
3e342554d1
commit
d32321d84f
@ -2205,108 +2205,92 @@ class WorkerTransport {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A PDF document and page is built of many objects. E.g. there are objects
|
* A PDF document and page is built of many objects. E.g. there are objects for
|
||||||
* for fonts, images, rendering code and such. These objects might get processed
|
* fonts, images, rendering code, etc. These objects may get processed inside of
|
||||||
* inside of a worker. The `PDFObjects` implements some basic functions to
|
* a worker. This class implements some basic methods to manage these objects.
|
||||||
* manage these objects.
|
|
||||||
* @ignore
|
* @ignore
|
||||||
*/
|
*/
|
||||||
var PDFObjects = (function PDFObjectsClosure() {
|
class PDFObjects {
|
||||||
function PDFObjects() {
|
constructor() {
|
||||||
this.objs = Object.create(null);
|
this._objs = Object.create(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
PDFObjects.prototype = {
|
/**
|
||||||
/**
|
* Ensures there is an object defined for `objId`.
|
||||||
* Internal function.
|
* @private
|
||||||
* Ensures there is an object defined for `objId`.
|
*/
|
||||||
*/
|
_ensureObj(objId) {
|
||||||
ensureObj: function PDFObjects_ensureObj(objId) {
|
if (this._objs[objId]) {
|
||||||
if (this.objs[objId]) {
|
return this._objs[objId];
|
||||||
return this.objs[objId];
|
}
|
||||||
}
|
return this._objs[objId] = {
|
||||||
|
capability: createPromiseCapability(),
|
||||||
|
data: null,
|
||||||
|
resolved: false,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
var obj = {
|
/**
|
||||||
capability: createPromiseCapability(),
|
* If called *without* callback, this returns the data of `objId` but the
|
||||||
data: null,
|
* object needs to be resolved. If it isn't, this method throws.
|
||||||
resolved: false,
|
*
|
||||||
};
|
* If called *with* a callback, the callback is called with the data of the
|
||||||
this.objs[objId] = obj;
|
* object once the object is resolved. That means, if you call this method
|
||||||
|
* and the object is already resolved, the callback gets called right away.
|
||||||
|
*/
|
||||||
|
get(objId, callback = null) {
|
||||||
|
// If there is a callback, then the get can be async and the object is
|
||||||
|
// not required to be resolved right now.
|
||||||
|
if (callback) {
|
||||||
|
this._ensureObj(objId).capability.promise.then(callback);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
// If there isn't a callback, the user expects to get the resolved data
|
||||||
|
// directly.
|
||||||
|
const obj = this._objs[objId];
|
||||||
|
// If there isn't an object yet or the object isn't resolved, then the
|
||||||
|
// data isn't ready yet!
|
||||||
|
if (!obj || !obj.resolved) {
|
||||||
|
throw new Error(`Requesting object that isn't resolved yet ${objId}.`);
|
||||||
|
}
|
||||||
|
return obj.data;
|
||||||
|
}
|
||||||
|
|
||||||
return obj;
|
/**
|
||||||
},
|
* Resolves the object `objId` with optional `data`.
|
||||||
|
*/
|
||||||
|
resolve(objId, data) {
|
||||||
|
const obj = this._ensureObj(objId);
|
||||||
|
|
||||||
/**
|
obj.resolved = true;
|
||||||
* If called *without* callback, this returns the data of `objId` but the
|
obj.data = data;
|
||||||
* object needs to be resolved. If it isn't, this function throws.
|
obj.capability.resolve(data);
|
||||||
*
|
}
|
||||||
* If called *with* a callback, the callback is called with the data of the
|
|
||||||
* object once the object is resolved. That means, if you call this
|
|
||||||
* function and the object is already resolved, the callback gets called
|
|
||||||
* right away.
|
|
||||||
*/
|
|
||||||
get: function PDFObjects_get(objId, callback) {
|
|
||||||
// If there is a callback, then the get can be async and the object is
|
|
||||||
// not required to be resolved right now
|
|
||||||
if (callback) {
|
|
||||||
this.ensureObj(objId).capability.promise.then(callback);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If there isn't a callback, the user expects to get the resolved data
|
isResolved(objId) {
|
||||||
// directly.
|
const obj = this._objs[objId];
|
||||||
var obj = this.objs[objId];
|
return (obj ? obj.resolved : false);
|
||||||
|
}
|
||||||
|
|
||||||
// If there isn't an object yet or the object isn't resolved, then the
|
hasData(objId) {
|
||||||
// data isn't ready yet!
|
return this.isResolved(objId);
|
||||||
if (!obj || !obj.resolved) {
|
}
|
||||||
throw new Error(`Requesting object that isn't resolved yet ${objId}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
return obj.data;
|
/**
|
||||||
},
|
* 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() {
|
||||||
* Resolves the object `objId` with optional `data`.
|
this._objs = Object.create(null);
|
||||||
*/
|
}
|
||||||
resolve: function PDFObjects_resolve(objId, data) {
|
}
|
||||||
var obj = this.ensureObj(objId);
|
|
||||||
|
|
||||||
obj.resolved = true;
|
|
||||||
obj.data = data;
|
|
||||||
obj.capability.resolve(data);
|
|
||||||
},
|
|
||||||
|
|
||||||
isResolved: function PDFObjects_isResolved(objId) {
|
|
||||||
var objs = this.objs;
|
|
||||||
|
|
||||||
if (!objs[objId]) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return objs[objId].resolved;
|
|
||||||
},
|
|
||||||
|
|
||||||
hasData: function PDFObjects_hasData(objId) {
|
|
||||||
return this.isResolved(objId);
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the data of `objId` if object exists, null otherwise.
|
|
||||||
*/
|
|
||||||
getData: function PDFObjects_getData(objId) {
|
|
||||||
var objs = this.objs;
|
|
||||||
if (!objs[objId] || !objs[objId].resolved) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return objs[objId].data;
|
|
||||||
},
|
|
||||||
|
|
||||||
clear: function PDFObjects_clear() {
|
|
||||||
this.objs = Object.create(null);
|
|
||||||
},
|
|
||||||
};
|
|
||||||
return PDFObjects;
|
|
||||||
})();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allows controlling of the rendering tasks.
|
* Allows controlling of the rendering tasks.
|
||||||
|
Loading…
Reference in New Issue
Block a user