pdfjs-dist 2.0.943 → 2.4.456
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/README.md +4 -0
- package/bower.json +1 -1
- package/build/pdf.js +8286 -14230
- package/build/pdf.js.map +1 -1
- package/build/pdf.min.js +22 -1
- package/build/pdf.worker.entry.js +5 -3
- package/build/pdf.worker.js +25500 -26628
- package/build/pdf.worker.js.map +1 -1
- package/build/pdf.worker.min.js +22 -1
- package/es5/build/pdf.js +25473 -0
- package/es5/build/pdf.js.map +1 -0
- package/{lib/shared/global_scope.js → es5/build/pdf.worker.entry.js} +5 -10
- package/es5/build/pdf.worker.js +57878 -0
- package/es5/build/pdf.worker.js.map +1 -0
- package/es5/web/images/annotation-check.svg +11 -0
- package/es5/web/images/annotation-comment.svg +16 -0
- package/es5/web/images/annotation-help.svg +26 -0
- package/es5/web/images/annotation-insert.svg +10 -0
- package/es5/web/images/annotation-key.svg +11 -0
- package/es5/web/images/annotation-newparagraph.svg +11 -0
- package/es5/web/images/annotation-noicon.svg +7 -0
- package/es5/web/images/annotation-note.svg +42 -0
- package/es5/web/images/annotation-paragraph.svg +16 -0
- package/es5/web/images/loading-icon.gif +0 -0
- package/es5/web/images/shadow.png +0 -0
- package/es5/web/images/texture.png +0 -0
- package/es5/web/pdf_viewer.css +407 -0
- package/es5/web/pdf_viewer.js +7757 -0
- package/es5/web/pdf_viewer.js.map +1 -0
- package/image_decoders/pdf.image_decoders.js +2887 -4094
- package/image_decoders/pdf.image_decoders.js.map +1 -1
- package/image_decoders/pdf.image_decoders.min.js +22 -1
- package/lib/README.md +7 -0
- package/lib/core/annotation.js +855 -778
- package/lib/core/arithmetic_decoder.js +325 -311
- package/lib/core/bidi.js +117 -50
- package/lib/core/ccitt.js +251 -89
- package/lib/core/ccitt_stream.js +26 -16
- package/lib/core/cff_parser.js +525 -197
- package/lib/core/charsets.js +6 -5
- package/lib/core/chunked_stream.js +541 -406
- package/lib/core/cmap.js +368 -253
- package/lib/core/colorspace.js +781 -800
- package/lib/core/core_utils.js +152 -0
- package/lib/core/crypto.js +609 -422
- package/lib/core/document.js +649 -481
- package/lib/core/encodings.js +33 -24
- package/lib/core/evaluator.js +1471 -736
- package/lib/core/font_renderer.js +289 -149
- package/lib/core/fonts.js +1067 -413
- package/lib/core/function.js +517 -287
- package/lib/core/glyphlist.js +4529 -4527
- package/lib/core/image.js +232 -114
- package/lib/core/image_utils.js +94 -0
- package/lib/core/jbig2.js +711 -342
- package/lib/core/jbig2_stream.js +31 -19
- package/lib/core/jpeg_stream.js +151 -26
- package/lib/core/jpg.js +433 -181
- package/lib/core/jpx.js +551 -143
- package/lib/core/jpx_stream.js +40 -28
- package/lib/core/metrics.js +2931 -2931
- package/lib/core/murmurhash3.js +104 -97
- package/lib/core/obj.js +1561 -1053
- package/lib/core/operator_list.js +192 -64
- package/lib/core/parser.js +1162 -864
- package/lib/core/pattern.js +224 -75
- package/lib/core/pdf_manager.js +154 -285
- package/lib/core/primitives.js +145 -69
- package/lib/core/ps_parser.js +212 -162
- package/lib/core/standard_fonts.js +245 -244
- package/lib/core/stream.js +353 -81
- package/lib/core/type1_parser.js +218 -68
- package/lib/core/unicode.js +1682 -1655
- package/lib/core/worker.js +233 -302
- package/lib/core/worker_stream.js +168 -0
- package/lib/display/annotation_layer.js +808 -862
- package/lib/display/api.js +1778 -1462
- package/lib/display/api_compatibility.js +14 -9
- package/lib/display/canvas.js +463 -140
- package/lib/display/content_disposition.js +86 -58
- package/lib/display/display_utils.js +524 -0
- package/lib/display/fetch_stream.js +202 -274
- package/lib/display/font_loader.js +311 -333
- package/lib/display/metadata.js +98 -88
- package/lib/display/network.js +343 -347
- package/lib/display/network_utils.js +46 -26
- package/lib/display/node_stream.js +326 -404
- package/lib/display/pattern_helper.js +168 -69
- package/lib/display/svg.js +1296 -885
- package/lib/display/text_layer.js +229 -103
- package/lib/display/transport_stream.js +290 -250
- package/lib/display/webgl.js +116 -83
- package/lib/display/worker_options.js +6 -5
- package/lib/display/xml_parser.js +358 -337
- package/lib/examples/node/domstubs.js +95 -39
- package/lib/pdf.js +49 -31
- package/lib/pdf.worker.js +7 -5
- package/lib/shared/compatibility.js +3 -145
- package/lib/shared/is_node.js +8 -7
- package/lib/shared/message_handler.js +367 -314
- package/lib/shared/util.js +421 -415
- package/lib/test/unit/annotation_spec.js +1570 -690
- package/lib/test/unit/api_spec.js +855 -493
- package/lib/test/unit/bidi_spec.js +12 -12
- package/lib/test/unit/cff_parser_spec.js +88 -61
- package/lib/test/unit/clitests_helper.js +9 -12
- package/lib/test/unit/cmap_spec.js +140 -88
- package/lib/test/unit/colorspace_spec.js +204 -152
- package/lib/test/unit/core_utils_spec.js +211 -0
- package/lib/test/unit/crypto_spec.js +194 -182
- package/lib/test/unit/custom_spec.js +50 -64
- package/lib/test/unit/display_svg_spec.js +53 -38
- package/lib/test/unit/display_utils_spec.js +263 -0
- package/lib/test/unit/document_spec.js +17 -22
- package/lib/test/unit/encodings_spec.js +15 -57
- package/lib/test/unit/evaluator_spec.js +90 -83
- package/lib/test/unit/fetch_stream_spec.js +111 -0
- package/lib/test/unit/function_spec.js +219 -205
- package/lib/test/unit/jasmine-boot.js +68 -39
- package/lib/test/unit/message_handler_spec.js +187 -160
- package/lib/test/unit/metadata_spec.js +87 -34
- package/lib/test/unit/murmurhash3_spec.js +13 -13
- package/lib/test/unit/network_spec.js +26 -59
- package/lib/test/unit/network_utils_spec.js +187 -121
- package/lib/test/unit/node_stream_spec.js +98 -90
- package/lib/test/unit/parser_spec.js +173 -131
- package/lib/test/unit/pdf_find_controller_spec.js +148 -67
- package/lib/test/unit/pdf_find_utils_spec.js +35 -34
- package/lib/test/unit/pdf_history_spec.js +45 -33
- package/lib/test/unit/primitives_spec.js +161 -126
- package/lib/test/unit/stream_spec.js +22 -15
- package/lib/test/unit/test_utils.js +149 -98
- package/lib/test/unit/testreporter.js +36 -18
- package/lib/test/unit/type1_parser_spec.js +46 -44
- package/lib/test/unit/ui_utils_spec.js +388 -372
- package/lib/test/unit/unicode_spec.js +49 -46
- package/lib/test/unit/util_spec.js +144 -248
- package/lib/web/annotation_layer_builder.js +75 -95
- package/lib/web/app.js +1538 -1147
- package/lib/web/app_options.js +116 -104
- package/lib/web/base_viewer.js +950 -775
- package/lib/web/chromecom.js +217 -225
- package/lib/web/debugger.js +236 -148
- package/lib/web/download_manager.js +50 -50
- package/lib/web/firefox_print_service.js +51 -33
- package/lib/web/firefoxcom.js +225 -352
- package/lib/web/genericcom.js +30 -93
- package/lib/web/genericl10n.js +26 -143
- package/lib/web/grab_to_pan.js +57 -33
- package/lib/web/interfaces.js +105 -232
- package/lib/web/overlay_manager.js +73 -227
- package/lib/web/password_prompt.js +44 -62
- package/lib/web/pdf_attachment_viewer.js +118 -123
- package/lib/web/pdf_cursor_tools.js +89 -93
- package/lib/web/pdf_document_properties.js +242 -281
- package/lib/web/pdf_find_bar.js +157 -163
- package/lib/web/pdf_find_controller.js +598 -454
- package/lib/web/pdf_find_utils.js +32 -16
- package/lib/web/pdf_history.js +481 -355
- package/lib/web/pdf_link_service.js +355 -323
- package/lib/web/pdf_outline_viewer.js +167 -152
- package/lib/web/pdf_page_view.js +511 -457
- package/lib/web/pdf_presentation_mode.js +347 -335
- package/lib/web/pdf_print_service.js +133 -103
- package/lib/web/pdf_rendering_queue.js +98 -100
- package/lib/web/pdf_sidebar.js +323 -299
- package/lib/web/pdf_sidebar_resizer.js +107 -108
- package/lib/web/pdf_single_page_viewer.js +94 -146
- package/lib/web/pdf_thumbnail_view.js +319 -269
- package/lib/web/pdf_thumbnail_viewer.js +219 -199
- package/lib/web/pdf_viewer.component.js +111 -32
- package/lib/web/pdf_viewer.js +61 -101
- package/lib/web/preferences.js +87 -272
- package/lib/web/secondary_toolbar.js +207 -220
- package/lib/web/text_layer_builder.js +322 -322
- package/lib/web/toolbar.js +227 -180
- package/lib/web/ui_utils.js +476 -421
- package/lib/web/view_history.js +59 -208
- package/lib/web/viewer_compatibility.js +9 -6
- package/package.json +2 -9
- package/web/pdf_viewer.css +36 -22
- package/web/pdf_viewer.js +4407 -4516
- package/web/pdf_viewer.js.map +1 -1
- package/webpack.js +14 -5
- package/external/streams/streams-lib.js +0 -3962
- package/external/url/url-lib.js +0 -627
- package/lib/display/dom_utils.js +0 -441
- package/lib/shared/streams_polyfill.js +0 -39
- package/lib/shared/url_polyfill.js +0 -50
- package/lib/test/unit/dom_utils_spec.js +0 -89
- package/lib/web/dom_events.js +0 -140
@@ -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 2020 Mozilla Foundation
|
6
6
|
*
|
7
7
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
8
8
|
* you may not use this file except in compliance with the License.
|
@@ -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.js");
|
30
31
|
|
31
32
|
var ShadingIRs = {};
|
33
|
+
|
34
|
+
function applyBoundingBox(ctx, bbox) {
|
35
|
+
if (!bbox || typeof Path2D === "undefined") {
|
36
|
+
return;
|
37
|
+
}
|
38
|
+
|
39
|
+
const width = bbox[2] - bbox[0];
|
40
|
+
const height = bbox[3] - bbox[1];
|
41
|
+
const 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
|
-
type:
|
56
|
+
type: "Pattern",
|
42
57
|
getPattern: function RadialAxial_getPattern(ctx) {
|
58
|
+
applyBoundingBox(ctx, bbox);
|
43
59
|
var grad;
|
44
|
-
|
60
|
+
|
61
|
+
if (type === "axial") {
|
45
62
|
grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]);
|
46
|
-
} else if (type ===
|
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];
|
@@ -108,22 +134,50 @@ var createMeshCanvas = function createMeshCanvasClosure() {
|
|
108
134
|
maxY = Math.round(y3);
|
109
135
|
var xa, car, cag, cab;
|
110
136
|
var xb, cbr, cbg, cbb;
|
111
|
-
|
137
|
+
|
112
138
|
for (var y = minY; y <= maxY; y++) {
|
113
139
|
if (y < y2) {
|
114
|
-
k
|
140
|
+
let k;
|
141
|
+
|
142
|
+
if (y < y1) {
|
143
|
+
k = 0;
|
144
|
+
} else if (y1 === y2) {
|
145
|
+
k = 1;
|
146
|
+
} else {
|
147
|
+
k = (y1 - y) / (y1 - y2);
|
148
|
+
}
|
149
|
+
|
115
150
|
xa = x1 - (x1 - x2) * k;
|
116
151
|
car = c1r - (c1r - c2r) * k;
|
117
152
|
cag = c1g - (c1g - c2g) * k;
|
118
153
|
cab = c1b - (c1b - c2b) * k;
|
119
154
|
} else {
|
120
|
-
k
|
155
|
+
let k;
|
156
|
+
|
157
|
+
if (y > y3) {
|
158
|
+
k = 1;
|
159
|
+
} else if (y2 === y3) {
|
160
|
+
k = 0;
|
161
|
+
} else {
|
162
|
+
k = (y2 - y) / (y2 - y3);
|
163
|
+
}
|
164
|
+
|
121
165
|
xa = x2 - (x2 - x3) * k;
|
122
166
|
car = c2r - (c2r - c3r) * k;
|
123
167
|
cag = c2g - (c2g - c3g) * k;
|
124
168
|
cab = c2b - (c2b - c3b) * k;
|
125
169
|
}
|
126
|
-
|
170
|
+
|
171
|
+
let k;
|
172
|
+
|
173
|
+
if (y < y1) {
|
174
|
+
k = 0;
|
175
|
+
} else if (y > y3) {
|
176
|
+
k = 1;
|
177
|
+
} else {
|
178
|
+
k = (y1 - y) / (y1 - y3);
|
179
|
+
}
|
180
|
+
|
127
181
|
xb = x1 - (x1 - x3) * k;
|
128
182
|
cbr = c1r - (c1r - c3r) * k;
|
129
183
|
cbg = c1g - (c1g - c3g) * k;
|
@@ -131,9 +185,16 @@ var createMeshCanvas = function createMeshCanvasClosure() {
|
|
131
185
|
var x1_ = Math.round(Math.min(xa, xb));
|
132
186
|
var x2_ = Math.round(Math.max(xa, xb));
|
133
187
|
var j = rowSize * y + x1_ * 4;
|
188
|
+
|
134
189
|
for (var x = x1_; x <= x2_; x++) {
|
135
|
-
k = (xa - x) / (xa - xb);
|
136
|
-
|
190
|
+
let k = (xa - x) / (xa - xb);
|
191
|
+
|
192
|
+
if (k < 0) {
|
193
|
+
k = 0;
|
194
|
+
} else if (k > 1) {
|
195
|
+
k = 1;
|
196
|
+
}
|
197
|
+
|
137
198
|
bytes[j++] = car - (car - cbr) * k | 0;
|
138
199
|
bytes[j++] = cag - (cag - cbg) * k | 0;
|
139
200
|
bytes[j++] = cab - (cab - cbb) * k | 0;
|
@@ -141,32 +202,41 @@ var createMeshCanvas = function createMeshCanvasClosure() {
|
|
141
202
|
}
|
142
203
|
}
|
143
204
|
}
|
205
|
+
|
144
206
|
function drawFigure(data, figure, context) {
|
145
207
|
var ps = figure.coords;
|
146
208
|
var cs = figure.colors;
|
147
209
|
var i, ii;
|
210
|
+
|
148
211
|
switch (figure.type) {
|
149
|
-
case
|
212
|
+
case "lattice":
|
150
213
|
var verticesPerRow = figure.verticesPerRow;
|
151
214
|
var rows = Math.floor(ps.length / verticesPerRow) - 1;
|
152
215
|
var cols = verticesPerRow - 1;
|
216
|
+
|
153
217
|
for (i = 0; i < rows; i++) {
|
154
218
|
var q = i * verticesPerRow;
|
219
|
+
|
155
220
|
for (var j = 0; j < cols; j++, q++) {
|
156
221
|
drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);
|
157
222
|
drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);
|
158
223
|
}
|
159
224
|
}
|
225
|
+
|
160
226
|
break;
|
161
|
-
|
227
|
+
|
228
|
+
case "triangles":
|
162
229
|
for (i = 0, ii = ps.length; i < ii; i += 3) {
|
163
230
|
drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);
|
164
231
|
}
|
232
|
+
|
165
233
|
break;
|
234
|
+
|
166
235
|
default:
|
167
|
-
throw new Error(
|
236
|
+
throw new Error("illegal figure");
|
168
237
|
}
|
169
238
|
}
|
239
|
+
|
170
240
|
function createMeshCanvas(bounds, combinesScale, coords, colors, figures, backgroundColor, cachedCanvases, webGLContext) {
|
171
241
|
var EXPECTED_SCALE = 1.1;
|
172
242
|
var MAX_PATTERN_SIZE = 3000;
|
@@ -180,8 +250,8 @@ var createMeshCanvas = function createMeshCanvasClosure() {
|
|
180
250
|
var scaleX = boundsWidth / width;
|
181
251
|
var scaleY = boundsHeight / height;
|
182
252
|
var context = {
|
183
|
-
coords
|
184
|
-
colors
|
253
|
+
coords,
|
254
|
+
colors,
|
185
255
|
offsetX: -offsetX,
|
186
256
|
offsetY: -offsetY,
|
187
257
|
scaleX: 1 / scaleX,
|
@@ -190,23 +260,26 @@ var createMeshCanvas = function createMeshCanvasClosure() {
|
|
190
260
|
var paddedWidth = width + BORDER_SIZE * 2;
|
191
261
|
var paddedHeight = height + BORDER_SIZE * 2;
|
192
262
|
var canvas, tmpCanvas, i, ii;
|
263
|
+
|
193
264
|
if (webGLContext.isEnabled) {
|
194
265
|
canvas = webGLContext.drawFigures({
|
195
|
-
width
|
196
|
-
height
|
197
|
-
backgroundColor
|
198
|
-
figures
|
199
|
-
context
|
266
|
+
width,
|
267
|
+
height,
|
268
|
+
backgroundColor,
|
269
|
+
figures,
|
270
|
+
context
|
200
271
|
});
|
201
|
-
tmpCanvas = cachedCanvases.getCanvas(
|
272
|
+
tmpCanvas = cachedCanvases.getCanvas("mesh", paddedWidth, paddedHeight, false);
|
202
273
|
tmpCanvas.context.drawImage(canvas, BORDER_SIZE, BORDER_SIZE);
|
203
274
|
canvas = tmpCanvas.canvas;
|
204
275
|
} else {
|
205
|
-
tmpCanvas = cachedCanvases.getCanvas(
|
276
|
+
tmpCanvas = cachedCanvases.getCanvas("mesh", paddedWidth, paddedHeight, false);
|
206
277
|
var tmpCtx = tmpCanvas.context;
|
207
278
|
var data = tmpCtx.createImageData(width, height);
|
279
|
+
|
208
280
|
if (backgroundColor) {
|
209
281
|
var bytes = data.data;
|
282
|
+
|
210
283
|
for (i = 0, ii = bytes.length; i < ii; i += 4) {
|
211
284
|
bytes[i] = backgroundColor[0];
|
212
285
|
bytes[i + 1] = backgroundColor[1];
|
@@ -214,22 +287,27 @@ var createMeshCanvas = function createMeshCanvasClosure() {
|
|
214
287
|
bytes[i + 3] = 255;
|
215
288
|
}
|
216
289
|
}
|
290
|
+
|
217
291
|
for (i = 0; i < figures.length; i++) {
|
218
292
|
drawFigure(data, figures[i], context);
|
219
293
|
}
|
294
|
+
|
220
295
|
tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);
|
221
296
|
canvas = tmpCanvas.canvas;
|
222
297
|
}
|
298
|
+
|
223
299
|
return {
|
224
|
-
canvas
|
300
|
+
canvas,
|
225
301
|
offsetX: offsetX - BORDER_SIZE * scaleX,
|
226
302
|
offsetY: offsetY - BORDER_SIZE * scaleY,
|
227
|
-
scaleX
|
228
|
-
scaleY
|
303
|
+
scaleX,
|
304
|
+
scaleY
|
229
305
|
};
|
230
306
|
}
|
307
|
+
|
231
308
|
return createMeshCanvas;
|
232
309
|
}();
|
310
|
+
|
233
311
|
ShadingIRs.Mesh = {
|
234
312
|
fromIR: function Mesh_fromIR(raw) {
|
235
313
|
var coords = raw[2];
|
@@ -237,30 +315,39 @@ ShadingIRs.Mesh = {
|
|
237
315
|
var figures = raw[4];
|
238
316
|
var bounds = raw[5];
|
239
317
|
var matrix = raw[6];
|
318
|
+
var bbox = raw[7];
|
240
319
|
var background = raw[8];
|
241
320
|
return {
|
242
|
-
type:
|
321
|
+
type: "Pattern",
|
243
322
|
getPattern: function Mesh_getPattern(ctx, owner, shadingFill) {
|
323
|
+
applyBoundingBox(ctx, bbox);
|
244
324
|
var scale;
|
325
|
+
|
245
326
|
if (shadingFill) {
|
246
327
|
scale = _util.Util.singularValueDecompose2dScale(ctx.mozCurrentTransform);
|
247
328
|
} else {
|
248
329
|
scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform);
|
330
|
+
|
249
331
|
if (matrix) {
|
250
332
|
var matrixScale = _util.Util.singularValueDecompose2dScale(matrix);
|
333
|
+
|
251
334
|
scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];
|
252
335
|
}
|
253
336
|
}
|
337
|
+
|
254
338
|
var temporaryPatternCanvas = createMeshCanvas(bounds, scale, coords, colors, figures, shadingFill ? null : background, owner.cachedCanvases, owner.webGLContext);
|
339
|
+
|
255
340
|
if (!shadingFill) {
|
256
341
|
ctx.setTransform.apply(ctx, owner.baseTransform);
|
342
|
+
|
257
343
|
if (matrix) {
|
258
344
|
ctx.transform.apply(ctx, matrix);
|
259
345
|
}
|
260
346
|
}
|
347
|
+
|
261
348
|
ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);
|
262
349
|
ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);
|
263
|
-
return ctx.createPattern(temporaryPatternCanvas.canvas,
|
350
|
+
return ctx.createPattern(temporaryPatternCanvas.canvas, "no-repeat");
|
264
351
|
}
|
265
352
|
};
|
266
353
|
}
|
@@ -268,26 +355,31 @@ ShadingIRs.Mesh = {
|
|
268
355
|
ShadingIRs.Dummy = {
|
269
356
|
fromIR: function Dummy_fromIR() {
|
270
357
|
return {
|
271
|
-
type:
|
358
|
+
type: "Pattern",
|
272
359
|
getPattern: function Dummy_fromIR_getPattern() {
|
273
|
-
return
|
360
|
+
return "hotpink";
|
274
361
|
}
|
275
362
|
};
|
276
363
|
}
|
277
364
|
};
|
365
|
+
|
278
366
|
function getShadingPatternFromIR(raw) {
|
279
367
|
var shadingIR = ShadingIRs[raw[0]];
|
368
|
+
|
280
369
|
if (!shadingIR) {
|
281
|
-
throw new Error(
|
370
|
+
throw new Error(`Unknown IR type: ${raw[0]}`);
|
282
371
|
}
|
372
|
+
|
283
373
|
return shadingIR.fromIR(raw);
|
284
374
|
}
|
375
|
+
|
285
376
|
var TilingPattern = function TilingPatternClosure() {
|
286
377
|
var PaintType = {
|
287
378
|
COLORED: 1,
|
288
379
|
UNCOLORED: 2
|
289
380
|
};
|
290
381
|
var MAX_PATTERN_SIZE = 3000;
|
382
|
+
|
291
383
|
function TilingPattern(IR, color, ctx, canvasGraphicsFactory, baseTransform) {
|
292
384
|
this.operatorList = IR[2];
|
293
385
|
this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];
|
@@ -299,9 +391,10 @@ var TilingPattern = function TilingPatternClosure() {
|
|
299
391
|
this.color = color;
|
300
392
|
this.canvasGraphicsFactory = canvasGraphicsFactory;
|
301
393
|
this.baseTransform = baseTransform;
|
302
|
-
this.type =
|
394
|
+
this.type = "Pattern";
|
303
395
|
this.ctx = ctx;
|
304
396
|
}
|
397
|
+
|
305
398
|
TilingPattern.prototype = {
|
306
399
|
createPatternCanvas: function TilinPattern_createPatternCanvas(owner) {
|
307
400
|
var operatorList = this.operatorList;
|
@@ -312,44 +405,47 @@ var TilingPattern = function TilingPatternClosure() {
|
|
312
405
|
var tilingType = this.tilingType;
|
313
406
|
var color = this.color;
|
314
407
|
var canvasGraphicsFactory = this.canvasGraphicsFactory;
|
315
|
-
(0, _util.info)(
|
408
|
+
(0, _util.info)("TilingType: " + tilingType);
|
316
409
|
var x0 = bbox[0],
|
317
410
|
y0 = bbox[1],
|
318
411
|
x1 = bbox[2],
|
319
412
|
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];
|
413
|
+
|
324
414
|
var matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix);
|
415
|
+
|
325
416
|
var curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform);
|
417
|
+
|
326
418
|
var combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]];
|
327
|
-
|
328
|
-
|
329
|
-
var tmpCanvas = owner.cachedCanvases.getCanvas(
|
419
|
+
var dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]);
|
420
|
+
var dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]);
|
421
|
+
var tmpCanvas = owner.cachedCanvases.getCanvas("pattern", dimx.size, dimy.size, true);
|
330
422
|
var tmpCtx = tmpCanvas.context;
|
331
423
|
var graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);
|
332
424
|
graphics.groupLevel = owner.groupLevel;
|
333
425
|
this.setFillAndStrokeStyleToContext(graphics, paintType, color);
|
334
|
-
|
335
|
-
|
336
|
-
var tmpTranslate = [1, 0, 0, 1, -topLeft[0], -topLeft[1]];
|
337
|
-
graphics.transform.apply(graphics, tmpTranslate);
|
426
|
+
graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);
|
427
|
+
graphics.transform(1, 0, 0, 1, -x0, -y0);
|
338
428
|
this.clipBbox(graphics, bbox, x0, y0, x1, y1);
|
339
429
|
graphics.executeOperatorList(operatorList);
|
430
|
+
this.ctx.transform(1, 0, 0, 1, x0, y0);
|
431
|
+
this.ctx.scale(1 / dimx.scale, 1 / dimy.scale);
|
340
432
|
return tmpCanvas.canvas;
|
341
433
|
},
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
434
|
+
getSizeAndScale: function TilingPattern_getSizeAndScale(step, realOutputSize, scale) {
|
435
|
+
step = Math.abs(step);
|
436
|
+
var maxSize = Math.max(MAX_PATTERN_SIZE, realOutputSize);
|
437
|
+
var size = Math.ceil(step * scale);
|
438
|
+
|
439
|
+
if (size >= maxSize) {
|
440
|
+
size = maxSize;
|
441
|
+
} else {
|
442
|
+
scale = size / step;
|
443
|
+
}
|
444
|
+
|
445
|
+
return {
|
446
|
+
scale,
|
447
|
+
size
|
448
|
+
};
|
353
449
|
},
|
354
450
|
clipBbox: function clipBbox(graphics, bbox, x0, y0, x1, y1) {
|
355
451
|
if (Array.isArray(bbox) && bbox.length === 4) {
|
@@ -361,8 +457,9 @@ var TilingPattern = function TilingPatternClosure() {
|
|
361
457
|
}
|
362
458
|
},
|
363
459
|
setFillAndStrokeStyleToContext: function setFillAndStrokeStyleToContext(graphics, paintType, color) {
|
364
|
-
|
365
|
-
|
460
|
+
const context = graphics.ctx,
|
461
|
+
current = graphics.current;
|
462
|
+
|
366
463
|
switch (paintType) {
|
367
464
|
case PaintType.COLORED:
|
368
465
|
var ctx = this.ctx;
|
@@ -371,27 +468,29 @@ var TilingPattern = function TilingPatternClosure() {
|
|
371
468
|
current.fillColor = ctx.fillStyle;
|
372
469
|
current.strokeColor = ctx.strokeStyle;
|
373
470
|
break;
|
471
|
+
|
374
472
|
case PaintType.UNCOLORED:
|
375
473
|
var cssColor = _util.Util.makeCssRgb(color[0], color[1], color[2]);
|
474
|
+
|
376
475
|
context.fillStyle = cssColor;
|
377
476
|
context.strokeStyle = cssColor;
|
378
477
|
current.fillColor = cssColor;
|
379
478
|
current.strokeColor = cssColor;
|
380
479
|
break;
|
480
|
+
|
381
481
|
default:
|
382
|
-
throw new _util.FormatError(
|
482
|
+
throw new _util.FormatError(`Unsupported paint type: ${paintType}`);
|
383
483
|
}
|
384
484
|
},
|
385
485
|
getPattern: function TilingPattern_getPattern(ctx, owner) {
|
386
|
-
var temporaryPatternCanvas = this.createPatternCanvas(owner);
|
387
486
|
ctx = this.ctx;
|
388
487
|
ctx.setTransform.apply(ctx, this.baseTransform);
|
389
488
|
ctx.transform.apply(ctx, this.matrix);
|
390
|
-
this.
|
391
|
-
return ctx.createPattern(temporaryPatternCanvas,
|
489
|
+
var temporaryPatternCanvas = this.createPatternCanvas(owner);
|
490
|
+
return ctx.createPattern(temporaryPatternCanvas, "repeat");
|
392
491
|
}
|
393
492
|
};
|
394
493
|
return TilingPattern;
|
395
494
|
}();
|
396
|
-
|
495
|
+
|
397
496
|
exports.TilingPattern = TilingPattern;
|