pdfjs-dist 2.1.266 → 2.5.207

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pdfjs-dist might be problematic. Click here for more details.

Files changed (191) hide show
  1. package/CODE_OF_CONDUCT.md +15 -0
  2. package/README.md +4 -0
  3. package/bower.json +1 -1
  4. package/build/pdf.js +8382 -18492
  5. package/build/pdf.js.map +1 -1
  6. package/build/pdf.min.js +22 -1
  7. package/build/pdf.worker.entry.js +5 -3
  8. package/build/pdf.worker.js +20417 -29816
  9. package/build/pdf.worker.js.map +1 -1
  10. package/build/pdf.worker.min.js +22 -1
  11. package/es5/build/pdf.js +25688 -0
  12. package/es5/build/pdf.js.map +1 -0
  13. package/{lib/shared/global_scope.js → es5/build/pdf.worker.entry.js} +5 -10
  14. package/es5/build/pdf.worker.js +58239 -0
  15. package/es5/build/pdf.worker.js.map +1 -0
  16. package/es5/web/images/annotation-check.svg +11 -0
  17. package/es5/web/images/annotation-comment.svg +16 -0
  18. package/es5/web/images/annotation-help.svg +26 -0
  19. package/es5/web/images/annotation-insert.svg +10 -0
  20. package/es5/web/images/annotation-key.svg +11 -0
  21. package/es5/web/images/annotation-newparagraph.svg +11 -0
  22. package/es5/web/images/annotation-noicon.svg +7 -0
  23. package/es5/web/images/annotation-note.svg +42 -0
  24. package/es5/web/images/annotation-paragraph.svg +16 -0
  25. package/es5/web/images/loading-icon.gif +0 -0
  26. package/es5/web/images/shadow.png +0 -0
  27. package/es5/web/images/texture.png +0 -0
  28. package/es5/web/pdf_viewer.css +403 -0
  29. package/es5/web/pdf_viewer.js +7742 -0
  30. package/es5/web/pdf_viewer.js.map +1 -0
  31. package/image_decoders/pdf.image_decoders.js +1475 -4897
  32. package/image_decoders/pdf.image_decoders.js.map +1 -1
  33. package/image_decoders/pdf.image_decoders.min.js +22 -1
  34. package/lib/README.md +7 -0
  35. package/lib/core/annotation.js +750 -899
  36. package/lib/core/arithmetic_decoder.js +81 -97
  37. package/lib/core/bidi.js +54 -46
  38. package/lib/core/ccitt.js +88 -81
  39. package/lib/core/ccitt_stream.js +15 -14
  40. package/lib/core/cff_parser.js +235 -183
  41. package/lib/core/charsets.js +4 -4
  42. package/lib/core/chunked_stream.js +447 -542
  43. package/lib/core/cmap.js +222 -264
  44. package/lib/core/colorspace.js +699 -863
  45. package/lib/core/core_utils.js +152 -0
  46. package/lib/core/crypto.js +379 -437
  47. package/lib/core/document.js +573 -660
  48. package/lib/core/encodings.js +15 -15
  49. package/lib/core/evaluator.js +1103 -868
  50. package/lib/core/font_renderer.js +135 -178
  51. package/lib/core/fonts.js +570 -491
  52. package/lib/core/function.js +291 -288
  53. package/lib/core/glyphlist.js +4527 -4526
  54. package/lib/core/image.js +145 -149
  55. package/lib/core/image_utils.js +170 -0
  56. package/lib/core/jbig2.js +325 -316
  57. package/lib/core/jbig2_stream.js +18 -17
  58. package/lib/core/jpeg_stream.js +21 -26
  59. package/lib/core/jpg.js +284 -232
  60. package/lib/core/jpx.js +161 -143
  61. package/lib/core/jpx_stream.js +28 -28
  62. package/lib/core/metrics.js +2929 -2929
  63. package/lib/core/murmurhash3.js +90 -101
  64. package/lib/core/obj.js +1183 -1157
  65. package/lib/core/operator_list.js +99 -67
  66. package/lib/core/parser.js +972 -911
  67. package/lib/core/pattern.js +87 -70
  68. package/lib/core/pdf_manager.js +150 -315
  69. package/lib/core/primitives.js +83 -56
  70. package/lib/core/ps_parser.js +175 -214
  71. package/lib/core/standard_fonts.js +237 -236
  72. package/lib/core/stream.js +94 -74
  73. package/lib/core/type1_parser.js +87 -69
  74. package/lib/core/unicode.js +1654 -1654
  75. package/lib/core/worker.js +193 -390
  76. package/lib/core/worker_stream.js +168 -0
  77. package/lib/display/annotation_layer.js +741 -972
  78. package/lib/display/api.js +1500 -1791
  79. package/lib/display/api_compatibility.js +12 -17
  80. package/lib/display/canvas.js +165 -165
  81. package/lib/display/content_disposition.js +40 -59
  82. package/lib/display/display_utils.js +515 -0
  83. package/lib/display/fetch_stream.js +183 -298
  84. package/lib/display/font_loader.js +273 -413
  85. package/lib/display/metadata.js +86 -98
  86. package/lib/display/network.js +266 -359
  87. package/lib/display/network_utils.js +25 -18
  88. package/lib/display/node_stream.js +285 -458
  89. package/lib/display/pattern_helper.js +113 -65
  90. package/lib/display/svg.js +1166 -901
  91. package/lib/display/text_layer.js +156 -132
  92. package/lib/display/transport_stream.js +262 -278
  93. package/lib/display/webgl.js +70 -83
  94. package/lib/display/worker_options.js +3 -3
  95. package/lib/display/xml_parser.js +303 -392
  96. package/lib/examples/node/domstubs.js +40 -37
  97. package/lib/pdf.js +226 -59
  98. package/lib/pdf.worker.js +14 -6
  99. package/lib/shared/compatibility.js +3 -246
  100. package/lib/shared/is_node.js +7 -6
  101. package/lib/shared/message_handler.js +327 -332
  102. package/lib/shared/util.js +266 -416
  103. package/lib/test/unit/annotation_spec.js +1555 -701
  104. package/lib/test/unit/api_spec.js +802 -604
  105. package/lib/test/unit/bidi_spec.js +7 -7
  106. package/lib/test/unit/cff_parser_spec.js +84 -69
  107. package/lib/test/unit/clitests_helper.js +7 -9
  108. package/lib/test/unit/cmap_spec.js +74 -76
  109. package/lib/test/unit/colorspace_spec.js +166 -161
  110. package/lib/test/unit/core_utils_spec.js +211 -0
  111. package/lib/test/unit/crypto_spec.js +181 -181
  112. package/lib/test/unit/custom_spec.js +20 -22
  113. package/lib/test/unit/display_svg_spec.js +34 -39
  114. package/lib/test/unit/display_utils_spec.js +263 -0
  115. package/lib/test/unit/document_spec.js +16 -21
  116. package/lib/test/unit/encodings_spec.js +12 -34
  117. package/lib/test/unit/evaluator_spec.js +83 -83
  118. package/lib/test/unit/fetch_stream_spec.js +111 -0
  119. package/lib/test/unit/function_spec.js +206 -204
  120. package/lib/test/unit/jasmine-boot.js +46 -30
  121. package/lib/test/unit/message_handler_spec.js +173 -159
  122. package/lib/test/unit/metadata_spec.js +69 -69
  123. package/lib/test/unit/murmurhash3_spec.js +12 -12
  124. package/lib/test/unit/network_spec.js +13 -61
  125. package/lib/test/unit/network_utils_spec.js +183 -119
  126. package/lib/test/unit/node_stream_spec.js +78 -92
  127. package/lib/test/unit/parser_spec.js +172 -114
  128. package/lib/test/unit/pdf_find_controller_spec.js +55 -86
  129. package/lib/test/unit/pdf_find_utils_spec.js +32 -32
  130. package/lib/test/unit/pdf_history_spec.js +32 -32
  131. package/lib/test/unit/primitives_spec.js +140 -125
  132. package/lib/test/unit/stream_spec.js +16 -14
  133. package/lib/test/unit/test_utils.js +131 -143
  134. package/lib/test/unit/testreporter.js +19 -19
  135. package/lib/test/unit/type1_parser_spec.js +42 -42
  136. package/lib/test/unit/ui_utils_spec.js +297 -459
  137. package/lib/test/unit/unicode_spec.js +38 -38
  138. package/lib/test/unit/util_spec.js +121 -305
  139. package/lib/web/annotation_layer_builder.js +66 -103
  140. package/lib/web/app.js +1328 -1214
  141. package/lib/web/app_options.js +105 -107
  142. package/lib/web/base_viewer.js +824 -838
  143. package/lib/web/chromecom.js +165 -252
  144. package/lib/web/debugger.js +149 -205
  145. package/lib/web/download_manager.js +39 -55
  146. package/lib/web/firefox_print_service.js +37 -27
  147. package/lib/web/firefoxcom.js +212 -363
  148. package/lib/web/genericcom.js +26 -108
  149. package/lib/web/genericl10n.js +24 -153
  150. package/lib/web/grab_to_pan.js +32 -30
  151. package/lib/web/interfaces.js +80 -254
  152. package/lib/web/overlay_manager.js +70 -246
  153. package/lib/web/password_prompt.js +38 -64
  154. package/lib/web/pdf_attachment_viewer.js +113 -131
  155. package/lib/web/pdf_cursor_tools.js +75 -102
  156. package/lib/web/pdf_document_properties.js +221 -306
  157. package/lib/web/pdf_find_bar.js +136 -170
  158. package/lib/web/pdf_find_controller.js +491 -548
  159. package/lib/web/pdf_find_utils.js +13 -13
  160. package/lib/web/pdf_history.js +397 -406
  161. package/lib/web/pdf_link_service.js +304 -348
  162. package/lib/web/pdf_outline_viewer.js +140 -175
  163. package/lib/web/pdf_page_view.js +452 -523
  164. package/lib/web/pdf_presentation_mode.js +308 -357
  165. package/lib/web/pdf_print_service.js +90 -104
  166. package/lib/web/pdf_rendering_queue.js +84 -108
  167. package/lib/web/pdf_sidebar.js +276 -306
  168. package/lib/web/pdf_sidebar_resizer.js +92 -119
  169. package/lib/web/pdf_single_page_viewer.js +77 -126
  170. package/lib/web/pdf_thumbnail_view.js +276 -297
  171. package/lib/web/pdf_thumbnail_viewer.js +186 -206
  172. package/lib/web/pdf_viewer.component.js +20 -21
  173. package/lib/web/pdf_viewer.js +55 -115
  174. package/lib/web/preferences.js +82 -286
  175. package/lib/web/secondary_toolbar.js +164 -196
  176. package/lib/web/text_layer_builder.js +282 -339
  177. package/lib/web/toolbar.js +217 -210
  178. package/lib/web/ui_utils.js +267 -420
  179. package/lib/web/view_history.js +52 -226
  180. package/lib/web/viewer_compatibility.js +21 -6
  181. package/package.json +2 -9
  182. package/web/pdf_viewer.css +35 -25
  183. package/web/pdf_viewer.js +3489 -4855
  184. package/web/pdf_viewer.js.map +1 -1
  185. package/webpack.js +14 -5
  186. package/external/streams/streams-lib.js +0 -3962
  187. package/external/url/url-lib.js +0 -627
  188. package/lib/display/dom_utils.js +0 -494
  189. package/lib/shared/streams_polyfill.js +0 -43
  190. package/lib/shared/url_polyfill.js +0 -56
  191. package/lib/test/unit/dom_utils_spec.js +0 -89
package/lib/core/jpg.js CHANGED
@@ -2,7 +2,7 @@
2
2
  * @licstart The following is the entire license notice for the
3
3
  * Javascript code in this page
4
4
  *
5
- * Copyright 2018 Mozilla Foundation
5
+ * Copyright 2020 Mozilla Foundation
6
6
  *
7
7
  * Licensed under the Apache License, Version 2.0 (the "License");
8
8
  * you may not use this file except in compliance with the License.
@@ -26,43 +26,26 @@ Object.defineProperty(exports, "__esModule", {
26
26
  });
27
27
  exports.JpegImage = void 0;
28
28
 
29
- var _util = require("../shared/util");
29
+ var _util = require("../shared/util.js");
30
30
 
31
- function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
31
+ var _core_utils = require("./core_utils.js");
32
32
 
33
- var JpegError = function JpegErrorClosure() {
34
- function JpegError(msg) {
35
- this.message = 'JPEG error: ' + msg;
33
+ class JpegError extends _util.BaseException {
34
+ constructor(msg) {
35
+ super(`JPEG error: ${msg}`);
36
36
  }
37
37
 
38
- JpegError.prototype = new Error();
39
- JpegError.prototype.name = 'JpegError';
40
- JpegError.constructor = JpegError;
41
- return JpegError;
42
- }();
38
+ }
43
39
 
44
- var DNLMarkerError = function DNLMarkerErrorClosure() {
45
- function DNLMarkerError(message, scanLines) {
46
- this.message = message;
40
+ class DNLMarkerError extends _util.BaseException {
41
+ constructor(message, scanLines) {
42
+ super(message);
47
43
  this.scanLines = scanLines;
48
44
  }
49
45
 
50
- DNLMarkerError.prototype = new Error();
51
- DNLMarkerError.prototype.name = 'DNLMarkerError';
52
- DNLMarkerError.constructor = DNLMarkerError;
53
- return DNLMarkerError;
54
- }();
55
-
56
- var EOIMarkerError = function EOIMarkerErrorClosure() {
57
- function EOIMarkerError(message) {
58
- this.message = message;
59
- }
46
+ }
60
47
 
61
- EOIMarkerError.prototype = new Error();
62
- EOIMarkerError.prototype.name = 'EOIMarkerError';
63
- EOIMarkerError.constructor = EOIMarkerError;
64
- return EOIMarkerError;
65
- }();
48
+ class EOIMarkerError extends _util.BaseException {}
66
49
 
67
50
  var JpegImage = function JpegImageClosure() {
68
51
  var dctZigZag = new Uint8Array([0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63]);
@@ -75,13 +58,10 @@ var JpegImage = function JpegImageClosure() {
75
58
  var dctSqrt2 = 5793;
76
59
  var dctSqrt1d2 = 2896;
77
60
 
78
- function JpegImage() {
79
- var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
80
- _ref$decodeTransform = _ref.decodeTransform,
81
- decodeTransform = _ref$decodeTransform === void 0 ? null : _ref$decodeTransform,
82
- _ref$colorTransform = _ref.colorTransform,
83
- colorTransform = _ref$colorTransform === void 0 ? -1 : _ref$colorTransform;
84
-
61
+ function JpegImage({
62
+ decodeTransform = null,
63
+ colorTransform = -1
64
+ } = {}) {
85
65
  this._decodeTransform = decodeTransform;
86
66
  this._colorTransform = colorTransform;
87
67
  }
@@ -145,12 +125,11 @@ var JpegImage = function JpegImageClosure() {
145
125
  return 64 * ((component.blocksPerLine + 1) * row + col);
146
126
  }
147
127
 
148
- function decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successivePrev, successive) {
149
- var parseDNLMarker = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : false;
128
+ function decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successivePrev, successive, parseDNLMarker = false) {
150
129
  var mcusPerLine = frame.mcusPerLine;
151
130
  var progressive = frame.progressive;
152
- var startOffset = offset,
153
- bitsData = 0,
131
+ const startOffset = offset;
132
+ let bitsData = 0,
154
133
  bitsCount = 0;
155
134
 
156
135
  function readBit() {
@@ -161,22 +140,31 @@ var JpegImage = function JpegImageClosure() {
161
140
 
162
141
  bitsData = data[offset++];
163
142
 
164
- if (bitsData === 0xFF) {
143
+ if (bitsData === 0xff) {
165
144
  var nextByte = data[offset++];
166
145
 
167
146
  if (nextByte) {
168
- if (nextByte === 0xDC && parseDNLMarker) {
147
+ if (nextByte === 0xdc && parseDNLMarker) {
148
+ offset += 2;
149
+ const scanLines = (0, _core_utils.readUint16)(data, offset);
169
150
  offset += 2;
170
- var scanLines = data[offset++] << 8 | data[offset++];
171
151
 
172
152
  if (scanLines > 0 && scanLines !== frame.scanLines) {
173
- throw new DNLMarkerError('Found DNL marker (0xFFDC) while parsing scan data', scanLines);
153
+ throw new DNLMarkerError("Found DNL marker (0xFFDC) while parsing scan data", scanLines);
174
154
  }
175
- } else if (nextByte === 0xD9) {
176
- throw new EOIMarkerError('Found EOI marker (0xFFD9) while parsing scan data');
155
+ } else if (nextByte === 0xd9) {
156
+ if (parseDNLMarker) {
157
+ const maybeScanLines = blockRow * 8;
158
+
159
+ if (maybeScanLines > 0 && maybeScanLines < frame.scanLines / 10) {
160
+ throw new DNLMarkerError("Found EOI marker (0xFFD9) while parsing scan data, " + "possibly caused by incorrect `scanLines` parameter", maybeScanLines);
161
+ }
162
+ }
163
+
164
+ throw new EOIMarkerError("Found EOI marker (0xFFD9) while parsing scan data");
177
165
  }
178
166
 
179
- throw new JpegError("unexpected marker ".concat((bitsData << 8 | nextByte).toString(16)));
167
+ throw new JpegError(`unexpected marker ${(bitsData << 8 | nextByte).toString(16)}`);
180
168
  }
181
169
  }
182
170
 
@@ -190,13 +178,15 @@ var JpegImage = function JpegImageClosure() {
190
178
  while (true) {
191
179
  node = node[readBit()];
192
180
 
193
- if (typeof node === 'number') {
194
- return node;
195
- }
181
+ switch (typeof node) {
182
+ case "number":
183
+ return node;
196
184
 
197
- if (_typeof(node) !== 'object') {
198
- throw new JpegError('invalid huffman sequence');
185
+ case "object":
186
+ continue;
199
187
  }
188
+
189
+ throw new JpegError("invalid huffman sequence");
200
190
  }
201
191
  }
202
192
 
@@ -225,10 +215,10 @@ var JpegImage = function JpegImageClosure() {
225
215
  return n + (-1 << length) + 1;
226
216
  }
227
217
 
228
- function decodeBaseline(component, offset) {
218
+ function decodeBaseline(component, blockOffset) {
229
219
  var t = decodeHuffman(component.huffmanTableDC);
230
220
  var diff = t === 0 ? 0 : receiveAndExtend(t);
231
- component.blockData[offset] = component.pred += diff;
221
+ component.blockData[blockOffset] = component.pred += diff;
232
222
  var k = 1;
233
223
 
234
224
  while (k < 64) {
@@ -247,24 +237,24 @@ var JpegImage = function JpegImageClosure() {
247
237
 
248
238
  k += r;
249
239
  var z = dctZigZag[k];
250
- component.blockData[offset + z] = receiveAndExtend(s);
240
+ component.blockData[blockOffset + z] = receiveAndExtend(s);
251
241
  k++;
252
242
  }
253
243
  }
254
244
 
255
- function decodeDCFirst(component, offset) {
245
+ function decodeDCFirst(component, blockOffset) {
256
246
  var t = decodeHuffman(component.huffmanTableDC);
257
247
  var diff = t === 0 ? 0 : receiveAndExtend(t) << successive;
258
- component.blockData[offset] = component.pred += diff;
248
+ component.blockData[blockOffset] = component.pred += diff;
259
249
  }
260
250
 
261
- function decodeDCSuccessive(component, offset) {
262
- component.blockData[offset] |= readBit() << successive;
251
+ function decodeDCSuccessive(component, blockOffset) {
252
+ component.blockData[blockOffset] |= readBit() << successive;
263
253
  }
264
254
 
265
255
  var eobrun = 0;
266
256
 
267
- function decodeACFirst(component, offset) {
257
+ function decodeACFirst(component, blockOffset) {
268
258
  if (eobrun > 0) {
269
259
  eobrun--;
270
260
  return;
@@ -290,7 +280,7 @@ var JpegImage = function JpegImageClosure() {
290
280
 
291
281
  k += r;
292
282
  var z = dctZigZag[k];
293
- component.blockData[offset + z] = receiveAndExtend(s) * (1 << successive);
283
+ component.blockData[blockOffset + z] = receiveAndExtend(s) * (1 << successive);
294
284
  k++;
295
285
  }
296
286
  }
@@ -298,7 +288,7 @@ var JpegImage = function JpegImageClosure() {
298
288
  var successiveACState = 0,
299
289
  successiveACNextValue;
300
290
 
301
- function decodeACSuccessive(component, offset) {
291
+ function decodeACSuccessive(component, blockOffset) {
302
292
  var k = spectralStart;
303
293
  var e = spectralEnd;
304
294
  var r = 0;
@@ -306,8 +296,8 @@ var JpegImage = function JpegImageClosure() {
306
296
  var rs;
307
297
 
308
298
  while (k <= e) {
309
- var offsetZ = offset + dctZigZag[k];
310
- var sign = component.blockData[offsetZ] < 0 ? -1 : 1;
299
+ const offsetZ = blockOffset + dctZigZag[k];
300
+ const sign = component.blockData[offsetZ] < 0 ? -1 : 1;
311
301
 
312
302
  switch (successiveACState) {
313
303
  case 0:
@@ -325,7 +315,7 @@ var JpegImage = function JpegImageClosure() {
325
315
  }
326
316
  } else {
327
317
  if (s !== 1) {
328
- throw new JpegError('invalid ACn encoding');
318
+ throw new JpegError("invalid ACn encoding");
329
319
  }
330
320
 
331
321
  successiveACNextValue = receiveAndExtend(s);
@@ -378,20 +368,22 @@ var JpegImage = function JpegImageClosure() {
378
368
  }
379
369
  }
380
370
 
371
+ let blockRow = 0;
372
+
381
373
  function decodeMcu(component, decode, mcu, row, col) {
382
374
  var mcuRow = mcu / mcusPerLine | 0;
383
375
  var mcuCol = mcu % mcusPerLine;
384
- var blockRow = mcuRow * component.v + row;
376
+ blockRow = mcuRow * component.v + row;
385
377
  var blockCol = mcuCol * component.h + col;
386
- var offset = getBlockBufferOffset(component, blockRow, blockCol);
387
- decode(component, offset);
378
+ const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);
379
+ decode(component, blockOffset);
388
380
  }
389
381
 
390
382
  function decodeBlock(component, decode, mcu) {
391
- var blockRow = mcu / component.blocksPerLine | 0;
383
+ blockRow = mcu / component.blocksPerLine | 0;
392
384
  var blockCol = mcu % component.blocksPerLine;
393
- var offset = getBlockBufferOffset(component, blockRow, blockCol);
394
- decode(component, offset);
385
+ const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);
386
+ decode(component, blockOffset);
395
387
  }
396
388
 
397
389
  var componentsLength = components.length;
@@ -420,68 +412,62 @@ var JpegImage = function JpegImageClosure() {
420
412
 
421
413
  var h, v;
422
414
 
423
- while (mcu < mcuExpected) {
415
+ while (mcu <= mcuExpected) {
424
416
  var mcuToRead = resetInterval ? Math.min(mcuExpected - mcu, resetInterval) : mcuExpected;
425
417
 
426
- for (i = 0; i < componentsLength; i++) {
427
- components[i].pred = 0;
428
- }
418
+ if (mcuToRead > 0) {
419
+ for (i = 0; i < componentsLength; i++) {
420
+ components[i].pred = 0;
421
+ }
429
422
 
430
- eobrun = 0;
423
+ eobrun = 0;
431
424
 
432
- if (componentsLength === 1) {
433
- component = components[0];
425
+ if (componentsLength === 1) {
426
+ component = components[0];
434
427
 
435
- for (n = 0; n < mcuToRead; n++) {
436
- decodeBlock(component, decodeFn, mcu);
437
- mcu++;
438
- }
439
- } else {
440
- for (n = 0; n < mcuToRead; n++) {
441
- for (i = 0; i < componentsLength; i++) {
442
- component = components[i];
443
- h = component.h;
444
- v = component.v;
445
-
446
- for (j = 0; j < v; j++) {
447
- for (k = 0; k < h; k++) {
448
- decodeMcu(component, decodeFn, mcu, j, k);
428
+ for (n = 0; n < mcuToRead; n++) {
429
+ decodeBlock(component, decodeFn, mcu);
430
+ mcu++;
431
+ }
432
+ } else {
433
+ for (n = 0; n < mcuToRead; n++) {
434
+ for (i = 0; i < componentsLength; i++) {
435
+ component = components[i];
436
+ h = component.h;
437
+ v = component.v;
438
+
439
+ for (j = 0; j < v; j++) {
440
+ for (k = 0; k < h; k++) {
441
+ decodeMcu(component, decodeFn, mcu, j, k);
442
+ }
449
443
  }
450
444
  }
451
- }
452
445
 
453
- mcu++;
446
+ mcu++;
447
+ }
454
448
  }
455
449
  }
456
450
 
457
451
  bitsCount = 0;
458
452
  fileMarker = findNextFileMarker(data, offset);
459
453
 
460
- if (fileMarker && fileMarker.invalid) {
461
- (0, _util.warn)('decodeScan - unexpected MCU data, current marker is: ' + fileMarker.invalid);
462
- offset = fileMarker.offset;
454
+ if (!fileMarker) {
455
+ break;
463
456
  }
464
457
 
465
- var marker = fileMarker && fileMarker.marker;
466
-
467
- if (!marker || marker <= 0xFF00) {
468
- throw new JpegError('marker was not found');
458
+ if (fileMarker.invalid) {
459
+ const partialMsg = mcuToRead > 0 ? "unexpected" : "excessive";
460
+ (0, _util.warn)(`decodeScan - ${partialMsg} MCU data, current marker is: ${fileMarker.invalid}`);
461
+ offset = fileMarker.offset;
469
462
  }
470
463
 
471
- if (marker >= 0xFFD0 && marker <= 0xFFD7) {
464
+ if (fileMarker.marker >= 0xffd0 && fileMarker.marker <= 0xffd7) {
472
465
  offset += 2;
473
466
  } else {
474
467
  break;
475
468
  }
476
469
  }
477
470
 
478
- fileMarker = findNextFileMarker(data, offset);
479
-
480
- if (fileMarker && fileMarker.invalid) {
481
- (0, _util.warn)('decodeScan - unexpected Scan data, current marker is: ' + fileMarker.invalid);
482
- offset = fileMarker.offset;
483
- }
484
-
485
471
  return offset - startOffset;
486
472
  }
487
473
 
@@ -493,7 +479,7 @@ var JpegImage = function JpegImageClosure() {
493
479
  var t;
494
480
 
495
481
  if (!qt) {
496
- throw new JpegError('missing required Quantization Table.');
482
+ throw new JpegError("missing required Quantization Table.");
497
483
  }
498
484
 
499
485
  for (var row = 0; row < 64; row += 8) {
@@ -576,7 +562,15 @@ var JpegImage = function JpegImageClosure() {
576
562
 
577
563
  if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {
578
564
  t = dctSqrt2 * p0 + 8192 >> 14;
579
- t = t < -2040 ? 0 : t >= 2024 ? 255 : t + 2056 >> 4;
565
+
566
+ if (t < -2040) {
567
+ t = 0;
568
+ } else if (t >= 2024) {
569
+ t = 255;
570
+ } else {
571
+ t = t + 2056 >> 4;
572
+ }
573
+
580
574
  blockData[blockBufferOffset + col] = t;
581
575
  blockData[blockBufferOffset + col + 8] = t;
582
576
  blockData[blockBufferOffset + col + 16] = t;
@@ -623,14 +617,71 @@ var JpegImage = function JpegImageClosure() {
623
617
  p5 = v2 - v5;
624
618
  p3 = v3 + v4;
625
619
  p4 = v3 - v4;
626
- p0 = p0 < 16 ? 0 : p0 >= 4080 ? 255 : p0 >> 4;
627
- p1 = p1 < 16 ? 0 : p1 >= 4080 ? 255 : p1 >> 4;
628
- p2 = p2 < 16 ? 0 : p2 >= 4080 ? 255 : p2 >> 4;
629
- p3 = p3 < 16 ? 0 : p3 >= 4080 ? 255 : p3 >> 4;
630
- p4 = p4 < 16 ? 0 : p4 >= 4080 ? 255 : p4 >> 4;
631
- p5 = p5 < 16 ? 0 : p5 >= 4080 ? 255 : p5 >> 4;
632
- p6 = p6 < 16 ? 0 : p6 >= 4080 ? 255 : p6 >> 4;
633
- p7 = p7 < 16 ? 0 : p7 >= 4080 ? 255 : p7 >> 4;
620
+
621
+ if (p0 < 16) {
622
+ p0 = 0;
623
+ } else if (p0 >= 4080) {
624
+ p0 = 255;
625
+ } else {
626
+ p0 >>= 4;
627
+ }
628
+
629
+ if (p1 < 16) {
630
+ p1 = 0;
631
+ } else if (p1 >= 4080) {
632
+ p1 = 255;
633
+ } else {
634
+ p1 >>= 4;
635
+ }
636
+
637
+ if (p2 < 16) {
638
+ p2 = 0;
639
+ } else if (p2 >= 4080) {
640
+ p2 = 255;
641
+ } else {
642
+ p2 >>= 4;
643
+ }
644
+
645
+ if (p3 < 16) {
646
+ p3 = 0;
647
+ } else if (p3 >= 4080) {
648
+ p3 = 255;
649
+ } else {
650
+ p3 >>= 4;
651
+ }
652
+
653
+ if (p4 < 16) {
654
+ p4 = 0;
655
+ } else if (p4 >= 4080) {
656
+ p4 = 255;
657
+ } else {
658
+ p4 >>= 4;
659
+ }
660
+
661
+ if (p5 < 16) {
662
+ p5 = 0;
663
+ } else if (p5 >= 4080) {
664
+ p5 = 255;
665
+ } else {
666
+ p5 >>= 4;
667
+ }
668
+
669
+ if (p6 < 16) {
670
+ p6 = 0;
671
+ } else if (p6 >= 4080) {
672
+ p6 = 255;
673
+ } else {
674
+ p6 >>= 4;
675
+ }
676
+
677
+ if (p7 < 16) {
678
+ p7 = 0;
679
+ } else if (p7 >= 4080) {
680
+ p7 = 255;
681
+ } else {
682
+ p7 >>= 4;
683
+ }
684
+
634
685
  blockData[blockBufferOffset + col] = p0;
635
686
  blockData[blockBufferOffset + col + 8] = p1;
636
687
  blockData[blockBufferOffset + col + 16] = p2;
@@ -657,23 +708,17 @@ var JpegImage = function JpegImageClosure() {
657
708
  return component.blockData;
658
709
  }
659
710
 
660
- function findNextFileMarker(data, currentPos) {
661
- var startPos = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : currentPos;
662
-
663
- function peekUint16(pos) {
664
- return data[pos] << 8 | data[pos + 1];
665
- }
666
-
667
- var maxPos = data.length - 1;
711
+ function findNextFileMarker(data, currentPos, startPos = currentPos) {
712
+ const maxPos = data.length - 1;
668
713
  var newPos = startPos < currentPos ? startPos : currentPos;
669
714
 
670
715
  if (currentPos >= maxPos) {
671
716
  return null;
672
717
  }
673
718
 
674
- var currentMarker = peekUint16(currentPos);
719
+ var currentMarker = (0, _core_utils.readUint16)(data, currentPos);
675
720
 
676
- if (currentMarker >= 0xFFC0 && currentMarker <= 0xFFFE) {
721
+ if (currentMarker >= 0xffc0 && currentMarker <= 0xfffe) {
677
722
  return {
678
723
  invalid: null,
679
724
  marker: currentMarker,
@@ -681,14 +726,14 @@ var JpegImage = function JpegImageClosure() {
681
726
  };
682
727
  }
683
728
 
684
- var newMarker = peekUint16(newPos);
729
+ var newMarker = (0, _core_utils.readUint16)(data, newPos);
685
730
 
686
- while (!(newMarker >= 0xFFC0 && newMarker <= 0xFFFE)) {
731
+ while (!(newMarker >= 0xffc0 && newMarker <= 0xfffe)) {
687
732
  if (++newPos >= maxPos) {
688
733
  return null;
689
734
  }
690
735
 
691
- newMarker = peekUint16(newPos);
736
+ newMarker = (0, _core_utils.readUint16)(data, newPos);
692
737
  }
693
738
 
694
739
  return {
@@ -699,24 +744,17 @@ var JpegImage = function JpegImageClosure() {
699
744
  }
700
745
 
701
746
  JpegImage.prototype = {
702
- parse: function parse(data) {
703
- var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
704
- _ref2$dnlScanLines = _ref2.dnlScanLines,
705
- dnlScanLines = _ref2$dnlScanLines === void 0 ? null : _ref2$dnlScanLines;
706
-
707
- function readUint16() {
708
- var value = data[offset] << 8 | data[offset + 1];
709
- offset += 2;
710
- return value;
711
- }
712
-
747
+ parse(data, {
748
+ dnlScanLines = null
749
+ } = {}) {
713
750
  function readDataBlock() {
714
- var length = readUint16();
715
- var endOffset = offset + length - 2;
751
+ const length = (0, _core_utils.readUint16)(data, offset);
752
+ offset += 2;
753
+ let endOffset = offset + length - 2;
716
754
  var fileMarker = findNextFileMarker(data, endOffset, offset);
717
755
 
718
756
  if (fileMarker && fileMarker.invalid) {
719
- (0, _util.warn)('readDataBlock - incorrect length, current marker is: ' + fileMarker.invalid);
757
+ (0, _util.warn)("readDataBlock - incorrect length, current marker is: " + fileMarker.invalid);
720
758
  endOffset = fileMarker.offset;
721
759
  }
722
760
 
@@ -749,43 +787,45 @@ var JpegImage = function JpegImageClosure() {
749
787
  var jfif = null;
750
788
  var adobe = null;
751
789
  var frame, resetInterval;
752
- var numSOSMarkers = 0;
790
+ let numSOSMarkers = 0;
753
791
  var quantizationTables = [];
754
792
  var huffmanTablesAC = [],
755
793
  huffmanTablesDC = [];
756
- var fileMarker = readUint16();
794
+ let fileMarker = (0, _core_utils.readUint16)(data, offset);
795
+ offset += 2;
757
796
 
758
- if (fileMarker !== 0xFFD8) {
759
- throw new JpegError('SOI not found');
797
+ if (fileMarker !== 0xffd8) {
798
+ throw new JpegError("SOI not found");
760
799
  }
761
800
 
762
- fileMarker = readUint16();
801
+ fileMarker = (0, _core_utils.readUint16)(data, offset);
802
+ offset += 2;
763
803
 
764
- markerLoop: while (fileMarker !== 0xFFD9) {
804
+ markerLoop: while (fileMarker !== 0xffd9) {
765
805
  var i, j, l;
766
806
 
767
807
  switch (fileMarker) {
768
- case 0xFFE0:
769
- case 0xFFE1:
770
- case 0xFFE2:
771
- case 0xFFE3:
772
- case 0xFFE4:
773
- case 0xFFE5:
774
- case 0xFFE6:
775
- case 0xFFE7:
776
- case 0xFFE8:
777
- case 0xFFE9:
778
- case 0xFFEA:
779
- case 0xFFEB:
780
- case 0xFFEC:
781
- case 0xFFED:
782
- case 0xFFEE:
783
- case 0xFFEF:
784
- case 0xFFFE:
808
+ case 0xffe0:
809
+ case 0xffe1:
810
+ case 0xffe2:
811
+ case 0xffe3:
812
+ case 0xffe4:
813
+ case 0xffe5:
814
+ case 0xffe6:
815
+ case 0xffe7:
816
+ case 0xffe8:
817
+ case 0xffe9:
818
+ case 0xffea:
819
+ case 0xffeb:
820
+ case 0xffec:
821
+ case 0xffed:
822
+ case 0xffee:
823
+ case 0xffef:
824
+ case 0xfffe:
785
825
  var appData = readDataBlock();
786
826
 
787
- if (fileMarker === 0xFFE0) {
788
- if (appData[0] === 0x4A && appData[1] === 0x46 && appData[2] === 0x49 && appData[3] === 0x46 && appData[4] === 0) {
827
+ if (fileMarker === 0xffe0) {
828
+ if (appData[0] === 0x4a && appData[1] === 0x46 && appData[2] === 0x49 && appData[3] === 0x46 && appData[4] === 0) {
789
829
  jfif = {
790
830
  version: {
791
831
  major: appData[5],
@@ -801,8 +841,8 @@ var JpegImage = function JpegImageClosure() {
801
841
  }
802
842
  }
803
843
 
804
- if (fileMarker === 0xFFEE) {
805
- if (appData[0] === 0x41 && appData[1] === 0x64 && appData[2] === 0x6F && appData[3] === 0x62 && appData[4] === 0x65) {
844
+ if (fileMarker === 0xffee) {
845
+ if (appData[0] === 0x41 && appData[1] === 0x64 && appData[2] === 0x6f && appData[3] === 0x62 && appData[4] === 0x65) {
806
846
  adobe = {
807
847
  version: appData[5] << 8 | appData[6],
808
848
  flags0: appData[7] << 8 | appData[8],
@@ -814,8 +854,9 @@ var JpegImage = function JpegImageClosure() {
814
854
 
815
855
  break;
816
856
 
817
- case 0xFFDB:
818
- var quantizationTablesLength = readUint16();
857
+ case 0xffdb:
858
+ const quantizationTablesLength = (0, _core_utils.readUint16)(data, offset);
859
+ offset += 2;
819
860
  var quantizationTablesEnd = quantizationTablesLength + offset - 2;
820
861
  var z;
821
862
 
@@ -831,10 +872,11 @@ var JpegImage = function JpegImageClosure() {
831
872
  } else if (quantizationTableSpec >> 4 === 1) {
832
873
  for (j = 0; j < 64; j++) {
833
874
  z = dctZigZag[j];
834
- tableData[z] = readUint16();
875
+ tableData[z] = (0, _core_utils.readUint16)(data, offset);
876
+ offset += 2;
835
877
  }
836
878
  } else {
837
- throw new JpegError('DQT - invalid table spec');
879
+ throw new JpegError("DQT - invalid table spec");
838
880
  }
839
881
 
840
882
  quantizationTables[quantizationTableSpec & 15] = tableData;
@@ -842,21 +884,23 @@ var JpegImage = function JpegImageClosure() {
842
884
 
843
885
  break;
844
886
 
845
- case 0xFFC0:
846
- case 0xFFC1:
847
- case 0xFFC2:
887
+ case 0xffc0:
888
+ case 0xffc1:
889
+ case 0xffc2:
848
890
  if (frame) {
849
- throw new JpegError('Only single frame JPEGs supported');
891
+ throw new JpegError("Only single frame JPEGs supported");
850
892
  }
851
893
 
852
- readUint16();
894
+ offset += 2;
853
895
  frame = {};
854
- frame.extended = fileMarker === 0xFFC1;
855
- frame.progressive = fileMarker === 0xFFC2;
896
+ frame.extended = fileMarker === 0xffc1;
897
+ frame.progressive = fileMarker === 0xffc2;
856
898
  frame.precision = data[offset++];
857
- var sofScanLines = readUint16();
899
+ const sofScanLines = (0, _core_utils.readUint16)(data, offset);
900
+ offset += 2;
858
901
  frame.scanLines = dnlScanLines || sofScanLines;
859
- frame.samplesPerLine = readUint16();
902
+ frame.samplesPerLine = (0, _core_utils.readUint16)(data, offset);
903
+ offset += 2;
860
904
  frame.components = [];
861
905
  frame.componentIds = {};
862
906
  var componentsCount = data[offset++],
@@ -879,8 +923,8 @@ var JpegImage = function JpegImageClosure() {
879
923
 
880
924
  var qId = data[offset + 2];
881
925
  l = frame.components.push({
882
- h: h,
883
- v: v,
926
+ h,
927
+ v,
884
928
  quantizationId: qId,
885
929
  quantizationTable: null
886
930
  });
@@ -893,8 +937,9 @@ var JpegImage = function JpegImageClosure() {
893
937
  prepareComponents(frame);
894
938
  break;
895
939
 
896
- case 0xFFC4:
897
- var huffmanLength = readUint16();
940
+ case 0xffc4:
941
+ const huffmanLength = (0, _core_utils.readUint16)(data, offset);
942
+ offset += 2;
898
943
 
899
944
  for (i = 2; i < huffmanLength;) {
900
945
  var huffmanTableSpec = data[offset++];
@@ -917,14 +962,15 @@ var JpegImage = function JpegImageClosure() {
917
962
 
918
963
  break;
919
964
 
920
- case 0xFFDD:
921
- readUint16();
922
- resetInterval = readUint16();
965
+ case 0xffdd:
966
+ offset += 2;
967
+ resetInterval = (0, _core_utils.readUint16)(data, offset);
968
+ offset += 2;
923
969
  break;
924
970
 
925
- case 0xFFDA:
926
- var parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;
927
- readUint16();
971
+ case 0xffda:
972
+ const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;
973
+ offset += 2;
928
974
  var selectorsCount = data[offset++];
929
975
  var components = [],
930
976
  component;
@@ -947,12 +993,12 @@ var JpegImage = function JpegImageClosure() {
947
993
  offset += processed;
948
994
  } catch (ex) {
949
995
  if (ex instanceof DNLMarkerError) {
950
- (0, _util.warn)("".concat(ex.message, " -- attempting to re-parse the JPEG image."));
996
+ (0, _util.warn)(`${ex.message} -- attempting to re-parse the JPEG image.`);
951
997
  return this.parse(data, {
952
998
  dnlScanLines: ex.scanLines
953
999
  });
954
1000
  } else if (ex instanceof EOIMarkerError) {
955
- (0, _util.warn)("".concat(ex.message, " -- ignoring the rest of the image data."));
1001
+ (0, _util.warn)(`${ex.message} -- ignoring the rest of the image data.`);
956
1002
  break markerLoop;
957
1003
  }
958
1004
 
@@ -961,35 +1007,36 @@ var JpegImage = function JpegImageClosure() {
961
1007
 
962
1008
  break;
963
1009
 
964
- case 0xFFDC:
1010
+ case 0xffdc:
965
1011
  offset += 4;
966
1012
  break;
967
1013
 
968
- case 0xFFFF:
969
- if (data[offset] !== 0xFF) {
1014
+ case 0xffff:
1015
+ if (data[offset] !== 0xff) {
970
1016
  offset--;
971
1017
  }
972
1018
 
973
1019
  break;
974
1020
 
975
1021
  default:
976
- if (data[offset - 3] === 0xFF && data[offset - 2] >= 0xC0 && data[offset - 2] <= 0xFE) {
977
- offset -= 3;
978
- break;
979
- }
980
-
981
- var nextFileMarker = findNextFileMarker(data, offset - 2);
1022
+ const nextFileMarker = findNextFileMarker(data, offset - 2, offset - 3);
982
1023
 
983
1024
  if (nextFileMarker && nextFileMarker.invalid) {
984
- (0, _util.warn)('JpegImage.parse - unexpected data, current marker is: ' + nextFileMarker.invalid);
1025
+ (0, _util.warn)("JpegImage.parse - unexpected data, current marker is: " + nextFileMarker.invalid);
985
1026
  offset = nextFileMarker.offset;
986
1027
  break;
987
1028
  }
988
1029
 
989
- throw new JpegError('unknown marker ' + fileMarker.toString(16));
1030
+ if (offset >= data.length - 1) {
1031
+ (0, _util.warn)("JpegImage.parse - reached the end of the image data " + "without finding an EOI marker (0xFFD9).");
1032
+ break markerLoop;
1033
+ }
1034
+
1035
+ throw new JpegError("JpegImage.parse - unknown marker: " + fileMarker.toString(16));
990
1036
  }
991
1037
 
992
- fileMarker = readUint16();
1038
+ fileMarker = (0, _core_utils.readUint16)(data, offset);
1039
+ offset += 2;
993
1040
  }
994
1041
 
995
1042
  this.width = frame.samplesPerLine;
@@ -1016,9 +1063,10 @@ var JpegImage = function JpegImageClosure() {
1016
1063
  }
1017
1064
 
1018
1065
  this.numComponents = this.components.length;
1066
+ return undefined;
1019
1067
  },
1020
- _getLinearizedBlockData: function _getLinearizedBlockData(width, height) {
1021
- var isSourcePDF = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
1068
+
1069
+ _getLinearizedBlockData(width, height, isSourcePDF = false) {
1022
1070
  var scaleX = this.width / width,
1023
1071
  scaleY = this.height / height;
1024
1072
  var component, componentScaleX, componentScaleY, blocksPerScanline;
@@ -1031,6 +1079,7 @@ var JpegImage = function JpegImageClosure() {
1031
1079
  var data = new Uint8ClampedArray(dataLength);
1032
1080
  var xScaleBlockOffset = new Uint32Array(width);
1033
1081
  var mask3LSB = 0xfffffff8;
1082
+ let lastComponentScaleX;
1034
1083
 
1035
1084
  for (i = 0; i < numComponents; i++) {
1036
1085
  component = this.components[i];
@@ -1040,9 +1089,13 @@ var JpegImage = function JpegImageClosure() {
1040
1089
  output = component.output;
1041
1090
  blocksPerScanline = component.blocksPerLine + 1 << 3;
1042
1091
 
1043
- for (x = 0; x < width; x++) {
1044
- j = 0 | x * componentScaleX;
1045
- xScaleBlockOffset[x] = (j & mask3LSB) << 3 | j & 7;
1092
+ if (componentScaleX !== lastComponentScaleX) {
1093
+ for (x = 0; x < width; x++) {
1094
+ j = 0 | x * componentScaleX;
1095
+ xScaleBlockOffset[x] = (j & mask3LSB) << 3 | j & 7;
1096
+ }
1097
+
1098
+ lastComponentScaleX = componentScaleX;
1046
1099
  }
1047
1100
 
1048
1101
  for (y = 0; y < height; y++) {
@@ -1056,7 +1109,7 @@ var JpegImage = function JpegImageClosure() {
1056
1109
  }
1057
1110
  }
1058
1111
 
1059
- var transform = this._decodeTransform;
1112
+ let transform = this._decodeTransform;
1060
1113
 
1061
1114
  if (!isSourcePDF && numComponents === 4 && !transform) {
1062
1115
  transform = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255]);
@@ -1140,30 +1193,28 @@ var JpegImage = function JpegImageClosure() {
1140
1193
  _convertCmykToRgb: function convertCmykToRgb(data) {
1141
1194
  var c, m, y, k;
1142
1195
  var offset = 0;
1143
- var scale = 1 / 255;
1144
1196
 
1145
1197
  for (var i = 0, length = data.length; i < length; i += 4) {
1146
- c = data[i] * scale;
1147
- m = data[i + 1] * scale;
1148
- y = data[i + 2] * scale;
1149
- k = data[i + 3] * scale;
1150
- data[offset++] = 255 + c * (-4.387332384609988 * c + 54.48615194189176 * m + 18.82290502165302 * y + 212.25662451639585 * k - 285.2331026137004) + m * (1.7149763477362134 * m - 5.6096736904047315 * y - 17.873870861415444 * k - 5.497006427196366) + y * (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) - k * (21.86122147463605 * k + 189.48180835922747);
1151
- data[offset++] = 255 + c * (8.841041422036149 * c + 60.118027045597366 * m + 6.871425592049007 * y + 31.159100130055922 * k - 79.2970844816548) + m * (-15.310361306967817 * m + 17.575251261109482 * y + 131.35250912493976 * k - 190.9453302588951) + y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) - k * (20.737325471181034 * k + 187.80453709719578);
1152
- data[offset++] = 255 + c * (0.8842522430003296 * c + 8.078677503112928 * m + 30.89978309703729 * y - 0.23883238689178934 * k - 14.183576799673286) + m * (10.49593273432072 * m + 63.02378494754052 * y + 50.606957656360734 * k - 112.23884253719248) + y * (0.03296041114873217 * y + 115.60384449646641 * k - 193.58209356861505) - k * (22.33816807309886 * k + 180.12613974708367);
1198
+ c = data[i];
1199
+ m = data[i + 1];
1200
+ y = data[i + 2];
1201
+ k = data[i + 3];
1202
+ data[offset++] = 255 + c * (-0.00006747147073602441 * c + 0.0008379262121013727 * m + 0.0002894718188643294 * y + 0.003264231057537806 * k - 1.1185611867203937) + m * (0.000026374107616089405 * m - 0.00008626949158638572 * y - 0.0002748769067499491 * k - 0.02155688794978967) + y * (-0.00003878099212869363 * y - 0.0003267808279485286 * k + 0.0686742238595345) - k * (0.0003361971776183937 * k + 0.7430659151342254);
1203
+ data[offset++] = 255 + c * (0.00013596372813588848 * c + 0.000924537132573585 * m + 0.00010567359618683593 * y + 0.0004791864687436512 * k - 0.3109689587515875) + m * (-0.00023545346108370344 * m + 0.0002702845253534714 * y + 0.0020200308977307156 * k - 0.7488052167015494) + y * (0.00006834815998235662 * y + 0.00015168452363460973 * k - 0.09751927774728933) - k * (0.00031891311758832814 * k + 0.7364883807733168);
1204
+ data[offset++] = 255 + c * (0.000013598650411385307 * c + 0.00012423956175490851 * m + 0.0004751985097583589 * y - 0.0000036729317476630422 * k - 0.05562186980264034) + m * (0.00016141380598724676 * m + 0.0009692239130725186 * y + 0.0007782692450036253 * k - 0.44015232367526463) + y * (5.068882914068769e-7 * y + 0.0017778369011375071 * k - 0.7591454649749609) - k * (0.0003435319965105553 * k + 0.7063770186160144);
1153
1205
  }
1154
1206
 
1155
1207
  return data.subarray(0, offset);
1156
1208
  },
1157
- getData: function getData(_ref3) {
1158
- var width = _ref3.width,
1159
- height = _ref3.height,
1160
- _ref3$forceRGB = _ref3.forceRGB,
1161
- forceRGB = _ref3$forceRGB === void 0 ? false : _ref3$forceRGB,
1162
- _ref3$isSourcePDF = _ref3.isSourcePDF,
1163
- isSourcePDF = _ref3$isSourcePDF === void 0 ? false : _ref3$isSourcePDF;
1164
1209
 
1210
+ getData({
1211
+ width,
1212
+ height,
1213
+ forceRGB = false,
1214
+ isSourcePDF = false
1215
+ }) {
1165
1216
  if (this.numComponents > 4) {
1166
- throw new JpegError('Unsupported color mode');
1217
+ throw new JpegError("Unsupported color mode");
1167
1218
  }
1168
1219
 
1169
1220
  var data = this._getLinearizedBlockData(width, height, isSourcePDF);
@@ -1197,6 +1248,7 @@ var JpegImage = function JpegImageClosure() {
1197
1248
 
1198
1249
  return data;
1199
1250
  }
1251
+
1200
1252
  };
1201
1253
  return JpegImage;
1202
1254
  }();