[Pkg-javascript-commits] [pdf.js] 108/207: Added getOperatorList to api.js
David Prévot
taffit at moszumanska.debian.org
Mon Jul 28 15:36:37 UTC 2014
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository pdf.js.
commit 1d00e9d13c5972a2db9275b477df023b96cdbbed
Author: pramodhkp <prmdh1 at gmail.com>
Date: Tue Jun 17 00:05:38 2014 +0530
Added getOperatorList to api.js
---
src/display/api.js | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++-
test/unit/api_spec.js | 10 +++++++++-
2 files changed, 62 insertions(+), 2 deletions(-)
diff --git a/src/display/api.js b/src/display/api.js
index b5e9039..81e6f5d 100644
--- a/src/display/api.js
+++ b/src/display/api.js
@@ -394,6 +394,15 @@ var PDFDocumentProxy = (function PDFDocumentProxyClosure() {
* rendering call the function that is the first argument
* to the callback.
*/
+
+/**
+ * PDF page operator list.
+ *
+ * @typedef {Object} PDFOperatorList
+ * @property {Array} fnArray - Array containing the operator functions.
+ * @property {Array} argsArray - Array containing the arguments of the
+ * functions.
+ */
/**
* Proxy to a PDFPage in the worker thread.
@@ -554,6 +563,45 @@ var PDFPageProxy = (function PDFPageProxyClosure() {
return renderTask;
},
+
+ /**
+ * @return {Promise} A promise resolved with an {@link PDFOperatorList}
+ * object that represents page's operator list.
+ */
+ getOperatorList: function PDFPageProxy_getOperatorList() {
+ function operatorListChanged() {
+ if (intentState.operatorList.lastChunk) {
+ intentState.opListReadCapability.resolve(intentState.operatorList);
+ }
+ }
+
+ var renderingIntent = 'oplist';
+ if (!this.intentStates[renderingIntent]) {
+ this.intentStates[renderingIntent] = {};
+ }
+ var intentState = this.intentStates[renderingIntent];
+
+ if (!intentState.opListReadCapability) {
+ var opListTask = {};
+ opListTask.operatorListChanged = operatorListChanged;
+ intentState.receivingOperatorList = true;
+ intentState.opListReadCapability = createPromiseCapability();
+ intentState.renderTasks = [];
+ intentState.renderTasks.push(opListTask);
+ intentState.operatorList = {
+ fnArray: [],
+ argsArray: [],
+ lastChunk: false
+ };
+
+ this.transport.messageHandler.send('RenderPageRequest', {
+ pageIndex: this.pageIndex,
+ intent: renderingIntent
+ });
+ }
+ return intentState.opListReadCapability.promise;
+ },
+
/**
* @return {Promise} That is resolved a {@link TextContent}
* object that represent the page text content.
@@ -599,7 +647,11 @@ var PDFPageProxy = (function PDFPageProxyClosure() {
_startRenderPage: function PDFPageProxy_startRenderPage(transparency,
intent) {
var intentState = this.intentStates[intent];
- intentState.displayReadyCapability.resolve(transparency);
+ // TODO Refactor RenderPageRequest to separate rendering
+ // and operator list logic
+ if (intentState.displayReadyCapability) {
+ intentState.displayReadyCapability.resolve(transparency);
+ }
},
/**
* For internal use only.
diff --git a/test/unit/api_spec.js b/test/unit/api_spec.js
index dfdb010..8908e6b 100644
--- a/test/unit/api_spec.js
+++ b/test/unit/api_spec.js
@@ -130,10 +130,18 @@ describe('api', function() {
it('gets ref', function() {
expect(page.ref).toEqual({num: 15, gen: 0});
});
+
+ it('gets operator list', function() {
+ var promise = page.getOperatorList();
+ waitsForPromise(promise, function (oplist) {
+ expect(!!oplist.fnArray).toEqual(true);
+ expect(!!oplist.argsArray).toEqual(true);
+ expect(oplist.lastChunk).toEqual(true);
+ });
+ });
// TODO rotate
// TODO viewport
// TODO annotaions
// TOOD text content
- // TODO operation list
});
});
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/pdf.js.git
More information about the Pkg-javascript-commits
mailing list