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
package/lib/display/webgl.js
CHANGED
@@ -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,67 +19,57 @@
|
|
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.WebGLContext =
|
27
|
+
exports.WebGLContext = void 0;
|
28
28
|
|
29
|
-
var
|
29
|
+
var _util = require("../shared/util.js");
|
30
30
|
|
31
|
-
|
31
|
+
class WebGLContext {
|
32
|
+
constructor({
|
33
|
+
enable = false
|
34
|
+
}) {
|
35
|
+
this._enabled = enable === true;
|
36
|
+
}
|
32
37
|
|
33
|
-
|
38
|
+
get isEnabled() {
|
39
|
+
let enabled = this._enabled;
|
34
40
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
enable = _ref$enable === undefined ? false : _ref$enable;
|
41
|
+
if (enabled) {
|
42
|
+
enabled = WebGLUtils.tryInitGL();
|
43
|
+
}
|
39
44
|
|
40
|
-
|
45
|
+
return (0, _util.shadow)(this, "isEnabled", enabled);
|
46
|
+
}
|
41
47
|
|
42
|
-
|
48
|
+
composeSMask({
|
49
|
+
layer,
|
50
|
+
mask,
|
51
|
+
properties
|
52
|
+
}) {
|
53
|
+
return WebGLUtils.composeSMask(layer, mask, properties);
|
43
54
|
}
|
44
55
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
56
|
+
drawFigures({
|
57
|
+
width,
|
58
|
+
height,
|
59
|
+
backgroundColor,
|
60
|
+
figures,
|
61
|
+
context
|
62
|
+
}) {
|
63
|
+
return WebGLUtils.drawFigures(width, height, backgroundColor, figures, context);
|
64
|
+
}
|
51
65
|
|
52
|
-
|
53
|
-
|
54
|
-
}
|
55
|
-
|
56
|
-
|
57
|
-
var width = _ref3.width,
|
58
|
-
height = _ref3.height,
|
59
|
-
backgroundColor = _ref3.backgroundColor,
|
60
|
-
figures = _ref3.figures,
|
61
|
-
context = _ref3.context;
|
62
|
-
|
63
|
-
return WebGLUtils.drawFigures(width, height, backgroundColor, figures, context);
|
64
|
-
}
|
65
|
-
}, {
|
66
|
-
key: 'clear',
|
67
|
-
value: function clear() {
|
68
|
-
WebGLUtils.cleanup();
|
69
|
-
}
|
70
|
-
}, {
|
71
|
-
key: 'isEnabled',
|
72
|
-
get: function get() {
|
73
|
-
var enabled = this._enabled;
|
74
|
-
if (enabled) {
|
75
|
-
enabled = WebGLUtils.tryInitGL();
|
76
|
-
}
|
77
|
-
return (0, _util.shadow)(this, 'isEnabled', enabled);
|
78
|
-
}
|
79
|
-
}]);
|
66
|
+
clear() {
|
67
|
+
WebGLUtils.cleanup();
|
68
|
+
}
|
69
|
+
|
70
|
+
}
|
80
71
|
|
81
|
-
|
82
|
-
}();
|
72
|
+
exports.WebGLContext = WebGLContext;
|
83
73
|
|
84
74
|
var WebGLUtils = function WebGLUtilsClosure() {
|
85
75
|
function loadShader(gl, code, shaderType) {
|
@@ -87,31 +77,41 @@ var WebGLUtils = function WebGLUtilsClosure() {
|
|
87
77
|
gl.shaderSource(shader, code);
|
88
78
|
gl.compileShader(shader);
|
89
79
|
var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS);
|
80
|
+
|
90
81
|
if (!compiled) {
|
91
82
|
var errorMsg = gl.getShaderInfoLog(shader);
|
92
|
-
throw new Error(
|
83
|
+
throw new Error("Error during shader compilation: " + errorMsg);
|
93
84
|
}
|
85
|
+
|
94
86
|
return shader;
|
95
87
|
}
|
88
|
+
|
96
89
|
function createVertexShader(gl, code) {
|
97
90
|
return loadShader(gl, code, gl.VERTEX_SHADER);
|
98
91
|
}
|
92
|
+
|
99
93
|
function createFragmentShader(gl, code) {
|
100
94
|
return loadShader(gl, code, gl.FRAGMENT_SHADER);
|
101
95
|
}
|
96
|
+
|
102
97
|
function createProgram(gl, shaders) {
|
103
98
|
var program = gl.createProgram();
|
99
|
+
|
104
100
|
for (var i = 0, ii = shaders.length; i < ii; ++i) {
|
105
101
|
gl.attachShader(program, shaders[i]);
|
106
102
|
}
|
103
|
+
|
107
104
|
gl.linkProgram(program);
|
108
105
|
var linked = gl.getProgramParameter(program, gl.LINK_STATUS);
|
106
|
+
|
109
107
|
if (!linked) {
|
110
108
|
var errorMsg = gl.getProgramInfoLog(program);
|
111
|
-
throw new Error(
|
109
|
+
throw new Error("Error during program linking: " + errorMsg);
|
112
110
|
}
|
111
|
+
|
113
112
|
return program;
|
114
113
|
}
|
114
|
+
|
115
115
|
function createTexture(gl, image, textureId) {
|
116
116
|
gl.activeTexture(textureId);
|
117
117
|
var texture = gl.createTexture();
|
@@ -123,15 +123,21 @@ var WebGLUtils = function WebGLUtilsClosure() {
|
|
123
123
|
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
|
124
124
|
return texture;
|
125
125
|
}
|
126
|
+
|
126
127
|
var currentGL, currentCanvas;
|
128
|
+
|
127
129
|
function generateGL() {
|
128
130
|
if (currentGL) {
|
129
131
|
return;
|
130
132
|
}
|
131
|
-
|
132
|
-
|
133
|
+
|
134
|
+
currentCanvas = document.createElement("canvas");
|
135
|
+
currentGL = currentCanvas.getContext("webgl", {
|
136
|
+
premultipliedalpha: false
|
137
|
+
});
|
133
138
|
}
|
134
|
-
|
139
|
+
|
140
|
+
var smaskVertexShaderCode = "\
|
135
141
|
attribute vec2 a_position; \
|
136
142
|
attribute vec2 a_texCoord; \
|
137
143
|
\
|
@@ -144,8 +150,8 @@ var WebGLUtils = function WebGLUtilsClosure() {
|
|
144
150
|
gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \
|
145
151
|
\
|
146
152
|
v_texCoord = a_texCoord; \
|
147
|
-
}
|
148
|
-
var smaskFragmentShaderCode =
|
153
|
+
} ";
|
154
|
+
var smaskFragmentShaderCode = "\
|
149
155
|
precision mediump float; \
|
150
156
|
\
|
151
157
|
uniform vec4 u_backdrop; \
|
@@ -172,8 +178,9 @@ var WebGLUtils = function WebGLUtilsClosure() {
|
|
172
178
|
imageColor.a *= lum; \
|
173
179
|
imageColor.rgb *= imageColor.a; \
|
174
180
|
gl_FragColor = imageColor; \
|
175
|
-
}
|
181
|
+
} ";
|
176
182
|
var smaskCache = null;
|
183
|
+
|
177
184
|
function initSmaskGL() {
|
178
185
|
var canvas, gl;
|
179
186
|
generateGL();
|
@@ -188,13 +195,13 @@ var WebGLUtils = function WebGLUtilsClosure() {
|
|
188
195
|
var cache = {};
|
189
196
|
cache.gl = gl;
|
190
197
|
cache.canvas = canvas;
|
191
|
-
cache.resolutionLocation = gl.getUniformLocation(program,
|
192
|
-
cache.positionLocation = gl.getAttribLocation(program,
|
193
|
-
cache.backdropLocation = gl.getUniformLocation(program,
|
194
|
-
cache.subtypeLocation = gl.getUniformLocation(program,
|
195
|
-
var texCoordLocation = gl.getAttribLocation(program,
|
196
|
-
var texLayerLocation = gl.getUniformLocation(program,
|
197
|
-
var texMaskLocation = gl.getUniformLocation(program,
|
198
|
+
cache.resolutionLocation = gl.getUniformLocation(program, "u_resolution");
|
199
|
+
cache.positionLocation = gl.getAttribLocation(program, "a_position");
|
200
|
+
cache.backdropLocation = gl.getUniformLocation(program, "u_backdrop");
|
201
|
+
cache.subtypeLocation = gl.getUniformLocation(program, "u_subtype");
|
202
|
+
var texCoordLocation = gl.getAttribLocation(program, "a_texCoord");
|
203
|
+
var texLayerLocation = gl.getUniformLocation(program, "u_image");
|
204
|
+
var texMaskLocation = gl.getUniformLocation(program, "u_mask");
|
198
205
|
var texCoordBuffer = gl.createBuffer();
|
199
206
|
gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);
|
200
207
|
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0]), gl.STATIC_DRAW);
|
@@ -204,12 +211,15 @@ var WebGLUtils = function WebGLUtilsClosure() {
|
|
204
211
|
gl.uniform1i(texMaskLocation, 1);
|
205
212
|
smaskCache = cache;
|
206
213
|
}
|
214
|
+
|
207
215
|
function composeSMask(layer, mask, properties) {
|
208
216
|
var width = layer.width,
|
209
217
|
height = layer.height;
|
218
|
+
|
210
219
|
if (!smaskCache) {
|
211
220
|
initSmaskGL();
|
212
221
|
}
|
222
|
+
|
213
223
|
var cache = smaskCache,
|
214
224
|
canvas = cache.canvas,
|
215
225
|
gl = cache.gl;
|
@@ -217,12 +227,14 @@ var WebGLUtils = function WebGLUtilsClosure() {
|
|
217
227
|
canvas.height = height;
|
218
228
|
gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
|
219
229
|
gl.uniform2f(cache.resolutionLocation, width, height);
|
230
|
+
|
220
231
|
if (properties.backdrop) {
|
221
232
|
gl.uniform4f(cache.resolutionLocation, properties.backdrop[0], properties.backdrop[1], properties.backdrop[2], 1);
|
222
233
|
} else {
|
223
234
|
gl.uniform4f(cache.resolutionLocation, 0, 0, 0, 0);
|
224
235
|
}
|
225
|
-
|
236
|
+
|
237
|
+
gl.uniform1i(cache.subtypeLocation, properties.subtype === "Luminosity" ? 1 : 0);
|
226
238
|
var texture = createTexture(gl, layer, gl.TEXTURE0);
|
227
239
|
var maskTexture = createTexture(gl, mask, gl.TEXTURE1);
|
228
240
|
var buffer = gl.createBuffer();
|
@@ -241,7 +253,8 @@ var WebGLUtils = function WebGLUtilsClosure() {
|
|
241
253
|
gl.deleteBuffer(buffer);
|
242
254
|
return canvas;
|
243
255
|
}
|
244
|
-
|
256
|
+
|
257
|
+
var figuresVertexShaderCode = "\
|
245
258
|
attribute vec2 a_position; \
|
246
259
|
attribute vec3 a_color; \
|
247
260
|
\
|
@@ -257,16 +270,17 @@ var WebGLUtils = function WebGLUtilsClosure() {
|
|
257
270
|
gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \
|
258
271
|
\
|
259
272
|
v_color = vec4(a_color / 255.0, 1.0); \
|
260
|
-
}
|
261
|
-
var figuresFragmentShaderCode =
|
273
|
+
} ";
|
274
|
+
var figuresFragmentShaderCode = "\
|
262
275
|
precision mediump float; \
|
263
276
|
\
|
264
277
|
varying vec4 v_color; \
|
265
278
|
\
|
266
279
|
void main() { \
|
267
280
|
gl_FragColor = v_color; \
|
268
|
-
}
|
281
|
+
} ";
|
269
282
|
var figuresCache = null;
|
283
|
+
|
270
284
|
function initFiguresGL() {
|
271
285
|
var canvas, gl;
|
272
286
|
generateGL();
|
@@ -281,17 +295,19 @@ var WebGLUtils = function WebGLUtilsClosure() {
|
|
281
295
|
var cache = {};
|
282
296
|
cache.gl = gl;
|
283
297
|
cache.canvas = canvas;
|
284
|
-
cache.resolutionLocation = gl.getUniformLocation(program,
|
285
|
-
cache.scaleLocation = gl.getUniformLocation(program,
|
286
|
-
cache.offsetLocation = gl.getUniformLocation(program,
|
287
|
-
cache.positionLocation = gl.getAttribLocation(program,
|
288
|
-
cache.colorLocation = gl.getAttribLocation(program,
|
298
|
+
cache.resolutionLocation = gl.getUniformLocation(program, "u_resolution");
|
299
|
+
cache.scaleLocation = gl.getUniformLocation(program, "u_scale");
|
300
|
+
cache.offsetLocation = gl.getUniformLocation(program, "u_offset");
|
301
|
+
cache.positionLocation = gl.getAttribLocation(program, "a_position");
|
302
|
+
cache.colorLocation = gl.getAttribLocation(program, "a_color");
|
289
303
|
figuresCache = cache;
|
290
304
|
}
|
305
|
+
|
291
306
|
function drawFigures(width, height, backgroundColor, figures, context) {
|
292
307
|
if (!figuresCache) {
|
293
308
|
initFiguresGL();
|
294
309
|
}
|
310
|
+
|
295
311
|
var cache = figuresCache,
|
296
312
|
canvas = cache.canvas,
|
297
313
|
gl = cache.gl;
|
@@ -301,33 +317,40 @@ var WebGLUtils = function WebGLUtilsClosure() {
|
|
301
317
|
gl.uniform2f(cache.resolutionLocation, width, height);
|
302
318
|
var count = 0;
|
303
319
|
var i, ii, rows;
|
320
|
+
|
304
321
|
for (i = 0, ii = figures.length; i < ii; i++) {
|
305
322
|
switch (figures[i].type) {
|
306
|
-
case
|
323
|
+
case "lattice":
|
307
324
|
rows = figures[i].coords.length / figures[i].verticesPerRow | 0;
|
308
325
|
count += (rows - 1) * (figures[i].verticesPerRow - 1) * 6;
|
309
326
|
break;
|
310
|
-
|
327
|
+
|
328
|
+
case "triangles":
|
311
329
|
count += figures[i].coords.length;
|
312
330
|
break;
|
313
331
|
}
|
314
332
|
}
|
333
|
+
|
315
334
|
var coords = new Float32Array(count * 2);
|
316
335
|
var colors = new Uint8Array(count * 3);
|
317
336
|
var coordsMap = context.coords,
|
318
337
|
colorsMap = context.colors;
|
319
338
|
var pIndex = 0,
|
320
339
|
cIndex = 0;
|
340
|
+
|
321
341
|
for (i = 0, ii = figures.length; i < ii; i++) {
|
322
342
|
var figure = figures[i],
|
323
343
|
ps = figure.coords,
|
324
344
|
cs = figure.colors;
|
345
|
+
|
325
346
|
switch (figure.type) {
|
326
|
-
case
|
347
|
+
case "lattice":
|
327
348
|
var cols = figure.verticesPerRow;
|
328
349
|
rows = ps.length / cols | 0;
|
350
|
+
|
329
351
|
for (var row = 1; row < rows; row++) {
|
330
352
|
var offset = row * cols + 1;
|
353
|
+
|
331
354
|
for (var col = 1; col < cols; col++, offset++) {
|
332
355
|
coords[pIndex] = coordsMap[ps[offset - cols - 1]];
|
333
356
|
coords[pIndex + 1] = coordsMap[ps[offset - cols - 1] + 1];
|
@@ -363,8 +386,10 @@ var WebGLUtils = function WebGLUtilsClosure() {
|
|
363
386
|
cIndex += 18;
|
364
387
|
}
|
365
388
|
}
|
389
|
+
|
366
390
|
break;
|
367
|
-
|
391
|
+
|
392
|
+
case "triangles":
|
368
393
|
for (var j = 0, jj = ps.length; j < jj; j++) {
|
369
394
|
coords[pIndex] = coordsMap[ps[j]];
|
370
395
|
coords[pIndex + 1] = coordsMap[ps[j] + 1];
|
@@ -374,14 +399,17 @@ var WebGLUtils = function WebGLUtilsClosure() {
|
|
374
399
|
pIndex += 2;
|
375
400
|
cIndex += 3;
|
376
401
|
}
|
402
|
+
|
377
403
|
break;
|
378
404
|
}
|
379
405
|
}
|
406
|
+
|
380
407
|
if (backgroundColor) {
|
381
408
|
gl.clearColor(backgroundColor[0] / 255, backgroundColor[1] / 255, backgroundColor[2] / 255, 1.0);
|
382
409
|
} else {
|
383
410
|
gl.clearColor(0, 0, 0, 0);
|
384
411
|
}
|
412
|
+
|
385
413
|
gl.clear(gl.COLOR_BUFFER_BIT);
|
386
414
|
var coordsBuffer = gl.createBuffer();
|
387
415
|
gl.bindBuffer(gl.ARRAY_BUFFER, coordsBuffer);
|
@@ -401,29 +429,34 @@ var WebGLUtils = function WebGLUtilsClosure() {
|
|
401
429
|
gl.deleteBuffer(colorsBuffer);
|
402
430
|
return canvas;
|
403
431
|
}
|
432
|
+
|
404
433
|
return {
|
405
|
-
tryInitGL
|
434
|
+
tryInitGL() {
|
406
435
|
try {
|
407
436
|
generateGL();
|
408
437
|
return !!currentGL;
|
409
438
|
} catch (ex) {}
|
439
|
+
|
410
440
|
return false;
|
411
441
|
},
|
412
442
|
|
413
|
-
composeSMask
|
414
|
-
drawFigures
|
415
|
-
|
443
|
+
composeSMask,
|
444
|
+
drawFigures,
|
445
|
+
|
446
|
+
cleanup() {
|
416
447
|
if (smaskCache && smaskCache.canvas) {
|
417
448
|
smaskCache.canvas.width = 0;
|
418
449
|
smaskCache.canvas.height = 0;
|
419
450
|
}
|
451
|
+
|
420
452
|
if (figuresCache && figuresCache.canvas) {
|
421
453
|
figuresCache.canvas.width = 0;
|
422
454
|
figuresCache.canvas.height = 0;
|
423
455
|
}
|
456
|
+
|
424
457
|
smaskCache = null;
|
425
458
|
figuresCache = null;
|
426
459
|
}
|
460
|
+
|
427
461
|
};
|
428
|
-
}();
|
429
|
-
exports.WebGLContext = WebGLContext;
|
462
|
+
}();
|
@@ -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,12 +19,13 @@
|
|
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
|
-
|
27
|
+
exports.GlobalWorkerOptions = void 0;
|
28
|
+
const GlobalWorkerOptions = Object.create(null);
|
29
|
+
exports.GlobalWorkerOptions = GlobalWorkerOptions;
|
28
30
|
GlobalWorkerOptions.workerPort = GlobalWorkerOptions.workerPort === undefined ? null : GlobalWorkerOptions.workerPort;
|
29
|
-
GlobalWorkerOptions.workerSrc = GlobalWorkerOptions.workerSrc === undefined ?
|
30
|
-
exports.GlobalWorkerOptions = GlobalWorkerOptions;
|
31
|
+
GlobalWorkerOptions.workerSrc = GlobalWorkerOptions.workerSrc === undefined ? "" : GlobalWorkerOptions.workerSrc;
|