Merge pull request #312 from kkujala/master
Correct the coding style according to gjslint.
This commit is contained in:
		
						commit
						b628d06e9d
					
				
							
								
								
									
										186
									
								
								fonts.js
									
									
									
									
									
								
							
							
						
						
									
										186
									
								
								fonts.js
									
									
									
									
									
								
							@ -19,46 +19,46 @@ var kMaxWaitForFontFace = 1000;
 | 
				
			|||||||
 * fonts and their acronyms.
 | 
					 * fonts and their acronyms.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
var stdFontMap = {
 | 
					var stdFontMap = {
 | 
				
			||||||
  "Arial":                        "Helvetica",
 | 
					  'Arial':                        'Helvetica',
 | 
				
			||||||
  "Arial_Bold":                   "Helvetica-Bold",
 | 
					  'Arial_Bold':                   'Helvetica-Bold',
 | 
				
			||||||
  "Arial_BoldItalic":             "Helvetica-BoldOblique",
 | 
					  'Arial_BoldItalic':             'Helvetica-BoldOblique',
 | 
				
			||||||
  "Arial_Italic":                 "Helvetica-Oblique",
 | 
					  'Arial_Italic':                 'Helvetica-Oblique',
 | 
				
			||||||
  "Arial_BoldItalicMT":           "Helvetica-BoldOblique",
 | 
					  'Arial_BoldItalicMT':           'Helvetica-BoldOblique',
 | 
				
			||||||
  "Arial_BoldMT":                 "Helvetica-Bold",
 | 
					  'Arial_BoldMT':                 'Helvetica-Bold',
 | 
				
			||||||
  "Arial_ItalicMT":               "Helvetica-Oblique",
 | 
					  'Arial_ItalicMT':               'Helvetica-Oblique',
 | 
				
			||||||
  "ArialMT":                      "Helvetica",
 | 
					  'ArialMT':                      'Helvetica',
 | 
				
			||||||
  "Courier_Bold":                 "Courier-Bold",
 | 
					  'Courier_Bold':                 'Courier-Bold',
 | 
				
			||||||
  "Courier_BoldItalic":           "Courier-BoldOblique",
 | 
					  'Courier_BoldItalic':           'Courier-BoldOblique',
 | 
				
			||||||
  "Courier_Italic":               "Courier-Oblique",
 | 
					  'Courier_Italic':               'Courier-Oblique',
 | 
				
			||||||
  "CourierNew":                   "Courier",
 | 
					  'CourierNew':                   'Courier',
 | 
				
			||||||
  "CourierNew_Bold":              "Courier-Bold",
 | 
					  'CourierNew_Bold':              'Courier-Bold',
 | 
				
			||||||
  "CourierNew_BoldItalic":        "Courier-BoldOblique",
 | 
					  'CourierNew_BoldItalic':        'Courier-BoldOblique',
 | 
				
			||||||
  "CourierNew_Italic":            "Courier-Oblique",
 | 
					  'CourierNew_Italic':            'Courier-Oblique',
 | 
				
			||||||
  "CourierNewPS_BoldItalicMT":    "Courier-BoldOblique",
 | 
					  'CourierNewPS_BoldItalicMT':    'Courier-BoldOblique',
 | 
				
			||||||
  "CourierNewPS_BoldMT":          "Courier-Bold",
 | 
					  'CourierNewPS_BoldMT':          'Courier-Bold',
 | 
				
			||||||
  "CourierNewPS_ItalicMT":        "Courier-Oblique",
 | 
					  'CourierNewPS_ItalicMT':        'Courier-Oblique',
 | 
				
			||||||
  "CourierNewPSMT":               "Courier",
 | 
					  'CourierNewPSMT':               'Courier',
 | 
				
			||||||
  "Helvetica_Bold":               "Helvetica-Bold",
 | 
					  'Helvetica_Bold':               'Helvetica-Bold',
 | 
				
			||||||
  "Helvetica_BoldItalic":         "Helvetica-BoldOblique",
 | 
					  'Helvetica_BoldItalic':         'Helvetica-BoldOblique',
 | 
				
			||||||
  "Helvetica_Italic":             "Helvetica-Oblique",
 | 
					  'Helvetica_Italic':             'Helvetica-Oblique',
 | 
				
			||||||
  "Symbol_Bold":                  "Symbol",
 | 
					  'Symbol_Bold':                  'Symbol',
 | 
				
			||||||
  "Symbol_BoldItalic":            "Symbol",
 | 
					  'Symbol_BoldItalic':            'Symbol',
 | 
				
			||||||
  "Symbol_Italic":                "Symbol",
 | 
					  'Symbol_Italic':                'Symbol',
 | 
				
			||||||
  "TimesNewRoman":                "Times-Roman",
 | 
					  'TimesNewRoman':                'Times-Roman',
 | 
				
			||||||
  "TimesNewRoman_Bold":           "Times-Bold",
 | 
					  'TimesNewRoman_Bold':           'Times-Bold',
 | 
				
			||||||
  "TimesNewRoman_BoldItalic":     "Times-BoldItalic",
 | 
					  'TimesNewRoman_BoldItalic':     'Times-BoldItalic',
 | 
				
			||||||
  "TimesNewRoman_Italic":         "Times-Italic",
 | 
					  'TimesNewRoman_Italic':         'Times-Italic',
 | 
				
			||||||
  "TimesNewRomanPS":              "Times-Roman",
 | 
					  'TimesNewRomanPS':              'Times-Roman',
 | 
				
			||||||
  "TimesNewRomanPS_Bold":         "Times-Bold",
 | 
					  'TimesNewRomanPS_Bold':         'Times-Bold',
 | 
				
			||||||
  "TimesNewRomanPS_BoldItalic":   "Times-BoldItalic",
 | 
					  'TimesNewRomanPS_BoldItalic':   'Times-BoldItalic',
 | 
				
			||||||
  "TimesNewRomanPS_BoldItalicMT": "Times-BoldItalic",
 | 
					  'TimesNewRomanPS_BoldItalicMT': 'Times-BoldItalic',
 | 
				
			||||||
  "TimesNewRomanPS_BoldMT":       "Times-Bold",
 | 
					  'TimesNewRomanPS_BoldMT':       'Times-Bold',
 | 
				
			||||||
  "TimesNewRomanPS_Italic":       "Times-Italic",
 | 
					  'TimesNewRomanPS_Italic':       'Times-Italic',
 | 
				
			||||||
  "TimesNewRomanPS_ItalicMT":     "Times-Italic",
 | 
					  'TimesNewRomanPS_ItalicMT':     'Times-Italic',
 | 
				
			||||||
  "TimesNewRomanPSMT":            "Times-Roman",
 | 
					  'TimesNewRomanPSMT':            'Times-Roman',
 | 
				
			||||||
  "TimesNewRomanPSMT_Bold":       "Times-Bold",
 | 
					  'TimesNewRomanPSMT_Bold':       'Times-Bold',
 | 
				
			||||||
  "TimesNewRomanPSMT_BoldItalic": "Times-BoldItalic",
 | 
					  'TimesNewRomanPSMT_BoldItalic': 'Times-BoldItalic',
 | 
				
			||||||
  "TimesNewRomanPSMT_Italic":     "Times-Italic"
 | 
					  'TimesNewRomanPSMT_Italic':     'Times-Italic'
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var FontMeasure = (function FontMeasure() {
 | 
					var FontMeasure = (function FontMeasure() {
 | 
				
			||||||
@ -76,14 +76,14 @@ var FontMeasure = (function FontMeasure() {
 | 
				
			|||||||
        if (!(measureCache = sizes[size]))
 | 
					        if (!(measureCache = sizes[size]))
 | 
				
			||||||
          measureCache = sizes[size] = Object.create(null);
 | 
					          measureCache = sizes[size] = Object.create(null);
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        measureCache = null
 | 
					        measureCache = null;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      var name = font.loadedName;
 | 
					      var name = font.loadedName;
 | 
				
			||||||
      var bold = font.bold ? "bold" : "normal";
 | 
					      var bold = font.bold ? 'bold' : 'normal';
 | 
				
			||||||
      var italic = font.italic ? "italic" : "normal";
 | 
					      var italic = font.italic ? 'italic' : 'normal';
 | 
				
			||||||
      size *= kScalePrecision;
 | 
					      size *= kScalePrecision;
 | 
				
			||||||
      var rule = bold + " " + italic + " " + size + 'px "' + name + '"';
 | 
					      var rule = bold + ' ' + italic + ' ' + size + 'px "' + name + '"';
 | 
				
			||||||
      ctx.font = rule;
 | 
					      ctx.font = rule;
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    measureText: function fonts_measureText(text) {
 | 
					    measureText: function fonts_measureText(text) {
 | 
				
			||||||
@ -144,7 +144,7 @@ var FontLoader = {
 | 
				
			|||||||
    if (!isWorker && rules.length) {
 | 
					    if (!isWorker && rules.length) {
 | 
				
			||||||
      FontLoader.prepareFontLoadEvent(rules, names, objs);
 | 
					      FontLoader.prepareFontLoadEvent(rules, names, objs);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    if (!checkFontsLoaded()) {
 | 
					    if (!checkFontsLoaded()) {
 | 
				
			||||||
      document.documentElement.addEventListener(
 | 
					      document.documentElement.addEventListener(
 | 
				
			||||||
        'pdfjsFontLoad', checkFontsLoaded, false);
 | 
					        'pdfjsFontLoad', checkFontsLoaded, false);
 | 
				
			||||||
@ -402,9 +402,9 @@ var Font = (function Font() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if (!file) {
 | 
					    if (!file) {
 | 
				
			||||||
      var fontName = stdFontMap[name];
 | 
					      var fontName = stdFontMap[name];
 | 
				
			||||||
      this.bold = (fontName.indexOf("Bold") != -1);
 | 
					      this.bold = (fontName.indexOf('Bold') != -1);
 | 
				
			||||||
      this.italic = (fontName.indexOf("Oblique") != -1);
 | 
					      this.italic = (fontName.indexOf('Oblique') != -1);
 | 
				
			||||||
      this.loadedName = fontName.split("-")[0];
 | 
					      this.loadedName = fontName.split('-')[0];
 | 
				
			||||||
      this.loading = false;
 | 
					      this.loading = false;
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -414,7 +414,7 @@ var Font = (function Font() {
 | 
				
			|||||||
      case 'Type1':
 | 
					      case 'Type1':
 | 
				
			||||||
      case 'CIDFontType0':
 | 
					      case 'CIDFontType0':
 | 
				
			||||||
        this.mimetype = 'font/opentype';
 | 
					        this.mimetype = 'font/opentype';
 | 
				
			||||||
        
 | 
					
 | 
				
			||||||
        var subtype = properties.subtype;
 | 
					        var subtype = properties.subtype;
 | 
				
			||||||
        if (subtype === 'Type1C') {
 | 
					        if (subtype === 'Type1C') {
 | 
				
			||||||
          var cff = new Type2CFF(file, properties);
 | 
					          var cff = new Type2CFF(file, properties);
 | 
				
			||||||
@ -535,8 +535,8 @@ var Font = (function Font() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // checksum
 | 
					    // checksum
 | 
				
			||||||
    var checksum = 0, n = data.length;
 | 
					    var checksum = 0, n = data.length;
 | 
				
			||||||
    for (var i = 0; i < n; i+=4)
 | 
					    for (var i = 0; i < n; i += 4)
 | 
				
			||||||
      checksum = (checksum + int32([data[i], data[i+1], data[i+2], data[i+3]])) | 0;
 | 
					      checksum = (checksum + int32([data[i], data[i + 1], data[i + 2], data[i + 3]])) | 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    var tableEntry = (tag + string32(checksum) +
 | 
					    var tableEntry = (tag + string32(checksum) +
 | 
				
			||||||
                      string32(offset) + string32(length));
 | 
					                      string32(offset) + string32(length));
 | 
				
			||||||
@ -567,7 +567,7 @@ var Font = (function Font() {
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
      ranges.push([start, end]);
 | 
					      ranges.push([start, end]);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    return ranges;
 | 
					    return ranges;
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -598,7 +598,7 @@ var Font = (function Font() {
 | 
				
			|||||||
      var range = ranges[i];
 | 
					      var range = ranges[i];
 | 
				
			||||||
      var start = range[0];
 | 
					      var start = range[0];
 | 
				
			||||||
      var end = range[1];
 | 
					      var end = range[1];
 | 
				
			||||||
			var offset = (segCount - i) * 2 + bias * 2;
 | 
					      var offset = (segCount - i) * 2 + bias * 2;
 | 
				
			||||||
      bias += (end - start + 1);
 | 
					      bias += (end - start + 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      startCount += string16(start);
 | 
					      startCount += string16(start);
 | 
				
			||||||
@ -730,30 +730,30 @@ var Font = (function Font() {
 | 
				
			|||||||
      'Unknown',           // 8.Manufacturer
 | 
					      'Unknown',           // 8.Manufacturer
 | 
				
			||||||
      'Unknown'            // 9.Designer
 | 
					      'Unknown'            // 9.Designer
 | 
				
			||||||
    ];
 | 
					    ];
 | 
				
			||||||
  
 | 
					
 | 
				
			||||||
    // Mac want 1-byte per character strings while Windows want
 | 
					    // Mac want 1-byte per character strings while Windows want
 | 
				
			||||||
    // 2-bytes per character, so duplicate the names table
 | 
					    // 2-bytes per character, so duplicate the names table
 | 
				
			||||||
    var stringsUnicode = [];
 | 
					    var stringsUnicode = [];
 | 
				
			||||||
    for (var i = 0; i < strings.length; i++) {
 | 
					    for (var i = 0; i < strings.length; i++) {
 | 
				
			||||||
      var str = strings[i];
 | 
					      var str = strings[i];
 | 
				
			||||||
  
 | 
					
 | 
				
			||||||
      var strUnicode = '';
 | 
					      var strUnicode = '';
 | 
				
			||||||
      for (var j = 0; j < str.length; j++)
 | 
					      for (var j = 0; j < str.length; j++)
 | 
				
			||||||
        strUnicode += string16(str.charCodeAt(j));
 | 
					        strUnicode += string16(str.charCodeAt(j));
 | 
				
			||||||
      stringsUnicode.push(strUnicode);
 | 
					      stringsUnicode.push(strUnicode);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  
 | 
					
 | 
				
			||||||
    var names = [strings, stringsUnicode];
 | 
					    var names = [strings, stringsUnicode];
 | 
				
			||||||
    var platforms = ['\x00\x01', '\x00\x03'];
 | 
					    var platforms = ['\x00\x01', '\x00\x03'];
 | 
				
			||||||
    var encodings = ['\x00\x00', '\x00\x01'];
 | 
					    var encodings = ['\x00\x00', '\x00\x01'];
 | 
				
			||||||
    var languages = ['\x00\x00', '\x04\x09'];
 | 
					    var languages = ['\x00\x00', '\x04\x09'];
 | 
				
			||||||
  
 | 
					
 | 
				
			||||||
    var namesRecordCount = strings.length * platforms.length;
 | 
					    var namesRecordCount = strings.length * platforms.length;
 | 
				
			||||||
    var nameTable =
 | 
					    var nameTable =
 | 
				
			||||||
      '\x00\x00' +                           // format
 | 
					      '\x00\x00' +                           // format
 | 
				
			||||||
      string16(namesRecordCount) +           // Number of names Record
 | 
					      string16(namesRecordCount) +           // Number of names Record
 | 
				
			||||||
      string16(namesRecordCount * 12 + 6);   // Storage
 | 
					      string16(namesRecordCount * 12 + 6);   // Storage
 | 
				
			||||||
  
 | 
					
 | 
				
			||||||
    // Build the name records field
 | 
					    // Build the name records field
 | 
				
			||||||
    var strOffset = 0;
 | 
					    var strOffset = 0;
 | 
				
			||||||
    for (var i = 0; i < platforms.length; i++) {
 | 
					    for (var i = 0; i < platforms.length; i++) {
 | 
				
			||||||
@ -771,7 +771,7 @@ var Font = (function Font() {
 | 
				
			|||||||
        strOffset += str.length;
 | 
					        strOffset += str.length;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  
 | 
					
 | 
				
			||||||
    nameTable += strings.join('') + stringsUnicode.join('');
 | 
					    nameTable += strings.join('') + stringsUnicode.join('');
 | 
				
			||||||
    return nameTable;
 | 
					    return nameTable;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@ -838,14 +838,14 @@ var Font = (function Font() {
 | 
				
			|||||||
            encodingID: int16(font.getBytes(2)),
 | 
					            encodingID: int16(font.getBytes(2)),
 | 
				
			||||||
            offset: int32(font.getBytes(4))
 | 
					            offset: int32(font.getBytes(4))
 | 
				
			||||||
          });
 | 
					          });
 | 
				
			||||||
        };
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        var encoding = properties.encoding;
 | 
					        var encoding = properties.encoding;
 | 
				
			||||||
        var charset = properties.charset;
 | 
					        var charset = properties.charset;
 | 
				
			||||||
        for (var i = 0; i < numRecords; i++) {
 | 
					        for (var i = 0; i < numRecords; i++) {
 | 
				
			||||||
          var table = records[i];
 | 
					          var table = records[i];
 | 
				
			||||||
          font.pos = start + table.offset;
 | 
					          font.pos = start + table.offset;
 | 
				
			||||||
          
 | 
					
 | 
				
			||||||
          var format = int16(font.getBytes(2));
 | 
					          var format = int16(font.getBytes(2));
 | 
				
			||||||
          var length = int16(font.getBytes(2));
 | 
					          var length = int16(font.getBytes(2));
 | 
				
			||||||
          var language = int16(font.getBytes(2));
 | 
					          var language = int16(font.getBytes(2));
 | 
				
			||||||
@ -855,19 +855,19 @@ var Font = (function Font() {
 | 
				
			|||||||
            // into the platform so if some characters in the font are assigned
 | 
					            // into the platform so if some characters in the font are assigned
 | 
				
			||||||
            // under this limit they will not be displayed so let's rewrite the
 | 
					            // under this limit they will not be displayed so let's rewrite the
 | 
				
			||||||
            // CMap.
 | 
					            // CMap.
 | 
				
			||||||
            var glyphs = [];           
 | 
					            var glyphs = [];
 | 
				
			||||||
            var deltas = [];
 | 
					            var deltas = [];
 | 
				
			||||||
            for (var j = 0; j < 256; j++) {
 | 
					            for (var j = 0; j < 256; j++) {
 | 
				
			||||||
              var index = font.getByte();
 | 
					              var index = font.getByte();
 | 
				
			||||||
              if (index) {
 | 
					              if (index) {
 | 
				
			||||||
                deltas.push(index);
 | 
					                deltas.push(index);
 | 
				
			||||||
                glyphs.push({ unicode : j });
 | 
					                glyphs.push({ unicode: j });
 | 
				
			||||||
              }
 | 
					              }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var rewrite = false;
 | 
					            var rewrite = false;
 | 
				
			||||||
            for (var code in encoding) {
 | 
					            for (var code in encoding) {
 | 
				
			||||||
              if (code < 0x20 && encoding[code]) 
 | 
					              if (code < 0x20 && encoding[code])
 | 
				
			||||||
                rewrite = true;
 | 
					                rewrite = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
              if (rewrite)
 | 
					              if (rewrite)
 | 
				
			||||||
@ -1005,11 +1005,11 @@ var Font = (function Font() {
 | 
				
			|||||||
        ((hmtx.length - numOfHMetrics * 4) >> 1);
 | 
					        ((hmtx.length - numOfHMetrics * 4) >> 1);
 | 
				
			||||||
      if (numMissing > 0) {
 | 
					      if (numMissing > 0) {
 | 
				
			||||||
        font.pos = (font.start ? font.start : 0) + hmtx.offset;
 | 
					        font.pos = (font.start ? font.start : 0) + hmtx.offset;
 | 
				
			||||||
        var metrics = "";
 | 
					        var metrics = '';
 | 
				
			||||||
        for (var i = 0; i < hmtx.length; i++)
 | 
					        for (var i = 0; i < hmtx.length; i++)
 | 
				
			||||||
          metrics += String.fromCharCode(font.getByte());
 | 
					          metrics += String.fromCharCode(font.getByte());
 | 
				
			||||||
        for (var i = 0; i < numMissing; i++)
 | 
					        for (var i = 0; i < numMissing; i++)
 | 
				
			||||||
          metrics += "\x00\x00";
 | 
					          metrics += '\x00\x00';
 | 
				
			||||||
        hmtx.data = stringToArray(metrics);
 | 
					        hmtx.data = stringToArray(metrics);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1024,7 +1024,7 @@ var Font = (function Font() {
 | 
				
			|||||||
      if (properties.type == 'CIDFontType2') {
 | 
					      if (properties.type == 'CIDFontType2') {
 | 
				
			||||||
        // Type2 composite fonts map characters directly to glyphs so the cmap
 | 
					        // Type2 composite fonts map characters directly to glyphs so the cmap
 | 
				
			||||||
        // table must be replaced.
 | 
					        // table must be replaced.
 | 
				
			||||||
          
 | 
					
 | 
				
			||||||
        var glyphs = [];
 | 
					        var glyphs = [];
 | 
				
			||||||
        var charset = properties.charset;
 | 
					        var charset = properties.charset;
 | 
				
			||||||
        if (!charset.length) {
 | 
					        if (!charset.length) {
 | 
				
			||||||
@ -1254,25 +1254,25 @@ var Font = (function Font() {
 | 
				
			|||||||
    charsToUnicode: function fonts_chars2Unicode(chars) {
 | 
					    charsToUnicode: function fonts_chars2Unicode(chars) {
 | 
				
			||||||
      var charsCache = this.charsCache;
 | 
					      var charsCache = this.charsCache;
 | 
				
			||||||
      var str;
 | 
					      var str;
 | 
				
			||||||
      
 | 
					
 | 
				
			||||||
      // if we translated this string before, just grab it from the cache
 | 
					      // if we translated this string before, just grab it from the cache
 | 
				
			||||||
      if (charsCache) {
 | 
					      if (charsCache) {
 | 
				
			||||||
        str = charsCache[chars];
 | 
					        str = charsCache[chars];
 | 
				
			||||||
        if (str)
 | 
					        if (str)
 | 
				
			||||||
          return str;
 | 
					          return str;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      
 | 
					
 | 
				
			||||||
      // lazily create the translation cache
 | 
					      // lazily create the translation cache
 | 
				
			||||||
      if (!charsCache)
 | 
					      if (!charsCache)
 | 
				
			||||||
        charsCache = this.charsCache = Object.create(null);
 | 
					        charsCache = this.charsCache = Object.create(null);
 | 
				
			||||||
      
 | 
					
 | 
				
			||||||
      if (this.compositeFont) {
 | 
					      if (this.compositeFont) {
 | 
				
			||||||
        // composite fonts have multi-byte strings
 | 
					        // composite fonts have multi-byte strings
 | 
				
			||||||
        // convert the string from single-byte to multi-byte
 | 
					        // convert the string from single-byte to multi-byte
 | 
				
			||||||
        // XXX assuming CIDFonts are two-byte - later need to extract the correct byte encoding
 | 
					        // XXX assuming CIDFonts are two-byte - later need to extract the correct byte encoding
 | 
				
			||||||
        //     according to the PDF spec
 | 
					        //     according to the PDF spec
 | 
				
			||||||
        str = '';
 | 
					        str = '';
 | 
				
			||||||
        var multiByteStr = "";
 | 
					        var multiByteStr = '';
 | 
				
			||||||
        var length = chars.length;
 | 
					        var length = chars.length;
 | 
				
			||||||
        for (var i = 0; i < length; i++) {
 | 
					        for (var i = 0; i < length; i++) {
 | 
				
			||||||
          var byte1 = chars.charCodeAt(i++) & 0xFF;
 | 
					          var byte1 = chars.charCodeAt(i++) & 0xFF;
 | 
				
			||||||
@ -1290,7 +1290,7 @@ var Font = (function Font() {
 | 
				
			|||||||
        var encoding = this.encoding;
 | 
					        var encoding = this.encoding;
 | 
				
			||||||
        if (!encoding)
 | 
					        if (!encoding)
 | 
				
			||||||
          return chars;
 | 
					          return chars;
 | 
				
			||||||
  
 | 
					
 | 
				
			||||||
        str = '';
 | 
					        str = '';
 | 
				
			||||||
        for (var i = 0; i < chars.length; ++i) {
 | 
					        for (var i = 0; i < chars.length; ++i) {
 | 
				
			||||||
          var charcode = chars.charCodeAt(i);
 | 
					          var charcode = chars.charCodeAt(i);
 | 
				
			||||||
@ -1298,14 +1298,14 @@ var Font = (function Font() {
 | 
				
			|||||||
          if ('undefined' == typeof(unicode)) {
 | 
					          if ('undefined' == typeof(unicode)) {
 | 
				
			||||||
            // FIXME/issue 233: we're hitting this in test/pdf/sizes.pdf
 | 
					            // FIXME/issue 233: we're hitting this in test/pdf/sizes.pdf
 | 
				
			||||||
            // at the moment, for unknown reasons.
 | 
					            // at the moment, for unknown reasons.
 | 
				
			||||||
            warn('Unencoded charcode '+ charcode);
 | 
					            warn('Unencoded charcode ' + charcode);
 | 
				
			||||||
            unicode = charcode;
 | 
					            unicode = charcode;
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
  
 | 
					
 | 
				
			||||||
          // Check if the glyph has already been converted
 | 
					          // Check if the glyph has already been converted
 | 
				
			||||||
          if (!IsNum(unicode))
 | 
					          if (!IsNum(unicode))
 | 
				
			||||||
            unicode = encoding[unicode] = GlyphsUnicode[unicode.name];
 | 
					            unicode = encoding[unicode] = GlyphsUnicode[unicode.name];
 | 
				
			||||||
  
 | 
					
 | 
				
			||||||
          // Handle surrogate pairs
 | 
					          // Handle surrogate pairs
 | 
				
			||||||
          if (unicode > 0xFFFF) {
 | 
					          if (unicode > 0xFFFF) {
 | 
				
			||||||
            str += String.fromCharCode(unicode & 0xFFFF);
 | 
					            str += String.fromCharCode(unicode & 0xFFFF);
 | 
				
			||||||
@ -2043,7 +2043,7 @@ CFF.prototype = {
 | 
				
			|||||||
          BlueFuzz: '\x0c\x0b',
 | 
					          BlueFuzz: '\x0c\x0b',
 | 
				
			||||||
          BlueScale: '\x0c\x09',
 | 
					          BlueScale: '\x0c\x09',
 | 
				
			||||||
          LanguageGroup: '\x0c\x11',
 | 
					          LanguageGroup: '\x0c\x11',
 | 
				
			||||||
          ExpansionFactor:  '\x0c\x18'
 | 
					          ExpansionFactor: '\x0c\x18'
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
        for (var field in fieldMap) {
 | 
					        for (var field in fieldMap) {
 | 
				
			||||||
          if (!properties.private.hasOwnProperty(field)) continue;
 | 
					          if (!properties.private.hasOwnProperty(field)) continue;
 | 
				
			||||||
@ -2087,10 +2087,10 @@ var Type2CFF = (function() {
 | 
				
			|||||||
    var bytes = file.getBytes();
 | 
					    var bytes = file.getBytes();
 | 
				
			||||||
    this.bytes = bytes;
 | 
					    this.bytes = bytes;
 | 
				
			||||||
    this.properties = properties;
 | 
					    this.properties = properties;
 | 
				
			||||||
   
 | 
					
 | 
				
			||||||
    // Other classes expect this.data to be a Javascript array
 | 
					    // Other classes expect this.data to be a Javascript array
 | 
				
			||||||
    var data = []
 | 
					    var data = [];
 | 
				
			||||||
    for (var i = 0, ii = bytes.length; i < ii; ++i) 
 | 
					    for (var i = 0, ii = bytes.length; i < ii; ++i)
 | 
				
			||||||
      data.push(bytes[i]);
 | 
					      data.push(bytes[i]);
 | 
				
			||||||
    this.data = data;
 | 
					    this.data = data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -2101,11 +2101,11 @@ var Type2CFF = (function() {
 | 
				
			|||||||
    parse: function cff_parse() {
 | 
					    parse: function cff_parse() {
 | 
				
			||||||
      var header = this.parseHeader();
 | 
					      var header = this.parseHeader();
 | 
				
			||||||
      var nameIndex = this.parseIndex(header.endPos);
 | 
					      var nameIndex = this.parseIndex(header.endPos);
 | 
				
			||||||
      
 | 
					
 | 
				
			||||||
      var dictIndex = this.parseIndex(nameIndex.endPos);
 | 
					      var dictIndex = this.parseIndex(nameIndex.endPos);
 | 
				
			||||||
      if (dictIndex.length != 1)
 | 
					      if (dictIndex.length != 1)
 | 
				
			||||||
        error('More than 1 font');
 | 
					        error('More than 1 font');
 | 
				
			||||||
      
 | 
					
 | 
				
			||||||
      var stringIndex = this.parseIndex(dictIndex.endPos);
 | 
					      var stringIndex = this.parseIndex(dictIndex.endPos);
 | 
				
			||||||
      var gsubrIndex = this.parseIndex(stringIndex.endPos);
 | 
					      var gsubrIndex = this.parseIndex(stringIndex.endPos);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -2121,7 +2121,7 @@ var Type2CFF = (function() {
 | 
				
			|||||||
      var privOffset = privInfo[1], privLength = privInfo[0];
 | 
					      var privOffset = privInfo[1], privLength = privInfo[0];
 | 
				
			||||||
      var privBytes = bytes.subarray(privOffset, privOffset + privLength);
 | 
					      var privBytes = bytes.subarray(privOffset, privOffset + privLength);
 | 
				
			||||||
      baseDict = this.parseDict(privBytes);
 | 
					      baseDict = this.parseDict(privBytes);
 | 
				
			||||||
      var  privDict = this.getPrivDict(baseDict, strings);
 | 
					      var privDict = this.getPrivDict(baseDict, strings);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      TODO('Parse encoding');
 | 
					      TODO('Parse encoding');
 | 
				
			||||||
      var charStrings = this.parseIndex(topDict['CharStrings']);
 | 
					      var charStrings = this.parseIndex(topDict['CharStrings']);
 | 
				
			||||||
@ -2132,7 +2132,7 @@ var Type2CFF = (function() {
 | 
				
			|||||||
      // containing mappings for {unicode, width})
 | 
					      // containing mappings for {unicode, width})
 | 
				
			||||||
      var charstrings = this.getCharStrings(charset, charStrings,
 | 
					      var charstrings = this.getCharStrings(charset, charStrings,
 | 
				
			||||||
          privDict, this.properties);
 | 
					          privDict, this.properties);
 | 
				
			||||||
     
 | 
					
 | 
				
			||||||
      // create the mapping between charstring and glyph id
 | 
					      // create the mapping between charstring and glyph id
 | 
				
			||||||
      var glyphIds = [];
 | 
					      var glyphIds = [];
 | 
				
			||||||
      for (var i = 0, ii = charstrings.length; i < ii; ++i) {
 | 
					      for (var i = 0, ii = charstrings.length; i < ii; ++i) {
 | 
				
			||||||
@ -2225,7 +2225,7 @@ var Type2CFF = (function() {
 | 
				
			|||||||
        var pair = baseDict[i];
 | 
					        var pair = baseDict[i];
 | 
				
			||||||
        var key = pair[0];
 | 
					        var key = pair[0];
 | 
				
			||||||
        var value = pair[1];
 | 
					        var value = pair[1];
 | 
				
			||||||
        switch(key) {
 | 
					        switch (key) {
 | 
				
			||||||
          case 20:
 | 
					          case 20:
 | 
				
			||||||
            dict['defaultWidthX'] = value[0];
 | 
					            dict['defaultWidthX'] = value[0];
 | 
				
			||||||
          case 21:
 | 
					          case 21:
 | 
				
			||||||
@ -2247,7 +2247,7 @@ var Type2CFF = (function() {
 | 
				
			|||||||
        var pair = baseDict[i];
 | 
					        var pair = baseDict[i];
 | 
				
			||||||
        var key = pair[0];
 | 
					        var key = pair[0];
 | 
				
			||||||
        var value = pair[1];
 | 
					        var value = pair[1];
 | 
				
			||||||
        switch(key) {
 | 
					        switch (key) {
 | 
				
			||||||
          case 1:
 | 
					          case 1:
 | 
				
			||||||
            dict['Notice'] = strings[value[0]];
 | 
					            dict['Notice'] = strings[value[0]];
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
@ -2283,7 +2283,7 @@ var Type2CFF = (function() {
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
    getStrings: function cff_getstrings(stringIndex) {
 | 
					    getStrings: function cff_getstrings(stringIndex) {
 | 
				
			||||||
      function bytesToString(bytesArr) {
 | 
					      function bytesToString(bytesArr) {
 | 
				
			||||||
        var s = "";
 | 
					        var s = '';
 | 
				
			||||||
        for (var i = 0, ii = bytesArr.length; i < ii; ++i)
 | 
					        for (var i = 0, ii = bytesArr.length; i < ii; ++i)
 | 
				
			||||||
          s += String.fromCharCode(bytesArr[i]);
 | 
					          s += String.fromCharCode(bytesArr[i]);
 | 
				
			||||||
        return s;
 | 
					        return s;
 | 
				
			||||||
@ -2302,11 +2302,11 @@ var Type2CFF = (function() {
 | 
				
			|||||||
      var bytes = this.bytes;
 | 
					      var bytes = this.bytes;
 | 
				
			||||||
      var offset = 0;
 | 
					      var offset = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      while(bytes[offset] != 1)
 | 
					      while (bytes[offset] != 1)
 | 
				
			||||||
        ++offset;
 | 
					        ++offset;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (offset != 0) {
 | 
					      if (offset != 0) {
 | 
				
			||||||
        warning("cff data is shifted");
 | 
					        warning('cff data is shifted');
 | 
				
			||||||
        bytes = bytes.subarray(offset);
 | 
					        bytes = bytes.subarray(offset);
 | 
				
			||||||
        this.bytes = bytes;
 | 
					        this.bytes = bytes;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@ -2314,7 +2314,7 @@ var Type2CFF = (function() {
 | 
				
			|||||||
      return {
 | 
					      return {
 | 
				
			||||||
        endPos: bytes[2],
 | 
					        endPos: bytes[2],
 | 
				
			||||||
        offsetSize: bytes[3]
 | 
					        offsetSize: bytes[3]
 | 
				
			||||||
      }
 | 
					      };
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    parseDict: function cff_parseDict(dict) {
 | 
					    parseDict: function cff_parseDict(dict) {
 | 
				
			||||||
      var pos = 0;
 | 
					      var pos = 0;
 | 
				
			||||||
@ -2345,7 +2345,7 @@ var Type2CFF = (function() {
 | 
				
			|||||||
      };
 | 
					      };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      function parseFloatOperand() {
 | 
					      function parseFloatOperand() {
 | 
				
			||||||
        var str = "";
 | 
					        var str = '';
 | 
				
			||||||
        var eof = 15;
 | 
					        var eof = 15;
 | 
				
			||||||
        var lookup = ['0', '1', '2', '3', '4', '5', '6', '7', '8',
 | 
					        var lookup = ['0', '1', '2', '3', '4', '5', '6', '7', '8',
 | 
				
			||||||
            '9', '.', 'E', 'E-', null, '-'];
 | 
					            '9', '.', 'E', 'E-', null, '-'];
 | 
				
			||||||
@ -2368,7 +2368,7 @@ var Type2CFF = (function() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      var operands = [];
 | 
					      var operands = [];
 | 
				
			||||||
      var entries = [];
 | 
					      var entries = [];
 | 
				
			||||||
      
 | 
					
 | 
				
			||||||
      var pos = 0;
 | 
					      var pos = 0;
 | 
				
			||||||
      var end = dict.length;
 | 
					      var end = dict.length;
 | 
				
			||||||
      while (pos < end) {
 | 
					      while (pos < end) {
 | 
				
			||||||
@ -2421,8 +2421,8 @@ var Type2CFF = (function() {
 | 
				
			|||||||
        },
 | 
					        },
 | 
				
			||||||
        length: count,
 | 
					        length: count,
 | 
				
			||||||
        endPos: end
 | 
					        endPos: end
 | 
				
			||||||
      }
 | 
					      };
 | 
				
			||||||
    },
 | 
					    }
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return constructor;
 | 
					  return constructor;
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										168
									
								
								pdf.js
									
									
									
									
									
								
							
							
						
						
									
										168
									
								
								pdf.js
									
									
									
									
									
								
							@ -48,9 +48,9 @@ function backtrace() {
 | 
				
			|||||||
  var stackStr;
 | 
					  var stackStr;
 | 
				
			||||||
  try {
 | 
					  try {
 | 
				
			||||||
    throw new Error();
 | 
					    throw new Error();
 | 
				
			||||||
  } catch(e) {
 | 
					  } catch (e) {
 | 
				
			||||||
    stackStr = e.stack;
 | 
					    stackStr = e.stack;
 | 
				
			||||||
  };
 | 
					  }
 | 
				
			||||||
  return stackStr.split('\n').slice(1).join('\n');
 | 
					  return stackStr.split('\n').slice(1).join('\n');
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -927,10 +927,10 @@ var AsciiHexStream = (function() {
 | 
				
			|||||||
  function constructor(str) {
 | 
					  function constructor(str) {
 | 
				
			||||||
    this.str = str;
 | 
					    this.str = str;
 | 
				
			||||||
    this.dict = str.dict;
 | 
					    this.dict = str.dict;
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    DecodeStream.call(this);
 | 
					    DecodeStream.call(this);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  
 | 
					
 | 
				
			||||||
  var hexvalueMap = {
 | 
					  var hexvalueMap = {
 | 
				
			||||||
      9: -1, // \t
 | 
					      9: -1, // \t
 | 
				
			||||||
      32: -1, // space
 | 
					      32: -1, // space
 | 
				
			||||||
@ -959,35 +959,35 @@ var AsciiHexStream = (function() {
 | 
				
			|||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  constructor.prototype = Object.create(DecodeStream.prototype);
 | 
					  constructor.prototype = Object.create(DecodeStream.prototype);
 | 
				
			||||||
  
 | 
					
 | 
				
			||||||
  constructor.prototype.readBlock = function() {
 | 
					  constructor.prototype.readBlock = function() {
 | 
				
			||||||
    var gtCode = '>'.charCodeAt(0), bytes = this.str.getBytes(), c, n, 
 | 
					    var gtCode = '>'.charCodeAt(0), bytes = this.str.getBytes(), c, n,
 | 
				
			||||||
        decodeLength, buffer, bufferLength, i, length;
 | 
					        decodeLength, buffer, bufferLength, i, length;
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    decodeLength = (bytes.length + 1) >> 1;
 | 
					    decodeLength = (bytes.length + 1) >> 1;
 | 
				
			||||||
    buffer = this.ensureBuffer(this.bufferLength + decodeLength);
 | 
					    buffer = this.ensureBuffer(this.bufferLength + decodeLength);
 | 
				
			||||||
    bufferLength = this.bufferLength;
 | 
					    bufferLength = this.bufferLength;
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    for(i = 0, length = bytes.length; i < length; i++) {
 | 
					    for (i = 0, length = bytes.length; i < length; i++) {
 | 
				
			||||||
      c = hexvalueMap[bytes[i]];
 | 
					      c = hexvalueMap[bytes[i]];
 | 
				
			||||||
      while (c == -1 && (i+1) < length) {
 | 
					      while (c == -1 && (i + 1) < length) {
 | 
				
			||||||
        c = hexvalueMap[bytes[++i]];
 | 
					        c = hexvalueMap[bytes[++i]];
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      
 | 
					
 | 
				
			||||||
      if((i+1) < length && (bytes[i+1] !== gtCode)) {
 | 
					      if ((i + 1) < length && (bytes[i + 1] !== gtCode)) {
 | 
				
			||||||
        n = hexvalueMap[bytes[++i]];
 | 
					        n = hexvalueMap[bytes[++i]];
 | 
				
			||||||
        buffer[bufferLength++] = c*16+n;
 | 
					        buffer[bufferLength++] = c * 16 + n;
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        if(bytes[i] !== gtCode) { // EOD marker at an odd number, behave as if a 0 followed the last digit.
 | 
					        if (bytes[i] !== gtCode) { // EOD marker at an odd number, behave as if a 0 followed the last digit.
 | 
				
			||||||
          buffer[bufferLength++] = c*16;
 | 
					          buffer[bufferLength++] = c * 16;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    this.bufferLength = bufferLength;
 | 
					    this.bufferLength = bufferLength;
 | 
				
			||||||
    this.eof = true;
 | 
					    this.eof = true;
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
  
 | 
					
 | 
				
			||||||
  return constructor;
 | 
					  return constructor;
 | 
				
			||||||
})();
 | 
					})();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -2983,7 +2983,7 @@ var Page = (function() {
 | 
				
			|||||||
      create: Date.now(),
 | 
					      create: Date.now(),
 | 
				
			||||||
      compile: 0.0,
 | 
					      compile: 0.0,
 | 
				
			||||||
      fonts: 0.0,
 | 
					      fonts: 0.0,
 | 
				
			||||||
      render: 0.0,
 | 
					      render: 0.0
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    this.xref = xref;
 | 
					    this.xref = xref;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@ -3037,7 +3037,7 @@ var Page = (function() {
 | 
				
			|||||||
      return shadow(this, 'height', height);
 | 
					      return shadow(this, 'height', height);
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    get rotate() {
 | 
					    get rotate() {
 | 
				
			||||||
      var rotate = this.inheritPageProp("Rotate") || 0;
 | 
					      var rotate = this.inheritPageProp('Rotate') || 0;
 | 
				
			||||||
      // Normalize rotation so it's a multiple of 90 and between 0 and 270
 | 
					      // Normalize rotation so it's a multiple of 90 and between 0 and 270
 | 
				
			||||||
      if (rotate % 90 != 0) {
 | 
					      if (rotate % 90 != 0) {
 | 
				
			||||||
        rotate = 0;
 | 
					        rotate = 0;
 | 
				
			||||||
@ -3056,7 +3056,7 @@ var Page = (function() {
 | 
				
			|||||||
      stats.compile = stats.fonts = stats.render = 0;
 | 
					      stats.compile = stats.fonts = stats.render = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      var gfx = new CanvasGraphics(canvasCtx);
 | 
					      var gfx = new CanvasGraphics(canvasCtx);
 | 
				
			||||||
      var fonts = [ ];
 | 
					      var fonts = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      this.compile(gfx, fonts);
 | 
					      this.compile(gfx, fonts);
 | 
				
			||||||
      stats.compile = Date.now();
 | 
					      stats.compile = Date.now();
 | 
				
			||||||
@ -3067,7 +3067,7 @@ var Page = (function() {
 | 
				
			|||||||
          stats.fonts = Date.now();
 | 
					          stats.fonts = Date.now();
 | 
				
			||||||
          // Always defer call to display() to work around bug in
 | 
					          // Always defer call to display() to work around bug in
 | 
				
			||||||
          // Firefox error reporting from XHR callbacks.
 | 
					          // Firefox error reporting from XHR callbacks.
 | 
				
			||||||
          setTimeout(function () {
 | 
					          setTimeout(function() {
 | 
				
			||||||
            var exc = null;
 | 
					            var exc = null;
 | 
				
			||||||
            try {
 | 
					            try {
 | 
				
			||||||
              self.display(gfx);
 | 
					              self.display(gfx);
 | 
				
			||||||
@ -3542,7 +3542,7 @@ var EvalState = (function() {
 | 
				
			|||||||
var PartialEvaluator = (function() {
 | 
					var PartialEvaluator = (function() {
 | 
				
			||||||
  function constructor() {
 | 
					  function constructor() {
 | 
				
			||||||
    this.state = new EvalState();
 | 
					    this.state = new EvalState();
 | 
				
			||||||
    this.stateStack = [ ];
 | 
					    this.stateStack = [];
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  var OP_MAP = {
 | 
					  var OP_MAP = {
 | 
				
			||||||
@ -3646,10 +3646,10 @@ var PartialEvaluator = (function() {
 | 
				
			|||||||
    eval: function(stream, xref, resources, fonts) {
 | 
					    eval: function(stream, xref, resources, fonts) {
 | 
				
			||||||
      resources = xref.fetchIfRef(resources) || new Dict();
 | 
					      resources = xref.fetchIfRef(resources) || new Dict();
 | 
				
			||||||
      var xobjs = xref.fetchIfRef(resources.get('XObject')) || new Dict();
 | 
					      var xobjs = xref.fetchIfRef(resources.get('XObject')) || new Dict();
 | 
				
			||||||
      var patterns = xref.fetchIfRef(resources.get("Pattern")) || new Dict(); 
 | 
					      var patterns = xref.fetchIfRef(resources.get('Pattern')) || new Dict();
 | 
				
			||||||
      var parser = new Parser(new Lexer(stream), false);
 | 
					      var parser = new Parser(new Lexer(stream), false);
 | 
				
			||||||
      var args = [], argsArray = [], fnArray = [], obj;
 | 
					      var args = [], argsArray = [], fnArray = [], obj;
 | 
				
			||||||
      
 | 
					
 | 
				
			||||||
      while (!IsEOF(obj = parser.getObj())) {
 | 
					      while (!IsEOF(obj = parser.getObj())) {
 | 
				
			||||||
        if (IsCmd(obj)) {
 | 
					        if (IsCmd(obj)) {
 | 
				
			||||||
          var cmd = obj.cmd;
 | 
					          var cmd = obj.cmd;
 | 
				
			||||||
@ -3665,7 +3665,7 @@ var PartialEvaluator = (function() {
 | 
				
			|||||||
              var pattern = xref.fetchIfRef(patterns.get(patternName.name));
 | 
					              var pattern = xref.fetchIfRef(patterns.get(patternName.name));
 | 
				
			||||||
              if (pattern) {
 | 
					              if (pattern) {
 | 
				
			||||||
                var dict = IsStream(pattern) ? pattern.dict : pattern;
 | 
					                var dict = IsStream(pattern) ? pattern.dict : pattern;
 | 
				
			||||||
                var typeNum = dict.get("PatternType");
 | 
					                var typeNum = dict.get('PatternType');
 | 
				
			||||||
                if (typeNum == 1) {
 | 
					                if (typeNum == 1) {
 | 
				
			||||||
                  patternName.code = this.eval(pattern, xref,
 | 
					                  patternName.code = this.eval(pattern, xref,
 | 
				
			||||||
                      dict.get('Resources'), fonts);
 | 
					                      dict.get('Resources'), fonts);
 | 
				
			||||||
@ -3718,7 +3718,7 @@ var PartialEvaluator = (function() {
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      return function(gfx) {
 | 
					      return function(gfx) {
 | 
				
			||||||
        for(var i = 0, length = argsArray.length; i < length; i++)
 | 
					        for (var i = 0, length = argsArray.length; i < length; i++)
 | 
				
			||||||
          gfx[fnArray[i]].apply(gfx, argsArray[i]);
 | 
					          gfx[fnArray[i]].apply(gfx, argsArray[i]);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
@ -3729,8 +3729,8 @@ var PartialEvaluator = (function() {
 | 
				
			|||||||
      var subType = fontDict.get('Subtype');
 | 
					      var subType = fontDict.get('Subtype');
 | 
				
			||||||
      var compositeFont = false;
 | 
					      var compositeFont = false;
 | 
				
			||||||
      assertWellFormed(IsName(subType), 'invalid font Subtype');
 | 
					      assertWellFormed(IsName(subType), 'invalid font Subtype');
 | 
				
			||||||
      
 | 
					
 | 
				
			||||||
      // If font is a composite 
 | 
					      // If font is a composite
 | 
				
			||||||
      //  - get the descendant font
 | 
					      //  - get the descendant font
 | 
				
			||||||
      //  - set the type according to the descendant font
 | 
					      //  - set the type according to the descendant font
 | 
				
			||||||
      //  - get the FontDescriptor from the descendant font
 | 
					      //  - get the FontDescriptor from the descendant font
 | 
				
			||||||
@ -3750,10 +3750,10 @@ var PartialEvaluator = (function() {
 | 
				
			|||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        fd = fontDict.get('FontDescriptor');
 | 
					        fd = fontDict.get('FontDescriptor');
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      
 | 
					
 | 
				
			||||||
      if (!fd)
 | 
					      if (!fd)
 | 
				
			||||||
        return null;
 | 
					        return null;
 | 
				
			||||||
      
 | 
					
 | 
				
			||||||
      var descriptor = xref.fetch(fd);
 | 
					      var descriptor = xref.fetch(fd);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      var fontName = xref.fetchIfRef(descriptor.get('FontName'));
 | 
					      var fontName = xref.fetchIfRef(descriptor.get('FontName'));
 | 
				
			||||||
@ -3773,7 +3773,7 @@ var PartialEvaluator = (function() {
 | 
				
			|||||||
            var glyphsData = glyphsStream.getBytes(0);
 | 
					            var glyphsData = glyphsStream.getBytes(0);
 | 
				
			||||||
            var i = 0;
 | 
					            var i = 0;
 | 
				
			||||||
            // Glyph ids are big-endian 2-byte values
 | 
					            // Glyph ids are big-endian 2-byte values
 | 
				
			||||||
            for (var j=0; j<glyphsData.length; j++) {
 | 
					            for (var j = 0; j < glyphsData.length; j++) {
 | 
				
			||||||
              var glyphID = (glyphsData[j++] << 8) | glyphsData[j];
 | 
					              var glyphID = (glyphsData[j++] << 8) | glyphsData[j];
 | 
				
			||||||
              charset.push(glyphID);
 | 
					              charset.push(glyphID);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@ -3785,12 +3785,12 @@ var PartialEvaluator = (function() {
 | 
				
			|||||||
          if (IsName(encoding)) {
 | 
					          if (IsName(encoding)) {
 | 
				
			||||||
            // Encoding is a predefined CMap
 | 
					            // Encoding is a predefined CMap
 | 
				
			||||||
            if (encoding.name == 'Identity-H') {
 | 
					            if (encoding.name == 'Identity-H') {
 | 
				
			||||||
              TODO ('Need to create an identity cmap')
 | 
					              TODO('Need to create an identity cmap');
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
              TODO ('Need to support predefined CMaps see PDF 32000-1:2008 9.7.5.2 Predefined CMaps')
 | 
					              TODO('Need to support predefined CMaps see PDF 32000-1:2008 9.7.5.2 Predefined CMaps');
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
          } else {
 | 
					          } else {
 | 
				
			||||||
            TODO ('Need to support encoding streams see PDF 32000-1:2008  9.7.5.3'); 
 | 
					            TODO('Need to support encoding streams see PDF 32000-1:2008  9.7.5.3');
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      } else if (fontDict.has('Encoding')) {
 | 
					      } else if (fontDict.has('Encoding')) {
 | 
				
			||||||
@ -3955,11 +3955,11 @@ var PartialEvaluator = (function() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      return {
 | 
					      return {
 | 
				
			||||||
        name: fontName,
 | 
					        name: fontName,
 | 
				
			||||||
        fontDict: fontDict, 
 | 
					        fontDict: fontDict,
 | 
				
			||||||
        file: fontFile,
 | 
					        file: fontFile,
 | 
				
			||||||
        properties: properties
 | 
					        properties: properties
 | 
				
			||||||
      };
 | 
					      };
 | 
				
			||||||
    },
 | 
					    }
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return constructor;
 | 
					  return constructor;
 | 
				
			||||||
@ -4145,7 +4145,7 @@ var CanvasGraphics = (function() {
 | 
				
			|||||||
    stroke: function() {
 | 
					    stroke: function() {
 | 
				
			||||||
      var ctx = this.ctx;
 | 
					      var ctx = this.ctx;
 | 
				
			||||||
      var strokeColor = this.current.strokeColor;
 | 
					      var strokeColor = this.current.strokeColor;
 | 
				
			||||||
      if (strokeColor && strokeColor.type === "Pattern") {
 | 
					      if (strokeColor && strokeColor.type === 'Pattern') {
 | 
				
			||||||
        // for patterns, we transform to pattern space, calculate
 | 
					        // for patterns, we transform to pattern space, calculate
 | 
				
			||||||
        // the pattern, call stroke, and restore to user space
 | 
					        // the pattern, call stroke, and restore to user space
 | 
				
			||||||
        ctx.save();
 | 
					        ctx.save();
 | 
				
			||||||
@ -4166,7 +4166,7 @@ var CanvasGraphics = (function() {
 | 
				
			|||||||
      var ctx = this.ctx;
 | 
					      var ctx = this.ctx;
 | 
				
			||||||
      var fillColor = this.current.fillColor;
 | 
					      var fillColor = this.current.fillColor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (fillColor && fillColor.type === "Pattern") {
 | 
					      if (fillColor && fillColor.type === 'Pattern') {
 | 
				
			||||||
        ctx.save();
 | 
					        ctx.save();
 | 
				
			||||||
        ctx.fillStyle = fillColor.getPattern(ctx);
 | 
					        ctx.fillStyle = fillColor.getPattern(ctx);
 | 
				
			||||||
        ctx.fill();
 | 
					        ctx.fill();
 | 
				
			||||||
@ -4186,7 +4186,7 @@ var CanvasGraphics = (function() {
 | 
				
			|||||||
      var ctx = this.ctx;
 | 
					      var ctx = this.ctx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      var fillColor = this.current.fillColor;
 | 
					      var fillColor = this.current.fillColor;
 | 
				
			||||||
      if (fillColor && fillColor.type === "Pattern") {
 | 
					      if (fillColor && fillColor.type === 'Pattern') {
 | 
				
			||||||
        ctx.save();
 | 
					        ctx.save();
 | 
				
			||||||
        ctx.fillStyle = fillColor.getPattern(ctx);
 | 
					        ctx.fillStyle = fillColor.getPattern(ctx);
 | 
				
			||||||
        ctx.fill();
 | 
					        ctx.fill();
 | 
				
			||||||
@ -4194,9 +4194,9 @@ var CanvasGraphics = (function() {
 | 
				
			|||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        ctx.fill();
 | 
					        ctx.fill();
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      
 | 
					
 | 
				
			||||||
      var strokeColor = this.current.strokeColor;
 | 
					      var strokeColor = this.current.strokeColor;
 | 
				
			||||||
      if (strokeColor && strokeColor.type === "Pattern") {
 | 
					      if (strokeColor && strokeColor.type === 'Pattern') {
 | 
				
			||||||
        ctx.save();
 | 
					        ctx.save();
 | 
				
			||||||
        ctx.strokeStyle = strokeColor.getPattern(ctx);
 | 
					        ctx.strokeStyle = strokeColor.getPattern(ctx);
 | 
				
			||||||
        ctx.stroke();
 | 
					        ctx.stroke();
 | 
				
			||||||
@ -4204,7 +4204,7 @@ var CanvasGraphics = (function() {
 | 
				
			|||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        ctx.stroke();
 | 
					        ctx.stroke();
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      
 | 
					
 | 
				
			||||||
      this.consumePath();
 | 
					      this.consumePath();
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    eoFillStroke: function() {
 | 
					    eoFillStroke: function() {
 | 
				
			||||||
@ -4285,9 +4285,9 @@ var CanvasGraphics = (function() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        size = (size <= kRasterizerMin) ? size * kScalePrecision : size;
 | 
					        size = (size <= kRasterizerMin) ? size * kScalePrecision : size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        var bold = fontObj.bold ? "bold" : "normal";
 | 
					        var bold = fontObj.bold ? 'bold' : 'normal';
 | 
				
			||||||
        var italic = fontObj.italic ? "italic" : "normal";
 | 
					        var italic = fontObj.italic ? 'italic' : 'normal';
 | 
				
			||||||
        var rule = bold + " " + italic + " " + size + 'px "' + name + '"';
 | 
					        var rule = bold + ' ' + italic + ' ' + size + 'px "' + name + '"';
 | 
				
			||||||
        this.ctx.font = rule;
 | 
					        this.ctx.font = rule;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
@ -4329,7 +4329,7 @@ var CanvasGraphics = (function() {
 | 
				
			|||||||
      ctx.save();
 | 
					      ctx.save();
 | 
				
			||||||
      ctx.transform.apply(ctx, current.textMatrix);
 | 
					      ctx.transform.apply(ctx, current.textMatrix);
 | 
				
			||||||
      ctx.scale(1, -1);
 | 
					      ctx.scale(1, -1);
 | 
				
			||||||
      
 | 
					
 | 
				
			||||||
      ctx.translate(current.x, -1 * current.y);
 | 
					      ctx.translate(current.x, -1 * current.y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      var scaleFactorX = 1, scaleFactorY = 1;
 | 
					      var scaleFactorX = 1, scaleFactorY = 1;
 | 
				
			||||||
@ -4405,11 +4405,11 @@ var CanvasGraphics = (function() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // Color
 | 
					    // Color
 | 
				
			||||||
    setStrokeColorSpace: function(space) {
 | 
					    setStrokeColorSpace: function(space) {
 | 
				
			||||||
      this.current.strokeColorSpace = 
 | 
					      this.current.strokeColorSpace =
 | 
				
			||||||
          ColorSpace.parse(space, this.xref, this.res);
 | 
					          ColorSpace.parse(space, this.xref, this.res);
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    setFillColorSpace: function(space) {
 | 
					    setFillColorSpace: function(space) {
 | 
				
			||||||
      this.current.fillColorSpace = 
 | 
					      this.current.fillColorSpace =
 | 
				
			||||||
          ColorSpace.parse(space, this.xref, this.res);
 | 
					          ColorSpace.parse(space, this.xref, this.res);
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    setStrokeColor: function(/*...*/) {
 | 
					    setStrokeColor: function(/*...*/) {
 | 
				
			||||||
@ -4509,7 +4509,7 @@ var CanvasGraphics = (function() {
 | 
				
			|||||||
        var y0 = Math.min(bl[1], br[1], ul[1], ur[1]);
 | 
					        var y0 = Math.min(bl[1], br[1], ul[1], ur[1]);
 | 
				
			||||||
        var x1 = Math.max(bl[0], br[0], ul[0], ur[0]);
 | 
					        var x1 = Math.max(bl[0], br[0], ul[0], ur[0]);
 | 
				
			||||||
        var y1 = Math.max(bl[1], br[1], ul[1], ur[1]);
 | 
					        var y1 = Math.max(bl[1], br[1], ul[1], ur[1]);
 | 
				
			||||||
        
 | 
					
 | 
				
			||||||
        this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);
 | 
					        this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        // HACK to draw the gradient onto an infinite rectangle.
 | 
					        // HACK to draw the gradient onto an infinite rectangle.
 | 
				
			||||||
@ -4517,7 +4517,7 @@ var CanvasGraphics = (function() {
 | 
				
			|||||||
        // Canvas only allows gradients to be drawn in a rectangle
 | 
					        // Canvas only allows gradients to be drawn in a rectangle
 | 
				
			||||||
        // The following bug should allow us to remove this.
 | 
					        // The following bug should allow us to remove this.
 | 
				
			||||||
        // https://bugzilla.mozilla.org/show_bug.cgi?id=664884
 | 
					        // https://bugzilla.mozilla.org/show_bug.cgi?id=664884
 | 
				
			||||||
      
 | 
					
 | 
				
			||||||
        this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);
 | 
					        this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -4673,7 +4673,7 @@ var CanvasGraphics = (function() {
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
    restoreFillRule: function(rule) {
 | 
					    restoreFillRule: function(rule) {
 | 
				
			||||||
      this.ctx.mozFillRule = rule;
 | 
					      this.ctx.mozFillRule = rule;
 | 
				
			||||||
    },
 | 
					    }
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return constructor;
 | 
					  return constructor;
 | 
				
			||||||
@ -4695,7 +4695,7 @@ var Util = (function() {
 | 
				
			|||||||
    var yt = p[0] * m[1] + p[1] * m[3] + m[5];
 | 
					    var yt = p[0] * m[1] + p[1] * m[3] + m[5];
 | 
				
			||||||
    return [xt, yt];
 | 
					    return [xt, yt];
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
  
 | 
					
 | 
				
			||||||
  return constructor;
 | 
					  return constructor;
 | 
				
			||||||
})();
 | 
					})();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -4811,7 +4811,7 @@ var ColorSpace = (function() {
 | 
				
			|||||||
        error("unimplemented color space object '" + mode + "'");
 | 
					        error("unimplemented color space object '" + mode + "'");
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      error('unrecognized color space object: "'+ cs +"'");
 | 
					      error('unrecognized color space object: "' + cs + "'");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -4820,7 +4820,7 @@ var ColorSpace = (function() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
var SeparationCS = (function() {
 | 
					var SeparationCS = (function() {
 | 
				
			||||||
  function constructor(base, tintFn) {
 | 
					  function constructor(base, tintFn) {
 | 
				
			||||||
    this.name = "Separation";
 | 
					    this.name = 'Separation';
 | 
				
			||||||
    this.numComps = 1;
 | 
					    this.numComps = 1;
 | 
				
			||||||
    this.defaultColor = [1];
 | 
					    this.defaultColor = [1];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -4987,41 +4987,41 @@ var DeviceCmykCS = (function() {
 | 
				
			|||||||
      r += 0.1373 * x;
 | 
					      r += 0.1373 * x;
 | 
				
			||||||
      g += 0.1216 * x;
 | 
					      g += 0.1216 * x;
 | 
				
			||||||
      b += 0.1255 * x;
 | 
					      b += 0.1255 * x;
 | 
				
			||||||
      x = c1 * m1 * y  * k1; // 0 0 1 0
 | 
					      x = c1 * m1 * y * k1; // 0 0 1 0
 | 
				
			||||||
      r += x;
 | 
					      r += x;
 | 
				
			||||||
      g += 0.9490 * x;
 | 
					      g += 0.9490 * x;
 | 
				
			||||||
      x = c1 * m1 * y  * k;  // 0 0 1 1
 | 
					      x = c1 * m1 * y * k;  // 0 0 1 1
 | 
				
			||||||
      r += 0.1098 * x;
 | 
					      r += 0.1098 * x;
 | 
				
			||||||
      g += 0.1020 * x;
 | 
					      g += 0.1020 * x;
 | 
				
			||||||
      x = c1 * m  * y1 * k1; // 0 1 0 0
 | 
					      x = c1 * m * y1 * k1; // 0 1 0 0
 | 
				
			||||||
      r += 0.9255 * x;
 | 
					      r += 0.9255 * x;
 | 
				
			||||||
      b += 0.5490 * x;
 | 
					      b += 0.5490 * x;
 | 
				
			||||||
      x = c1 * m  * y1 * k;  // 0 1 0 1
 | 
					      x = c1 * m * y1 * k;  // 0 1 0 1
 | 
				
			||||||
      r += 0.1412 * x;
 | 
					      r += 0.1412 * x;
 | 
				
			||||||
      x = c1 * m  * y  * k1; // 0 1 1 0
 | 
					      x = c1 * m * y * k1; // 0 1 1 0
 | 
				
			||||||
      r += 0.9294 * x;
 | 
					      r += 0.9294 * x;
 | 
				
			||||||
      g += 0.1098 * x;
 | 
					      g += 0.1098 * x;
 | 
				
			||||||
      b += 0.1412 * x;
 | 
					      b += 0.1412 * x;
 | 
				
			||||||
      x = c1 * m  * y  * k;  // 0 1 1 1
 | 
					      x = c1 * m * y * k;  // 0 1 1 1
 | 
				
			||||||
      r += 0.1333 * x;
 | 
					      r += 0.1333 * x;
 | 
				
			||||||
      x = c  * m1 * y1 * k1; // 1 0 0 0
 | 
					      x = c * m1 * y1 * k1; // 1 0 0 0
 | 
				
			||||||
      g += 0.6784 * x;
 | 
					      g += 0.6784 * x;
 | 
				
			||||||
      b += 0.9373 * x;
 | 
					      b += 0.9373 * x;
 | 
				
			||||||
      x = c  * m1 * y1 * k;  // 1 0 0 1
 | 
					      x = c * m1 * y1 * k;  // 1 0 0 1
 | 
				
			||||||
      g += 0.0588 * x;
 | 
					      g += 0.0588 * x;
 | 
				
			||||||
      b += 0.1412 * x;
 | 
					      b += 0.1412 * x;
 | 
				
			||||||
      x = c  * m1 * y  * k1; // 1 0 1 0
 | 
					      x = c * m1 * y * k1; // 1 0 1 0
 | 
				
			||||||
      g += 0.6510 * x;
 | 
					      g += 0.6510 * x;
 | 
				
			||||||
      b += 0.3137 * x;
 | 
					      b += 0.3137 * x;
 | 
				
			||||||
      x = c  * m1 * y  * k;  // 1 0 1 1
 | 
					      x = c * m1 * y * k;  // 1 0 1 1
 | 
				
			||||||
      g += 0.0745 * x;
 | 
					      g += 0.0745 * x;
 | 
				
			||||||
      x = c  * m  * y1 * k1; // 1 1 0 0
 | 
					      x = c * m * y1 * k1; // 1 1 0 0
 | 
				
			||||||
      r += 0.1804 * x;
 | 
					      r += 0.1804 * x;
 | 
				
			||||||
      g += 0.1922 * x;
 | 
					      g += 0.1922 * x;
 | 
				
			||||||
      b += 0.5725 * x;
 | 
					      b += 0.5725 * x;
 | 
				
			||||||
      x = c  * m  * y1 * k;  // 1 1 0 1
 | 
					      x = c * m * y1 * k;  // 1 1 0 1
 | 
				
			||||||
      b += 0.0078 * x;
 | 
					      b += 0.0078 * x;
 | 
				
			||||||
      x = c  * m  * y  * k1; // 1 1 1 0
 | 
					      x = c * m * y * k1; // 1 1 1 0
 | 
				
			||||||
      r += 0.2118 * x;
 | 
					      r += 0.2118 * x;
 | 
				
			||||||
      g += 0.2119 * x;
 | 
					      g += 0.2119 * x;
 | 
				
			||||||
      b += 0.2235 * x;
 | 
					      b += 0.2235 * x;
 | 
				
			||||||
@ -5037,7 +5037,7 @@ var DeviceCmykCS = (function() {
 | 
				
			|||||||
      for (var i = 0; i < length; i++) {
 | 
					      for (var i = 0; i < length; i++) {
 | 
				
			||||||
        var cmyk = [];
 | 
					        var cmyk = [];
 | 
				
			||||||
        for (var j = 0; j < 4; ++j)
 | 
					        for (var j = 0; j < 4; ++j)
 | 
				
			||||||
          cmyk.push(colorBuf[colorBufPos++]/255);
 | 
					          cmyk.push(colorBuf[colorBufPos++] / 255);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        var rgb = this.getRgb(cmyk);
 | 
					        var rgb = this.getRgb(cmyk);
 | 
				
			||||||
        for (var j = 0; j < 3; ++j)
 | 
					        for (var j = 0; j < 3; ++j)
 | 
				
			||||||
@ -5061,7 +5061,7 @@ var Pattern = (function() {
 | 
				
			|||||||
    // Output: the appropriate fillStyle or strokeStyle
 | 
					    // Output: the appropriate fillStyle or strokeStyle
 | 
				
			||||||
    getPattern: function pattern_getStyle(ctx) {
 | 
					    getPattern: function pattern_getStyle(ctx) {
 | 
				
			||||||
      error('Should not call Pattern.getStyle');
 | 
					      error('Should not call Pattern.getStyle');
 | 
				
			||||||
    },
 | 
					    }
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  constructor.parse = function pattern_parse(args, cs, xref, res, ctx) {
 | 
					  constructor.parse = function pattern_parse(args, cs, xref, res, ctx) {
 | 
				
			||||||
@ -5069,17 +5069,17 @@ var Pattern = (function() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    var patternName = args[length - 1];
 | 
					    var patternName = args[length - 1];
 | 
				
			||||||
    if (!IsName(patternName))
 | 
					    if (!IsName(patternName))
 | 
				
			||||||
      error("Bad args to getPattern");
 | 
					      error('Bad args to getPattern');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    var patternRes = xref.fetchIfRef(res.get("Pattern"));
 | 
					    var patternRes = xref.fetchIfRef(res.get('Pattern'));
 | 
				
			||||||
    if (!patternRes)
 | 
					    if (!patternRes)
 | 
				
			||||||
      error("Unable to find pattern resource");
 | 
					      error('Unable to find pattern resource');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    var pattern = xref.fetchIfRef(patternRes.get(patternName.name));
 | 
					    var pattern = xref.fetchIfRef(patternRes.get(patternName.name));
 | 
				
			||||||
    var dict = IsStream(pattern) ? pattern.dict : pattern;
 | 
					    var dict = IsStream(pattern) ? pattern.dict : pattern;
 | 
				
			||||||
    var typeNum = dict.get("PatternType");
 | 
					    var typeNum = dict.get('PatternType');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    switch(typeNum) {
 | 
					    switch (typeNum) {
 | 
				
			||||||
    case 1:
 | 
					    case 1:
 | 
				
			||||||
      var base = cs.base;
 | 
					      var base = cs.base;
 | 
				
			||||||
      var color;
 | 
					      var color;
 | 
				
			||||||
@ -5201,9 +5201,9 @@ var RadialAxialShading = (function() {
 | 
				
			|||||||
      } else if (type == 3) {
 | 
					      } else if (type == 3) {
 | 
				
			||||||
        var p0 = [coordsArr[0], coordsArr[1]];
 | 
					        var p0 = [coordsArr[0], coordsArr[1]];
 | 
				
			||||||
        var p1 = [coordsArr[3], coordsArr[4]];
 | 
					        var p1 = [coordsArr[3], coordsArr[4]];
 | 
				
			||||||
        var r0 = coordsArr[2], r1 = coordsArr[5]
 | 
					        var r0 = coordsArr[2], r1 = coordsArr[5];
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        error()
 | 
					        error();
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      var matrix = this.matrix;
 | 
					      var matrix = this.matrix;
 | 
				
			||||||
@ -5244,7 +5244,7 @@ var RadialAxialShading = (function() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
var TilingPattern = (function() {
 | 
					var TilingPattern = (function() {
 | 
				
			||||||
  var PAINT_TYPE_COLORED = 1, PAINT_TYPE_UNCOLORED = 2;
 | 
					  var PAINT_TYPE_COLORED = 1, PAINT_TYPE_UNCOLORED = 2;
 | 
				
			||||||
  
 | 
					
 | 
				
			||||||
  function constructor(pattern, code, dict, color, xref, ctx) {
 | 
					  function constructor(pattern, code, dict, color, xref, ctx) {
 | 
				
			||||||
      function multiply(m, tm) {
 | 
					      function multiply(m, tm) {
 | 
				
			||||||
        var a = m[0] * tm[0] + m[1] * tm[2];
 | 
					        var a = m[0] * tm[0] + m[1] * tm[2];
 | 
				
			||||||
@ -5258,7 +5258,7 @@ var TilingPattern = (function() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      TODO('TilingType');
 | 
					      TODO('TilingType');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      this.matrix = dict.get("Matrix");
 | 
					      this.matrix = dict.get('Matrix');
 | 
				
			||||||
      this.curMatrix = ctx.mozCurrentTransform;
 | 
					      this.curMatrix = ctx.mozCurrentTransform;
 | 
				
			||||||
      this.invMatrix = ctx.mozCurrentTransformInverse;
 | 
					      this.invMatrix = ctx.mozCurrentTransformInverse;
 | 
				
			||||||
      this.ctx = ctx;
 | 
					      this.ctx = ctx;
 | 
				
			||||||
@ -5272,14 +5272,14 @@ var TilingPattern = (function() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      var topLeft = [x0, y0];
 | 
					      var topLeft = [x0, y0];
 | 
				
			||||||
      // we want the canvas to be as large as the step size
 | 
					      // we want the canvas to be as large as the step size
 | 
				
			||||||
      var botRight = [x0 + xstep, y0 + ystep]
 | 
					      var botRight = [x0 + xstep, y0 + ystep];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      var width = botRight[0] - topLeft[0];
 | 
					      var width = botRight[0] - topLeft[0];
 | 
				
			||||||
      var height = botRight[1] - topLeft[1];
 | 
					      var height = botRight[1] - topLeft[1];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      // TODO: hack to avoid OOM, we would idealy compute the tiling
 | 
					      // TODO: hack to avoid OOM, we would idealy compute the tiling
 | 
				
			||||||
      // pattern to be only as large as the acual size in device space
 | 
					      // pattern to be only as large as the acual size in device space
 | 
				
			||||||
      // This could be computed with .mozCurrentTransform, but still 
 | 
					      // This could be computed with .mozCurrentTransform, but still
 | 
				
			||||||
      // needs to be implemented
 | 
					      // needs to be implemented
 | 
				
			||||||
      while (Math.abs(width) > 512 || Math.abs(height) > 512) {
 | 
					      while (Math.abs(width) > 512 || Math.abs(height) > 512) {
 | 
				
			||||||
        width = 512;
 | 
					        width = 512;
 | 
				
			||||||
@ -5676,7 +5676,7 @@ var PDFFunction = (function() {
 | 
				
			|||||||
      var c0 = dict.get('C0') || [0];
 | 
					      var c0 = dict.get('C0') || [0];
 | 
				
			||||||
      var c1 = dict.get('C1') || [1];
 | 
					      var c1 = dict.get('C1') || [1];
 | 
				
			||||||
      var n = dict.get('N');
 | 
					      var n = dict.get('N');
 | 
				
			||||||
      
 | 
					
 | 
				
			||||||
      if (!IsArray(c0) || !IsArray(c1))
 | 
					      if (!IsArray(c0) || !IsArray(c1))
 | 
				
			||||||
        error('Illegal dictionary for interpolated function');
 | 
					        error('Illegal dictionary for interpolated function');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -5685,7 +5685,7 @@ var PDFFunction = (function() {
 | 
				
			|||||||
      for (var i = 0; i < length; ++i)
 | 
					      for (var i = 0; i < length; ++i)
 | 
				
			||||||
        diff.push(c1[i] - c0[i]);
 | 
					        diff.push(c1[i] - c0[i]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      this.func = function (args) {
 | 
					      this.func = function(args) {
 | 
				
			||||||
        var x = args[0];
 | 
					        var x = args[0];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        var out = [];
 | 
					        var out = [];
 | 
				
			||||||
@ -5697,11 +5697,11 @@ var PDFFunction = (function() {
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
    constructStiched: function() {
 | 
					    constructStiched: function() {
 | 
				
			||||||
      TODO('unhandled type of function');
 | 
					      TODO('unhandled type of function');
 | 
				
			||||||
      this.func = function () { return [ 255, 105, 180 ]; }
 | 
					      this.func = function() { return [255, 105, 180]; }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    constructPostScript: function() {
 | 
					    constructPostScript: function() {
 | 
				
			||||||
      TODO('unhandled type of function');
 | 
					      TODO('unhandled type of function');
 | 
				
			||||||
      this.func = function () { return [ 255, 105, 180 ]; }
 | 
					      this.func = function() { return [255, 105, 180]; }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -41,15 +41,15 @@ var PDFView = {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  set page(val) {
 | 
					  set page(val) {
 | 
				
			||||||
    var pages = this.pages;
 | 
					    var pages = this.pages;
 | 
				
			||||||
    var input = document.getElementById("pageNumber");
 | 
					    var input = document.getElementById('pageNumber');
 | 
				
			||||||
    if (val <= 0 || val > pages.length) {
 | 
					    if (val <= 0 || val > pages.length) {
 | 
				
			||||||
      input.value = this.page;
 | 
					      input.value = this.page;
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  
 | 
					
 | 
				
			||||||
    document.location.hash = val;
 | 
					    document.location.hash = val;
 | 
				
			||||||
    document.getElementById("previous").disabled = (val == 1);
 | 
					    document.getElementById('previous').disabled = (val == 1);
 | 
				
			||||||
    document.getElementById("next").disabled = (val == pages.length);
 | 
					    document.getElementById('next').disabled = (val == pages.length);
 | 
				
			||||||
    if (input.value == val)
 | 
					    if (input.value == val)
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -62,7 +62,7 @@ var PDFView = {
 | 
				
			|||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  open: function(url, scale) {
 | 
					  open: function(url, scale) {
 | 
				
			||||||
    if (url.indexOf("http") == 0)
 | 
					    if (url.indexOf('http') == 0)
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    document.title = url;
 | 
					    document.title = url;
 | 
				
			||||||
@ -106,7 +106,7 @@ var PDFView = {
 | 
				
			|||||||
      var page = pdf.getPage(i);
 | 
					      var page = pdf.getPage(i);
 | 
				
			||||||
      pages.push(new PageView(container, page, i, page.width, page.height, page.stats));
 | 
					      pages.push(new PageView(container, page, i, page.width, page.height, page.stats));
 | 
				
			||||||
      thumbnails.push(new ThumbnailView(sidebar, pages[i - 1]));
 | 
					      thumbnails.push(new ThumbnailView(sidebar, pages[i - 1]));
 | 
				
			||||||
    };
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    this.scale = (scale || kDefaultScale);
 | 
					    this.scale = (scale || kDefaultScale);
 | 
				
			||||||
    this.page = parseInt(document.location.hash.substring(1)) || 1;
 | 
					    this.page = parseInt(document.location.hash.substring(1)) || 1;
 | 
				
			||||||
@ -136,7 +136,7 @@ var PDFView = {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return visiblePages;
 | 
					    return visiblePages;
 | 
				
			||||||
  },
 | 
					  }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var PageView = function(container, content, id, width, height, stats) {
 | 
					var PageView = function(container, content, id, width, height, stats) {
 | 
				
			||||||
@ -157,7 +157,7 @@ var PageView = function(container, content, id, width, height, stats) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  this.update = function(scale) {
 | 
					  this.update = function(scale) {
 | 
				
			||||||
    this.scale = scale || this.scale;
 | 
					    this.scale = scale || this.scale;
 | 
				
			||||||
    div.style.width =  (this.width * this.scale)+ 'px';
 | 
					    div.style.width = (this.width * this.scale) + 'px';
 | 
				
			||||||
    div.style.height = (this.height * this.scale) + 'px';
 | 
					    div.style.height = (this.height * this.scale) + 'px';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    while (div.hasChildNodes())
 | 
					    while (div.hasChildNodes())
 | 
				
			||||||
@ -192,7 +192,7 @@ var PageView = function(container, content, id, width, height, stats) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  this.updateStats = function() {
 | 
					  this.updateStats = function() {
 | 
				
			||||||
    var t1 = stats.compile, t2 = stats.fonts, t3 = stats.render;
 | 
					    var t1 = stats.compile, t2 = stats.fonts, t3 = stats.render;
 | 
				
			||||||
    var str = 'Time to compile/fonts/render: ' + 
 | 
					    var str = 'Time to compile/fonts/render: ' +
 | 
				
			||||||
              (t1 - stats.begin) + '/' + (t2 - t1) + '/' + (t3 - t2) + ' ms';
 | 
					              (t1 - stats.begin) + '/' + (t2 - t1) + '/' + (t3 - t2) + ' ms';
 | 
				
			||||||
    document.getElementById('info').innerHTML = str;
 | 
					    document.getElementById('info').innerHTML = str;
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
@ -270,11 +270,11 @@ window.addEventListener('scroll', function(evt) {
 | 
				
			|||||||
    PDFView.page = firstPage.id;
 | 
					    PDFView.page = firstPage.id;
 | 
				
			||||||
}, true);
 | 
					}, true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
window.addEventListener("hashchange", function(evt) {
 | 
					window.addEventListener('hashchange', function(evt) {
 | 
				
			||||||
  PDFView.page = PDFView.page;
 | 
					  PDFView.page = PDFView.page;
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
window.addEventListener("change", function(evt) {
 | 
					window.addEventListener('change', function(evt) {
 | 
				
			||||||
  var files = evt.target.files;
 | 
					  var files = evt.target.files;
 | 
				
			||||||
  if (!files || files.length == 0)
 | 
					  if (!files || files.length == 0)
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
@ -300,7 +300,7 @@ window.addEventListener("change", function(evt) {
 | 
				
			|||||||
  document.location.hash = 1;
 | 
					  document.location.hash = 1;
 | 
				
			||||||
}, true);
 | 
					}, true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
window.addEventListener("transitionend", function(evt) {
 | 
					window.addEventListener('transitionend', function(evt) {
 | 
				
			||||||
  var pageIndex = 0;
 | 
					  var pageIndex = 0;
 | 
				
			||||||
  var pagesCount = PDFView.pages.length;
 | 
					  var pagesCount = PDFView.pages.length;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -308,7 +308,7 @@ window.addEventListener("transitionend", function(evt) {
 | 
				
			|||||||
  container._interval = window.setInterval(function() {
 | 
					  container._interval = window.setInterval(function() {
 | 
				
			||||||
    if (pageIndex >= pagesCount)
 | 
					    if (pageIndex >= pagesCount)
 | 
				
			||||||
      return window.clearInterval(container._interval);
 | 
					      return window.clearInterval(container._interval);
 | 
				
			||||||
        
 | 
					
 | 
				
			||||||
    PDFView.thumbnails[pageIndex++].draw();
 | 
					    PDFView.thumbnails[pageIndex++].draw();
 | 
				
			||||||
  }, 500);
 | 
					  }, 500);
 | 
				
			||||||
}, true);
 | 
					}, true);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user