pdfjs-dist 2.0.943 → 2.1.266

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 (159) hide show
  1. package/bower.json +1 -1
  2. package/build/pdf.js +15329 -11095
  3. package/build/pdf.js.map +1 -1
  4. package/build/pdf.min.js +1 -1
  5. package/build/pdf.worker.js +12497 -4184
  6. package/build/pdf.worker.js.map +1 -1
  7. package/build/pdf.worker.min.js +1 -1
  8. package/image_decoders/pdf.image_decoders.js +3438 -1209
  9. package/image_decoders/pdf.image_decoders.js.map +1 -1
  10. package/image_decoders/pdf.image_decoders.min.js +1 -1
  11. package/lib/core/annotation.js +335 -109
  12. package/lib/core/arithmetic_decoder.js +274 -244
  13. package/lib/core/bidi.js +64 -5
  14. package/lib/core/ccitt.js +172 -17
  15. package/lib/core/ccitt_stream.js +14 -5
  16. package/lib/core/cff_parser.js +304 -28
  17. package/lib/core/charsets.js +4 -3
  18. package/lib/core/chunked_stream.js +379 -149
  19. package/lib/core/cmap.js +210 -40
  20. package/lib/core/colorspace.js +332 -187
  21. package/lib/core/crypto.js +289 -44
  22. package/lib/core/document.js +508 -249
  23. package/lib/core/encodings.js +18 -9
  24. package/lib/core/evaluator.js +657 -119
  25. package/lib/core/font_renderer.js +217 -34
  26. package/lib/core/fonts.js +632 -41
  27. package/lib/core/function.js +252 -26
  28. package/lib/core/glyphlist.js +2 -1
  29. package/lib/core/image.js +124 -27
  30. package/lib/core/jbig2.js +425 -65
  31. package/lib/core/jbig2_stream.js +18 -7
  32. package/lib/core/jpeg_stream.js +24 -8
  33. package/lib/core/jpg.js +208 -16
  34. package/lib/core/jpx.js +395 -5
  35. package/lib/core/jpx_stream.js +17 -5
  36. package/lib/core/metrics.js +3 -3
  37. package/lib/core/murmurhash3.js +23 -5
  38. package/lib/core/obj.js +625 -132
  39. package/lib/core/operator_list.js +104 -3
  40. package/lib/core/parser.js +262 -25
  41. package/lib/core/pattern.js +144 -12
  42. package/lib/core/pdf_manager.js +104 -70
  43. package/lib/core/primitives.js +74 -21
  44. package/lib/core/ps_parser.js +133 -44
  45. package/lib/core/standard_fonts.js +9 -9
  46. package/lib/core/stream.js +283 -31
  47. package/lib/core/type1_parser.js +138 -6
  48. package/lib/core/unicode.js +28 -1
  49. package/lib/core/worker.js +192 -57
  50. package/lib/display/annotation_layer.js +303 -123
  51. package/lib/display/api.js +1073 -574
  52. package/lib/display/api_compatibility.js +4 -1
  53. package/lib/display/canvas.js +314 -18
  54. package/lib/display/content_disposition.js +70 -23
  55. package/lib/display/dom_utils.js +112 -59
  56. package/lib/display/fetch_stream.js +95 -50
  57. package/lib/display/font_loader.js +250 -132
  58. package/lib/display/metadata.js +37 -15
  59. package/lib/display/network.js +123 -34
  60. package/lib/display/network_utils.js +23 -10
  61. package/lib/display/node_stream.js +162 -65
  62. package/lib/display/pattern_helper.js +57 -6
  63. package/lib/display/svg.js +194 -18
  64. package/lib/display/text_layer.js +128 -14
  65. package/lib/display/transport_stream.js +83 -27
  66. package/lib/display/webgl.js +63 -17
  67. package/lib/display/worker_options.js +4 -3
  68. package/lib/display/xml_parser.js +162 -52
  69. package/lib/examples/node/domstubs.js +56 -3
  70. package/lib/pdf.js +15 -2
  71. package/lib/pdf.worker.js +4 -2
  72. package/lib/shared/compatibility.js +129 -26
  73. package/lib/shared/global_scope.js +1 -1
  74. package/lib/shared/is_node.js +3 -3
  75. package/lib/shared/message_handler.js +103 -45
  76. package/lib/shared/streams_polyfill.js +20 -16
  77. package/lib/shared/url_polyfill.js +8 -2
  78. package/lib/shared/util.js +246 -84
  79. package/lib/test/unit/annotation_spec.js +99 -73
  80. package/lib/test/unit/api_spec.js +347 -113
  81. package/lib/test/unit/bidi_spec.js +6 -6
  82. package/lib/test/unit/cff_parser_spec.js +17 -5
  83. package/lib/test/unit/clitests_helper.js +7 -8
  84. package/lib/test/unit/cmap_spec.js +79 -25
  85. package/lib/test/unit/colorspace_spec.js +65 -18
  86. package/lib/test/unit/crypto_spec.js +16 -4
  87. package/lib/test/unit/custom_spec.js +40 -52
  88. package/lib/test/unit/display_svg_spec.js +32 -16
  89. package/lib/test/unit/document_spec.js +2 -2
  90. package/lib/test/unit/dom_utils_spec.js +8 -8
  91. package/lib/test/unit/encodings_spec.js +24 -44
  92. package/lib/test/unit/evaluator_spec.js +15 -8
  93. package/lib/test/unit/function_spec.js +16 -4
  94. package/lib/test/unit/jasmine-boot.js +29 -16
  95. package/lib/test/unit/message_handler_spec.js +19 -6
  96. package/lib/test/unit/metadata_spec.js +64 -11
  97. package/lib/test/unit/murmurhash3_spec.js +2 -2
  98. package/lib/test/unit/network_spec.js +19 -4
  99. package/lib/test/unit/network_utils_spec.js +6 -4
  100. package/lib/test/unit/node_stream_spec.js +50 -26
  101. package/lib/test/unit/parser_spec.js +13 -29
  102. package/lib/test/unit/pdf_find_controller_spec.js +144 -32
  103. package/lib/test/unit/pdf_find_utils_spec.js +10 -9
  104. package/lib/test/unit/pdf_history_spec.js +20 -8
  105. package/lib/test/unit/primitives_spec.js +23 -3
  106. package/lib/test/unit/stream_spec.js +8 -3
  107. package/lib/test/unit/test_utils.js +89 -26
  108. package/lib/test/unit/testreporter.js +19 -1
  109. package/lib/test/unit/type1_parser_spec.js +7 -5
  110. package/lib/test/unit/ui_utils_spec.js +162 -38
  111. package/lib/test/unit/unicode_spec.js +13 -10
  112. package/lib/test/unit/util_spec.js +89 -9
  113. package/lib/web/annotation_layer_builder.js +38 -21
  114. package/lib/web/app.js +610 -245
  115. package/lib/web/app_options.js +54 -34
  116. package/lib/web/base_viewer.js +359 -162
  117. package/lib/web/chromecom.js +159 -80
  118. package/lib/web/debugger.js +161 -17
  119. package/lib/web/download_manager.js +29 -11
  120. package/lib/web/firefox_print_service.js +16 -8
  121. package/lib/web/firefoxcom.js +127 -91
  122. package/lib/web/genericcom.js +50 -31
  123. package/lib/web/genericl10n.js +46 -34
  124. package/lib/web/grab_to_pan.js +25 -3
  125. package/lib/web/interfaces.js +108 -61
  126. package/lib/web/overlay_manager.js +67 -45
  127. package/lib/web/password_prompt.js +20 -12
  128. package/lib/web/pdf_attachment_viewer.js +37 -17
  129. package/lib/web/pdf_cursor_tools.js +38 -15
  130. package/lib/web/pdf_document_properties.js +65 -24
  131. package/lib/web/pdf_find_bar.js +48 -20
  132. package/lib/web/pdf_find_controller.js +290 -89
  133. package/lib/web/pdf_find_utils.js +19 -3
  134. package/lib/web/pdf_history.js +186 -49
  135. package/lib/web/pdf_link_service.js +127 -52
  136. package/lib/web/pdf_outline_viewer.js +71 -21
  137. package/lib/web/pdf_page_view.js +188 -63
  138. package/lib/web/pdf_presentation_mode.js +98 -33
  139. package/lib/web/pdf_print_service.js +54 -10
  140. package/lib/web/pdf_rendering_queue.js +26 -4
  141. package/lib/web/pdf_sidebar.js +116 -62
  142. package/lib/web/pdf_sidebar_resizer.js +41 -15
  143. package/lib/web/pdf_single_page_viewer.js +65 -68
  144. package/lib/web/pdf_thumbnail_view.js +102 -31
  145. package/lib/web/pdf_thumbnail_viewer.js +62 -22
  146. package/lib/web/pdf_viewer.component.js +111 -31
  147. package/lib/web/pdf_viewer.js +80 -60
  148. package/lib/web/preferences.js +61 -39
  149. package/lib/web/secondary_toolbar.js +101 -82
  150. package/lib/web/text_layer_builder.js +124 -69
  151. package/lib/web/toolbar.js +67 -27
  152. package/lib/web/ui_utils.js +284 -128
  153. package/lib/web/view_history.js +75 -51
  154. package/lib/web/viewer_compatibility.js +2 -1
  155. package/package.json +1 -1
  156. package/web/pdf_viewer.css +1 -1
  157. package/web/pdf_viewer.js +2200 -973
  158. package/web/pdf_viewer.js.map +1 -1
  159. package/lib/web/dom_events.js +0 -140
package/lib/core/jpg.js CHANGED
@@ -19,45 +19,51 @@
19
19
  * @licend The above is the entire license notice for the
20
20
  * Javascript code in this page
21
21
  */
22
- 'use strict';
22
+ "use strict";
23
23
 
24
24
  Object.defineProperty(exports, "__esModule", {
25
25
  value: true
26
26
  });
27
- exports.JpegImage = undefined;
27
+ exports.JpegImage = void 0;
28
28
 
29
- var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
29
+ var _util = require("../shared/util");
30
30
 
31
- var _util = require('../shared/util');
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); }
32
32
 
33
33
  var JpegError = function JpegErrorClosure() {
34
34
  function JpegError(msg) {
35
35
  this.message = 'JPEG error: ' + msg;
36
36
  }
37
+
37
38
  JpegError.prototype = new Error();
38
39
  JpegError.prototype.name = 'JpegError';
39
40
  JpegError.constructor = JpegError;
40
41
  return JpegError;
41
42
  }();
43
+
42
44
  var DNLMarkerError = function DNLMarkerErrorClosure() {
43
45
  function DNLMarkerError(message, scanLines) {
44
46
  this.message = message;
45
47
  this.scanLines = scanLines;
46
48
  }
49
+
47
50
  DNLMarkerError.prototype = new Error();
48
51
  DNLMarkerError.prototype.name = 'DNLMarkerError';
49
52
  DNLMarkerError.constructor = DNLMarkerError;
50
53
  return DNLMarkerError;
51
54
  }();
55
+
52
56
  var EOIMarkerError = function EOIMarkerErrorClosure() {
53
57
  function EOIMarkerError(message) {
54
58
  this.message = message;
55
59
  }
60
+
56
61
  EOIMarkerError.prototype = new Error();
57
62
  EOIMarkerError.prototype.name = 'EOIMarkerError';
58
63
  EOIMarkerError.constructor = EOIMarkerError;
59
64
  return EOIMarkerError;
60
65
  }();
66
+
61
67
  var JpegImage = function JpegImageClosure() {
62
68
  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]);
63
69
  var dctCos1 = 4017;
@@ -68,40 +74,48 @@ var JpegImage = function JpegImageClosure() {
68
74
  var dctSin6 = 3784;
69
75
  var dctSqrt2 = 5793;
70
76
  var dctSqrt1d2 = 2896;
77
+
71
78
  function JpegImage() {
72
79
  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
73
80
  _ref$decodeTransform = _ref.decodeTransform,
74
- decodeTransform = _ref$decodeTransform === undefined ? null : _ref$decodeTransform,
81
+ decodeTransform = _ref$decodeTransform === void 0 ? null : _ref$decodeTransform,
75
82
  _ref$colorTransform = _ref.colorTransform,
76
- colorTransform = _ref$colorTransform === undefined ? -1 : _ref$colorTransform;
83
+ colorTransform = _ref$colorTransform === void 0 ? -1 : _ref$colorTransform;
77
84
 
78
85
  this._decodeTransform = decodeTransform;
79
86
  this._colorTransform = colorTransform;
80
87
  }
88
+
81
89
  function buildHuffmanTable(codeLengths, values) {
82
90
  var k = 0,
83
91
  code = [],
84
92
  i,
85
93
  j,
86
94
  length = 16;
95
+
87
96
  while (length > 0 && !codeLengths[length - 1]) {
88
97
  length--;
89
98
  }
99
+
90
100
  code.push({
91
101
  children: [],
92
102
  index: 0
93
103
  });
94
104
  var p = code[0],
95
105
  q;
106
+
96
107
  for (i = 0; i < length; i++) {
97
108
  for (j = 0; j < codeLengths[i]; j++) {
98
109
  p = code.pop();
99
110
  p.children[p.index] = values[k];
111
+
100
112
  while (p.index > 0) {
101
113
  p = code.pop();
102
114
  }
115
+
103
116
  p.index++;
104
117
  code.push(p);
118
+
105
119
  while (code.length <= i) {
106
120
  code.push(q = {
107
121
  children: [],
@@ -110,8 +124,10 @@ var JpegImage = function JpegImageClosure() {
110
124
  p.children[p.index] = q.children;
111
125
  p = q;
112
126
  }
127
+
113
128
  k++;
114
129
  }
130
+
115
131
  if (i + 1 < length) {
116
132
  code.push(q = {
117
133
  children: [],
@@ -121,145 +137,184 @@ var JpegImage = function JpegImageClosure() {
121
137
  p = q;
122
138
  }
123
139
  }
140
+
124
141
  return code[0].children;
125
142
  }
143
+
126
144
  function getBlockBufferOffset(component, row, col) {
127
145
  return 64 * ((component.blocksPerLine + 1) * row + col);
128
146
  }
147
+
129
148
  function decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successivePrev, successive) {
130
149
  var parseDNLMarker = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : false;
131
-
132
150
  var mcusPerLine = frame.mcusPerLine;
133
151
  var progressive = frame.progressive;
134
152
  var startOffset = offset,
135
153
  bitsData = 0,
136
154
  bitsCount = 0;
155
+
137
156
  function readBit() {
138
157
  if (bitsCount > 0) {
139
158
  bitsCount--;
140
159
  return bitsData >> bitsCount & 1;
141
160
  }
161
+
142
162
  bitsData = data[offset++];
163
+
143
164
  if (bitsData === 0xFF) {
144
165
  var nextByte = data[offset++];
166
+
145
167
  if (nextByte) {
146
168
  if (nextByte === 0xDC && parseDNLMarker) {
147
169
  offset += 2;
148
170
  var scanLines = data[offset++] << 8 | data[offset++];
171
+
149
172
  if (scanLines > 0 && scanLines !== frame.scanLines) {
150
173
  throw new DNLMarkerError('Found DNL marker (0xFFDC) while parsing scan data', scanLines);
151
174
  }
152
175
  } else if (nextByte === 0xD9) {
153
176
  throw new EOIMarkerError('Found EOI marker (0xFFD9) while parsing scan data');
154
177
  }
155
- throw new JpegError('unexpected marker ' + (bitsData << 8 | nextByte).toString(16));
178
+
179
+ throw new JpegError("unexpected marker ".concat((bitsData << 8 | nextByte).toString(16)));
156
180
  }
157
181
  }
182
+
158
183
  bitsCount = 7;
159
184
  return bitsData >>> 7;
160
185
  }
186
+
161
187
  function decodeHuffman(tree) {
162
188
  var node = tree;
189
+
163
190
  while (true) {
164
191
  node = node[readBit()];
192
+
165
193
  if (typeof node === 'number') {
166
194
  return node;
167
195
  }
168
- if ((typeof node === 'undefined' ? 'undefined' : _typeof(node)) !== 'object') {
196
+
197
+ if (_typeof(node) !== 'object') {
169
198
  throw new JpegError('invalid huffman sequence');
170
199
  }
171
200
  }
172
201
  }
202
+
173
203
  function receive(length) {
174
204
  var n = 0;
205
+
175
206
  while (length > 0) {
176
207
  n = n << 1 | readBit();
177
208
  length--;
178
209
  }
210
+
179
211
  return n;
180
212
  }
213
+
181
214
  function receiveAndExtend(length) {
182
215
  if (length === 1) {
183
216
  return readBit() === 1 ? 1 : -1;
184
217
  }
218
+
185
219
  var n = receive(length);
220
+
186
221
  if (n >= 1 << length - 1) {
187
222
  return n;
188
223
  }
224
+
189
225
  return n + (-1 << length) + 1;
190
226
  }
227
+
191
228
  function decodeBaseline(component, offset) {
192
229
  var t = decodeHuffman(component.huffmanTableDC);
193
230
  var diff = t === 0 ? 0 : receiveAndExtend(t);
194
231
  component.blockData[offset] = component.pred += diff;
195
232
  var k = 1;
233
+
196
234
  while (k < 64) {
197
235
  var rs = decodeHuffman(component.huffmanTableAC);
198
236
  var s = rs & 15,
199
237
  r = rs >> 4;
238
+
200
239
  if (s === 0) {
201
240
  if (r < 15) {
202
241
  break;
203
242
  }
243
+
204
244
  k += 16;
205
245
  continue;
206
246
  }
247
+
207
248
  k += r;
208
249
  var z = dctZigZag[k];
209
250
  component.blockData[offset + z] = receiveAndExtend(s);
210
251
  k++;
211
252
  }
212
253
  }
254
+
213
255
  function decodeDCFirst(component, offset) {
214
256
  var t = decodeHuffman(component.huffmanTableDC);
215
257
  var diff = t === 0 ? 0 : receiveAndExtend(t) << successive;
216
258
  component.blockData[offset] = component.pred += diff;
217
259
  }
260
+
218
261
  function decodeDCSuccessive(component, offset) {
219
262
  component.blockData[offset] |= readBit() << successive;
220
263
  }
264
+
221
265
  var eobrun = 0;
266
+
222
267
  function decodeACFirst(component, offset) {
223
268
  if (eobrun > 0) {
224
269
  eobrun--;
225
270
  return;
226
271
  }
272
+
227
273
  var k = spectralStart,
228
274
  e = spectralEnd;
275
+
229
276
  while (k <= e) {
230
277
  var rs = decodeHuffman(component.huffmanTableAC);
231
278
  var s = rs & 15,
232
279
  r = rs >> 4;
280
+
233
281
  if (s === 0) {
234
282
  if (r < 15) {
235
283
  eobrun = receive(r) + (1 << r) - 1;
236
284
  break;
237
285
  }
286
+
238
287
  k += 16;
239
288
  continue;
240
289
  }
290
+
241
291
  k += r;
242
292
  var z = dctZigZag[k];
243
293
  component.blockData[offset + z] = receiveAndExtend(s) * (1 << successive);
244
294
  k++;
245
295
  }
246
296
  }
297
+
247
298
  var successiveACState = 0,
248
299
  successiveACNextValue;
300
+
249
301
  function decodeACSuccessive(component, offset) {
250
302
  var k = spectralStart;
251
303
  var e = spectralEnd;
252
304
  var r = 0;
253
305
  var s;
254
306
  var rs;
307
+
255
308
  while (k <= e) {
256
309
  var offsetZ = offset + dctZigZag[k];
257
310
  var sign = component.blockData[offsetZ] < 0 ? -1 : 1;
311
+
258
312
  switch (successiveACState) {
259
313
  case 0:
260
314
  rs = decodeHuffman(component.huffmanTableAC);
261
315
  s = rs & 15;
262
316
  r = rs >> 4;
317
+
263
318
  if (s === 0) {
264
319
  if (r < 15) {
265
320
  eobrun = receive(r) + (1 << r);
@@ -272,21 +327,27 @@ var JpegImage = function JpegImageClosure() {
272
327
  if (s !== 1) {
273
328
  throw new JpegError('invalid ACn encoding');
274
329
  }
330
+
275
331
  successiveACNextValue = receiveAndExtend(s);
276
332
  successiveACState = r ? 2 : 3;
277
333
  }
334
+
278
335
  continue;
336
+
279
337
  case 1:
280
338
  case 2:
281
339
  if (component.blockData[offsetZ]) {
282
340
  component.blockData[offsetZ] += sign * (readBit() << successive);
283
341
  } else {
284
342
  r--;
343
+
285
344
  if (r === 0) {
286
345
  successiveACState = successiveACState === 2 ? 3 : 0;
287
346
  }
288
347
  }
348
+
289
349
  break;
350
+
290
351
  case 3:
291
352
  if (component.blockData[offsetZ]) {
292
353
  component.blockData[offsetZ] += sign * (readBit() << successive);
@@ -294,22 +355,29 @@ var JpegImage = function JpegImageClosure() {
294
355
  component.blockData[offsetZ] = successiveACNextValue << successive;
295
356
  successiveACState = 0;
296
357
  }
358
+
297
359
  break;
360
+
298
361
  case 4:
299
362
  if (component.blockData[offsetZ]) {
300
363
  component.blockData[offsetZ] += sign * (readBit() << successive);
301
364
  }
365
+
302
366
  break;
303
367
  }
368
+
304
369
  k++;
305
370
  }
371
+
306
372
  if (successiveACState === 4) {
307
373
  eobrun--;
374
+
308
375
  if (eobrun === 0) {
309
376
  successiveACState = 0;
310
377
  }
311
378
  }
312
379
  }
380
+
313
381
  function decodeMcu(component, decode, mcu, row, col) {
314
382
  var mcuRow = mcu / mcusPerLine | 0;
315
383
  var mcuCol = mcu % mcusPerLine;
@@ -318,15 +386,18 @@ var JpegImage = function JpegImageClosure() {
318
386
  var offset = getBlockBufferOffset(component, blockRow, blockCol);
319
387
  decode(component, offset);
320
388
  }
389
+
321
390
  function decodeBlock(component, decode, mcu) {
322
391
  var blockRow = mcu / component.blocksPerLine | 0;
323
392
  var blockCol = mcu % component.blocksPerLine;
324
393
  var offset = getBlockBufferOffset(component, blockRow, blockCol);
325
394
  decode(component, offset);
326
395
  }
396
+
327
397
  var componentsLength = components.length;
328
398
  var component, i, j, k, n;
329
399
  var decodeFn;
400
+
330
401
  if (progressive) {
331
402
  if (spectralStart === 0) {
332
403
  decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;
@@ -336,23 +407,31 @@ var JpegImage = function JpegImageClosure() {
336
407
  } else {
337
408
  decodeFn = decodeBaseline;
338
409
  }
410
+
339
411
  var mcu = 0,
340
412
  fileMarker;
341
413
  var mcuExpected;
414
+
342
415
  if (componentsLength === 1) {
343
416
  mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;
344
417
  } else {
345
418
  mcuExpected = mcusPerLine * frame.mcusPerColumn;
346
419
  }
420
+
347
421
  var h, v;
422
+
348
423
  while (mcu < mcuExpected) {
349
424
  var mcuToRead = resetInterval ? Math.min(mcuExpected - mcu, resetInterval) : mcuExpected;
425
+
350
426
  for (i = 0; i < componentsLength; i++) {
351
427
  components[i].pred = 0;
352
428
  }
429
+
353
430
  eobrun = 0;
431
+
354
432
  if (componentsLength === 1) {
355
433
  component = components[0];
434
+
356
435
  for (n = 0; n < mcuToRead; n++) {
357
436
  decodeBlock(component, decodeFn, mcu);
358
437
  mcu++;
@@ -363,47 +442,60 @@ var JpegImage = function JpegImageClosure() {
363
442
  component = components[i];
364
443
  h = component.h;
365
444
  v = component.v;
445
+
366
446
  for (j = 0; j < v; j++) {
367
447
  for (k = 0; k < h; k++) {
368
448
  decodeMcu(component, decodeFn, mcu, j, k);
369
449
  }
370
450
  }
371
451
  }
452
+
372
453
  mcu++;
373
454
  }
374
455
  }
456
+
375
457
  bitsCount = 0;
376
458
  fileMarker = findNextFileMarker(data, offset);
459
+
377
460
  if (fileMarker && fileMarker.invalid) {
378
461
  (0, _util.warn)('decodeScan - unexpected MCU data, current marker is: ' + fileMarker.invalid);
379
462
  offset = fileMarker.offset;
380
463
  }
464
+
381
465
  var marker = fileMarker && fileMarker.marker;
466
+
382
467
  if (!marker || marker <= 0xFF00) {
383
468
  throw new JpegError('marker was not found');
384
469
  }
470
+
385
471
  if (marker >= 0xFFD0 && marker <= 0xFFD7) {
386
472
  offset += 2;
387
473
  } else {
388
474
  break;
389
475
  }
390
476
  }
477
+
391
478
  fileMarker = findNextFileMarker(data, offset);
479
+
392
480
  if (fileMarker && fileMarker.invalid) {
393
481
  (0, _util.warn)('decodeScan - unexpected Scan data, current marker is: ' + fileMarker.invalid);
394
482
  offset = fileMarker.offset;
395
483
  }
484
+
396
485
  return offset - startOffset;
397
486
  }
487
+
398
488
  function quantizeAndInverse(component, blockBufferOffset, p) {
399
489
  var qt = component.quantizationTable,
400
490
  blockData = component.blockData;
401
491
  var v0, v1, v2, v3, v4, v5, v6, v7;
402
492
  var p0, p1, p2, p3, p4, p5, p6, p7;
403
493
  var t;
494
+
404
495
  if (!qt) {
405
496
  throw new JpegError('missing required Quantization Table.');
406
497
  }
498
+
407
499
  for (var row = 0; row < 64; row += 8) {
408
500
  p0 = blockData[blockBufferOffset + row];
409
501
  p1 = blockData[blockBufferOffset + row + 1];
@@ -414,6 +506,7 @@ var JpegImage = function JpegImageClosure() {
414
506
  p6 = blockData[blockBufferOffset + row + 6];
415
507
  p7 = blockData[blockBufferOffset + row + 7];
416
508
  p0 *= qt[row];
509
+
417
510
  if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {
418
511
  t = dctSqrt2 * p0 + 512 >> 10;
419
512
  p[row] = t;
@@ -426,6 +519,7 @@ var JpegImage = function JpegImageClosure() {
426
519
  p[row + 7] = t;
427
520
  continue;
428
521
  }
522
+
429
523
  p1 *= qt[row + 1];
430
524
  p2 *= qt[row + 2];
431
525
  p3 *= qt[row + 3];
@@ -469,6 +563,7 @@ var JpegImage = function JpegImageClosure() {
469
563
  p[row + 3] = v3 + v4;
470
564
  p[row + 4] = v3 - v4;
471
565
  }
566
+
472
567
  for (var col = 0; col < 8; ++col) {
473
568
  p0 = p[col];
474
569
  p1 = p[col + 8];
@@ -478,6 +573,7 @@ var JpegImage = function JpegImageClosure() {
478
573
  p5 = p[col + 40];
479
574
  p6 = p[col + 48];
480
575
  p7 = p[col + 56];
576
+
481
577
  if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {
482
578
  t = dctSqrt2 * p0 + 8192 >> 14;
483
579
  t = t < -2040 ? 0 : t >= 2024 ? 255 : t + 2056 >> 4;
@@ -491,6 +587,7 @@ var JpegImage = function JpegImageClosure() {
491
587
  blockData[blockBufferOffset + col + 56] = t;
492
588
  continue;
493
589
  }
590
+
494
591
  v0 = dctSqrt2 * p0 + 2048 >> 12;
495
592
  v1 = dctSqrt2 * p4 + 2048 >> 12;
496
593
  v2 = p2;
@@ -544,30 +641,38 @@ var JpegImage = function JpegImageClosure() {
544
641
  blockData[blockBufferOffset + col + 56] = p7;
545
642
  }
546
643
  }
644
+
547
645
  function buildComponentData(frame, component) {
548
646
  var blocksPerLine = component.blocksPerLine;
549
647
  var blocksPerColumn = component.blocksPerColumn;
550
648
  var computationBuffer = new Int16Array(64);
649
+
551
650
  for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) {
552
651
  for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) {
553
652
  var offset = getBlockBufferOffset(component, blockRow, blockCol);
554
653
  quantizeAndInverse(component, offset, computationBuffer);
555
654
  }
556
655
  }
656
+
557
657
  return component.blockData;
558
658
  }
659
+
559
660
  function findNextFileMarker(data, currentPos) {
560
661
  var startPos = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : currentPos;
561
662
 
562
663
  function peekUint16(pos) {
563
664
  return data[pos] << 8 | data[pos + 1];
564
665
  }
666
+
565
667
  var maxPos = data.length - 1;
566
668
  var newPos = startPos < currentPos ? startPos : currentPos;
669
+
567
670
  if (currentPos >= maxPos) {
568
671
  return null;
569
672
  }
673
+
570
674
  var currentMarker = peekUint16(currentPos);
675
+
571
676
  if (currentMarker >= 0xFFC0 && currentMarker <= 0xFFFE) {
572
677
  return {
573
678
  invalid: null,
@@ -575,45 +680,55 @@ var JpegImage = function JpegImageClosure() {
575
680
  offset: currentPos
576
681
  };
577
682
  }
683
+
578
684
  var newMarker = peekUint16(newPos);
685
+
579
686
  while (!(newMarker >= 0xFFC0 && newMarker <= 0xFFFE)) {
580
687
  if (++newPos >= maxPos) {
581
688
  return null;
582
689
  }
690
+
583
691
  newMarker = peekUint16(newPos);
584
692
  }
693
+
585
694
  return {
586
695
  invalid: currentMarker.toString(16),
587
696
  marker: newMarker,
588
697
  offset: newPos
589
698
  };
590
699
  }
700
+
591
701
  JpegImage.prototype = {
592
702
  parse: function parse(data) {
593
703
  var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
594
704
  _ref2$dnlScanLines = _ref2.dnlScanLines,
595
- dnlScanLines = _ref2$dnlScanLines === undefined ? null : _ref2$dnlScanLines;
705
+ dnlScanLines = _ref2$dnlScanLines === void 0 ? null : _ref2$dnlScanLines;
596
706
 
597
707
  function readUint16() {
598
708
  var value = data[offset] << 8 | data[offset + 1];
599
709
  offset += 2;
600
710
  return value;
601
711
  }
712
+
602
713
  function readDataBlock() {
603
714
  var length = readUint16();
604
715
  var endOffset = offset + length - 2;
605
716
  var fileMarker = findNextFileMarker(data, endOffset, offset);
717
+
606
718
  if (fileMarker && fileMarker.invalid) {
607
719
  (0, _util.warn)('readDataBlock - incorrect length, current marker is: ' + fileMarker.invalid);
608
720
  endOffset = fileMarker.offset;
609
721
  }
722
+
610
723
  var array = data.subarray(offset, endOffset);
611
724
  offset += array.length;
612
725
  return array;
613
726
  }
727
+
614
728
  function prepareComponents(frame) {
615
729
  var mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);
616
730
  var mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);
731
+
617
732
  for (var i = 0; i < frame.components.length; i++) {
618
733
  component = frame.components[i];
619
734
  var blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine / 8) * component.h / frame.maxH);
@@ -625,9 +740,11 @@ var JpegImage = function JpegImageClosure() {
625
740
  component.blocksPerLine = blocksPerLine;
626
741
  component.blocksPerColumn = blocksPerColumn;
627
742
  }
743
+
628
744
  frame.mcusPerLine = mcusPerLine;
629
745
  frame.mcusPerColumn = mcusPerColumn;
630
746
  }
747
+
631
748
  var offset = 0;
632
749
  var jfif = null;
633
750
  var adobe = null;
@@ -637,12 +754,16 @@ var JpegImage = function JpegImageClosure() {
637
754
  var huffmanTablesAC = [],
638
755
  huffmanTablesDC = [];
639
756
  var fileMarker = readUint16();
757
+
640
758
  if (fileMarker !== 0xFFD8) {
641
759
  throw new JpegError('SOI not found');
642
760
  }
761
+
643
762
  fileMarker = readUint16();
763
+
644
764
  markerLoop: while (fileMarker !== 0xFFD9) {
645
765
  var i, j, l;
766
+
646
767
  switch (fileMarker) {
647
768
  case 0xFFE0:
648
769
  case 0xFFE1:
@@ -662,6 +783,7 @@ var JpegImage = function JpegImageClosure() {
662
783
  case 0xFFEF:
663
784
  case 0xFFFE:
664
785
  var appData = readDataBlock();
786
+
665
787
  if (fileMarker === 0xFFE0) {
666
788
  if (appData[0] === 0x4A && appData[1] === 0x46 && appData[2] === 0x49 && appData[3] === 0x46 && appData[4] === 0) {
667
789
  jfif = {
@@ -678,6 +800,7 @@ var JpegImage = function JpegImageClosure() {
678
800
  };
679
801
  }
680
802
  }
803
+
681
804
  if (fileMarker === 0xFFEE) {
682
805
  if (appData[0] === 0x41 && appData[1] === 0x64 && appData[2] === 0x6F && appData[3] === 0x62 && appData[4] === 0x65) {
683
806
  adobe = {
@@ -688,14 +811,18 @@ var JpegImage = function JpegImageClosure() {
688
811
  };
689
812
  }
690
813
  }
814
+
691
815
  break;
816
+
692
817
  case 0xFFDB:
693
818
  var quantizationTablesLength = readUint16();
694
819
  var quantizationTablesEnd = quantizationTablesLength + offset - 2;
695
820
  var z;
821
+
696
822
  while (offset < quantizationTablesEnd) {
697
823
  var quantizationTableSpec = data[offset++];
698
824
  var tableData = new Uint16Array(64);
825
+
699
826
  if (quantizationTableSpec >> 4 === 0) {
700
827
  for (j = 0; j < 64; j++) {
701
828
  z = dctZigZag[j];
@@ -709,15 +836,19 @@ var JpegImage = function JpegImageClosure() {
709
836
  } else {
710
837
  throw new JpegError('DQT - invalid table spec');
711
838
  }
839
+
712
840
  quantizationTables[quantizationTableSpec & 15] = tableData;
713
841
  }
842
+
714
843
  break;
844
+
715
845
  case 0xFFC0:
716
846
  case 0xFFC1:
717
847
  case 0xFFC2:
718
848
  if (frame) {
719
849
  throw new JpegError('Only single frame JPEGs supported');
720
850
  }
851
+
721
852
  readUint16();
722
853
  frame = {};
723
854
  frame.extended = fileMarker === 0xFFC1;
@@ -732,16 +863,20 @@ var JpegImage = function JpegImageClosure() {
732
863
  componentId;
733
864
  var maxH = 0,
734
865
  maxV = 0;
866
+
735
867
  for (i = 0; i < componentsCount; i++) {
736
868
  componentId = data[offset];
737
869
  var h = data[offset + 1] >> 4;
738
870
  var v = data[offset + 1] & 15;
871
+
739
872
  if (maxH < h) {
740
873
  maxH = h;
741
874
  }
875
+
742
876
  if (maxV < v) {
743
877
  maxV = v;
744
878
  }
879
+
745
880
  var qId = data[offset + 2];
746
881
  l = frame.components.push({
747
882
  h: h,
@@ -752,37 +887,48 @@ var JpegImage = function JpegImageClosure() {
752
887
  frame.componentIds[componentId] = l - 1;
753
888
  offset += 3;
754
889
  }
890
+
755
891
  frame.maxH = maxH;
756
892
  frame.maxV = maxV;
757
893
  prepareComponents(frame);
758
894
  break;
895
+
759
896
  case 0xFFC4:
760
897
  var huffmanLength = readUint16();
898
+
761
899
  for (i = 2; i < huffmanLength;) {
762
900
  var huffmanTableSpec = data[offset++];
763
901
  var codeLengths = new Uint8Array(16);
764
902
  var codeLengthSum = 0;
903
+
765
904
  for (j = 0; j < 16; j++, offset++) {
766
905
  codeLengthSum += codeLengths[j] = data[offset];
767
906
  }
907
+
768
908
  var huffmanValues = new Uint8Array(codeLengthSum);
909
+
769
910
  for (j = 0; j < codeLengthSum; j++, offset++) {
770
911
  huffmanValues[j] = data[offset];
771
912
  }
913
+
772
914
  i += 17 + codeLengthSum;
773
915
  (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] = buildHuffmanTable(codeLengths, huffmanValues);
774
916
  }
917
+
775
918
  break;
919
+
776
920
  case 0xFFDD:
777
921
  readUint16();
778
922
  resetInterval = readUint16();
779
923
  break;
924
+
780
925
  case 0xFFDA:
781
926
  var parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;
782
927
  readUint16();
783
928
  var selectorsCount = data[offset++];
784
929
  var components = [],
785
930
  component;
931
+
786
932
  for (i = 0; i < selectorsCount; i++) {
787
933
  var componentIndex = frame.componentIds[data[offset++]];
788
934
  component = frame.components[componentIndex];
@@ -791,57 +937,75 @@ var JpegImage = function JpegImageClosure() {
791
937
  component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];
792
938
  components.push(component);
793
939
  }
940
+
794
941
  var spectralStart = data[offset++];
795
942
  var spectralEnd = data[offset++];
796
943
  var successiveApproximation = data[offset++];
944
+
797
945
  try {
798
946
  var processed = decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successiveApproximation >> 4, successiveApproximation & 15, parseDNLMarker);
799
947
  offset += processed;
800
948
  } catch (ex) {
801
949
  if (ex instanceof DNLMarkerError) {
802
- (0, _util.warn)(ex.message + ' -- attempting to re-parse the JPEG image.');
803
- return this.parse(data, { dnlScanLines: ex.scanLines });
950
+ (0, _util.warn)("".concat(ex.message, " -- attempting to re-parse the JPEG image."));
951
+ return this.parse(data, {
952
+ dnlScanLines: ex.scanLines
953
+ });
804
954
  } else if (ex instanceof EOIMarkerError) {
805
- (0, _util.warn)(ex.message + ' -- ignoring the rest of the image data.');
955
+ (0, _util.warn)("".concat(ex.message, " -- ignoring the rest of the image data."));
806
956
  break markerLoop;
807
957
  }
958
+
808
959
  throw ex;
809
960
  }
961
+
810
962
  break;
963
+
811
964
  case 0xFFDC:
812
965
  offset += 4;
813
966
  break;
967
+
814
968
  case 0xFFFF:
815
969
  if (data[offset] !== 0xFF) {
816
970
  offset--;
817
971
  }
972
+
818
973
  break;
974
+
819
975
  default:
820
976
  if (data[offset - 3] === 0xFF && data[offset - 2] >= 0xC0 && data[offset - 2] <= 0xFE) {
821
977
  offset -= 3;
822
978
  break;
823
979
  }
980
+
824
981
  var nextFileMarker = findNextFileMarker(data, offset - 2);
982
+
825
983
  if (nextFileMarker && nextFileMarker.invalid) {
826
984
  (0, _util.warn)('JpegImage.parse - unexpected data, current marker is: ' + nextFileMarker.invalid);
827
985
  offset = nextFileMarker.offset;
828
986
  break;
829
987
  }
988
+
830
989
  throw new JpegError('unknown marker ' + fileMarker.toString(16));
831
990
  }
991
+
832
992
  fileMarker = readUint16();
833
993
  }
994
+
834
995
  this.width = frame.samplesPerLine;
835
996
  this.height = frame.scanLines;
836
997
  this.jfif = jfif;
837
998
  this.adobe = adobe;
838
999
  this.components = [];
1000
+
839
1001
  for (i = 0; i < frame.components.length; i++) {
840
1002
  component = frame.components[i];
841
1003
  var quantizationTable = quantizationTables[component.quantizationId];
1004
+
842
1005
  if (quantizationTable) {
843
1006
  component.quantizationTable = quantizationTable;
844
1007
  }
1008
+
845
1009
  this.components.push({
846
1010
  output: buildComponentData(frame, component),
847
1011
  scaleX: component.h / frame.maxH,
@@ -850,11 +1014,11 @@ var JpegImage = function JpegImageClosure() {
850
1014
  blocksPerColumn: component.blocksPerColumn
851
1015
  });
852
1016
  }
1017
+
853
1018
  this.numComponents = this.components.length;
854
1019
  },
855
1020
  _getLinearizedBlockData: function _getLinearizedBlockData(width, height) {
856
1021
  var isSourcePDF = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
857
-
858
1022
  var scaleX = this.width / width,
859
1023
  scaleY = this.height / height;
860
1024
  var component, componentScaleX, componentScaleY, blocksPerScanline;
@@ -867,6 +1031,7 @@ var JpegImage = function JpegImageClosure() {
867
1031
  var data = new Uint8ClampedArray(dataLength);
868
1032
  var xScaleBlockOffset = new Uint32Array(width);
869
1033
  var mask3LSB = 0xfffffff8;
1034
+
870
1035
  for (i = 0; i < numComponents; i++) {
871
1036
  component = this.components[i];
872
1037
  componentScaleX = component.scaleX * scaleX;
@@ -874,23 +1039,29 @@ var JpegImage = function JpegImageClosure() {
874
1039
  offset = i;
875
1040
  output = component.output;
876
1041
  blocksPerScanline = component.blocksPerLine + 1 << 3;
1042
+
877
1043
  for (x = 0; x < width; x++) {
878
1044
  j = 0 | x * componentScaleX;
879
1045
  xScaleBlockOffset[x] = (j & mask3LSB) << 3 | j & 7;
880
1046
  }
1047
+
881
1048
  for (y = 0; y < height; y++) {
882
1049
  j = 0 | y * componentScaleY;
883
1050
  index = blocksPerScanline * (j & mask3LSB) | (j & 7) << 3;
1051
+
884
1052
  for (x = 0; x < width; x++) {
885
1053
  data[offset] = output[index + xScaleBlockOffset[x]];
886
1054
  offset += numComponents;
887
1055
  }
888
1056
  }
889
1057
  }
1058
+
890
1059
  var transform = this._decodeTransform;
1060
+
891
1061
  if (!isSourcePDF && numComponents === 4 && !transform) {
892
1062
  transform = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255]);
893
1063
  }
1064
+
894
1065
  if (transform) {
895
1066
  for (i = 0; i < dataLength;) {
896
1067
  for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) {
@@ -898,6 +1069,7 @@ var JpegImage = function JpegImageClosure() {
898
1069
  }
899
1070
  }
900
1071
  }
1072
+
901
1073
  return data;
902
1074
  },
903
1075
 
@@ -905,19 +1077,25 @@ var JpegImage = function JpegImageClosure() {
905
1077
  if (this.adobe) {
906
1078
  return !!this.adobe.transformCode;
907
1079
  }
1080
+
908
1081
  if (this.numComponents === 3) {
909
1082
  if (this._colorTransform === 0) {
910
1083
  return false;
911
1084
  }
1085
+
912
1086
  return true;
913
1087
  }
1088
+
914
1089
  if (this._colorTransform === 1) {
915
1090
  return true;
916
1091
  }
1092
+
917
1093
  return false;
918
1094
  },
1095
+
919
1096
  _convertYccToRgb: function convertYccToRgb(data) {
920
1097
  var Y, Cb, Cr;
1098
+
921
1099
  for (var i = 0, length = data.length; i < length; i += 3) {
922
1100
  Y = data[i];
923
1101
  Cb = data[i + 1];
@@ -926,11 +1104,13 @@ var JpegImage = function JpegImageClosure() {
926
1104
  data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;
927
1105
  data[i + 2] = Y - 226.816 + 1.772 * Cb;
928
1106
  }
1107
+
929
1108
  return data;
930
1109
  },
931
1110
  _convertYcckToRgb: function convertYcckToRgb(data) {
932
1111
  var Y, Cb, Cr, k;
933
1112
  var offset = 0;
1113
+
934
1114
  for (var i = 0, length = data.length; i < length; i += 4) {
935
1115
  Y = data[i];
936
1116
  Cb = data[i + 1];
@@ -940,10 +1120,12 @@ var JpegImage = function JpegImageClosure() {
940
1120
  data[offset++] = 107.268039397724 + Cb * (2.19927104525741e-5 * Cb - 0.000640992018297945 * Cr + 0.000659397001245577 * Y + 0.000426105652938837 * k - 0.176491792462875) + Cr * (-0.000778269941513683 * Cr + 0.00130872261408275 * Y + 0.000770482631801132 * k - 0.151051492775562) + Y * (0.00126935368114843 * Y - 0.00265090189010898 * k + 0.25802910206845) + k * (-0.000318913117588328 * k - 0.213742400323665);
941
1121
  data[offset++] = -20.810012546947 + Cb * (-0.000570115196973677 * Cb - 2.63409051004589e-5 * Cr + 0.0020741088115012 * Y - 0.00288260236853442 * k + 0.814272968359295) + Cr * (-1.53496057440975e-5 * Cr - 0.000132689043961446 * Y + 0.000560833691242812 * k - 0.195152027534049) + Y * (0.00174418132927582 * Y - 0.00255243321439347 * k + 0.116935020465145) + k * (-0.000343531996510555 * k + 0.24165260232407);
942
1122
  }
1123
+
943
1124
  return data.subarray(0, offset);
944
1125
  },
945
1126
  _convertYcckToCmyk: function convertYcckToCmyk(data) {
946
1127
  var Y, Cb, Cr;
1128
+
947
1129
  for (var i = 0, length = data.length; i < length; i += 4) {
948
1130
  Y = data[i];
949
1131
  Cb = data[i + 1];
@@ -952,12 +1134,14 @@ var JpegImage = function JpegImageClosure() {
952
1134
  data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr;
953
1135
  data[i + 2] = 481.816 - Y - 1.772 * Cb;
954
1136
  }
1137
+
955
1138
  return data;
956
1139
  },
957
1140
  _convertCmykToRgb: function convertCmykToRgb(data) {
958
1141
  var c, m, y, k;
959
1142
  var offset = 0;
960
1143
  var scale = 1 / 255;
1144
+
961
1145
  for (var i = 0, length = data.length; i < length; i += 4) {
962
1146
  c = data[i] * scale;
963
1147
  m = data[i + 1] * scale;
@@ -967,30 +1151,35 @@ var JpegImage = function JpegImageClosure() {
967
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);
968
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);
969
1153
  }
1154
+
970
1155
  return data.subarray(0, offset);
971
1156
  },
972
1157
  getData: function getData(_ref3) {
973
1158
  var width = _ref3.width,
974
1159
  height = _ref3.height,
975
1160
  _ref3$forceRGB = _ref3.forceRGB,
976
- forceRGB = _ref3$forceRGB === undefined ? false : _ref3$forceRGB,
1161
+ forceRGB = _ref3$forceRGB === void 0 ? false : _ref3$forceRGB,
977
1162
  _ref3$isSourcePDF = _ref3.isSourcePDF,
978
- isSourcePDF = _ref3$isSourcePDF === undefined ? false : _ref3$isSourcePDF;
1163
+ isSourcePDF = _ref3$isSourcePDF === void 0 ? false : _ref3$isSourcePDF;
979
1164
 
980
1165
  if (this.numComponents > 4) {
981
1166
  throw new JpegError('Unsupported color mode');
982
1167
  }
1168
+
983
1169
  var data = this._getLinearizedBlockData(width, height, isSourcePDF);
1170
+
984
1171
  if (this.numComponents === 1 && forceRGB) {
985
1172
  var dataLength = data.length;
986
1173
  var rgbData = new Uint8ClampedArray(dataLength * 3);
987
1174
  var offset = 0;
1175
+
988
1176
  for (var i = 0; i < dataLength; i++) {
989
1177
  var grayColor = data[i];
990
1178
  rgbData[offset++] = grayColor;
991
1179
  rgbData[offset++] = grayColor;
992
1180
  rgbData[offset++] = grayColor;
993
1181
  }
1182
+
994
1183
  return rgbData;
995
1184
  } else if (this.numComponents === 3 && this._isColorConversionNeeded) {
996
1185
  return this._convertYccToRgb(data);
@@ -999,14 +1188,17 @@ var JpegImage = function JpegImageClosure() {
999
1188
  if (forceRGB) {
1000
1189
  return this._convertYcckToRgb(data);
1001
1190
  }
1191
+
1002
1192
  return this._convertYcckToCmyk(data);
1003
1193
  } else if (forceRGB) {
1004
1194
  return this._convertCmykToRgb(data);
1005
1195
  }
1006
1196
  }
1197
+
1007
1198
  return data;
1008
1199
  }
1009
1200
  };
1010
1201
  return JpegImage;
1011
1202
  }();
1203
+
1012
1204
  exports.JpegImage = JpegImage;