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
@@ -19,18 +19,19 @@
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.getTilingPatternIR = exports.Pattern = undefined;
27
+ exports.getTilingPatternIR = getTilingPatternIR;
28
+ exports.Pattern = void 0;
28
29
 
29
- var _util = require('../shared/util');
30
+ var _util = require("../shared/util");
30
31
 
31
- var _colorspace = require('./colorspace');
32
+ var _colorspace = require("./colorspace");
32
33
 
33
- var _primitives = require('./primitives');
34
+ var _primitives = require("./primitives");
34
35
 
35
36
  var ShadingType = {
36
37
  FUNCTION_BASED: 1,
@@ -41,28 +42,34 @@ var ShadingType = {
41
42
  COONS_PATCH_MESH: 6,
42
43
  TENSOR_PATCH_MESH: 7
43
44
  };
45
+
44
46
  var Pattern = function PatternClosure() {
45
47
  function Pattern() {
46
48
  (0, _util.unreachable)('should not call Pattern constructor');
47
49
  }
50
+
48
51
  Pattern.prototype = {
49
52
  getPattern: function Pattern_getPattern(ctx) {
50
- (0, _util.unreachable)('Should not call Pattern.getStyle: ' + ctx);
53
+ (0, _util.unreachable)("Should not call Pattern.getStyle: ".concat(ctx));
51
54
  }
52
55
  };
56
+
53
57
  Pattern.parseShading = function (shading, matrix, xref, res, handler, pdfFunctionFactory) {
54
58
  var dict = (0, _primitives.isStream)(shading) ? shading.dict : shading;
55
59
  var type = dict.get('ShadingType');
60
+
56
61
  try {
57
62
  switch (type) {
58
63
  case ShadingType.AXIAL:
59
64
  case ShadingType.RADIAL:
60
65
  return new Shadings.RadialAxial(dict, matrix, xref, res, pdfFunctionFactory);
66
+
61
67
  case ShadingType.FREE_FORM_MESH:
62
68
  case ShadingType.LATTICE_FORM_MESH:
63
69
  case ShadingType.COONS_PATCH_MESH:
64
70
  case ShadingType.TENSOR_PATCH_MESH:
65
71
  return new Shadings.Mesh(shading, matrix, xref, res, pdfFunctionFactory);
72
+
66
73
  default:
67
74
  throw new _util.FormatError('Unsupported ShadingType: ' + type);
68
75
  }
@@ -70,15 +77,22 @@ var Pattern = function PatternClosure() {
70
77
  if (ex instanceof _util.MissingDataException) {
71
78
  throw ex;
72
79
  }
73
- handler.send('UnsupportedFeature', { featureId: _util.UNSUPPORTED_FEATURES.shadingPattern });
80
+
81
+ handler.send('UnsupportedFeature', {
82
+ featureId: _util.UNSUPPORTED_FEATURES.shadingPattern
83
+ });
74
84
  (0, _util.warn)(ex);
75
85
  return new Shadings.Dummy();
76
86
  }
77
87
  };
88
+
78
89
  return Pattern;
79
90
  }();
91
+
92
+ exports.Pattern = Pattern;
80
93
  var Shadings = {};
81
94
  Shadings.SMALL_NUMBER = 1e-6;
95
+
82
96
  Shadings.RadialAxial = function RadialAxialClosure() {
83
97
  function RadialAxial(dict, matrix, xref, res, pdfFunctionFactory) {
84
98
  this.matrix = matrix;
@@ -90,18 +104,22 @@ Shadings.RadialAxial = function RadialAxialClosure() {
90
104
  this.cs = cs;
91
105
  var t0 = 0.0,
92
106
  t1 = 1.0;
107
+
93
108
  if (dict.has('Domain')) {
94
109
  var domainArr = dict.getArray('Domain');
95
110
  t0 = domainArr[0];
96
111
  t1 = domainArr[1];
97
112
  }
113
+
98
114
  var extendStart = false,
99
115
  extendEnd = false;
116
+
100
117
  if (dict.has('Extend')) {
101
118
  var extendArr = dict.getArray('Extend');
102
119
  extendStart = extendArr[0];
103
120
  extendEnd = extendArr[1];
104
121
  }
122
+
105
123
  if (this.shadingType === ShadingType.RADIAL && (!extendStart || !extendEnd)) {
106
124
  var x1 = this.coordsArr[0];
107
125
  var y1 = this.coordsArr[1];
@@ -110,10 +128,12 @@ Shadings.RadialAxial = function RadialAxialClosure() {
110
128
  var y2 = this.coordsArr[4];
111
129
  var r2 = this.coordsArr[5];
112
130
  var distance = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
131
+
113
132
  if (r1 <= r2 + distance && r2 <= r1 + distance) {
114
133
  (0, _util.warn)('Unsupported radial gradient.');
115
134
  }
116
135
  }
136
+
117
137
  this.extendStart = extendStart;
118
138
  this.extendEnd = extendEnd;
119
139
  var fnObj = dict.get('Function');
@@ -121,40 +141,52 @@ Shadings.RadialAxial = function RadialAxialClosure() {
121
141
  var diff = t1 - t0;
122
142
  var step = diff / 10;
123
143
  var colorStops = this.colorStops = [];
144
+
124
145
  if (t0 >= t1 || step <= 0) {
125
146
  (0, _util.info)('Bad shading domain.');
126
147
  return;
127
148
  }
149
+
128
150
  var color = new Float32Array(cs.numComps),
129
151
  ratio = new Float32Array(1);
130
152
  var rgbColor;
153
+
131
154
  for (var i = t0; i <= t1; i += step) {
132
155
  ratio[0] = i;
133
156
  fn(ratio, 0, color, 0);
134
157
  rgbColor = cs.getRgb(color, 0);
158
+
135
159
  var cssColor = _util.Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);
160
+
136
161
  colorStops.push([(i - t0) / diff, cssColor]);
137
162
  }
163
+
138
164
  var background = 'transparent';
165
+
139
166
  if (dict.has('Background')) {
140
167
  rgbColor = cs.getRgb(dict.get('Background'), 0);
141
168
  background = _util.Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);
142
169
  }
170
+
143
171
  if (!extendStart) {
144
172
  colorStops.unshift([0, background]);
145
173
  colorStops[1][0] += Shadings.SMALL_NUMBER;
146
174
  }
175
+
147
176
  if (!extendEnd) {
148
177
  colorStops[colorStops.length - 1][0] -= Shadings.SMALL_NUMBER;
149
178
  colorStops.push([1, background]);
150
179
  }
180
+
151
181
  this.colorStops = colorStops;
152
182
  }
183
+
153
184
  RadialAxial.prototype = {
154
185
  getIR: function RadialAxial_getIR() {
155
186
  var coordsArr = this.coordsArr;
156
187
  var shadingType = this.shadingType;
157
188
  var type, p0, p1, r0, r1;
189
+
158
190
  if (shadingType === ShadingType.AXIAL) {
159
191
  p0 = [coordsArr[0], coordsArr[1]];
160
192
  p1 = [coordsArr[2], coordsArr[3]];
@@ -168,23 +200,29 @@ Shadings.RadialAxial = function RadialAxialClosure() {
168
200
  r1 = coordsArr[5];
169
201
  type = 'radial';
170
202
  } else {
171
- (0, _util.unreachable)('getPattern type unknown: ' + shadingType);
203
+ (0, _util.unreachable)("getPattern type unknown: ".concat(shadingType));
172
204
  }
205
+
173
206
  var matrix = this.matrix;
207
+
174
208
  if (matrix) {
175
209
  p0 = _util.Util.applyTransform(p0, matrix);
176
210
  p1 = _util.Util.applyTransform(p1, matrix);
211
+
177
212
  if (shadingType === ShadingType.RADIAL) {
178
213
  var scale = _util.Util.singularValueDecompose2dScale(matrix);
214
+
179
215
  r0 *= scale[0];
180
216
  r1 *= scale[1];
181
217
  }
182
218
  }
219
+
183
220
  return ['RadialAxial', type, this.colorStops, p0, p1, r0, r1];
184
221
  }
185
222
  };
186
223
  return RadialAxial;
187
224
  }();
225
+
188
226
  Shadings.Mesh = function MeshClosure() {
189
227
  function MeshStreamReader(stream, context) {
190
228
  this.stream = stream;
@@ -196,41 +234,52 @@ Shadings.Mesh = function MeshClosure() {
196
234
  var csNumComps = context.colorSpace.numComps;
197
235
  this.tmpCsCompsBuf = context.colorFn ? new Float32Array(csNumComps) : this.tmpCompsBuf;
198
236
  }
237
+
199
238
  MeshStreamReader.prototype = {
200
239
  get hasData() {
201
240
  if (this.stream.end) {
202
241
  return this.stream.pos < this.stream.end;
203
242
  }
243
+
204
244
  if (this.bufferLength > 0) {
205
245
  return true;
206
246
  }
247
+
207
248
  var nextByte = this.stream.getByte();
249
+
208
250
  if (nextByte < 0) {
209
251
  return false;
210
252
  }
253
+
211
254
  this.buffer = nextByte;
212
255
  this.bufferLength = 8;
213
256
  return true;
214
257
  },
258
+
215
259
  readBits: function MeshStreamReader_readBits(n) {
216
260
  var buffer = this.buffer;
217
261
  var bufferLength = this.bufferLength;
262
+
218
263
  if (n === 32) {
219
264
  if (bufferLength === 0) {
220
265
  return (this.stream.getByte() << 24 | this.stream.getByte() << 16 | this.stream.getByte() << 8 | this.stream.getByte()) >>> 0;
221
266
  }
267
+
222
268
  buffer = buffer << 24 | this.stream.getByte() << 16 | this.stream.getByte() << 8 | this.stream.getByte();
223
269
  var nextByte = this.stream.getByte();
224
270
  this.buffer = nextByte & (1 << bufferLength) - 1;
225
271
  return (buffer << 8 - bufferLength | (nextByte & 0xFF) >> bufferLength) >>> 0;
226
272
  }
273
+
227
274
  if (n === 8 && bufferLength === 0) {
228
275
  return this.stream.getByte();
229
276
  }
277
+
230
278
  while (bufferLength < n) {
231
279
  buffer = buffer << 8 | this.stream.getByte();
232
280
  bufferLength += 8;
233
281
  }
282
+
234
283
  bufferLength -= n;
235
284
  this.bufferLength = bufferLength;
236
285
  this.buffer = buffer & (1 << bufferLength) - 1;
@@ -257,62 +306,77 @@ Shadings.Mesh = function MeshClosure() {
257
306
  var scale = bitsPerComponent < 32 ? 1 / ((1 << bitsPerComponent) - 1) : 2.3283064365386963e-10;
258
307
  var decode = this.context.decode;
259
308
  var components = this.tmpCompsBuf;
309
+
260
310
  for (var i = 0, j = 4; i < numComps; i++, j += 2) {
261
311
  var ci = this.readBits(bitsPerComponent);
262
312
  components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j];
263
313
  }
314
+
264
315
  var color = this.tmpCsCompsBuf;
316
+
265
317
  if (this.context.colorFn) {
266
318
  this.context.colorFn(components, 0, color, 0);
267
319
  }
320
+
268
321
  return this.context.colorSpace.getRgb(color, 0);
269
322
  }
270
323
  };
324
+
271
325
  function decodeType4Shading(mesh, reader) {
272
326
  var coords = mesh.coords;
273
327
  var colors = mesh.colors;
274
328
  var operators = [];
275
329
  var ps = [];
276
330
  var verticesLeft = 0;
331
+
277
332
  while (reader.hasData) {
278
333
  var f = reader.readFlag();
279
334
  var coord = reader.readCoordinate();
280
335
  var color = reader.readComponents();
336
+
281
337
  if (verticesLeft === 0) {
282
338
  if (!(0 <= f && f <= 2)) {
283
339
  throw new _util.FormatError('Unknown type4 flag');
284
340
  }
341
+
285
342
  switch (f) {
286
343
  case 0:
287
344
  verticesLeft = 3;
288
345
  break;
346
+
289
347
  case 1:
290
348
  ps.push(ps[ps.length - 2], ps[ps.length - 1]);
291
349
  verticesLeft = 1;
292
350
  break;
351
+
293
352
  case 2:
294
353
  ps.push(ps[ps.length - 3], ps[ps.length - 1]);
295
354
  verticesLeft = 1;
296
355
  break;
297
356
  }
357
+
298
358
  operators.push(f);
299
359
  }
360
+
300
361
  ps.push(coords.length);
301
362
  coords.push(coord);
302
363
  colors.push(color);
303
364
  verticesLeft--;
304
365
  reader.align();
305
366
  }
367
+
306
368
  mesh.figures.push({
307
369
  type: 'triangles',
308
370
  coords: new Int32Array(ps),
309
371
  colors: new Int32Array(ps)
310
372
  });
311
373
  }
374
+
312
375
  function decodeType5Shading(mesh, reader, verticesPerRow) {
313
376
  var coords = mesh.coords;
314
377
  var colors = mesh.colors;
315
378
  var ps = [];
379
+
316
380
  while (reader.hasData) {
317
381
  var coord = reader.readCoordinate();
318
382
  var color = reader.readComponents();
@@ -320,6 +384,7 @@ Shadings.Mesh = function MeshClosure() {
320
384
  coords.push(coord);
321
385
  colors.push(color);
322
386
  }
387
+
323
388
  mesh.figures.push({
324
389
  type: 'lattice',
325
390
  coords: new Int32Array(ps),
@@ -327,27 +392,34 @@ Shadings.Mesh = function MeshClosure() {
327
392
  verticesPerRow: verticesPerRow
328
393
  });
329
394
  }
395
+
330
396
  var MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3;
331
397
  var MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20;
332
398
  var TRIANGLE_DENSITY = 20;
399
+
333
400
  var getB = function getBClosure() {
334
401
  function buildB(count) {
335
402
  var lut = [];
403
+
336
404
  for (var i = 0; i <= count; i++) {
337
405
  var t = i / count,
338
406
  t_ = 1 - t;
339
407
  lut.push(new Float32Array([t_ * t_ * t_, 3 * t * t_ * t_, 3 * t * t * t_, t * t * t]));
340
408
  }
409
+
341
410
  return lut;
342
411
  }
412
+
343
413
  var cache = [];
344
414
  return function getB(count) {
345
415
  if (!cache[count]) {
346
416
  cache[count] = buildB(count);
347
417
  }
418
+
348
419
  return cache[count];
349
420
  };
350
421
  }();
422
+
351
423
  function buildFigureFromPatch(mesh, index) {
352
424
  var figure = mesh.figures[index];
353
425
  (0, _util.assert)(figure.type === 'patch', 'Unexpected patch mesh figure');
@@ -375,6 +447,7 @@ Shadings.Mesh = function MeshClosure() {
375
447
  c3 = colors[ci[3]];
376
448
  var bRow = getB(splitYBy),
377
449
  bCol = getB(splitXBy);
450
+
378
451
  for (var row = 0; row <= splitYBy; row++) {
379
452
  cl[0] = (c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy | 0;
380
453
  cl[1] = (c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy | 0;
@@ -382,13 +455,16 @@ Shadings.Mesh = function MeshClosure() {
382
455
  cr[0] = (c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy | 0;
383
456
  cr[1] = (c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy | 0;
384
457
  cr[2] = (c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy | 0;
458
+
385
459
  for (var col = 0; col <= splitXBy; col++, k++) {
386
460
  if ((row === 0 || row === splitYBy) && (col === 0 || col === splitXBy)) {
387
461
  continue;
388
462
  }
463
+
389
464
  var x = 0,
390
465
  y = 0;
391
466
  var q = 0;
467
+
392
468
  for (var i = 0; i <= 3; i++) {
393
469
  for (var j = 0; j <= 3; j++, q++) {
394
470
  var m = bRow[row][i] * bCol[col][j];
@@ -396,6 +472,7 @@ Shadings.Mesh = function MeshClosure() {
396
472
  y += coords[pi[q]][1] * m;
397
473
  }
398
474
  }
475
+
399
476
  figureCoords[k] = coords.length;
400
477
  coords.push([x, y]);
401
478
  figureColors[k] = colors.length;
@@ -406,6 +483,7 @@ Shadings.Mesh = function MeshClosure() {
406
483
  colors.push(newColor);
407
484
  }
408
485
  }
486
+
409
487
  figureCoords[0] = pi[0];
410
488
  figureColors[0] = ci[0];
411
489
  figureCoords[splitXBy] = pi[3];
@@ -421,26 +499,35 @@ Shadings.Mesh = function MeshClosure() {
421
499
  verticesPerRow: verticesPerRow
422
500
  };
423
501
  }
502
+
424
503
  function decodeType6Shading(mesh, reader) {
425
504
  var coords = mesh.coords;
426
505
  var colors = mesh.colors;
427
506
  var ps = new Int32Array(16);
428
507
  var cs = new Int32Array(4);
508
+
429
509
  while (reader.hasData) {
430
510
  var f = reader.readFlag();
511
+
431
512
  if (!(0 <= f && f <= 3)) {
432
513
  throw new _util.FormatError('Unknown type6 flag');
433
514
  }
515
+
434
516
  var i, ii;
435
517
  var pi = coords.length;
518
+
436
519
  for (i = 0, ii = f !== 0 ? 8 : 12; i < ii; i++) {
437
520
  coords.push(reader.readCoordinate());
438
521
  }
522
+
439
523
  var ci = colors.length;
524
+
440
525
  for (i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {
441
526
  colors.push(reader.readComponents());
442
527
  }
528
+
443
529
  var tmp1, tmp2, tmp3, tmp4;
530
+
444
531
  switch (f) {
445
532
  case 0:
446
533
  ps[12] = pi + 3;
@@ -460,6 +547,7 @@ Shadings.Mesh = function MeshClosure() {
460
547
  cs[0] = ci;
461
548
  cs[1] = ci + 3;
462
549
  break;
550
+
463
551
  case 1:
464
552
  tmp1 = ps[12];
465
553
  tmp2 = ps[13];
@@ -484,6 +572,7 @@ Shadings.Mesh = function MeshClosure() {
484
572
  cs[0] = tmp1;
485
573
  cs[1] = ci + 1;
486
574
  break;
575
+
487
576
  case 2:
488
577
  tmp1 = ps[15];
489
578
  tmp2 = ps[11];
@@ -505,6 +594,7 @@ Shadings.Mesh = function MeshClosure() {
505
594
  cs[0] = tmp1;
506
595
  cs[1] = ci + 1;
507
596
  break;
597
+
508
598
  case 3:
509
599
  ps[12] = ps[0];
510
600
  ps[13] = pi + 0;
@@ -524,6 +614,7 @@ Shadings.Mesh = function MeshClosure() {
524
614
  cs[1] = ci + 1;
525
615
  break;
526
616
  }
617
+
527
618
  ps[5] = coords.length;
528
619
  coords.push([(-4 * coords[ps[0]][0] - coords[ps[15]][0] + 6 * (coords[ps[4]][0] + coords[ps[1]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[13]][0] + coords[ps[7]][0])) / 9, (-4 * coords[ps[0]][1] - coords[ps[15]][1] + 6 * (coords[ps[4]][1] + coords[ps[1]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[13]][1] + coords[ps[7]][1])) / 9]);
529
620
  ps[6] = coords.length;
@@ -539,26 +630,35 @@ Shadings.Mesh = function MeshClosure() {
539
630
  });
540
631
  }
541
632
  }
633
+
542
634
  function decodeType7Shading(mesh, reader) {
543
635
  var coords = mesh.coords;
544
636
  var colors = mesh.colors;
545
637
  var ps = new Int32Array(16);
546
638
  var cs = new Int32Array(4);
639
+
547
640
  while (reader.hasData) {
548
641
  var f = reader.readFlag();
642
+
549
643
  if (!(0 <= f && f <= 3)) {
550
644
  throw new _util.FormatError('Unknown type7 flag');
551
645
  }
646
+
552
647
  var i, ii;
553
648
  var pi = coords.length;
649
+
554
650
  for (i = 0, ii = f !== 0 ? 12 : 16; i < ii; i++) {
555
651
  coords.push(reader.readCoordinate());
556
652
  }
653
+
557
654
  var ci = colors.length;
655
+
558
656
  for (i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {
559
657
  colors.push(reader.readComponents());
560
658
  }
659
+
561
660
  var tmp1, tmp2, tmp3, tmp4;
661
+
562
662
  switch (f) {
563
663
  case 0:
564
664
  ps[12] = pi + 3;
@@ -582,6 +682,7 @@ Shadings.Mesh = function MeshClosure() {
582
682
  cs[0] = ci;
583
683
  cs[1] = ci + 3;
584
684
  break;
685
+
585
686
  case 1:
586
687
  tmp1 = ps[12];
587
688
  tmp2 = ps[13];
@@ -610,6 +711,7 @@ Shadings.Mesh = function MeshClosure() {
610
711
  cs[0] = tmp1;
611
712
  cs[1] = ci + 1;
612
713
  break;
714
+
613
715
  case 2:
614
716
  tmp1 = ps[15];
615
717
  tmp2 = ps[11];
@@ -635,6 +737,7 @@ Shadings.Mesh = function MeshClosure() {
635
737
  cs[0] = tmp1;
636
738
  cs[1] = ci + 1;
637
739
  break;
740
+
638
741
  case 3:
639
742
  ps[12] = ps[0];
640
743
  ps[13] = pi + 0;
@@ -658,6 +761,7 @@ Shadings.Mesh = function MeshClosure() {
658
761
  cs[1] = ci + 1;
659
762
  break;
660
763
  }
764
+
661
765
  mesh.figures.push({
662
766
  type: 'patch',
663
767
  coords: new Int32Array(ps),
@@ -665,11 +769,13 @@ Shadings.Mesh = function MeshClosure() {
665
769
  });
666
770
  }
667
771
  }
772
+
668
773
  function updateBounds(mesh) {
669
774
  var minX = mesh.coords[0][0],
670
775
  minY = mesh.coords[0][1],
671
776
  maxX = minX,
672
777
  maxY = minY;
778
+
673
779
  for (var i = 1, ii = mesh.coords.length; i < ii; i++) {
674
780
  var x = mesh.coords[i][0],
675
781
  y = mesh.coords[i][1];
@@ -678,42 +784,52 @@ Shadings.Mesh = function MeshClosure() {
678
784
  maxX = maxX < x ? x : maxX;
679
785
  maxY = maxY < y ? y : maxY;
680
786
  }
787
+
681
788
  mesh.bounds = [minX, minY, maxX, maxY];
682
789
  }
790
+
683
791
  function packData(mesh) {
684
792
  var i, ii, j, jj;
685
793
  var coords = mesh.coords;
686
794
  var coordsPacked = new Float32Array(coords.length * 2);
795
+
687
796
  for (i = 0, j = 0, ii = coords.length; i < ii; i++) {
688
797
  var xy = coords[i];
689
798
  coordsPacked[j++] = xy[0];
690
799
  coordsPacked[j++] = xy[1];
691
800
  }
801
+
692
802
  mesh.coords = coordsPacked;
693
803
  var colors = mesh.colors;
694
804
  var colorsPacked = new Uint8Array(colors.length * 3);
805
+
695
806
  for (i = 0, j = 0, ii = colors.length; i < ii; i++) {
696
807
  var c = colors[i];
697
808
  colorsPacked[j++] = c[0];
698
809
  colorsPacked[j++] = c[1];
699
810
  colorsPacked[j++] = c[2];
700
811
  }
812
+
701
813
  mesh.colors = colorsPacked;
702
814
  var figures = mesh.figures;
815
+
703
816
  for (i = 0, ii = figures.length; i < ii; i++) {
704
817
  var figure = figures[i],
705
818
  ps = figure.coords,
706
819
  cs = figure.colors;
820
+
707
821
  for (j = 0, jj = ps.length; j < jj; j++) {
708
822
  ps[j] *= 2;
709
823
  cs[j] *= 3;
710
824
  }
711
825
  }
712
826
  }
827
+
713
828
  function Mesh(stream, matrix, xref, res, pdfFunctionFactory) {
714
829
  if (!(0, _primitives.isStream)(stream)) {
715
830
  throw new _util.FormatError('Mesh data is not a stream');
716
831
  }
832
+
717
833
  var dict = stream.dict;
718
834
  this.matrix = matrix;
719
835
  this.shadingType = dict.get('ShadingType');
@@ -739,38 +855,49 @@ Shadings.Mesh = function MeshClosure() {
739
855
  };
740
856
  var reader = new MeshStreamReader(stream, decodeContext);
741
857
  var patchMesh = false;
858
+
742
859
  switch (this.shadingType) {
743
860
  case ShadingType.FREE_FORM_MESH:
744
861
  decodeType4Shading(this, reader);
745
862
  break;
863
+
746
864
  case ShadingType.LATTICE_FORM_MESH:
747
865
  var verticesPerRow = dict.get('VerticesPerRow') | 0;
866
+
748
867
  if (verticesPerRow < 2) {
749
868
  throw new _util.FormatError('Invalid VerticesPerRow');
750
869
  }
870
+
751
871
  decodeType5Shading(this, reader, verticesPerRow);
752
872
  break;
873
+
753
874
  case ShadingType.COONS_PATCH_MESH:
754
875
  decodeType6Shading(this, reader);
755
876
  patchMesh = true;
756
877
  break;
878
+
757
879
  case ShadingType.TENSOR_PATCH_MESH:
758
880
  decodeType7Shading(this, reader);
759
881
  patchMesh = true;
760
882
  break;
883
+
761
884
  default:
762
885
  (0, _util.unreachable)('Unsupported mesh type.');
763
886
  break;
764
887
  }
888
+
765
889
  if (patchMesh) {
766
890
  updateBounds(this);
891
+
767
892
  for (var i = 0, ii = this.figures.length; i < ii; i++) {
768
893
  buildFigureFromPatch(this, i);
769
894
  }
770
895
  }
896
+
771
897
  updateBounds(this);
772
898
  packData(this);
773
899
  }
900
+
774
901
  Mesh.prototype = {
775
902
  getIR: function Mesh_getIR() {
776
903
  return ['Mesh', this.shadingType, this.coords, this.colors, this.figures, this.bounds, this.matrix, this.bbox, this.background];
@@ -778,10 +905,12 @@ Shadings.Mesh = function MeshClosure() {
778
905
  };
779
906
  return Mesh;
780
907
  }();
908
+
781
909
  Shadings.Dummy = function DummyClosure() {
782
910
  function Dummy() {
783
911
  this.type = 'Pattern';
784
912
  }
913
+
785
914
  Dummy.prototype = {
786
915
  getIR: function Dummy_getIR() {
787
916
  return ['Dummy'];
@@ -789,17 +918,20 @@ Shadings.Dummy = function DummyClosure() {
789
918
  };
790
919
  return Dummy;
791
920
  }();
921
+
792
922
  function getTilingPatternIR(operatorList, dict, args) {
793
923
  var matrix = dict.getArray('Matrix');
924
+
794
925
  var bbox = _util.Util.normalizeRect(dict.getArray('BBox'));
926
+
795
927
  var xstep = dict.get('XStep');
796
928
  var ystep = dict.get('YStep');
797
929
  var paintType = dict.get('PaintType');
798
930
  var tilingType = dict.get('TilingType');
931
+
799
932
  if (bbox[2] - bbox[0] === 0 || bbox[3] - bbox[1] === 0) {
800
- throw new _util.FormatError('Invalid getTilingPatternIR /BBox array: [' + bbox + '].');
933
+ throw new _util.FormatError("Invalid getTilingPatternIR /BBox array: [".concat(bbox, "]."));
801
934
  }
935
+
802
936
  return ['TilingPattern', args, operatorList, matrix, bbox, xstep, ystep, paintType, tilingType];
803
- }
804
- exports.Pattern = Pattern;
805
- exports.getTilingPatternIR = getTilingPatternIR;
937
+ }