[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