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
package/lib/core/jpx.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.
|
@@ -26,27 +26,25 @@ Object.defineProperty(exports, "__esModule", {
|
|
26
26
|
});
|
27
27
|
exports.JpxImage = void 0;
|
28
28
|
|
29
|
-
var _util = require("../shared/util");
|
29
|
+
var _util = require("../shared/util.js");
|
30
30
|
|
31
|
-
var
|
31
|
+
var _core_utils = require("./core_utils.js");
|
32
32
|
|
33
|
-
var
|
34
|
-
|
35
|
-
|
33
|
+
var _arithmetic_decoder = require("./arithmetic_decoder.js");
|
34
|
+
|
35
|
+
class JpxError extends _util.BaseException {
|
36
|
+
constructor(msg) {
|
37
|
+
super(`JPX error: ${msg}`);
|
36
38
|
}
|
37
39
|
|
38
|
-
|
39
|
-
JpxError.prototype.name = 'JpxError';
|
40
|
-
JpxError.constructor = JpxError;
|
41
|
-
return JpxError;
|
42
|
-
}();
|
40
|
+
}
|
43
41
|
|
44
42
|
var JpxImage = function JpxImageClosure() {
|
45
43
|
var SubbandsGainLog2 = {
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
44
|
+
LL: 0,
|
45
|
+
LH: 1,
|
46
|
+
HL: 1,
|
47
|
+
HH: 2
|
50
48
|
};
|
51
49
|
|
52
50
|
function JpxImage() {
|
@@ -55,9 +53,9 @@ var JpxImage = function JpxImageClosure() {
|
|
55
53
|
|
56
54
|
JpxImage.prototype = {
|
57
55
|
parse: function JpxImage_parse(data) {
|
58
|
-
var head = (0,
|
56
|
+
var head = (0, _core_utils.readUint16)(data, 0);
|
59
57
|
|
60
|
-
if (head ===
|
58
|
+
if (head === 0xff4f) {
|
61
59
|
this.parseCodestream(data, 0, data.length);
|
62
60
|
return;
|
63
61
|
}
|
@@ -67,12 +65,12 @@ var JpxImage = function JpxImageClosure() {
|
|
67
65
|
|
68
66
|
while (position < length) {
|
69
67
|
var headerSize = 8;
|
70
|
-
var lbox = (0,
|
71
|
-
var tbox = (0,
|
68
|
+
var lbox = (0, _core_utils.readUint32)(data, position);
|
69
|
+
var tbox = (0, _core_utils.readUint32)(data, position + 4);
|
72
70
|
position += headerSize;
|
73
71
|
|
74
72
|
if (lbox === 1) {
|
75
|
-
lbox = (0,
|
73
|
+
lbox = (0, _core_utils.readUint32)(data, position) * 4294967296 + (0, _core_utils.readUint32)(data, position + 4);
|
76
74
|
position += 8;
|
77
75
|
headerSize += 8;
|
78
76
|
}
|
@@ -82,22 +80,22 @@ var JpxImage = function JpxImageClosure() {
|
|
82
80
|
}
|
83
81
|
|
84
82
|
if (lbox < headerSize) {
|
85
|
-
throw new JpxError(
|
83
|
+
throw new JpxError("Invalid box field size");
|
86
84
|
}
|
87
85
|
|
88
86
|
var dataLength = lbox - headerSize;
|
89
87
|
var jumpDataLength = true;
|
90
88
|
|
91
89
|
switch (tbox) {
|
92
|
-
case
|
90
|
+
case 0x6a703268:
|
93
91
|
jumpDataLength = false;
|
94
92
|
break;
|
95
93
|
|
96
|
-
case
|
94
|
+
case 0x636f6c72:
|
97
95
|
var method = data[position];
|
98
96
|
|
99
97
|
if (method === 1) {
|
100
|
-
var colorspace = (0,
|
98
|
+
var colorspace = (0, _core_utils.readUint32)(data, position + 3);
|
101
99
|
|
102
100
|
switch (colorspace) {
|
103
101
|
case 16:
|
@@ -106,27 +104,27 @@ var JpxImage = function JpxImageClosure() {
|
|
106
104
|
break;
|
107
105
|
|
108
106
|
default:
|
109
|
-
(0, _util.warn)(
|
107
|
+
(0, _util.warn)("Unknown colorspace " + colorspace);
|
110
108
|
break;
|
111
109
|
}
|
112
110
|
} else if (method === 2) {
|
113
|
-
(0, _util.info)(
|
111
|
+
(0, _util.info)("ICC profile not supported");
|
114
112
|
}
|
115
113
|
|
116
114
|
break;
|
117
115
|
|
118
|
-
case
|
116
|
+
case 0x6a703263:
|
119
117
|
this.parseCodestream(data, position, position + dataLength);
|
120
118
|
break;
|
121
119
|
|
122
|
-
case
|
123
|
-
if ((0,
|
124
|
-
(0, _util.warn)(
|
120
|
+
case 0x6a502020:
|
121
|
+
if ((0, _core_utils.readUint32)(data, position) !== 0x0d0a870a) {
|
122
|
+
(0, _util.warn)("Invalid JP2 signature");
|
125
123
|
}
|
126
124
|
|
127
125
|
break;
|
128
126
|
|
129
|
-
case
|
127
|
+
case 0x6a501a1a:
|
130
128
|
case 0x66747970:
|
131
129
|
case 0x72726571:
|
132
130
|
case 0x72657320:
|
@@ -134,8 +132,8 @@ var JpxImage = function JpxImageClosure() {
|
|
134
132
|
break;
|
135
133
|
|
136
134
|
default:
|
137
|
-
var headerType = String.fromCharCode(tbox >> 24 &
|
138
|
-
(0, _util.warn)(
|
135
|
+
var headerType = String.fromCharCode(tbox >> 24 & 0xff, tbox >> 16 & 0xff, tbox >> 8 & 0xff, tbox & 0xff);
|
136
|
+
(0, _util.warn)("Unsupported header type " + tbox + " (" + headerType + ")");
|
139
137
|
break;
|
140
138
|
}
|
141
139
|
|
@@ -152,7 +150,7 @@ var JpxImage = function JpxImageClosure() {
|
|
152
150
|
newByte = stream.getByte();
|
153
151
|
var code = oldByte << 8 | newByte;
|
154
152
|
|
155
|
-
if (code ===
|
153
|
+
if (code === 0xff51) {
|
156
154
|
stream.skip(4);
|
157
155
|
var Xsiz = stream.getInt32() >>> 0;
|
158
156
|
var Ysiz = stream.getInt32() >>> 0;
|
@@ -168,7 +166,7 @@ var JpxImage = function JpxImageClosure() {
|
|
168
166
|
}
|
169
167
|
}
|
170
168
|
|
171
|
-
throw new JpxError(
|
169
|
+
throw new JpxError("No size marker found in JPX stream");
|
172
170
|
},
|
173
171
|
parseCodestream: function JpxImage_parseCodestream(data, start, end) {
|
174
172
|
var context = {};
|
@@ -178,7 +176,7 @@ var JpxImage = function JpxImageClosure() {
|
|
178
176
|
var position = start;
|
179
177
|
|
180
178
|
while (position + 1 < end) {
|
181
|
-
var code = (0,
|
179
|
+
var code = (0, _core_utils.readUint16)(data, position);
|
182
180
|
position += 2;
|
183
181
|
var length = 0,
|
184
182
|
j,
|
@@ -189,32 +187,32 @@ var JpxImage = function JpxImageClosure() {
|
|
189
187
|
tile;
|
190
188
|
|
191
189
|
switch (code) {
|
192
|
-
case
|
190
|
+
case 0xff4f:
|
193
191
|
context.mainHeader = true;
|
194
192
|
break;
|
195
193
|
|
196
|
-
case
|
194
|
+
case 0xffd9:
|
197
195
|
break;
|
198
196
|
|
199
|
-
case
|
200
|
-
length = (0,
|
197
|
+
case 0xff51:
|
198
|
+
length = (0, _core_utils.readUint16)(data, position);
|
201
199
|
var siz = {};
|
202
|
-
siz.Xsiz = (0,
|
203
|
-
siz.Ysiz = (0,
|
204
|
-
siz.XOsiz = (0,
|
205
|
-
siz.YOsiz = (0,
|
206
|
-
siz.XTsiz = (0,
|
207
|
-
siz.YTsiz = (0,
|
208
|
-
siz.XTOsiz = (0,
|
209
|
-
siz.YTOsiz = (0,
|
210
|
-
var componentsCount = (0,
|
200
|
+
siz.Xsiz = (0, _core_utils.readUint32)(data, position + 4);
|
201
|
+
siz.Ysiz = (0, _core_utils.readUint32)(data, position + 8);
|
202
|
+
siz.XOsiz = (0, _core_utils.readUint32)(data, position + 12);
|
203
|
+
siz.YOsiz = (0, _core_utils.readUint32)(data, position + 16);
|
204
|
+
siz.XTsiz = (0, _core_utils.readUint32)(data, position + 20);
|
205
|
+
siz.YTsiz = (0, _core_utils.readUint32)(data, position + 24);
|
206
|
+
siz.XTOsiz = (0, _core_utils.readUint32)(data, position + 28);
|
207
|
+
siz.YTOsiz = (0, _core_utils.readUint32)(data, position + 32);
|
208
|
+
var componentsCount = (0, _core_utils.readUint16)(data, position + 36);
|
211
209
|
siz.Csiz = componentsCount;
|
212
210
|
var components = [];
|
213
211
|
j = position + 38;
|
214
212
|
|
215
213
|
for (var i = 0; i < componentsCount; i++) {
|
216
214
|
var component = {
|
217
|
-
precision: (data[j] &
|
215
|
+
precision: (data[j] & 0x7f) + 1,
|
218
216
|
isSigned: !!(data[j] & 0x80),
|
219
217
|
XRsiz: data[j + 1],
|
220
218
|
YRsiz: data[j + 2]
|
@@ -231,13 +229,13 @@ var JpxImage = function JpxImageClosure() {
|
|
231
229
|
context.COC = [];
|
232
230
|
break;
|
233
231
|
|
234
|
-
case
|
235
|
-
length = (0,
|
232
|
+
case 0xff5c:
|
233
|
+
length = (0, _core_utils.readUint16)(data, position);
|
236
234
|
var qcd = {};
|
237
235
|
j = position + 2;
|
238
236
|
sqcd = data[j++];
|
239
237
|
|
240
|
-
switch (sqcd &
|
238
|
+
switch (sqcd & 0x1f) {
|
241
239
|
case 0:
|
242
240
|
spqcdSize = 8;
|
243
241
|
scalarExpounded = true;
|
@@ -254,7 +252,7 @@ var JpxImage = function JpxImageClosure() {
|
|
254
252
|
break;
|
255
253
|
|
256
254
|
default:
|
257
|
-
throw new Error(
|
255
|
+
throw new Error("Invalid SQcd value " + sqcd);
|
258
256
|
}
|
259
257
|
|
260
258
|
qcd.noQuantization = spqcdSize === 8;
|
@@ -288,8 +286,8 @@ var JpxImage = function JpxImageClosure() {
|
|
288
286
|
|
289
287
|
break;
|
290
288
|
|
291
|
-
case
|
292
|
-
length = (0,
|
289
|
+
case 0xff5d:
|
290
|
+
length = (0, _core_utils.readUint16)(data, position);
|
293
291
|
var qcc = {};
|
294
292
|
j = position + 2;
|
295
293
|
var cqcc;
|
@@ -297,13 +295,13 @@ var JpxImage = function JpxImageClosure() {
|
|
297
295
|
if (context.SIZ.Csiz < 257) {
|
298
296
|
cqcc = data[j++];
|
299
297
|
} else {
|
300
|
-
cqcc = (0,
|
298
|
+
cqcc = (0, _core_utils.readUint16)(data, j);
|
301
299
|
j += 2;
|
302
300
|
}
|
303
301
|
|
304
302
|
sqcd = data[j++];
|
305
303
|
|
306
|
-
switch (sqcd &
|
304
|
+
switch (sqcd & 0x1f) {
|
307
305
|
case 0:
|
308
306
|
spqcdSize = 8;
|
309
307
|
scalarExpounded = true;
|
@@ -320,7 +318,7 @@ var JpxImage = function JpxImageClosure() {
|
|
320
318
|
break;
|
321
319
|
|
322
320
|
default:
|
323
|
-
throw new Error(
|
321
|
+
throw new Error("Invalid SQcd value " + sqcd);
|
324
322
|
}
|
325
323
|
|
326
324
|
qcc.noQuantization = spqcdSize === 8;
|
@@ -353,8 +351,8 @@ var JpxImage = function JpxImageClosure() {
|
|
353
351
|
|
354
352
|
break;
|
355
353
|
|
356
|
-
case
|
357
|
-
length = (0,
|
354
|
+
case 0xff52:
|
355
|
+
length = (0, _core_utils.readUint16)(data, position);
|
358
356
|
var cod = {};
|
359
357
|
j = position + 2;
|
360
358
|
var scod = data[j++];
|
@@ -362,12 +360,12 @@ var JpxImage = function JpxImageClosure() {
|
|
362
360
|
cod.sopMarkerUsed = !!(scod & 2);
|
363
361
|
cod.ephMarkerUsed = !!(scod & 4);
|
364
362
|
cod.progressionOrder = data[j++];
|
365
|
-
cod.layersCount = (0,
|
363
|
+
cod.layersCount = (0, _core_utils.readUint16)(data, j);
|
366
364
|
j += 2;
|
367
365
|
cod.multipleComponentTransform = data[j++];
|
368
366
|
cod.decompositionLevelsCount = data[j++];
|
369
|
-
cod.xcb = (data[j++] &
|
370
|
-
cod.ycb = (data[j++] &
|
367
|
+
cod.xcb = (data[j++] & 0xf) + 2;
|
368
|
+
cod.ycb = (data[j++] & 0xf) + 2;
|
371
369
|
var blockStyle = data[j++];
|
372
370
|
cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1);
|
373
371
|
cod.resetContextProbabilities = !!(blockStyle & 2);
|
@@ -383,7 +381,7 @@ var JpxImage = function JpxImageClosure() {
|
|
383
381
|
while (j < length + position) {
|
384
382
|
var precinctsSize = data[j++];
|
385
383
|
precinctsSizes.push({
|
386
|
-
PPx: precinctsSize &
|
384
|
+
PPx: precinctsSize & 0xf,
|
387
385
|
PPy: precinctsSize >> 4
|
388
386
|
});
|
389
387
|
}
|
@@ -394,28 +392,28 @@ var JpxImage = function JpxImageClosure() {
|
|
394
392
|
var unsupported = [];
|
395
393
|
|
396
394
|
if (cod.selectiveArithmeticCodingBypass) {
|
397
|
-
unsupported.push(
|
395
|
+
unsupported.push("selectiveArithmeticCodingBypass");
|
398
396
|
}
|
399
397
|
|
400
398
|
if (cod.resetContextProbabilities) {
|
401
|
-
unsupported.push(
|
399
|
+
unsupported.push("resetContextProbabilities");
|
402
400
|
}
|
403
401
|
|
404
402
|
if (cod.terminationOnEachCodingPass) {
|
405
|
-
unsupported.push(
|
403
|
+
unsupported.push("terminationOnEachCodingPass");
|
406
404
|
}
|
407
405
|
|
408
406
|
if (cod.verticallyStripe) {
|
409
|
-
unsupported.push(
|
407
|
+
unsupported.push("verticallyStripe");
|
410
408
|
}
|
411
409
|
|
412
410
|
if (cod.predictableTermination) {
|
413
|
-
unsupported.push(
|
411
|
+
unsupported.push("predictableTermination");
|
414
412
|
}
|
415
413
|
|
416
414
|
if (unsupported.length > 0) {
|
417
415
|
doNotRecover = true;
|
418
|
-
throw new Error(
|
416
|
+
throw new Error("Unsupported COD options (" + unsupported.join(", ") + ")");
|
419
417
|
}
|
420
418
|
|
421
419
|
if (context.mainHeader) {
|
@@ -427,11 +425,11 @@ var JpxImage = function JpxImageClosure() {
|
|
427
425
|
|
428
426
|
break;
|
429
427
|
|
430
|
-
case
|
431
|
-
length = (0,
|
428
|
+
case 0xff90:
|
429
|
+
length = (0, _core_utils.readUint16)(data, position);
|
432
430
|
tile = {};
|
433
|
-
tile.index = (0,
|
434
|
-
tile.length = (0,
|
431
|
+
tile.index = (0, _core_utils.readUint16)(data, position + 2);
|
432
|
+
tile.length = (0, _core_utils.readUint32)(data, position + 4);
|
435
433
|
tile.dataEnd = tile.length + position - 2;
|
436
434
|
tile.partIndex = data[position + 8];
|
437
435
|
tile.partsCount = data[position + 9];
|
@@ -447,7 +445,7 @@ var JpxImage = function JpxImageClosure() {
|
|
447
445
|
context.currentTile = tile;
|
448
446
|
break;
|
449
447
|
|
450
|
-
case
|
448
|
+
case 0xff93:
|
451
449
|
tile = context.currentTile;
|
452
450
|
|
453
451
|
if (tile.partIndex === 0) {
|
@@ -459,18 +457,18 @@ var JpxImage = function JpxImageClosure() {
|
|
459
457
|
parseTilePackets(context, data, position, length);
|
460
458
|
break;
|
461
459
|
|
462
|
-
case
|
463
|
-
case
|
464
|
-
case
|
465
|
-
case
|
466
|
-
length = (0,
|
460
|
+
case 0xff55:
|
461
|
+
case 0xff57:
|
462
|
+
case 0xff58:
|
463
|
+
case 0xff64:
|
464
|
+
length = (0, _core_utils.readUint16)(data, position);
|
467
465
|
break;
|
468
466
|
|
469
|
-
case
|
470
|
-
throw new Error(
|
467
|
+
case 0xff53:
|
468
|
+
throw new Error("Codestream code 0xFF53 (COC) is not implemented");
|
471
469
|
|
472
470
|
default:
|
473
|
-
throw new Error(
|
471
|
+
throw new Error("Unknown codestream code: " + code.toString(16));
|
474
472
|
}
|
475
473
|
|
476
474
|
position += length;
|
@@ -479,7 +477,7 @@ var JpxImage = function JpxImageClosure() {
|
|
479
477
|
if (doNotRecover || this.failOnCorruptedImage) {
|
480
478
|
throw new JpxError(e.message);
|
481
479
|
} else {
|
482
|
-
(0, _util.warn)(
|
480
|
+
(0, _util.warn)("JPX: Trying to recover from: " + e.message);
|
483
481
|
}
|
484
482
|
}
|
485
483
|
|
@@ -567,13 +565,13 @@ var JpxImage = function JpxImageClosure() {
|
|
567
565
|
var numprecinctshigh = resolution.try1 > resolution.try0 ? Math.ceil(resolution.try1 / precinctHeight) - Math.floor(resolution.try0 / precinctHeight) : 0;
|
568
566
|
var numprecincts = numprecinctswide * numprecinctshigh;
|
569
567
|
resolution.precinctParameters = {
|
570
|
-
precinctWidth
|
571
|
-
precinctHeight
|
572
|
-
numprecinctswide
|
573
|
-
numprecinctshigh
|
574
|
-
numprecincts
|
575
|
-
precinctWidthInSubband
|
576
|
-
precinctHeightInSubband
|
568
|
+
precinctWidth,
|
569
|
+
precinctHeight,
|
570
|
+
numprecinctswide,
|
571
|
+
numprecinctshigh,
|
572
|
+
numprecincts,
|
573
|
+
precinctWidthInSubband,
|
574
|
+
precinctHeightInSubband
|
577
575
|
};
|
578
576
|
}
|
579
577
|
|
@@ -674,7 +672,7 @@ var JpxImage = function JpxImageClosure() {
|
|
674
672
|
}
|
675
673
|
|
676
674
|
return {
|
677
|
-
layerNumber
|
675
|
+
layerNumber,
|
678
676
|
codeblocks: precinctCodeblocks
|
679
677
|
};
|
680
678
|
}
|
@@ -724,7 +722,7 @@ var JpxImage = function JpxImageClosure() {
|
|
724
722
|
r = 0;
|
725
723
|
}
|
726
724
|
|
727
|
-
throw new JpxError(
|
725
|
+
throw new JpxError("Out of packets");
|
728
726
|
};
|
729
727
|
}
|
730
728
|
|
@@ -773,7 +771,7 @@ var JpxImage = function JpxImageClosure() {
|
|
773
771
|
l = 0;
|
774
772
|
}
|
775
773
|
|
776
|
-
throw new JpxError(
|
774
|
+
throw new JpxError("Out of packets");
|
777
775
|
};
|
778
776
|
}
|
779
777
|
|
@@ -787,7 +785,7 @@ var JpxImage = function JpxImageClosure() {
|
|
787
785
|
var maxDecompositionLevelsCount = 0;
|
788
786
|
|
789
787
|
for (c = 0; c < componentsCount; c++) {
|
790
|
-
|
788
|
+
const component = tile.components[c];
|
791
789
|
maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, component.codingStyleParameters.decompositionLevelsCount);
|
792
790
|
}
|
793
791
|
|
@@ -816,7 +814,7 @@ var JpxImage = function JpxImageClosure() {
|
|
816
814
|
for (; r <= maxDecompositionLevelsCount; r++) {
|
817
815
|
for (; p < maxNumPrecinctsInLevel[r]; p++) {
|
818
816
|
for (; c < componentsCount; c++) {
|
819
|
-
|
817
|
+
const component = tile.components[c];
|
820
818
|
|
821
819
|
if (r > component.codingStyleParameters.decompositionLevelsCount) {
|
822
820
|
continue;
|
@@ -844,7 +842,7 @@ var JpxImage = function JpxImageClosure() {
|
|
844
842
|
p = 0;
|
845
843
|
}
|
846
844
|
|
847
|
-
throw new JpxError(
|
845
|
+
throw new JpxError("Out of packets");
|
848
846
|
};
|
849
847
|
}
|
850
848
|
|
@@ -896,7 +894,7 @@ var JpxImage = function JpxImageClosure() {
|
|
896
894
|
px = 0;
|
897
895
|
}
|
898
896
|
|
899
|
-
throw new JpxError(
|
897
|
+
throw new JpxError("Out of packets");
|
900
898
|
};
|
901
899
|
}
|
902
900
|
|
@@ -948,7 +946,7 @@ var JpxImage = function JpxImageClosure() {
|
|
948
946
|
py = 0;
|
949
947
|
}
|
950
948
|
|
951
|
-
throw new JpxError(
|
949
|
+
throw new JpxError("Out of packets");
|
952
950
|
};
|
953
951
|
}
|
954
952
|
|
@@ -1012,10 +1010,10 @@ var JpxImage = function JpxImageClosure() {
|
|
1012
1010
|
|
1013
1011
|
return {
|
1014
1012
|
components: sizePerComponent,
|
1015
|
-
minWidth
|
1016
|
-
minHeight
|
1017
|
-
maxNumWide
|
1018
|
-
maxNumHigh
|
1013
|
+
minWidth,
|
1014
|
+
minHeight,
|
1015
|
+
maxNumWide,
|
1016
|
+
maxNumHigh
|
1019
1017
|
};
|
1020
1018
|
}
|
1021
1019
|
|
@@ -1046,7 +1044,7 @@ var JpxImage = function JpxImageClosure() {
|
|
1046
1044
|
|
1047
1045
|
if (r === 0) {
|
1048
1046
|
subband = {};
|
1049
|
-
subband.type =
|
1047
|
+
subband.type = "LL";
|
1050
1048
|
subband.tbx0 = Math.ceil(component.tcx0 / scale);
|
1051
1049
|
subband.tby0 = Math.ceil(component.tcy0 / scale);
|
1052
1050
|
subband.tbx1 = Math.ceil(component.tcx1 / scale);
|
@@ -1059,7 +1057,7 @@ var JpxImage = function JpxImageClosure() {
|
|
1059
1057
|
var bscale = 1 << decompositionLevelsCount - r + 1;
|
1060
1058
|
var resolutionSubbands = [];
|
1061
1059
|
subband = {};
|
1062
|
-
subband.type =
|
1060
|
+
subband.type = "HL";
|
1063
1061
|
subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);
|
1064
1062
|
subband.tby0 = Math.ceil(component.tcy0 / bscale);
|
1065
1063
|
subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);
|
@@ -1069,7 +1067,7 @@ var JpxImage = function JpxImageClosure() {
|
|
1069
1067
|
subbands.push(subband);
|
1070
1068
|
resolutionSubbands.push(subband);
|
1071
1069
|
subband = {};
|
1072
|
-
subband.type =
|
1070
|
+
subband.type = "LH";
|
1073
1071
|
subband.tbx0 = Math.ceil(component.tcx0 / bscale);
|
1074
1072
|
subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);
|
1075
1073
|
subband.tbx1 = Math.ceil(component.tcx1 / bscale);
|
@@ -1079,7 +1077,7 @@ var JpxImage = function JpxImageClosure() {
|
|
1079
1077
|
subbands.push(subband);
|
1080
1078
|
resolutionSubbands.push(subband);
|
1081
1079
|
subband = {};
|
1082
|
-
subband.type =
|
1080
|
+
subband.type = "HH";
|
1083
1081
|
subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);
|
1084
1082
|
subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);
|
1085
1083
|
subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);
|
@@ -1120,7 +1118,7 @@ var JpxImage = function JpxImageClosure() {
|
|
1120
1118
|
break;
|
1121
1119
|
|
1122
1120
|
default:
|
1123
|
-
throw new JpxError(
|
1121
|
+
throw new JpxError(`Unsupported progression order ${progressionOrder}`);
|
1124
1122
|
}
|
1125
1123
|
}
|
1126
1124
|
|
@@ -1144,7 +1142,7 @@ var JpxImage = function JpxImageClosure() {
|
|
1144
1142
|
bufferSize += 8;
|
1145
1143
|
}
|
1146
1144
|
|
1147
|
-
if (b ===
|
1145
|
+
if (b === 0xff) {
|
1148
1146
|
skipNextBit = true;
|
1149
1147
|
}
|
1150
1148
|
}
|
@@ -1154,10 +1152,10 @@ var JpxImage = function JpxImageClosure() {
|
|
1154
1152
|
}
|
1155
1153
|
|
1156
1154
|
function skipMarkerIfEqual(value) {
|
1157
|
-
if (data[offset + position - 1] ===
|
1155
|
+
if (data[offset + position - 1] === 0xff && data[offset + position] === value) {
|
1158
1156
|
skipBytes(1);
|
1159
1157
|
return true;
|
1160
|
-
} else if (data[offset + position] ===
|
1158
|
+
} else if (data[offset + position] === 0xff && data[offset + position + 1] === value) {
|
1161
1159
|
skipBytes(2);
|
1162
1160
|
return true;
|
1163
1161
|
}
|
@@ -1235,13 +1233,13 @@ var JpxImage = function JpxImageClosure() {
|
|
1235
1233
|
var firstTimeInclusion = false;
|
1236
1234
|
var valueReady;
|
1237
1235
|
|
1238
|
-
if (codeblock
|
1236
|
+
if (codeblock.included !== undefined) {
|
1239
1237
|
codeblockIncluded = !!readBits(1);
|
1240
1238
|
} else {
|
1241
1239
|
precinct = codeblock.precinct;
|
1242
1240
|
var inclusionTree, zeroBitPlanesTree;
|
1243
1241
|
|
1244
|
-
if (precinct
|
1242
|
+
if (precinct.inclusionTree !== undefined) {
|
1245
1243
|
inclusionTree = precinct.inclusionTree;
|
1246
1244
|
} else {
|
1247
1245
|
var width = precinct.cbxMax - precinct.cbxMin + 1;
|
@@ -1299,12 +1297,12 @@ var JpxImage = function JpxImageClosure() {
|
|
1299
1297
|
codeblock.Lblock++;
|
1300
1298
|
}
|
1301
1299
|
|
1302
|
-
var codingpassesLog2 = (0,
|
1300
|
+
var codingpassesLog2 = (0, _core_utils.log2)(codingpasses);
|
1303
1301
|
var bits = (codingpasses < 1 << codingpassesLog2 ? codingpassesLog2 - 1 : codingpassesLog2) + codeblock.Lblock;
|
1304
1302
|
var codedDataLength = readBits(bits);
|
1305
1303
|
queue.push({
|
1306
|
-
codeblock
|
1307
|
-
codingpasses
|
1304
|
+
codeblock,
|
1305
|
+
codingpasses,
|
1308
1306
|
dataLength: codedDataLength
|
1309
1307
|
});
|
1310
1308
|
}
|
@@ -1319,12 +1317,12 @@ var JpxImage = function JpxImageClosure() {
|
|
1319
1317
|
var packetItem = queue.shift();
|
1320
1318
|
codeblock = packetItem.codeblock;
|
1321
1319
|
|
1322
|
-
if (codeblock
|
1320
|
+
if (codeblock.data === undefined) {
|
1323
1321
|
codeblock.data = [];
|
1324
1322
|
}
|
1325
1323
|
|
1326
1324
|
codeblock.data.push({
|
1327
|
-
data
|
1325
|
+
data,
|
1328
1326
|
start: offset + position,
|
1329
1327
|
end: offset + position + packetItem.dataLength,
|
1330
1328
|
codingpasses: packetItem.codingpasses
|
@@ -1341,8 +1339,8 @@ var JpxImage = function JpxImageClosure() {
|
|
1341
1339
|
var y0 = subband.tby0;
|
1342
1340
|
var width = subband.tbx1 - subband.tbx0;
|
1343
1341
|
var codeblocks = subband.codeblocks;
|
1344
|
-
var right = subband.type.charAt(0) ===
|
1345
|
-
var bottom = subband.type.charAt(1) ===
|
1342
|
+
var right = subband.type.charAt(0) === "H" ? 1 : 0;
|
1343
|
+
var bottom = subband.type.charAt(1) === "H" ? levelWidth : 0;
|
1346
1344
|
|
1347
1345
|
for (var i = 0, ii = codeblocks.length; i < ii; ++i) {
|
1348
1346
|
var codeblock = codeblocks[i];
|
@@ -1353,7 +1351,7 @@ var JpxImage = function JpxImageClosure() {
|
|
1353
1351
|
continue;
|
1354
1352
|
}
|
1355
1353
|
|
1356
|
-
if (codeblock
|
1354
|
+
if (codeblock.data === undefined) {
|
1357
1355
|
continue;
|
1358
1356
|
}
|
1359
1357
|
|
@@ -1414,7 +1412,7 @@ var JpxImage = function JpxImageClosure() {
|
|
1414
1412
|
var magnitudeCorrection = reversible ? 0 : 0.5;
|
1415
1413
|
var k, n, nb;
|
1416
1414
|
position = 0;
|
1417
|
-
var interleave = subband.type !==
|
1415
|
+
var interleave = subband.type !== "LL";
|
1418
1416
|
|
1419
1417
|
for (j = 0; j < blockHeight; j++) {
|
1420
1418
|
var row = offset / width | 0;
|
@@ -1484,14 +1482,14 @@ var JpxImage = function JpxImageClosure() {
|
|
1484
1482
|
|
1485
1483
|
var subband = resolution.subbands[j];
|
1486
1484
|
var gainLog2 = SubbandsGainLog2[subband.type];
|
1487
|
-
var delta = reversible ? 1 :
|
1485
|
+
var delta = reversible ? 1 : 2 ** (precision + gainLog2 - epsilon) * (1 + mu / 2048);
|
1488
1486
|
var mb = guardBits + epsilon - 1;
|
1489
1487
|
copyCoefficients(coefficients, width, height, subband, delta, mb, reversible, segmentationSymbolUsed);
|
1490
1488
|
}
|
1491
1489
|
|
1492
1490
|
subbandCoefficients.push({
|
1493
|
-
width
|
1494
|
-
height
|
1491
|
+
width,
|
1492
|
+
height,
|
1495
1493
|
items: coefficients
|
1496
1494
|
});
|
1497
1495
|
}
|
@@ -1564,7 +1562,7 @@ var JpxImage = function JpxImageClosure() {
|
|
1564
1562
|
y0 = y0items[j] + offset;
|
1565
1563
|
y1 = y1items[j];
|
1566
1564
|
y2 = y2items[j];
|
1567
|
-
|
1565
|
+
const g = y0 - (y2 + y1 >> 2);
|
1568
1566
|
out[pos++] = g + y2 >> shift;
|
1569
1567
|
out[pos++] = g >> shift;
|
1570
1568
|
out[pos++] = g + y1 >> shift;
|
@@ -1613,13 +1611,13 @@ var JpxImage = function JpxImageClosure() {
|
|
1613
1611
|
|
1614
1612
|
var TagTree = function TagTreeClosure() {
|
1615
1613
|
function TagTree(width, height) {
|
1616
|
-
var levelsLength = (0,
|
1614
|
+
var levelsLength = (0, _core_utils.log2)(Math.max(width, height)) + 1;
|
1617
1615
|
this.levels = [];
|
1618
1616
|
|
1619
1617
|
for (var i = 0; i < levelsLength; i++) {
|
1620
1618
|
var level = {
|
1621
|
-
width
|
1622
|
-
height
|
1619
|
+
width,
|
1620
|
+
height,
|
1623
1621
|
items: []
|
1624
1622
|
};
|
1625
1623
|
this.levels.push(level);
|
@@ -1681,7 +1679,7 @@ var JpxImage = function JpxImageClosure() {
|
|
1681
1679
|
|
1682
1680
|
var InclusionTree = function InclusionTreeClosure() {
|
1683
1681
|
function InclusionTree(width, height, defaultValue) {
|
1684
|
-
var levelsLength = (0,
|
1682
|
+
var levelsLength = (0, _core_utils.log2)(Math.max(width, height)) + 1;
|
1685
1683
|
this.levels = [];
|
1686
1684
|
|
1687
1685
|
for (var i = 0; i < levelsLength; i++) {
|
@@ -1692,9 +1690,9 @@ var JpxImage = function JpxImageClosure() {
|
|
1692
1690
|
}
|
1693
1691
|
|
1694
1692
|
var level = {
|
1695
|
-
width
|
1696
|
-
height
|
1697
|
-
items
|
1693
|
+
width,
|
1694
|
+
height,
|
1695
|
+
items
|
1698
1696
|
};
|
1699
1697
|
this.levels.push(level);
|
1700
1698
|
width = Math.ceil(width / 2);
|
@@ -1712,7 +1710,7 @@ var JpxImage = function JpxImageClosure() {
|
|
1712
1710
|
level.index = index;
|
1713
1711
|
var value = level.items[index];
|
1714
1712
|
|
1715
|
-
if (value ===
|
1713
|
+
if (value === 0xff) {
|
1716
1714
|
break;
|
1717
1715
|
}
|
1718
1716
|
|
@@ -1749,7 +1747,7 @@ var JpxImage = function JpxImageClosure() {
|
|
1749
1747
|
var currentLevel = this.currentLevel;
|
1750
1748
|
var level = this.levels[currentLevel];
|
1751
1749
|
var value = level.items[level.index];
|
1752
|
-
level.items[level.index] =
|
1750
|
+
level.items[level.index] = 0xff;
|
1753
1751
|
currentLevel--;
|
1754
1752
|
|
1755
1753
|
if (currentLevel < 0) {
|
@@ -1775,11 +1773,31 @@ var JpxImage = function JpxImageClosure() {
|
|
1775
1773
|
function BitModel(width, height, subband, zeroBitPlanes, mb) {
|
1776
1774
|
this.width = width;
|
1777
1775
|
this.height = height;
|
1778
|
-
|
1776
|
+
let contextLabelTable;
|
1777
|
+
|
1778
|
+
if (subband === "HH") {
|
1779
|
+
contextLabelTable = HHContextLabel;
|
1780
|
+
} else if (subband === "HL") {
|
1781
|
+
contextLabelTable = HLContextLabel;
|
1782
|
+
} else {
|
1783
|
+
contextLabelTable = LLAndLHContextsLabel;
|
1784
|
+
}
|
1785
|
+
|
1786
|
+
this.contextLabelTable = contextLabelTable;
|
1779
1787
|
var coefficientCount = width * height;
|
1780
1788
|
this.neighborsSignificance = new Uint8Array(coefficientCount);
|
1781
1789
|
this.coefficentsSign = new Uint8Array(coefficientCount);
|
1782
|
-
|
1790
|
+
let coefficentsMagnitude;
|
1791
|
+
|
1792
|
+
if (mb > 14) {
|
1793
|
+
coefficentsMagnitude = new Uint32Array(coefficientCount);
|
1794
|
+
} else if (mb > 6) {
|
1795
|
+
coefficentsMagnitude = new Uint16Array(coefficientCount);
|
1796
|
+
} else {
|
1797
|
+
coefficentsMagnitude = new Uint8Array(coefficientCount);
|
1798
|
+
}
|
1799
|
+
|
1800
|
+
this.coefficentsMagnitude = coefficentsMagnitude;
|
1783
1801
|
this.processingFlags = new Uint8Array(coefficientCount);
|
1784
1802
|
var bitsDecoded = new Uint8Array(coefficientCount);
|
1785
1803
|
|
@@ -2080,8 +2098,8 @@ var JpxImage = function JpxImageClosure() {
|
|
2080
2098
|
var contexts = this.contexts;
|
2081
2099
|
var symbol = decoder.readBit(contexts, UNIFORM_CONTEXT) << 3 | decoder.readBit(contexts, UNIFORM_CONTEXT) << 2 | decoder.readBit(contexts, UNIFORM_CONTEXT) << 1 | decoder.readBit(contexts, UNIFORM_CONTEXT);
|
2082
2100
|
|
2083
|
-
if (symbol !==
|
2084
|
-
throw new JpxError(
|
2101
|
+
if (symbol !== 0xa) {
|
2102
|
+
throw new JpxError("Invalid segmentation symbol");
|
2085
2103
|
}
|
2086
2104
|
}
|
2087
2105
|
};
|
@@ -2201,9 +2219,9 @@ var JpxImage = function JpxImageClosure() {
|
|
2201
2219
|
}
|
2202
2220
|
|
2203
2221
|
return {
|
2204
|
-
width
|
2205
|
-
height
|
2206
|
-
items
|
2222
|
+
width,
|
2223
|
+
height,
|
2224
|
+
items
|
2207
2225
|
};
|
2208
2226
|
};
|
2209
2227
|
|