pdfjs-dist 2.0.489 → 2.2.228

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 (169) hide show
  1. package/CODE_OF_CONDUCT.md +15 -0
  2. package/bower.json +1 -1
  3. package/build/pdf.js +18515 -11402
  4. package/build/pdf.js.map +1 -1
  5. package/build/pdf.min.js +1 -1
  6. package/build/pdf.worker.js +48266 -37137
  7. package/build/pdf.worker.js.map +1 -1
  8. package/build/pdf.worker.min.js +1 -1
  9. package/external/url/url-lib.js +627 -0
  10. package/image_decoders/pdf.image_decoders.js +11350 -0
  11. package/image_decoders/pdf.image_decoders.js.map +1 -0
  12. package/image_decoders/pdf.image_decoders.min.js +1 -0
  13. package/lib/core/annotation.js +587 -242
  14. package/lib/core/arithmetic_decoder.js +275 -245
  15. package/lib/core/bidi.js +65 -6
  16. package/lib/core/ccitt.js +173 -18
  17. package/lib/core/ccitt_stream.js +15 -6
  18. package/lib/core/cff_parser.js +433 -61
  19. package/lib/core/charsets.js +5 -4
  20. package/lib/core/chunked_stream.js +400 -152
  21. package/lib/core/cmap.js +326 -87
  22. package/lib/core/colorspace.js +874 -594
  23. package/lib/core/core_utils.js +147 -0
  24. package/lib/core/crypto.js +290 -45
  25. package/lib/core/document.js +560 -268
  26. package/lib/core/encodings.js +19 -10
  27. package/lib/core/evaluator.js +1005 -360
  28. package/lib/core/font_renderer.js +331 -97
  29. package/lib/core/fonts.js +812 -195
  30. package/lib/core/function.js +284 -71
  31. package/lib/core/glyphlist.js +4 -3
  32. package/lib/core/image.js +169 -62
  33. package/lib/core/image_utils.js +111 -0
  34. package/lib/core/jbig2.js +479 -66
  35. package/lib/core/jbig2_stream.js +19 -8
  36. package/lib/core/jpeg_stream.js +38 -13
  37. package/lib/core/jpg.js +253 -29
  38. package/lib/core/jpx.js +396 -6
  39. package/lib/core/jpx_stream.js +18 -6
  40. package/lib/core/metrics.js +15 -15
  41. package/lib/core/murmurhash3.js +56 -34
  42. package/lib/core/obj.js +1354 -488
  43. package/lib/core/operator_list.js +144 -31
  44. package/lib/core/parser.js +539 -191
  45. package/lib/core/pattern.js +148 -14
  46. package/lib/core/pdf_manager.js +323 -133
  47. package/lib/core/primitives.js +111 -24
  48. package/lib/core/ps_parser.js +134 -45
  49. package/lib/core/standard_fonts.js +17 -17
  50. package/lib/core/stream.js +313 -34
  51. package/lib/core/type1_parser.js +143 -13
  52. package/lib/core/unicode.js +32 -5
  53. package/lib/core/worker.js +217 -190
  54. package/lib/core/worker_stream.js +277 -0
  55. package/lib/display/annotation_layer.js +450 -133
  56. package/lib/display/api.js +1597 -784
  57. package/lib/display/api_compatibility.js +11 -13
  58. package/lib/display/canvas.js +360 -44
  59. package/lib/display/content_disposition.js +83 -32
  60. package/lib/display/display_utils.js +747 -0
  61. package/lib/display/fetch_stream.js +221 -90
  62. package/lib/display/font_loader.js +468 -236
  63. package/lib/display/metadata.js +38 -16
  64. package/lib/display/network.js +635 -428
  65. package/lib/display/network_utils.js +32 -19
  66. package/lib/display/node_stream.js +367 -175
  67. package/lib/display/pattern_helper.js +81 -31
  68. package/lib/display/svg.js +1235 -519
  69. package/lib/display/text_layer.js +153 -29
  70. package/lib/display/transport_stream.js +345 -94
  71. package/lib/display/webgl.js +64 -18
  72. package/lib/display/worker_options.js +5 -4
  73. package/lib/display/xml_parser.js +166 -53
  74. package/lib/examples/node/domstubs.js +60 -4
  75. package/lib/pdf.js +36 -14
  76. package/lib/pdf.worker.js +5 -3
  77. package/lib/shared/compatibility.js +158 -564
  78. package/lib/shared/global_scope.js +2 -2
  79. package/lib/shared/is_node.js +4 -4
  80. package/lib/shared/message_handler.js +521 -0
  81. package/lib/shared/streams_polyfill.js +21 -17
  82. package/lib/shared/url_polyfill.js +56 -0
  83. package/lib/shared/util.js +243 -710
  84. package/lib/test/unit/annotation_spec.js +870 -401
  85. package/lib/test/unit/api_spec.js +657 -345
  86. package/lib/test/unit/bidi_spec.js +7 -7
  87. package/lib/test/unit/cff_parser_spec.js +54 -11
  88. package/lib/test/unit/clitests_helper.js +10 -8
  89. package/lib/test/unit/cmap_spec.js +95 -41
  90. package/lib/test/unit/colorspace_spec.js +115 -63
  91. package/lib/test/unit/core_utils_spec.js +191 -0
  92. package/lib/test/unit/crypto_spec.js +17 -5
  93. package/lib/test/unit/custom_spec.js +43 -55
  94. package/lib/test/unit/display_svg_spec.js +34 -18
  95. package/lib/test/unit/display_utils_spec.js +273 -0
  96. package/lib/test/unit/document_spec.js +8 -13
  97. package/lib/test/unit/encodings_spec.js +25 -45
  98. package/lib/test/unit/evaluator_spec.js +38 -15
  99. package/lib/test/unit/fetch_stream_spec.js +109 -0
  100. package/lib/test/unit/function_spec.js +17 -5
  101. package/lib/test/unit/jasmine-boot.js +33 -20
  102. package/lib/test/unit/{util_stream_spec.js → message_handler_spec.js} +41 -69
  103. package/lib/test/unit/metadata_spec.js +71 -11
  104. package/lib/test/unit/murmurhash3_spec.js +3 -3
  105. package/lib/test/unit/network_spec.js +19 -54
  106. package/lib/test/unit/network_utils_spec.js +91 -14
  107. package/lib/test/unit/node_stream_spec.js +56 -32
  108. package/lib/test/unit/parser_spec.js +162 -71
  109. package/lib/test/unit/pdf_find_controller_spec.js +230 -0
  110. package/lib/test/unit/pdf_find_utils_spec.js +63 -0
  111. package/lib/test/unit/pdf_history_spec.js +21 -9
  112. package/lib/test/unit/primitives_spec.js +53 -20
  113. package/lib/test/unit/stream_spec.js +12 -4
  114. package/lib/test/unit/test_utils.js +273 -56
  115. package/lib/test/unit/testreporter.js +21 -3
  116. package/lib/test/unit/type1_parser_spec.js +8 -6
  117. package/lib/test/unit/ui_utils_spec.js +454 -16
  118. package/lib/test/unit/unicode_spec.js +18 -15
  119. package/lib/test/unit/util_spec.js +87 -128
  120. package/lib/web/annotation_layer_builder.js +39 -22
  121. package/lib/web/app.js +1290 -588
  122. package/lib/web/app_options.js +100 -62
  123. package/lib/web/base_viewer.js +511 -182
  124. package/lib/web/chromecom.js +261 -117
  125. package/lib/web/debugger.js +166 -22
  126. package/lib/web/download_manager.js +32 -13
  127. package/lib/web/firefox_print_service.js +20 -10
  128. package/lib/web/firefoxcom.js +315 -80
  129. package/lib/web/genericcom.js +89 -30
  130. package/lib/web/genericl10n.js +142 -30
  131. package/lib/web/grab_to_pan.js +28 -4
  132. package/lib/web/interfaces.js +170 -47
  133. package/lib/web/overlay_manager.js +235 -85
  134. package/lib/web/password_prompt.js +22 -14
  135. package/lib/web/pdf_attachment_viewer.js +38 -18
  136. package/lib/web/pdf_cursor_tools.js +39 -16
  137. package/lib/web/pdf_document_properties.js +255 -136
  138. package/lib/web/pdf_find_bar.js +84 -40
  139. package/lib/web/pdf_find_controller.js +495 -184
  140. package/lib/web/pdf_find_utils.js +111 -0
  141. package/lib/web/pdf_history.js +190 -53
  142. package/lib/web/pdf_link_service.js +138 -77
  143. package/lib/web/pdf_outline_viewer.js +122 -46
  144. package/lib/web/pdf_page_view.js +191 -67
  145. package/lib/web/pdf_presentation_mode.js +99 -34
  146. package/lib/web/pdf_print_service.js +61 -13
  147. package/lib/web/pdf_rendering_queue.js +28 -9
  148. package/lib/web/pdf_sidebar.js +141 -81
  149. package/lib/web/pdf_sidebar_resizer.js +42 -16
  150. package/lib/web/pdf_single_page_viewer.js +74 -66
  151. package/lib/web/pdf_thumbnail_view.js +104 -33
  152. package/lib/web/pdf_thumbnail_viewer.js +66 -26
  153. package/lib/web/pdf_viewer.component.js +112 -32
  154. package/lib/web/pdf_viewer.js +91 -52
  155. package/lib/web/preferences.js +284 -89
  156. package/lib/web/secondary_toolbar.js +165 -40
  157. package/lib/web/text_layer_builder.js +134 -59
  158. package/lib/web/toolbar.js +78 -43
  159. package/lib/web/ui_utils.js +462 -136
  160. package/lib/web/view_history.js +215 -67
  161. package/lib/web/viewer_compatibility.js +4 -13
  162. package/package.json +5 -4
  163. package/web/pdf_viewer.css +79 -11
  164. package/web/pdf_viewer.js +6107 -3748
  165. package/web/pdf_viewer.js.map +1 -1
  166. package/lib/display/dom_utils.js +0 -309
  167. package/lib/test/unit/dom_utils_spec.js +0 -89
  168. package/lib/test/unit/fonts_spec.js +0 -81
  169. package/lib/web/dom_events.js +0 -137
@@ -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 2017 Mozilla Foundation
5
+ * Copyright 2019 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.
@@ -19,14 +19,15 @@
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.TilingPattern = exports.getShadingPatternFromIR = undefined;
27
+ exports.getShadingPatternFromIR = getShadingPatternFromIR;
28
+ exports.TilingPattern = void 0;
28
29
 
29
- var _util = require('../shared/util');
30
+ var _util = require("../shared/util");
30
31
 
31
32
  var ShadingIRs = {};
32
33
  ShadingIRs.RadialAxial = {
@@ -41,20 +42,24 @@ ShadingIRs.RadialAxial = {
41
42
  type: 'Pattern',
42
43
  getPattern: function RadialAxial_getPattern(ctx) {
43
44
  var grad;
45
+
44
46
  if (type === 'axial') {
45
47
  grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]);
46
48
  } else if (type === 'radial') {
47
49
  grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1);
48
50
  }
51
+
49
52
  for (var i = 0, ii = colorStops.length; i < ii; ++i) {
50
53
  var c = colorStops[i];
51
54
  grad.addColorStop(c[0], c[1]);
52
55
  }
56
+
53
57
  return grad;
54
58
  }
55
59
  };
56
60
  }
57
61
  };
62
+
58
63
  var createMeshCanvas = function createMeshCanvasClosure() {
59
64
  function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {
60
65
  var coords = context.coords,
@@ -62,6 +67,7 @@ var createMeshCanvas = function createMeshCanvasClosure() {
62
67
  var bytes = data.data,
63
68
  rowSize = data.width * 4;
64
69
  var tmp;
70
+
65
71
  if (coords[p1 + 1] > coords[p2 + 1]) {
66
72
  tmp = p1;
67
73
  p1 = p2;
@@ -70,6 +76,7 @@ var createMeshCanvas = function createMeshCanvasClosure() {
70
76
  c1 = c2;
71
77
  c2 = tmp;
72
78
  }
79
+
73
80
  if (coords[p2 + 1] > coords[p3 + 1]) {
74
81
  tmp = p2;
75
82
  p2 = p3;
@@ -78,6 +85,7 @@ var createMeshCanvas = function createMeshCanvasClosure() {
78
85
  c2 = c3;
79
86
  c3 = tmp;
80
87
  }
88
+
81
89
  if (coords[p1 + 1] > coords[p2 + 1]) {
82
90
  tmp = p1;
83
91
  p1 = p2;
@@ -86,15 +94,18 @@ var createMeshCanvas = function createMeshCanvasClosure() {
86
94
  c1 = c2;
87
95
  c2 = tmp;
88
96
  }
97
+
89
98
  var x1 = (coords[p1] + context.offsetX) * context.scaleX;
90
99
  var y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;
91
100
  var x2 = (coords[p2] + context.offsetX) * context.scaleX;
92
101
  var y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;
93
102
  var x3 = (coords[p3] + context.offsetX) * context.scaleX;
94
103
  var y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;
104
+
95
105
  if (y1 >= y3) {
96
106
  return;
97
107
  }
108
+
98
109
  var c1r = colors[c1],
99
110
  c1g = colors[c1 + 1],
100
111
  c1b = colors[c1 + 2];
@@ -109,6 +120,7 @@ var createMeshCanvas = function createMeshCanvasClosure() {
109
120
  var xa, car, cag, cab;
110
121
  var xb, cbr, cbg, cbb;
111
122
  var k;
123
+
112
124
  for (var y = minY; y <= maxY; y++) {
113
125
  if (y < y2) {
114
126
  k = y < y1 ? 0 : y1 === y2 ? 1 : (y1 - y) / (y1 - y2);
@@ -123,6 +135,7 @@ var createMeshCanvas = function createMeshCanvasClosure() {
123
135
  cag = c2g - (c2g - c3g) * k;
124
136
  cab = c2b - (c2b - c3b) * k;
125
137
  }
138
+
126
139
  k = y < y1 ? 0 : y > y3 ? 1 : (y1 - y) / (y1 - y3);
127
140
  xb = x1 - (x1 - x3) * k;
128
141
  cbr = c1r - (c1r - c3r) * k;
@@ -131,6 +144,7 @@ var createMeshCanvas = function createMeshCanvasClosure() {
131
144
  var x1_ = Math.round(Math.min(xa, xb));
132
145
  var x2_ = Math.round(Math.max(xa, xb));
133
146
  var j = rowSize * y + x1_ * 4;
147
+
134
148
  for (var x = x1_; x <= x2_; x++) {
135
149
  k = (xa - x) / (xa - xb);
136
150
  k = k < 0 ? 0 : k > 1 ? 1 : k;
@@ -141,32 +155,41 @@ var createMeshCanvas = function createMeshCanvasClosure() {
141
155
  }
142
156
  }
143
157
  }
158
+
144
159
  function drawFigure(data, figure, context) {
145
160
  var ps = figure.coords;
146
161
  var cs = figure.colors;
147
162
  var i, ii;
163
+
148
164
  switch (figure.type) {
149
165
  case 'lattice':
150
166
  var verticesPerRow = figure.verticesPerRow;
151
167
  var rows = Math.floor(ps.length / verticesPerRow) - 1;
152
168
  var cols = verticesPerRow - 1;
169
+
153
170
  for (i = 0; i < rows; i++) {
154
171
  var q = i * verticesPerRow;
172
+
155
173
  for (var j = 0; j < cols; j++, q++) {
156
174
  drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);
157
175
  drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);
158
176
  }
159
177
  }
178
+
160
179
  break;
180
+
161
181
  case 'triangles':
162
182
  for (i = 0, ii = ps.length; i < ii; i += 3) {
163
183
  drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);
164
184
  }
185
+
165
186
  break;
187
+
166
188
  default:
167
189
  throw new Error('illegal figure');
168
190
  }
169
191
  }
192
+
170
193
  function createMeshCanvas(bounds, combinesScale, coords, colors, figures, backgroundColor, cachedCanvases, webGLContext) {
171
194
  var EXPECTED_SCALE = 1.1;
172
195
  var MAX_PATTERN_SIZE = 3000;
@@ -190,6 +213,7 @@ var createMeshCanvas = function createMeshCanvasClosure() {
190
213
  var paddedWidth = width + BORDER_SIZE * 2;
191
214
  var paddedHeight = height + BORDER_SIZE * 2;
192
215
  var canvas, tmpCanvas, i, ii;
216
+
193
217
  if (webGLContext.isEnabled) {
194
218
  canvas = webGLContext.drawFigures({
195
219
  width: width,
@@ -205,8 +229,10 @@ var createMeshCanvas = function createMeshCanvasClosure() {
205
229
  tmpCanvas = cachedCanvases.getCanvas('mesh', paddedWidth, paddedHeight, false);
206
230
  var tmpCtx = tmpCanvas.context;
207
231
  var data = tmpCtx.createImageData(width, height);
232
+
208
233
  if (backgroundColor) {
209
234
  var bytes = data.data;
235
+
210
236
  for (i = 0, ii = bytes.length; i < ii; i += 4) {
211
237
  bytes[i] = backgroundColor[0];
212
238
  bytes[i + 1] = backgroundColor[1];
@@ -214,12 +240,15 @@ var createMeshCanvas = function createMeshCanvasClosure() {
214
240
  bytes[i + 3] = 255;
215
241
  }
216
242
  }
243
+
217
244
  for (i = 0; i < figures.length; i++) {
218
245
  drawFigure(data, figures[i], context);
219
246
  }
247
+
220
248
  tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);
221
249
  canvas = tmpCanvas.canvas;
222
250
  }
251
+
223
252
  return {
224
253
  canvas: canvas,
225
254
  offsetX: offsetX - BORDER_SIZE * scaleX,
@@ -228,8 +257,10 @@ var createMeshCanvas = function createMeshCanvasClosure() {
228
257
  scaleY: scaleY
229
258
  };
230
259
  }
260
+
231
261
  return createMeshCanvas;
232
262
  }();
263
+
233
264
  ShadingIRs.Mesh = {
234
265
  fromIR: function Mesh_fromIR(raw) {
235
266
  var coords = raw[2];
@@ -242,22 +273,29 @@ ShadingIRs.Mesh = {
242
273
  type: 'Pattern',
243
274
  getPattern: function Mesh_getPattern(ctx, owner, shadingFill) {
244
275
  var scale;
276
+
245
277
  if (shadingFill) {
246
278
  scale = _util.Util.singularValueDecompose2dScale(ctx.mozCurrentTransform);
247
279
  } else {
248
280
  scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform);
281
+
249
282
  if (matrix) {
250
283
  var matrixScale = _util.Util.singularValueDecompose2dScale(matrix);
284
+
251
285
  scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];
252
286
  }
253
287
  }
288
+
254
289
  var temporaryPatternCanvas = createMeshCanvas(bounds, scale, coords, colors, figures, shadingFill ? null : background, owner.cachedCanvases, owner.webGLContext);
290
+
255
291
  if (!shadingFill) {
256
292
  ctx.setTransform.apply(ctx, owner.baseTransform);
293
+
257
294
  if (matrix) {
258
295
  ctx.transform.apply(ctx, matrix);
259
296
  }
260
297
  }
298
+
261
299
  ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);
262
300
  ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);
263
301
  return ctx.createPattern(temporaryPatternCanvas.canvas, 'no-repeat');
@@ -275,19 +313,24 @@ ShadingIRs.Dummy = {
275
313
  };
276
314
  }
277
315
  };
316
+
278
317
  function getShadingPatternFromIR(raw) {
279
318
  var shadingIR = ShadingIRs[raw[0]];
319
+
280
320
  if (!shadingIR) {
281
- throw new Error('Unknown IR type: ' + raw[0]);
321
+ throw new Error("Unknown IR type: ".concat(raw[0]));
282
322
  }
323
+
283
324
  return shadingIR.fromIR(raw);
284
325
  }
326
+
285
327
  var TilingPattern = function TilingPatternClosure() {
286
328
  var PaintType = {
287
329
  COLORED: 1,
288
330
  UNCOLORED: 2
289
331
  };
290
332
  var MAX_PATTERN_SIZE = 3000;
333
+
291
334
  function TilingPattern(IR, color, ctx, canvasGraphicsFactory, baseTransform) {
292
335
  this.operatorList = IR[2];
293
336
  this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];
@@ -302,6 +345,7 @@ var TilingPattern = function TilingPatternClosure() {
302
345
  this.type = 'Pattern';
303
346
  this.ctx = ctx;
304
347
  }
348
+
305
349
  TilingPattern.prototype = {
306
350
  createPatternCanvas: function TilinPattern_createPatternCanvas(owner) {
307
351
  var operatorList = this.operatorList;
@@ -317,39 +361,42 @@ var TilingPattern = function TilingPatternClosure() {
317
361
  y0 = bbox[1],
318
362
  x1 = bbox[2],
319
363
  y1 = bbox[3];
320
- var topLeft = [x0, y0];
321
- var botRight = [x0 + xstep, y0 + ystep];
322
- var width = botRight[0] - topLeft[0];
323
- var height = botRight[1] - topLeft[1];
364
+
324
365
  var matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix);
366
+
325
367
  var curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform);
368
+
326
369
  var combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]];
327
- width = Math.min(Math.ceil(Math.abs(width * combinedScale[0])), MAX_PATTERN_SIZE);
328
- height = Math.min(Math.ceil(Math.abs(height * combinedScale[1])), MAX_PATTERN_SIZE);
329
- var tmpCanvas = owner.cachedCanvases.getCanvas('pattern', width, height, true);
370
+ var dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]);
371
+ var dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]);
372
+ var tmpCanvas = owner.cachedCanvases.getCanvas('pattern', dimx.size, dimy.size, true);
330
373
  var tmpCtx = tmpCanvas.context;
331
374
  var graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);
332
375
  graphics.groupLevel = owner.groupLevel;
333
376
  this.setFillAndStrokeStyleToContext(graphics, paintType, color);
334
- this.setScale(width, height, xstep, ystep);
335
- this.transformToScale(graphics);
336
- var tmpTranslate = [1, 0, 0, 1, -topLeft[0], -topLeft[1]];
337
- graphics.transform.apply(graphics, tmpTranslate);
377
+ graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);
378
+ graphics.transform(1, 0, 0, 1, -x0, -y0);
338
379
  this.clipBbox(graphics, bbox, x0, y0, x1, y1);
339
380
  graphics.executeOperatorList(operatorList);
381
+ this.ctx.transform(1, 0, 0, 1, x0, y0);
382
+ this.ctx.scale(1 / dimx.scale, 1 / dimy.scale);
340
383
  return tmpCanvas.canvas;
341
384
  },
342
- setScale: function TilingPattern_setScale(width, height, xstep, ystep) {
343
- this.scale = [width / xstep, height / ystep];
344
- },
345
- transformToScale: function TilingPattern_transformToScale(graphics) {
346
- var scale = this.scale;
347
- var tmpScale = [scale[0], 0, 0, scale[1], 0, 0];
348
- graphics.transform.apply(graphics, tmpScale);
349
- },
350
- scaleToContext: function TilingPattern_scaleToContext() {
351
- var scale = this.scale;
352
- this.ctx.scale(1 / scale[0], 1 / scale[1]);
385
+ getSizeAndScale: function TilingPattern_getSizeAndScale(step, realOutputSize, scale) {
386
+ step = Math.abs(step);
387
+ var maxSize = Math.max(MAX_PATTERN_SIZE, realOutputSize);
388
+ var size = Math.ceil(step * scale);
389
+
390
+ if (size >= maxSize) {
391
+ size = maxSize;
392
+ } else {
393
+ scale = size / step;
394
+ }
395
+
396
+ return {
397
+ scale: scale,
398
+ size: size
399
+ };
353
400
  },
354
401
  clipBbox: function clipBbox(graphics, bbox, x0, y0, x1, y1) {
355
402
  if (Array.isArray(bbox) && bbox.length === 4) {
@@ -363,6 +410,7 @@ var TilingPattern = function TilingPatternClosure() {
363
410
  setFillAndStrokeStyleToContext: function setFillAndStrokeStyleToContext(graphics, paintType, color) {
364
411
  var context = graphics.ctx,
365
412
  current = graphics.current;
413
+
366
414
  switch (paintType) {
367
415
  case PaintType.COLORED:
368
416
  var ctx = this.ctx;
@@ -371,27 +419,29 @@ var TilingPattern = function TilingPatternClosure() {
371
419
  current.fillColor = ctx.fillStyle;
372
420
  current.strokeColor = ctx.strokeStyle;
373
421
  break;
422
+
374
423
  case PaintType.UNCOLORED:
375
424
  var cssColor = _util.Util.makeCssRgb(color[0], color[1], color[2]);
425
+
376
426
  context.fillStyle = cssColor;
377
427
  context.strokeStyle = cssColor;
378
428
  current.fillColor = cssColor;
379
429
  current.strokeColor = cssColor;
380
430
  break;
431
+
381
432
  default:
382
- throw new _util.FormatError('Unsupported paint type: ' + paintType);
433
+ throw new _util.FormatError("Unsupported paint type: ".concat(paintType));
383
434
  }
384
435
  },
385
436
  getPattern: function TilingPattern_getPattern(ctx, owner) {
386
- var temporaryPatternCanvas = this.createPatternCanvas(owner);
387
437
  ctx = this.ctx;
388
438
  ctx.setTransform.apply(ctx, this.baseTransform);
389
439
  ctx.transform.apply(ctx, this.matrix);
390
- this.scaleToContext();
440
+ var temporaryPatternCanvas = this.createPatternCanvas(owner);
391
441
  return ctx.createPattern(temporaryPatternCanvas, 'repeat');
392
442
  }
393
443
  };
394
444
  return TilingPattern;
395
445
  }();
396
- exports.getShadingPatternFromIR = getShadingPatternFromIR;
446
+
397
447
  exports.TilingPattern = TilingPattern;