pdfjs-dist 2.2.228 → 2.6.347
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/README.md +4 -0
- package/bower.json +1 -1
- package/build/pdf.js +8816 -19300
- 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 +27185 -35746
- package/build/pdf.worker.js.map +1 -1
- package/build/pdf.worker.min.js +22 -1
- package/es5/build/pdf.js +26665 -0
- package/es5/build/pdf.js.map +1 -0
- package/es5/build/pdf.min.js +22 -0
- package/{lib/shared/global_scope.js → es5/build/pdf.worker.entry.js} +5 -10
- package/es5/build/pdf.worker.js +61231 -0
- package/es5/build/pdf.worker.js.map +1 -0
- package/es5/build/pdf.worker.min.js +22 -0
- package/es5/image_decoders/pdf.image_decoders.js +12529 -0
- package/es5/image_decoders/pdf.image_decoders.js.map +1 -0
- package/es5/image_decoders/pdf.image_decoders.min.js +22 -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/pdf_viewer.css +406 -0
- package/es5/web/pdf_viewer.js +7886 -0
- package/es5/web/pdf_viewer.js.map +1 -0
- package/image_decoders/pdf.image_decoders.js +1498 -4832
- 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 +1144 -927
- package/lib/core/arithmetic_decoder.js +81 -97
- package/lib/core/bidi.js +54 -46
- package/lib/core/ccitt.js +88 -81
- package/lib/core/ccitt_stream.js +15 -14
- package/lib/core/cff_parser.js +747 -716
- package/lib/core/charsets.js +4 -4
- package/lib/core/chunked_stream.js +462 -553
- package/lib/core/cmap.js +231 -277
- package/lib/core/colorspace.js +715 -857
- package/lib/core/core_utils.js +57 -52
- package/lib/core/crypto.js +416 -437
- package/lib/core/document.js +629 -670
- package/lib/core/encodings.js +15 -15
- package/lib/core/evaluator.js +3229 -2800
- package/lib/core/font_renderer.js +135 -178
- package/lib/core/fonts.js +602 -534
- package/lib/core/function.js +355 -279
- package/lib/core/glyphlist.js +4527 -4526
- package/lib/core/image.js +442 -439
- package/lib/core/image_utils.js +221 -61
- package/lib/core/jbig2.js +325 -316
- package/lib/core/jbig2_stream.js +18 -17
- package/lib/core/jpeg_stream.js +21 -26
- package/lib/core/jpg.js +289 -233
- package/lib/core/jpx.js +161 -143
- package/lib/core/jpx_stream.js +28 -28
- package/lib/core/metrics.js +2928 -2928
- package/lib/core/murmurhash3.js +87 -102
- package/lib/core/obj.js +1343 -1300
- package/lib/core/operator_list.js +90 -67
- package/lib/core/parser.js +990 -987
- package/lib/core/pattern.js +105 -77
- package/lib/core/pdf_manager.js +149 -316
- package/lib/core/primitives.js +156 -104
- package/lib/core/ps_parser.js +175 -214
- package/lib/core/standard_fonts.js +237 -236
- package/lib/core/stream.js +94 -74
- package/lib/core/type1_parser.js +89 -69
- package/lib/core/unicode.js +1654 -1654
- package/lib/core/worker.js +275 -290
- package/lib/core/worker_stream.js +101 -210
- package/lib/core/writer.js +242 -0
- package/lib/display/annotation_layer.js +772 -1041
- package/lib/display/annotation_storage.js +89 -0
- package/lib/display/api.js +1575 -1868
- package/lib/display/api_compatibility.js +12 -17
- package/lib/display/canvas.js +370 -222
- package/lib/display/content_disposition.js +40 -59
- package/lib/display/display_utils.js +341 -536
- package/lib/display/fetch_stream.js +188 -304
- package/lib/display/font_loader.js +282 -414
- package/lib/display/metadata.js +81 -99
- package/lib/display/network.js +362 -511
- package/lib/display/network_utils.js +25 -18
- package/lib/display/node_stream.js +283 -465
- package/lib/display/node_utils.js +87 -0
- package/lib/display/optional_content_config.js +184 -0
- package/lib/display/pattern_helper.js +93 -44
- package/lib/display/svg.js +1163 -1401
- package/lib/display/text_layer.js +154 -137
- package/lib/display/transport_stream.js +237 -375
- package/lib/display/webgl.js +70 -83
- package/lib/display/worker_options.js +3 -3
- package/lib/display/xml_parser.js +303 -392
- package/lib/examples/node/domstubs.js +37 -37
- package/lib/pdf.js +220 -58
- package/lib/pdf.worker.js +14 -6
- package/lib/shared/compatibility.js +3 -246
- package/lib/shared/is_node.js +7 -6
- package/lib/shared/message_handler.js +327 -332
- package/lib/shared/util.js +271 -306
- package/lib/test/unit/annotation_spec.js +1902 -763
- package/lib/test/unit/annotation_storage_spec.js +83 -0
- package/lib/test/unit/api_spec.js +790 -592
- package/lib/test/unit/bidi_spec.js +7 -7
- package/lib/test/unit/cff_parser_spec.js +73 -72
- package/lib/test/unit/clitests_helper.js +7 -9
- package/lib/test/unit/cmap_spec.js +86 -88
- package/lib/test/unit/colorspace_spec.js +346 -154
- package/lib/test/unit/core_utils_spec.js +125 -105
- package/lib/test/unit/crypto_spec.js +232 -185
- package/lib/test/unit/custom_spec.js +150 -24
- package/lib/test/unit/display_svg_spec.js +34 -39
- package/lib/test/unit/display_utils_spec.js +139 -149
- package/lib/test/unit/document_spec.js +128 -17
- package/lib/test/unit/encodings_spec.js +12 -34
- package/lib/test/unit/evaluator_spec.js +112 -91
- package/lib/test/unit/fetch_stream_spec.js +31 -29
- package/lib/test/unit/function_spec.js +206 -204
- package/lib/test/unit/jasmine-boot.js +48 -32
- package/lib/test/unit/message_handler_spec.js +173 -159
- package/lib/test/unit/metadata_spec.js +71 -71
- package/lib/test/unit/murmurhash3_spec.js +12 -12
- package/lib/test/unit/network_spec.js +13 -11
- package/lib/test/unit/network_utils_spec.js +158 -144
- package/lib/test/unit/node_stream_spec.js +76 -90
- package/lib/test/unit/parser_spec.js +108 -114
- package/lib/test/unit/pdf_find_controller_spec.js +55 -86
- package/lib/test/unit/pdf_find_utils_spec.js +32 -32
- package/lib/test/unit/pdf_history_spec.js +32 -32
- package/lib/test/unit/primitives_spec.js +337 -156
- package/lib/test/unit/stream_spec.js +16 -14
- package/lib/test/unit/test_utils.js +91 -304
- package/lib/test/unit/testreporter.js +33 -22
- package/lib/test/unit/type1_parser_spec.js +42 -42
- package/lib/test/unit/ui_utils_spec.js +299 -461
- package/lib/test/unit/unicode_spec.js +42 -42
- package/lib/test/unit/util_spec.js +129 -149
- package/lib/test/unit/writer_spec.js +84 -0
- package/lib/web/annotation_layer_builder.js +78 -111
- package/lib/web/app.js +1542 -1267
- package/lib/web/app_options.js +76 -91
- package/lib/web/base_tree_viewer.js +100 -0
- package/lib/web/base_viewer.js +869 -834
- package/lib/web/chromecom.js +165 -252
- package/lib/web/debugger.js +149 -205
- package/lib/web/download_manager.js +34 -58
- package/lib/web/firefox_print_service.js +62 -34
- package/lib/web/firefoxcom.js +206 -374
- package/lib/web/genericcom.js +26 -108
- package/lib/web/genericl10n.js +24 -153
- package/lib/web/grab_to_pan.js +30 -30
- package/lib/web/interfaces.js +80 -254
- package/lib/web/overlay_manager.js +70 -246
- package/lib/web/password_prompt.js +38 -64
- package/lib/web/pdf_attachment_viewer.js +150 -126
- package/lib/web/pdf_cursor_tools.js +75 -102
- package/lib/web/pdf_document_properties.js +229 -383
- package/lib/web/pdf_find_bar.js +136 -170
- package/lib/web/pdf_find_controller.js +492 -548
- package/lib/web/pdf_find_utils.js +13 -13
- package/lib/web/pdf_history.js +397 -406
- package/lib/web/pdf_layer_viewer.js +208 -0
- package/lib/web/pdf_link_service.js +304 -348
- package/lib/web/pdf_outline_viewer.js +119 -212
- package/lib/web/pdf_page_view.js +474 -513
- package/lib/web/pdf_presentation_mode.js +308 -357
- package/lib/web/pdf_print_service.js +96 -110
- package/lib/web/pdf_rendering_queue.js +87 -108
- package/lib/web/pdf_sidebar.js +286 -302
- package/lib/web/pdf_sidebar_resizer.js +92 -119
- package/lib/web/pdf_single_page_viewer.js +77 -126
- package/lib/web/pdf_thumbnail_view.js +289 -297
- package/lib/web/pdf_thumbnail_viewer.js +202 -206
- package/lib/web/pdf_viewer.component.js +20 -21
- package/lib/web/pdf_viewer.js +55 -115
- package/lib/web/preferences.js +69 -273
- package/lib/web/secondary_toolbar.js +164 -196
- package/lib/web/text_layer_builder.js +284 -319
- package/lib/web/toolbar.js +217 -210
- package/lib/web/ui_utils.js +274 -421
- package/lib/web/view_history.js +52 -226
- package/lib/web/viewer_compatibility.js +21 -6
- package/package.json +4 -9
- package/types/display/annotation_layer.d.ts +61 -0
- package/types/display/annotation_storage.d.ts +36 -0
- package/types/display/api.d.ts +1107 -0
- package/types/display/api_compatibility.d.ts +1 -0
- package/types/display/canvas.d.ts +4 -0
- package/types/display/content_disposition.d.ts +7 -0
- package/types/display/display_utils.d.ts +243 -0
- package/types/display/fetch_stream.d.ts +67 -0
- package/types/display/font_loader.d.ts +19 -0
- package/types/display/metadata.d.ts +9 -0
- package/types/display/network.d.ts +80 -0
- package/types/display/network_utils.d.ts +14 -0
- package/types/display/node_stream.d.ts +72 -0
- package/types/display/node_utils.d.ts +6 -0
- package/types/display/optional_content_config.d.ts +12 -0
- package/types/display/pattern_helper.d.ts +5 -0
- package/types/display/svg.d.ts +2 -0
- package/types/display/text_layer.d.ts +83 -0
- package/types/display/transport_stream.d.ts +57 -0
- package/types/display/webgl.d.ts +20 -0
- package/types/display/worker_options.d.ts +27 -0
- package/types/display/xml_parser.d.ts +35 -0
- package/types/pdf.d.ts +33 -0
- package/types/shared/compatibility.d.ts +1 -0
- package/types/shared/is_node.d.ts +1 -0
- package/types/shared/message_handler.d.ts +62 -0
- package/types/shared/util.d.ts +421 -0
- package/web/images/shadow.png +0 -0
- package/web/pdf_viewer.css +29 -27
- package/web/pdf_viewer.js +3524 -4746
- package/web/pdf_viewer.js.map +1 -1
- package/webpack.js +6 -5
- package/external/streams/streams-lib.js +0 -3962
- package/external/url/url-lib.js +0 -627
- package/lib/shared/streams_polyfill.js +0 -43
- package/lib/shared/url_polyfill.js +0 -56
- package/web/images/texture.png +0 -0
@@ -0,0 +1,87 @@
|
|
1
|
+
/**
|
2
|
+
* @licstart The following is the entire license notice for the
|
3
|
+
* Javascript code in this page
|
4
|
+
*
|
5
|
+
* Copyright 2020 Mozilla Foundation
|
6
|
+
*
|
7
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
* you may not use this file except in compliance with the License.
|
9
|
+
* You may obtain a copy of the License at
|
10
|
+
*
|
11
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
*
|
13
|
+
* Unless required by applicable law or agreed to in writing, software
|
14
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
+
* See the License for the specific language governing permissions and
|
17
|
+
* limitations under the License.
|
18
|
+
*
|
19
|
+
* @licend The above is the entire license notice for the
|
20
|
+
* Javascript code in this page
|
21
|
+
*/
|
22
|
+
"use strict";
|
23
|
+
|
24
|
+
Object.defineProperty(exports, "__esModule", {
|
25
|
+
value: true
|
26
|
+
});
|
27
|
+
exports.NodeCMapReaderFactory = exports.NodeCanvasFactory = void 0;
|
28
|
+
|
29
|
+
var _display_utils = require("./display_utils.js");
|
30
|
+
|
31
|
+
var _is_node = require("../shared/is_node.js");
|
32
|
+
|
33
|
+
var _util = require("../shared/util.js");
|
34
|
+
|
35
|
+
let NodeCanvasFactory = class {
|
36
|
+
constructor() {
|
37
|
+
(0, _util.unreachable)("Not implemented: NodeCanvasFactory");
|
38
|
+
}
|
39
|
+
|
40
|
+
};
|
41
|
+
exports.NodeCanvasFactory = NodeCanvasFactory;
|
42
|
+
let NodeCMapReaderFactory = class {
|
43
|
+
constructor() {
|
44
|
+
(0, _util.unreachable)("Not implemented: NodeCMapReaderFactory");
|
45
|
+
}
|
46
|
+
|
47
|
+
};
|
48
|
+
exports.NodeCMapReaderFactory = NodeCMapReaderFactory;
|
49
|
+
|
50
|
+
if (_is_node.isNodeJS) {
|
51
|
+
exports.NodeCanvasFactory = NodeCanvasFactory = class extends _display_utils.BaseCanvasFactory {
|
52
|
+
create(width, height) {
|
53
|
+
if (width <= 0 || height <= 0) {
|
54
|
+
throw new Error("Invalid canvas size");
|
55
|
+
}
|
56
|
+
|
57
|
+
const Canvas = require("canvas");
|
58
|
+
|
59
|
+
const canvas = Canvas.createCanvas(width, height);
|
60
|
+
return {
|
61
|
+
canvas,
|
62
|
+
context: canvas.getContext("2d")
|
63
|
+
};
|
64
|
+
}
|
65
|
+
|
66
|
+
};
|
67
|
+
exports.NodeCMapReaderFactory = NodeCMapReaderFactory = class extends _display_utils.BaseCMapReaderFactory {
|
68
|
+
_fetchData(url, compressionType) {
|
69
|
+
return new Promise((resolve, reject) => {
|
70
|
+
const fs = require("fs");
|
71
|
+
|
72
|
+
fs.readFile(url, (error, data) => {
|
73
|
+
if (error || !data) {
|
74
|
+
reject(new Error(error));
|
75
|
+
return;
|
76
|
+
}
|
77
|
+
|
78
|
+
resolve({
|
79
|
+
cMapData: new Uint8Array(data),
|
80
|
+
compressionType
|
81
|
+
});
|
82
|
+
});
|
83
|
+
});
|
84
|
+
}
|
85
|
+
|
86
|
+
};
|
87
|
+
}
|
@@ -0,0 +1,184 @@
|
|
1
|
+
/**
|
2
|
+
* @licstart The following is the entire license notice for the
|
3
|
+
* Javascript code in this page
|
4
|
+
*
|
5
|
+
* Copyright 2020 Mozilla Foundation
|
6
|
+
*
|
7
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
* you may not use this file except in compliance with the License.
|
9
|
+
* You may obtain a copy of the License at
|
10
|
+
*
|
11
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
*
|
13
|
+
* Unless required by applicable law or agreed to in writing, software
|
14
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
+
* See the License for the specific language governing permissions and
|
17
|
+
* limitations under the License.
|
18
|
+
*
|
19
|
+
* @licend The above is the entire license notice for the
|
20
|
+
* Javascript code in this page
|
21
|
+
*/
|
22
|
+
"use strict";
|
23
|
+
|
24
|
+
Object.defineProperty(exports, "__esModule", {
|
25
|
+
value: true
|
26
|
+
});
|
27
|
+
exports.OptionalContentConfig = void 0;
|
28
|
+
|
29
|
+
var _util = require("../shared/util.js");
|
30
|
+
|
31
|
+
class OptionalContentGroup {
|
32
|
+
constructor(name, intent) {
|
33
|
+
this.visible = true;
|
34
|
+
this.name = name;
|
35
|
+
this.intent = intent;
|
36
|
+
}
|
37
|
+
|
38
|
+
}
|
39
|
+
|
40
|
+
class OptionalContentConfig {
|
41
|
+
constructor(data) {
|
42
|
+
this.name = null;
|
43
|
+
this.creator = null;
|
44
|
+
this._order = null;
|
45
|
+
this._groups = new Map();
|
46
|
+
|
47
|
+
if (data === null) {
|
48
|
+
return;
|
49
|
+
}
|
50
|
+
|
51
|
+
this.name = data.name;
|
52
|
+
this.creator = data.creator;
|
53
|
+
this._order = data.order;
|
54
|
+
|
55
|
+
for (const group of data.groups) {
|
56
|
+
this._groups.set(group.id, new OptionalContentGroup(group.name, group.intent));
|
57
|
+
}
|
58
|
+
|
59
|
+
if (data.baseState === "OFF") {
|
60
|
+
for (const group of this._groups) {
|
61
|
+
group.visible = false;
|
62
|
+
}
|
63
|
+
}
|
64
|
+
|
65
|
+
for (const on of data.on) {
|
66
|
+
this._groups.get(on).visible = true;
|
67
|
+
}
|
68
|
+
|
69
|
+
for (const off of data.off) {
|
70
|
+
this._groups.get(off).visible = false;
|
71
|
+
}
|
72
|
+
}
|
73
|
+
|
74
|
+
isVisible(group) {
|
75
|
+
if (group.type === "OCG") {
|
76
|
+
if (!this._groups.has(group.id)) {
|
77
|
+
(0, _util.warn)(`Optional content group not found: ${group.id}`);
|
78
|
+
return true;
|
79
|
+
}
|
80
|
+
|
81
|
+
return this._groups.get(group.id).visible;
|
82
|
+
} else if (group.type === "OCMD") {
|
83
|
+
if (group.expression) {
|
84
|
+
(0, _util.warn)("Visibility expression not supported yet.");
|
85
|
+
}
|
86
|
+
|
87
|
+
if (!group.policy || group.policy === "AnyOn") {
|
88
|
+
for (const id of group.ids) {
|
89
|
+
if (!this._groups.has(id)) {
|
90
|
+
(0, _util.warn)(`Optional content group not found: ${id}`);
|
91
|
+
return true;
|
92
|
+
}
|
93
|
+
|
94
|
+
if (this._groups.get(id).visible) {
|
95
|
+
return true;
|
96
|
+
}
|
97
|
+
}
|
98
|
+
|
99
|
+
return false;
|
100
|
+
} else if (group.policy === "AllOn") {
|
101
|
+
for (const id of group.ids) {
|
102
|
+
if (!this._groups.has(id)) {
|
103
|
+
(0, _util.warn)(`Optional content group not found: ${id}`);
|
104
|
+
return true;
|
105
|
+
}
|
106
|
+
|
107
|
+
if (!this._groups.get(id).visible) {
|
108
|
+
return false;
|
109
|
+
}
|
110
|
+
}
|
111
|
+
|
112
|
+
return true;
|
113
|
+
} else if (group.policy === "AnyOff") {
|
114
|
+
for (const id of group.ids) {
|
115
|
+
if (!this._groups.has(id)) {
|
116
|
+
(0, _util.warn)(`Optional content group not found: ${id}`);
|
117
|
+
return true;
|
118
|
+
}
|
119
|
+
|
120
|
+
if (!this._groups.get(id).visible) {
|
121
|
+
return true;
|
122
|
+
}
|
123
|
+
}
|
124
|
+
|
125
|
+
return false;
|
126
|
+
} else if (group.policy === "AllOff") {
|
127
|
+
for (const id of group.ids) {
|
128
|
+
if (!this._groups.has(id)) {
|
129
|
+
(0, _util.warn)(`Optional content group not found: ${id}`);
|
130
|
+
return true;
|
131
|
+
}
|
132
|
+
|
133
|
+
if (this._groups.get(id).visible) {
|
134
|
+
return false;
|
135
|
+
}
|
136
|
+
}
|
137
|
+
|
138
|
+
return true;
|
139
|
+
}
|
140
|
+
|
141
|
+
(0, _util.warn)(`Unknown optional content policy ${group.policy}.`);
|
142
|
+
return true;
|
143
|
+
}
|
144
|
+
|
145
|
+
(0, _util.warn)(`Unknown group type ${group.type}.`);
|
146
|
+
return true;
|
147
|
+
}
|
148
|
+
|
149
|
+
setVisibility(id, visible = true) {
|
150
|
+
if (!this._groups.has(id)) {
|
151
|
+
(0, _util.warn)(`Optional content group not found: ${id}`);
|
152
|
+
return;
|
153
|
+
}
|
154
|
+
|
155
|
+
this._groups.get(id).visible = !!visible;
|
156
|
+
}
|
157
|
+
|
158
|
+
getOrder() {
|
159
|
+
if (!this._groups.size) {
|
160
|
+
return null;
|
161
|
+
}
|
162
|
+
|
163
|
+
if (this._order) {
|
164
|
+
return this._order.slice();
|
165
|
+
}
|
166
|
+
|
167
|
+
return Array.from(this._groups.keys());
|
168
|
+
}
|
169
|
+
|
170
|
+
getGroups() {
|
171
|
+
if (!this._groups.size) {
|
172
|
+
return null;
|
173
|
+
}
|
174
|
+
|
175
|
+
return Object.fromEntries(this._groups);
|
176
|
+
}
|
177
|
+
|
178
|
+
getGroup(id) {
|
179
|
+
return this._groups.get(id) || null;
|
180
|
+
}
|
181
|
+
|
182
|
+
}
|
183
|
+
|
184
|
+
exports.OptionalContentConfig = OptionalContentConfig;
|
@@ -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.
|
@@ -27,25 +27,40 @@ Object.defineProperty(exports, "__esModule", {
|
|
27
27
|
exports.getShadingPatternFromIR = getShadingPatternFromIR;
|
28
28
|
exports.TilingPattern = void 0;
|
29
29
|
|
30
|
-
var _util = require("../shared/util");
|
30
|
+
var _util = require("../shared/util.js");
|
31
31
|
|
32
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
|
+
|
33
46
|
ShadingIRs.RadialAxial = {
|
34
47
|
fromIR: function RadialAxial_fromIR(raw) {
|
35
48
|
var type = raw[1];
|
36
|
-
var
|
37
|
-
var
|
38
|
-
var
|
39
|
-
var
|
40
|
-
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];
|
41
55
|
return {
|
42
|
-
type:
|
56
|
+
type: "Pattern",
|
43
57
|
getPattern: function RadialAxial_getPattern(ctx) {
|
58
|
+
applyBoundingBox(ctx, bbox);
|
44
59
|
var grad;
|
45
60
|
|
46
|
-
if (type ===
|
61
|
+
if (type === "axial") {
|
47
62
|
grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]);
|
48
|
-
} else if (type ===
|
63
|
+
} else if (type === "radial") {
|
49
64
|
grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1);
|
50
65
|
}
|
51
66
|
|
@@ -119,24 +134,50 @@ var createMeshCanvas = function createMeshCanvasClosure() {
|
|
119
134
|
maxY = Math.round(y3);
|
120
135
|
var xa, car, cag, cab;
|
121
136
|
var xb, cbr, cbg, cbb;
|
122
|
-
var k;
|
123
137
|
|
124
138
|
for (var y = minY; y <= maxY; y++) {
|
125
139
|
if (y < y2) {
|
126
|
-
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
|
+
|
127
150
|
xa = x1 - (x1 - x2) * k;
|
128
151
|
car = c1r - (c1r - c2r) * k;
|
129
152
|
cag = c1g - (c1g - c2g) * k;
|
130
153
|
cab = c1b - (c1b - c2b) * k;
|
131
154
|
} else {
|
132
|
-
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
|
+
|
133
165
|
xa = x2 - (x2 - x3) * k;
|
134
166
|
car = c2r - (c2r - c3r) * k;
|
135
167
|
cag = c2g - (c2g - c3g) * k;
|
136
168
|
cab = c2b - (c2b - c3b) * k;
|
137
169
|
}
|
138
170
|
|
139
|
-
k
|
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
|
+
|
140
181
|
xb = x1 - (x1 - x3) * k;
|
141
182
|
cbr = c1r - (c1r - c3r) * k;
|
142
183
|
cbg = c1g - (c1g - c3g) * k;
|
@@ -147,7 +188,13 @@ var createMeshCanvas = function createMeshCanvasClosure() {
|
|
147
188
|
|
148
189
|
for (var x = x1_; x <= x2_; x++) {
|
149
190
|
k = (xa - x) / (xa - xb);
|
150
|
-
|
191
|
+
|
192
|
+
if (k < 0) {
|
193
|
+
k = 0;
|
194
|
+
} else if (k > 1) {
|
195
|
+
k = 1;
|
196
|
+
}
|
197
|
+
|
151
198
|
bytes[j++] = car - (car - cbr) * k | 0;
|
152
199
|
bytes[j++] = cag - (cag - cbg) * k | 0;
|
153
200
|
bytes[j++] = cab - (cab - cbb) * k | 0;
|
@@ -162,7 +209,7 @@ var createMeshCanvas = function createMeshCanvasClosure() {
|
|
162
209
|
var i, ii;
|
163
210
|
|
164
211
|
switch (figure.type) {
|
165
|
-
case
|
212
|
+
case "lattice":
|
166
213
|
var verticesPerRow = figure.verticesPerRow;
|
167
214
|
var rows = Math.floor(ps.length / verticesPerRow) - 1;
|
168
215
|
var cols = verticesPerRow - 1;
|
@@ -178,7 +225,7 @@ var createMeshCanvas = function createMeshCanvasClosure() {
|
|
178
225
|
|
179
226
|
break;
|
180
227
|
|
181
|
-
case
|
228
|
+
case "triangles":
|
182
229
|
for (i = 0, ii = ps.length; i < ii; i += 3) {
|
183
230
|
drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);
|
184
231
|
}
|
@@ -186,7 +233,7 @@ var createMeshCanvas = function createMeshCanvasClosure() {
|
|
186
233
|
break;
|
187
234
|
|
188
235
|
default:
|
189
|
-
throw new Error(
|
236
|
+
throw new Error("illegal figure");
|
190
237
|
}
|
191
238
|
}
|
192
239
|
|
@@ -203,8 +250,8 @@ var createMeshCanvas = function createMeshCanvasClosure() {
|
|
203
250
|
var scaleX = boundsWidth / width;
|
204
251
|
var scaleY = boundsHeight / height;
|
205
252
|
var context = {
|
206
|
-
coords
|
207
|
-
colors
|
253
|
+
coords,
|
254
|
+
colors,
|
208
255
|
offsetX: -offsetX,
|
209
256
|
offsetY: -offsetY,
|
210
257
|
scaleX: 1 / scaleX,
|
@@ -216,17 +263,17 @@ var createMeshCanvas = function createMeshCanvasClosure() {
|
|
216
263
|
|
217
264
|
if (webGLContext.isEnabled) {
|
218
265
|
canvas = webGLContext.drawFigures({
|
219
|
-
width
|
220
|
-
height
|
221
|
-
backgroundColor
|
222
|
-
figures
|
223
|
-
context
|
266
|
+
width,
|
267
|
+
height,
|
268
|
+
backgroundColor,
|
269
|
+
figures,
|
270
|
+
context
|
224
271
|
});
|
225
|
-
tmpCanvas = cachedCanvases.getCanvas(
|
272
|
+
tmpCanvas = cachedCanvases.getCanvas("mesh", paddedWidth, paddedHeight, false);
|
226
273
|
tmpCanvas.context.drawImage(canvas, BORDER_SIZE, BORDER_SIZE);
|
227
274
|
canvas = tmpCanvas.canvas;
|
228
275
|
} else {
|
229
|
-
tmpCanvas = cachedCanvases.getCanvas(
|
276
|
+
tmpCanvas = cachedCanvases.getCanvas("mesh", paddedWidth, paddedHeight, false);
|
230
277
|
var tmpCtx = tmpCanvas.context;
|
231
278
|
var data = tmpCtx.createImageData(width, height);
|
232
279
|
|
@@ -250,11 +297,11 @@ var createMeshCanvas = function createMeshCanvasClosure() {
|
|
250
297
|
}
|
251
298
|
|
252
299
|
return {
|
253
|
-
canvas
|
300
|
+
canvas,
|
254
301
|
offsetX: offsetX - BORDER_SIZE * scaleX,
|
255
302
|
offsetY: offsetY - BORDER_SIZE * scaleY,
|
256
|
-
scaleX
|
257
|
-
scaleY
|
303
|
+
scaleX,
|
304
|
+
scaleY
|
258
305
|
};
|
259
306
|
}
|
260
307
|
|
@@ -268,10 +315,12 @@ ShadingIRs.Mesh = {
|
|
268
315
|
var figures = raw[4];
|
269
316
|
var bounds = raw[5];
|
270
317
|
var matrix = raw[6];
|
318
|
+
var bbox = raw[7];
|
271
319
|
var background = raw[8];
|
272
320
|
return {
|
273
|
-
type:
|
321
|
+
type: "Pattern",
|
274
322
|
getPattern: function Mesh_getPattern(ctx, owner, shadingFill) {
|
323
|
+
applyBoundingBox(ctx, bbox);
|
275
324
|
var scale;
|
276
325
|
|
277
326
|
if (shadingFill) {
|
@@ -298,7 +347,7 @@ ShadingIRs.Mesh = {
|
|
298
347
|
|
299
348
|
ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);
|
300
349
|
ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);
|
301
|
-
return ctx.createPattern(temporaryPatternCanvas.canvas,
|
350
|
+
return ctx.createPattern(temporaryPatternCanvas.canvas, "no-repeat");
|
302
351
|
}
|
303
352
|
};
|
304
353
|
}
|
@@ -306,9 +355,9 @@ ShadingIRs.Mesh = {
|
|
306
355
|
ShadingIRs.Dummy = {
|
307
356
|
fromIR: function Dummy_fromIR() {
|
308
357
|
return {
|
309
|
-
type:
|
358
|
+
type: "Pattern",
|
310
359
|
getPattern: function Dummy_fromIR_getPattern() {
|
311
|
-
return
|
360
|
+
return "hotpink";
|
312
361
|
}
|
313
362
|
};
|
314
363
|
}
|
@@ -318,7 +367,7 @@ function getShadingPatternFromIR(raw) {
|
|
318
367
|
var shadingIR = ShadingIRs[raw[0]];
|
319
368
|
|
320
369
|
if (!shadingIR) {
|
321
|
-
throw new Error(
|
370
|
+
throw new Error(`Unknown IR type: ${raw[0]}`);
|
322
371
|
}
|
323
372
|
|
324
373
|
return shadingIR.fromIR(raw);
|
@@ -342,7 +391,7 @@ var TilingPattern = function TilingPatternClosure() {
|
|
342
391
|
this.color = color;
|
343
392
|
this.canvasGraphicsFactory = canvasGraphicsFactory;
|
344
393
|
this.baseTransform = baseTransform;
|
345
|
-
this.type =
|
394
|
+
this.type = "Pattern";
|
346
395
|
this.ctx = ctx;
|
347
396
|
}
|
348
397
|
|
@@ -356,7 +405,7 @@ var TilingPattern = function TilingPatternClosure() {
|
|
356
405
|
var tilingType = this.tilingType;
|
357
406
|
var color = this.color;
|
358
407
|
var canvasGraphicsFactory = this.canvasGraphicsFactory;
|
359
|
-
(0, _util.info)(
|
408
|
+
(0, _util.info)("TilingType: " + tilingType);
|
360
409
|
var x0 = bbox[0],
|
361
410
|
y0 = bbox[1],
|
362
411
|
x1 = bbox[2],
|
@@ -369,7 +418,7 @@ var TilingPattern = function TilingPatternClosure() {
|
|
369
418
|
var combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]];
|
370
419
|
var dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]);
|
371
420
|
var dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]);
|
372
|
-
var tmpCanvas = owner.cachedCanvases.getCanvas(
|
421
|
+
var tmpCanvas = owner.cachedCanvases.getCanvas("pattern", dimx.size, dimy.size, true);
|
373
422
|
var tmpCtx = tmpCanvas.context;
|
374
423
|
var graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);
|
375
424
|
graphics.groupLevel = owner.groupLevel;
|
@@ -394,8 +443,8 @@ var TilingPattern = function TilingPatternClosure() {
|
|
394
443
|
}
|
395
444
|
|
396
445
|
return {
|
397
|
-
scale
|
398
|
-
size
|
446
|
+
scale,
|
447
|
+
size
|
399
448
|
};
|
400
449
|
},
|
401
450
|
clipBbox: function clipBbox(graphics, bbox, x0, y0, x1, y1) {
|
@@ -408,8 +457,8 @@ var TilingPattern = function TilingPatternClosure() {
|
|
408
457
|
}
|
409
458
|
},
|
410
459
|
setFillAndStrokeStyleToContext: function setFillAndStrokeStyleToContext(graphics, paintType, color) {
|
411
|
-
|
412
|
-
|
460
|
+
const context = graphics.ctx,
|
461
|
+
current = graphics.current;
|
413
462
|
|
414
463
|
switch (paintType) {
|
415
464
|
case PaintType.COLORED:
|
@@ -430,7 +479,7 @@ var TilingPattern = function TilingPatternClosure() {
|
|
430
479
|
break;
|
431
480
|
|
432
481
|
default:
|
433
|
-
throw new _util.FormatError(
|
482
|
+
throw new _util.FormatError(`Unsupported paint type: ${paintType}`);
|
434
483
|
}
|
435
484
|
},
|
436
485
|
getPattern: function TilingPattern_getPattern(ctx, owner) {
|
@@ -438,7 +487,7 @@ var TilingPattern = function TilingPatternClosure() {
|
|
438
487
|
ctx.setTransform.apply(ctx, this.baseTransform);
|
439
488
|
ctx.transform.apply(ctx, this.matrix);
|
440
489
|
var temporaryPatternCanvas = this.createPatternCanvas(owner);
|
441
|
-
return ctx.createPattern(temporaryPatternCanvas,
|
490
|
+
return ctx.createPattern(temporaryPatternCanvas, "repeat");
|
442
491
|
}
|
443
492
|
};
|
444
493
|
return TilingPattern;
|