]> git.parisson.com Git - pdf.js.git/commitdiff
Merge upstream.
authorBrendan Dahl <brendan.dahl@gmail.com>
Mon, 12 Dec 2011 05:13:53 +0000 (21:13 -0800)
committerBrendan Dahl <brendan.dahl@gmail.com>
Mon, 12 Dec 2011 05:13:53 +0000 (21:13 -0800)
1  2 
src/canvas.js
src/core.js
src/evaluator.js
src/image.js
src/util.js
src/worker.js

diff --cc src/canvas.js
Simple merge
diff --cc src/core.js
index cbe4d0fa5ebc7bd57c6c50d8a052651b9fbdf71a,9f3e6b837e29ae8daacbcd376a153554807eb5e5..fd3dec0596530849cac29a8821bb3515368633f6
@@@ -5,8 -5,10 +5,10 @@@
  
  var globalScope = (typeof window === 'undefined') ? this : window;
  
+ var isWorker = (typeof window == 'undefined');
  var ERRORS = 0, WARNINGS = 1, TODOS = 5;
 -var verbosity = WARNINGS;
 +var verbosity = TODOS;
  
  // The global PDFJS object exposes the API
  // In production, it will be declared outside a global wrapper
Simple merge
diff --cc src/image.js
index ac00a1cb4ea1986e67351284a5664490c526a4d5,15c31b034c848fd062f51402f11b104814a30133..030c209526a093488e684cbbf80fb4d8db609be4
@@@ -3,30 -3,9 +3,30 @@@
  
  'use strict';
  
- var PDFImage = (function pdfImage() {
+ var PDFImage = (function PDFImageClosure() {
 -  function PDFImage(xref, res, image, inline) {
 +  /**
 +   * Decode the image in the main thread if it supported. Resovles the promise
 +   * when the image data is ready.
 +   */
 +  function handleImageData(handler, xref, res, image, promise) {
 +    if (image instanceof JpegStream && image.isNative) {
 +      // For natively supported jpegs send them to the main thread for decoding.
 +      var dict = image.dict;
 +      var colorSpace = dict.get('ColorSpace', 'CS');
 +      colorSpace =  ColorSpace.parse(colorSpace, xref, res);
 +      var numComps = colorSpace.numComps;
 +      handler.send('jpeg_decode', [image.getIR(), numComps], function(message) {
 +        var data = message.data;
 +        var stream = new Stream(data, 0, data.length, image.dict);
 +        promise.resolve(stream);
 +      });
 +    } else {
 +      promise.resolve(image);
 +    }
 +  }
-   function constructor(xref, res, image, inline, smask) {
++  function PDFImage(xref, res, image, inline, smask) {
      this.image = image;
 +
      if (image.getParams) {
        // JPX/JPEG2000 streams directly contain bits per component
        // and color space mode information.
      if (mask) {
        TODO('masked images');
      } else if (smask) {
 -      this.smask = new PDFImage(xref, res, smask);
 +      this.smask = new PDFImage(xref, res, smask, false);
      }
    }
-   constructor.buildImage = function buildImage(callback, handler, xref, res,
 +  /**
 +   * Handles processing of image data and calls the callback with an argument
 +   * of a PDFImage when the image is ready to be used.
 +   */
++  PDFImage.buildImage = function buildImage(callback, handler, xref, res,
 +                                               image, inline) {
 +    var promise = new Promise();
 +    var smaskPromise = new Promise();
 +    var promises = [promise, smaskPromise];
 +    // The image data and smask data may not be ready yet, wait till both are
 +    // resolved.
 +    Promise.all(promises).then(function(results) {
 +      var image = new PDFImage(xref, res, results[0], inline, results[1]);
 +      callback(image);
 +    });
 +
 +    handleImageData(handler, xref, res, image, promise);
 +
 +    var smask = xref.fetchIfRef(image.dict.get('SMask'));
 +    if (smask)
 +      handleImageData(handler, xref, res, smask, smaskPromise);
 +    else
 +      smaskPromise.resolve(null);
 +  };
  
-   constructor.prototype = {
+   PDFImage.prototype = {
      getComponents: function getComponents(buffer, decodeMap) {
        var bpc = this.bpc;
        if (bpc == 8)
  
        for (var i = 0; i < length; ++i)
          buffer[i] = comps[i];
 +    },
 +    getImageBytes: function getImageBytes(length) {
 +      this.image.reset();
 +      return this.image.getBytes(length);
      }
    };
-   return constructor;
+   return PDFImage;
  })();
  function loadJpegStream(id, imageData, objs) {
    var img = new Image();
    img.onload = (function jpegImageLoaderOnload() {
diff --cc src/util.js
Simple merge
diff --cc src/worker.js
Simple merge