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