pdfjs-dist 2.3.200 → 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/README.md +4 -0
- package/bower.json +1 -1
- package/build/pdf.js +6499 -17971
- 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 +19303 -29896
- 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 +1333 -4839
- 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 +683 -1066
- 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 +196 -193
- package/lib/core/charsets.js +4 -4
- package/lib/core/chunked_stream.js +441 -569
- package/lib/core/cmap.js +220 -279
- package/lib/core/colorspace.js +699 -863
- package/lib/core/core_utils.js +59 -80
- package/lib/core/crypto.js +379 -437
- package/lib/core/document.js +564 -673
- package/lib/core/encodings.js +15 -15
- package/lib/core/evaluator.js +983 -889
- package/lib/core/font_renderer.js +128 -171
- package/lib/core/fonts.js +451 -400
- package/lib/core/function.js +289 -285
- package/lib/core/glyphlist.js +4527 -4527
- package/lib/core/image.js +138 -117
- package/lib/core/image_utils.js +46 -63
- package/lib/core/jbig2.js +324 -332
- package/lib/core/jbig2_stream.js +18 -17
- package/lib/core/jpeg_stream.js +133 -24
- package/lib/core/jpg.js +238 -210
- package/lib/core/jpx.js +158 -157
- 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 +1111 -1302
- package/lib/core/operator_list.js +55 -42
- package/lib/core/parser.js +956 -987
- package/lib/core/pattern.js +69 -69
- package/lib/core/pdf_manager.js +149 -316
- package/lib/core/primitives.js +45 -77
- package/lib/core/ps_parser.js +175 -214
- package/lib/core/standard_fonts.js +237 -236
- package/lib/core/stream.js +83 -77
- package/lib/core/type1_parser.js +78 -68
- package/lib/core/unicode.js +1654 -1654
- package/lib/core/worker.js +148 -196
- package/lib/core/worker_stream.js +101 -210
- package/lib/display/annotation_layer.js +733 -1155
- package/lib/display/api.js +1539 -1928
- package/lib/display/api_compatibility.js +10 -8
- package/lib/display/canvas.js +159 -158
- package/lib/display/content_disposition.js +36 -55
- package/lib/display/display_utils.js +298 -551
- package/lib/display/fetch_stream.js +181 -305
- package/lib/display/font_loader.js +273 -416
- package/lib/display/metadata.js +86 -98
- package/lib/display/network.js +376 -511
- package/lib/display/network_utils.js +20 -19
- package/lib/display/node_stream.js +276 -460
- package/lib/display/pattern_helper.js +76 -44
- package/lib/display/svg.js +1137 -1405
- package/lib/display/text_layer.js +75 -82
- package/lib/display/transport_stream.js +236 -374
- 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 +22 -21
- package/lib/pdf.worker.js +5 -5
- package/lib/shared/compatibility.js +2 -251
- package/lib/shared/is_node.js +7 -6
- package/lib/shared/message_handler.js +222 -194
- package/lib/shared/util.js +269 -405
- package/lib/test/unit/annotation_spec.js +1089 -1014
- package/lib/test/unit/api_spec.js +617 -544
- package/lib/test/unit/bidi_spec.js +7 -7
- package/lib/test/unit/cff_parser_spec.js +63 -62
- package/lib/test/unit/clitests_helper.js +7 -9
- package/lib/test/unit/cmap_spec.js +84 -86
- package/lib/test/unit/colorspace_spec.js +154 -154
- package/lib/test/unit/core_utils_spec.js +125 -105
- package/lib/test/unit/crypto_spec.js +181 -181
- package/lib/test/unit/custom_spec.js +22 -24
- package/lib/test/unit/display_svg_spec.js +35 -36
- package/lib/test/unit/display_utils_spec.js +139 -149
- package/lib/test/unit/document_spec.js +16 -16
- package/lib/test/unit/encodings_spec.js +12 -34
- package/lib/test/unit/evaluator_spec.js +81 -95
- package/lib/test/unit/fetch_stream_spec.js +30 -30
- 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 +172 -162
- package/lib/test/unit/metadata_spec.js +69 -69
- package/lib/test/unit/murmurhash3_spec.js +12 -12
- package/lib/test/unit/network_spec.js +12 -12
- package/lib/test/unit/network_utils_spec.js +152 -152
- package/lib/test/unit/node_stream_spec.js +74 -90
- package/lib/test/unit/parser_spec.js +107 -113
- 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 +117 -115
- package/lib/test/unit/stream_spec.js +16 -14
- package/lib/test/unit/test_utils.js +119 -285
- package/lib/test/unit/testreporter.js +19 -19
- package/lib/test/unit/type1_parser_spec.js +41 -41
- package/lib/test/unit/ui_utils_spec.js +318 -426
- package/lib/test/unit/unicode_spec.js +42 -42
- package/lib/test/unit/util_spec.js +122 -143
- package/lib/web/annotation_layer_builder.js +66 -103
- package/lib/web/app.js +1166 -1196
- package/lib/web/app_options.js +61 -77
- package/lib/web/base_viewer.js +804 -850
- package/lib/web/chromecom.js +164 -249
- package/lib/web/debugger.js +149 -205
- package/lib/web/download_manager.js +38 -57
- package/lib/web/firefox_print_service.js +35 -30
- package/lib/web/firefoxcom.js +175 -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 -258
- package/lib/web/overlay_manager.js +70 -246
- package/lib/web/password_prompt.js +38 -64
- package/lib/web/pdf_attachment_viewer.js +105 -130
- package/lib/web/pdf_cursor_tools.js +75 -102
- package/lib/web/pdf_document_properties.js +227 -376
- package/lib/web/pdf_find_bar.js +137 -171
- package/lib/web/pdf_find_controller.js +492 -549
- package/lib/web/pdf_find_utils.js +13 -13
- package/lib/web/pdf_history.js +395 -406
- package/lib/web/pdf_link_service.js +302 -349
- package/lib/web/pdf_outline_viewer.js +148 -209
- package/lib/web/pdf_page_view.js +449 -507
- package/lib/web/pdf_presentation_mode.js +304 -357
- package/lib/web/pdf_print_service.js +90 -104
- package/lib/web/pdf_rendering_queue.js +87 -108
- package/lib/web/pdf_sidebar.js +264 -304
- 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 +276 -297
- package/lib/web/pdf_thumbnail_viewer.js +186 -206
- package/lib/web/pdf_viewer.component.js +20 -21
- package/lib/web/pdf_viewer.js +55 -115
- package/lib/web/preferences.js +66 -273
- package/lib/web/secondary_toolbar.js +164 -196
- package/lib/web/text_layer_builder.js +284 -317
- package/lib/web/toolbar.js +216 -211
- package/lib/web/ui_utils.js +303 -404
- package/lib/web/view_history.js +49 -222
- package/lib/web/viewer_compatibility.js +7 -5
- package/package.json +2 -9
- package/web/pdf_viewer.css +25 -18
- package/web/pdf_viewer.js +3481 -4764
- package/web/pdf_viewer.js.map +1 -1
- package/webpack.js +14 -5
- package/lib/shared/streams_polyfill.js +0 -43
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,44 +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
|
-
|
33
|
+
var _arithmetic_decoder = require("./arithmetic_decoder.js");
|
34
34
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
40
|
-
|
41
|
-
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
42
|
-
|
43
|
-
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
44
|
-
|
45
|
-
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
46
|
-
|
47
|
-
var JpxError =
|
48
|
-
/*#__PURE__*/
|
49
|
-
function (_BaseException) {
|
50
|
-
_inherits(JpxError, _BaseException);
|
51
|
-
|
52
|
-
function JpxError(msg) {
|
53
|
-
_classCallCheck(this, JpxError);
|
54
|
-
|
55
|
-
return _possibleConstructorReturn(this, _getPrototypeOf(JpxError).call(this, "JPX error: ".concat(msg)));
|
35
|
+
class JpxError extends _util.BaseException {
|
36
|
+
constructor(msg) {
|
37
|
+
super(`JPX error: ${msg}`);
|
56
38
|
}
|
57
39
|
|
58
|
-
|
59
|
-
}(_util.BaseException);
|
40
|
+
}
|
60
41
|
|
61
42
|
var JpxImage = function JpxImageClosure() {
|
62
43
|
var SubbandsGainLog2 = {
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
44
|
+
LL: 0,
|
45
|
+
LH: 1,
|
46
|
+
HL: 1,
|
47
|
+
HH: 2
|
67
48
|
};
|
68
49
|
|
69
50
|
function JpxImage() {
|
@@ -72,9 +53,9 @@ var JpxImage = function JpxImageClosure() {
|
|
72
53
|
|
73
54
|
JpxImage.prototype = {
|
74
55
|
parse: function JpxImage_parse(data) {
|
75
|
-
var head = (0,
|
56
|
+
var head = (0, _core_utils.readUint16)(data, 0);
|
76
57
|
|
77
|
-
if (head ===
|
58
|
+
if (head === 0xff4f) {
|
78
59
|
this.parseCodestream(data, 0, data.length);
|
79
60
|
return;
|
80
61
|
}
|
@@ -84,12 +65,12 @@ var JpxImage = function JpxImageClosure() {
|
|
84
65
|
|
85
66
|
while (position < length) {
|
86
67
|
var headerSize = 8;
|
87
|
-
var lbox = (0,
|
88
|
-
var tbox = (0,
|
68
|
+
var lbox = (0, _core_utils.readUint32)(data, position);
|
69
|
+
var tbox = (0, _core_utils.readUint32)(data, position + 4);
|
89
70
|
position += headerSize;
|
90
71
|
|
91
72
|
if (lbox === 1) {
|
92
|
-
lbox = (0,
|
73
|
+
lbox = (0, _core_utils.readUint32)(data, position) * 4294967296 + (0, _core_utils.readUint32)(data, position + 4);
|
93
74
|
position += 8;
|
94
75
|
headerSize += 8;
|
95
76
|
}
|
@@ -99,22 +80,22 @@ var JpxImage = function JpxImageClosure() {
|
|
99
80
|
}
|
100
81
|
|
101
82
|
if (lbox < headerSize) {
|
102
|
-
throw new JpxError(
|
83
|
+
throw new JpxError("Invalid box field size");
|
103
84
|
}
|
104
85
|
|
105
86
|
var dataLength = lbox - headerSize;
|
106
87
|
var jumpDataLength = true;
|
107
88
|
|
108
89
|
switch (tbox) {
|
109
|
-
case
|
90
|
+
case 0x6a703268:
|
110
91
|
jumpDataLength = false;
|
111
92
|
break;
|
112
93
|
|
113
|
-
case
|
94
|
+
case 0x636f6c72:
|
114
95
|
var method = data[position];
|
115
96
|
|
116
97
|
if (method === 1) {
|
117
|
-
var colorspace = (0,
|
98
|
+
var colorspace = (0, _core_utils.readUint32)(data, position + 3);
|
118
99
|
|
119
100
|
switch (colorspace) {
|
120
101
|
case 16:
|
@@ -123,27 +104,27 @@ var JpxImage = function JpxImageClosure() {
|
|
123
104
|
break;
|
124
105
|
|
125
106
|
default:
|
126
|
-
(0, _util.warn)(
|
107
|
+
(0, _util.warn)("Unknown colorspace " + colorspace);
|
127
108
|
break;
|
128
109
|
}
|
129
110
|
} else if (method === 2) {
|
130
|
-
(0, _util.info)(
|
111
|
+
(0, _util.info)("ICC profile not supported");
|
131
112
|
}
|
132
113
|
|
133
114
|
break;
|
134
115
|
|
135
|
-
case
|
116
|
+
case 0x6a703263:
|
136
117
|
this.parseCodestream(data, position, position + dataLength);
|
137
118
|
break;
|
138
119
|
|
139
|
-
case
|
140
|
-
if ((0,
|
141
|
-
(0, _util.warn)(
|
120
|
+
case 0x6a502020:
|
121
|
+
if ((0, _core_utils.readUint32)(data, position) !== 0x0d0a870a) {
|
122
|
+
(0, _util.warn)("Invalid JP2 signature");
|
142
123
|
}
|
143
124
|
|
144
125
|
break;
|
145
126
|
|
146
|
-
case
|
127
|
+
case 0x6a501a1a:
|
147
128
|
case 0x66747970:
|
148
129
|
case 0x72726571:
|
149
130
|
case 0x72657320:
|
@@ -151,8 +132,8 @@ var JpxImage = function JpxImageClosure() {
|
|
151
132
|
break;
|
152
133
|
|
153
134
|
default:
|
154
|
-
var headerType = String.fromCharCode(tbox >> 24 &
|
155
|
-
(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 + ")");
|
156
137
|
break;
|
157
138
|
}
|
158
139
|
|
@@ -169,7 +150,7 @@ var JpxImage = function JpxImageClosure() {
|
|
169
150
|
newByte = stream.getByte();
|
170
151
|
var code = oldByte << 8 | newByte;
|
171
152
|
|
172
|
-
if (code ===
|
153
|
+
if (code === 0xff51) {
|
173
154
|
stream.skip(4);
|
174
155
|
var Xsiz = stream.getInt32() >>> 0;
|
175
156
|
var Ysiz = stream.getInt32() >>> 0;
|
@@ -185,7 +166,7 @@ var JpxImage = function JpxImageClosure() {
|
|
185
166
|
}
|
186
167
|
}
|
187
168
|
|
188
|
-
throw new JpxError(
|
169
|
+
throw new JpxError("No size marker found in JPX stream");
|
189
170
|
},
|
190
171
|
parseCodestream: function JpxImage_parseCodestream(data, start, end) {
|
191
172
|
var context = {};
|
@@ -195,7 +176,7 @@ var JpxImage = function JpxImageClosure() {
|
|
195
176
|
var position = start;
|
196
177
|
|
197
178
|
while (position + 1 < end) {
|
198
|
-
var code = (0,
|
179
|
+
var code = (0, _core_utils.readUint16)(data, position);
|
199
180
|
position += 2;
|
200
181
|
var length = 0,
|
201
182
|
j,
|
@@ -206,32 +187,32 @@ var JpxImage = function JpxImageClosure() {
|
|
206
187
|
tile;
|
207
188
|
|
208
189
|
switch (code) {
|
209
|
-
case
|
190
|
+
case 0xff4f:
|
210
191
|
context.mainHeader = true;
|
211
192
|
break;
|
212
193
|
|
213
|
-
case
|
194
|
+
case 0xffd9:
|
214
195
|
break;
|
215
196
|
|
216
|
-
case
|
217
|
-
length = (0,
|
197
|
+
case 0xff51:
|
198
|
+
length = (0, _core_utils.readUint16)(data, position);
|
218
199
|
var siz = {};
|
219
|
-
siz.Xsiz = (0,
|
220
|
-
siz.Ysiz = (0,
|
221
|
-
siz.XOsiz = (0,
|
222
|
-
siz.YOsiz = (0,
|
223
|
-
siz.XTsiz = (0,
|
224
|
-
siz.YTsiz = (0,
|
225
|
-
siz.XTOsiz = (0,
|
226
|
-
siz.YTOsiz = (0,
|
227
|
-
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);
|
228
209
|
siz.Csiz = componentsCount;
|
229
210
|
var components = [];
|
230
211
|
j = position + 38;
|
231
212
|
|
232
213
|
for (var i = 0; i < componentsCount; i++) {
|
233
214
|
var component = {
|
234
|
-
precision: (data[j] &
|
215
|
+
precision: (data[j] & 0x7f) + 1,
|
235
216
|
isSigned: !!(data[j] & 0x80),
|
236
217
|
XRsiz: data[j + 1],
|
237
218
|
YRsiz: data[j + 2]
|
@@ -248,13 +229,13 @@ var JpxImage = function JpxImageClosure() {
|
|
248
229
|
context.COC = [];
|
249
230
|
break;
|
250
231
|
|
251
|
-
case
|
252
|
-
length = (0,
|
232
|
+
case 0xff5c:
|
233
|
+
length = (0, _core_utils.readUint16)(data, position);
|
253
234
|
var qcd = {};
|
254
235
|
j = position + 2;
|
255
236
|
sqcd = data[j++];
|
256
237
|
|
257
|
-
switch (sqcd &
|
238
|
+
switch (sqcd & 0x1f) {
|
258
239
|
case 0:
|
259
240
|
spqcdSize = 8;
|
260
241
|
scalarExpounded = true;
|
@@ -271,7 +252,7 @@ var JpxImage = function JpxImageClosure() {
|
|
271
252
|
break;
|
272
253
|
|
273
254
|
default:
|
274
|
-
throw new Error(
|
255
|
+
throw new Error("Invalid SQcd value " + sqcd);
|
275
256
|
}
|
276
257
|
|
277
258
|
qcd.noQuantization = spqcdSize === 8;
|
@@ -305,8 +286,8 @@ var JpxImage = function JpxImageClosure() {
|
|
305
286
|
|
306
287
|
break;
|
307
288
|
|
308
|
-
case
|
309
|
-
length = (0,
|
289
|
+
case 0xff5d:
|
290
|
+
length = (0, _core_utils.readUint16)(data, position);
|
310
291
|
var qcc = {};
|
311
292
|
j = position + 2;
|
312
293
|
var cqcc;
|
@@ -314,13 +295,13 @@ var JpxImage = function JpxImageClosure() {
|
|
314
295
|
if (context.SIZ.Csiz < 257) {
|
315
296
|
cqcc = data[j++];
|
316
297
|
} else {
|
317
|
-
cqcc = (0,
|
298
|
+
cqcc = (0, _core_utils.readUint16)(data, j);
|
318
299
|
j += 2;
|
319
300
|
}
|
320
301
|
|
321
302
|
sqcd = data[j++];
|
322
303
|
|
323
|
-
switch (sqcd &
|
304
|
+
switch (sqcd & 0x1f) {
|
324
305
|
case 0:
|
325
306
|
spqcdSize = 8;
|
326
307
|
scalarExpounded = true;
|
@@ -337,7 +318,7 @@ var JpxImage = function JpxImageClosure() {
|
|
337
318
|
break;
|
338
319
|
|
339
320
|
default:
|
340
|
-
throw new Error(
|
321
|
+
throw new Error("Invalid SQcd value " + sqcd);
|
341
322
|
}
|
342
323
|
|
343
324
|
qcc.noQuantization = spqcdSize === 8;
|
@@ -370,8 +351,8 @@ var JpxImage = function JpxImageClosure() {
|
|
370
351
|
|
371
352
|
break;
|
372
353
|
|
373
|
-
case
|
374
|
-
length = (0,
|
354
|
+
case 0xff52:
|
355
|
+
length = (0, _core_utils.readUint16)(data, position);
|
375
356
|
var cod = {};
|
376
357
|
j = position + 2;
|
377
358
|
var scod = data[j++];
|
@@ -379,12 +360,12 @@ var JpxImage = function JpxImageClosure() {
|
|
379
360
|
cod.sopMarkerUsed = !!(scod & 2);
|
380
361
|
cod.ephMarkerUsed = !!(scod & 4);
|
381
362
|
cod.progressionOrder = data[j++];
|
382
|
-
cod.layersCount = (0,
|
363
|
+
cod.layersCount = (0, _core_utils.readUint16)(data, j);
|
383
364
|
j += 2;
|
384
365
|
cod.multipleComponentTransform = data[j++];
|
385
366
|
cod.decompositionLevelsCount = data[j++];
|
386
|
-
cod.xcb = (data[j++] &
|
387
|
-
cod.ycb = (data[j++] &
|
367
|
+
cod.xcb = (data[j++] & 0xf) + 2;
|
368
|
+
cod.ycb = (data[j++] & 0xf) + 2;
|
388
369
|
var blockStyle = data[j++];
|
389
370
|
cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1);
|
390
371
|
cod.resetContextProbabilities = !!(blockStyle & 2);
|
@@ -400,7 +381,7 @@ var JpxImage = function JpxImageClosure() {
|
|
400
381
|
while (j < length + position) {
|
401
382
|
var precinctsSize = data[j++];
|
402
383
|
precinctsSizes.push({
|
403
|
-
PPx: precinctsSize &
|
384
|
+
PPx: precinctsSize & 0xf,
|
404
385
|
PPy: precinctsSize >> 4
|
405
386
|
});
|
406
387
|
}
|
@@ -411,28 +392,28 @@ var JpxImage = function JpxImageClosure() {
|
|
411
392
|
var unsupported = [];
|
412
393
|
|
413
394
|
if (cod.selectiveArithmeticCodingBypass) {
|
414
|
-
unsupported.push(
|
395
|
+
unsupported.push("selectiveArithmeticCodingBypass");
|
415
396
|
}
|
416
397
|
|
417
398
|
if (cod.resetContextProbabilities) {
|
418
|
-
unsupported.push(
|
399
|
+
unsupported.push("resetContextProbabilities");
|
419
400
|
}
|
420
401
|
|
421
402
|
if (cod.terminationOnEachCodingPass) {
|
422
|
-
unsupported.push(
|
403
|
+
unsupported.push("terminationOnEachCodingPass");
|
423
404
|
}
|
424
405
|
|
425
406
|
if (cod.verticallyStripe) {
|
426
|
-
unsupported.push(
|
407
|
+
unsupported.push("verticallyStripe");
|
427
408
|
}
|
428
409
|
|
429
410
|
if (cod.predictableTermination) {
|
430
|
-
unsupported.push(
|
411
|
+
unsupported.push("predictableTermination");
|
431
412
|
}
|
432
413
|
|
433
414
|
if (unsupported.length > 0) {
|
434
415
|
doNotRecover = true;
|
435
|
-
throw new Error(
|
416
|
+
throw new Error("Unsupported COD options (" + unsupported.join(", ") + ")");
|
436
417
|
}
|
437
418
|
|
438
419
|
if (context.mainHeader) {
|
@@ -444,11 +425,11 @@ var JpxImage = function JpxImageClosure() {
|
|
444
425
|
|
445
426
|
break;
|
446
427
|
|
447
|
-
case
|
448
|
-
length = (0,
|
428
|
+
case 0xff90:
|
429
|
+
length = (0, _core_utils.readUint16)(data, position);
|
449
430
|
tile = {};
|
450
|
-
tile.index = (0,
|
451
|
-
tile.length = (0,
|
431
|
+
tile.index = (0, _core_utils.readUint16)(data, position + 2);
|
432
|
+
tile.length = (0, _core_utils.readUint32)(data, position + 4);
|
452
433
|
tile.dataEnd = tile.length + position - 2;
|
453
434
|
tile.partIndex = data[position + 8];
|
454
435
|
tile.partsCount = data[position + 9];
|
@@ -464,7 +445,7 @@ var JpxImage = function JpxImageClosure() {
|
|
464
445
|
context.currentTile = tile;
|
465
446
|
break;
|
466
447
|
|
467
|
-
case
|
448
|
+
case 0xff93:
|
468
449
|
tile = context.currentTile;
|
469
450
|
|
470
451
|
if (tile.partIndex === 0) {
|
@@ -476,18 +457,18 @@ var JpxImage = function JpxImageClosure() {
|
|
476
457
|
parseTilePackets(context, data, position, length);
|
477
458
|
break;
|
478
459
|
|
479
|
-
case
|
480
|
-
case
|
481
|
-
case
|
482
|
-
case
|
483
|
-
length = (0,
|
460
|
+
case 0xff55:
|
461
|
+
case 0xff57:
|
462
|
+
case 0xff58:
|
463
|
+
case 0xff64:
|
464
|
+
length = (0, _core_utils.readUint16)(data, position);
|
484
465
|
break;
|
485
466
|
|
486
|
-
case
|
487
|
-
throw new Error(
|
467
|
+
case 0xff53:
|
468
|
+
throw new Error("Codestream code 0xFF53 (COC) is not implemented");
|
488
469
|
|
489
470
|
default:
|
490
|
-
throw new Error(
|
471
|
+
throw new Error("Unknown codestream code: " + code.toString(16));
|
491
472
|
}
|
492
473
|
|
493
474
|
position += length;
|
@@ -496,7 +477,7 @@ var JpxImage = function JpxImageClosure() {
|
|
496
477
|
if (doNotRecover || this.failOnCorruptedImage) {
|
497
478
|
throw new JpxError(e.message);
|
498
479
|
} else {
|
499
|
-
(0, _util.warn)(
|
480
|
+
(0, _util.warn)("JPX: Trying to recover from: " + e.message);
|
500
481
|
}
|
501
482
|
}
|
502
483
|
|
@@ -584,13 +565,13 @@ var JpxImage = function JpxImageClosure() {
|
|
584
565
|
var numprecinctshigh = resolution.try1 > resolution.try0 ? Math.ceil(resolution.try1 / precinctHeight) - Math.floor(resolution.try0 / precinctHeight) : 0;
|
585
566
|
var numprecincts = numprecinctswide * numprecinctshigh;
|
586
567
|
resolution.precinctParameters = {
|
587
|
-
precinctWidth
|
588
|
-
precinctHeight
|
589
|
-
numprecinctswide
|
590
|
-
numprecinctshigh
|
591
|
-
numprecincts
|
592
|
-
precinctWidthInSubband
|
593
|
-
precinctHeightInSubband
|
568
|
+
precinctWidth,
|
569
|
+
precinctHeight,
|
570
|
+
numprecinctswide,
|
571
|
+
numprecinctshigh,
|
572
|
+
numprecincts,
|
573
|
+
precinctWidthInSubband,
|
574
|
+
precinctHeightInSubband
|
594
575
|
};
|
595
576
|
}
|
596
577
|
|
@@ -691,7 +672,7 @@ var JpxImage = function JpxImageClosure() {
|
|
691
672
|
}
|
692
673
|
|
693
674
|
return {
|
694
|
-
layerNumber
|
675
|
+
layerNumber,
|
695
676
|
codeblocks: precinctCodeblocks
|
696
677
|
};
|
697
678
|
}
|
@@ -741,7 +722,7 @@ var JpxImage = function JpxImageClosure() {
|
|
741
722
|
r = 0;
|
742
723
|
}
|
743
724
|
|
744
|
-
throw new JpxError(
|
725
|
+
throw new JpxError("Out of packets");
|
745
726
|
};
|
746
727
|
}
|
747
728
|
|
@@ -790,7 +771,7 @@ var JpxImage = function JpxImageClosure() {
|
|
790
771
|
l = 0;
|
791
772
|
}
|
792
773
|
|
793
|
-
throw new JpxError(
|
774
|
+
throw new JpxError("Out of packets");
|
794
775
|
};
|
795
776
|
}
|
796
777
|
|
@@ -861,7 +842,7 @@ var JpxImage = function JpxImageClosure() {
|
|
861
842
|
p = 0;
|
862
843
|
}
|
863
844
|
|
864
|
-
throw new JpxError(
|
845
|
+
throw new JpxError("Out of packets");
|
865
846
|
};
|
866
847
|
}
|
867
848
|
|
@@ -913,7 +894,7 @@ var JpxImage = function JpxImageClosure() {
|
|
913
894
|
px = 0;
|
914
895
|
}
|
915
896
|
|
916
|
-
throw new JpxError(
|
897
|
+
throw new JpxError("Out of packets");
|
917
898
|
};
|
918
899
|
}
|
919
900
|
|
@@ -965,7 +946,7 @@ var JpxImage = function JpxImageClosure() {
|
|
965
946
|
py = 0;
|
966
947
|
}
|
967
948
|
|
968
|
-
throw new JpxError(
|
949
|
+
throw new JpxError("Out of packets");
|
969
950
|
};
|
970
951
|
}
|
971
952
|
|
@@ -1029,10 +1010,10 @@ var JpxImage = function JpxImageClosure() {
|
|
1029
1010
|
|
1030
1011
|
return {
|
1031
1012
|
components: sizePerComponent,
|
1032
|
-
minWidth
|
1033
|
-
minHeight
|
1034
|
-
maxNumWide
|
1035
|
-
maxNumHigh
|
1013
|
+
minWidth,
|
1014
|
+
minHeight,
|
1015
|
+
maxNumWide,
|
1016
|
+
maxNumHigh
|
1036
1017
|
};
|
1037
1018
|
}
|
1038
1019
|
|
@@ -1063,7 +1044,7 @@ var JpxImage = function JpxImageClosure() {
|
|
1063
1044
|
|
1064
1045
|
if (r === 0) {
|
1065
1046
|
subband = {};
|
1066
|
-
subband.type =
|
1047
|
+
subband.type = "LL";
|
1067
1048
|
subband.tbx0 = Math.ceil(component.tcx0 / scale);
|
1068
1049
|
subband.tby0 = Math.ceil(component.tcy0 / scale);
|
1069
1050
|
subband.tbx1 = Math.ceil(component.tcx1 / scale);
|
@@ -1076,7 +1057,7 @@ var JpxImage = function JpxImageClosure() {
|
|
1076
1057
|
var bscale = 1 << decompositionLevelsCount - r + 1;
|
1077
1058
|
var resolutionSubbands = [];
|
1078
1059
|
subband = {};
|
1079
|
-
subband.type =
|
1060
|
+
subband.type = "HL";
|
1080
1061
|
subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);
|
1081
1062
|
subband.tby0 = Math.ceil(component.tcy0 / bscale);
|
1082
1063
|
subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);
|
@@ -1086,7 +1067,7 @@ var JpxImage = function JpxImageClosure() {
|
|
1086
1067
|
subbands.push(subband);
|
1087
1068
|
resolutionSubbands.push(subband);
|
1088
1069
|
subband = {};
|
1089
|
-
subband.type =
|
1070
|
+
subband.type = "LH";
|
1090
1071
|
subband.tbx0 = Math.ceil(component.tcx0 / bscale);
|
1091
1072
|
subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);
|
1092
1073
|
subband.tbx1 = Math.ceil(component.tcx1 / bscale);
|
@@ -1096,7 +1077,7 @@ var JpxImage = function JpxImageClosure() {
|
|
1096
1077
|
subbands.push(subband);
|
1097
1078
|
resolutionSubbands.push(subband);
|
1098
1079
|
subband = {};
|
1099
|
-
subband.type =
|
1080
|
+
subband.type = "HH";
|
1100
1081
|
subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);
|
1101
1082
|
subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);
|
1102
1083
|
subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);
|
@@ -1137,7 +1118,7 @@ var JpxImage = function JpxImageClosure() {
|
|
1137
1118
|
break;
|
1138
1119
|
|
1139
1120
|
default:
|
1140
|
-
throw new JpxError(
|
1121
|
+
throw new JpxError(`Unsupported progression order ${progressionOrder}`);
|
1141
1122
|
}
|
1142
1123
|
}
|
1143
1124
|
|
@@ -1161,7 +1142,7 @@ var JpxImage = function JpxImageClosure() {
|
|
1161
1142
|
bufferSize += 8;
|
1162
1143
|
}
|
1163
1144
|
|
1164
|
-
if (b ===
|
1145
|
+
if (b === 0xff) {
|
1165
1146
|
skipNextBit = true;
|
1166
1147
|
}
|
1167
1148
|
}
|
@@ -1171,10 +1152,10 @@ var JpxImage = function JpxImageClosure() {
|
|
1171
1152
|
}
|
1172
1153
|
|
1173
1154
|
function skipMarkerIfEqual(value) {
|
1174
|
-
if (data[offset + position - 1] ===
|
1155
|
+
if (data[offset + position - 1] === 0xff && data[offset + position] === value) {
|
1175
1156
|
skipBytes(1);
|
1176
1157
|
return true;
|
1177
|
-
} else if (data[offset + position] ===
|
1158
|
+
} else if (data[offset + position] === 0xff && data[offset + position + 1] === value) {
|
1178
1159
|
skipBytes(2);
|
1179
1160
|
return true;
|
1180
1161
|
}
|
@@ -1252,13 +1233,13 @@ var JpxImage = function JpxImageClosure() {
|
|
1252
1233
|
var firstTimeInclusion = false;
|
1253
1234
|
var valueReady;
|
1254
1235
|
|
1255
|
-
if (codeblock[
|
1236
|
+
if (codeblock["included"] !== undefined) {
|
1256
1237
|
codeblockIncluded = !!readBits(1);
|
1257
1238
|
} else {
|
1258
1239
|
precinct = codeblock.precinct;
|
1259
1240
|
var inclusionTree, zeroBitPlanesTree;
|
1260
1241
|
|
1261
|
-
if (precinct[
|
1242
|
+
if (precinct["inclusionTree"] !== undefined) {
|
1262
1243
|
inclusionTree = precinct.inclusionTree;
|
1263
1244
|
} else {
|
1264
1245
|
var width = precinct.cbxMax - precinct.cbxMin + 1;
|
@@ -1316,12 +1297,12 @@ var JpxImage = function JpxImageClosure() {
|
|
1316
1297
|
codeblock.Lblock++;
|
1317
1298
|
}
|
1318
1299
|
|
1319
|
-
var codingpassesLog2 = (0,
|
1300
|
+
var codingpassesLog2 = (0, _core_utils.log2)(codingpasses);
|
1320
1301
|
var bits = (codingpasses < 1 << codingpassesLog2 ? codingpassesLog2 - 1 : codingpassesLog2) + codeblock.Lblock;
|
1321
1302
|
var codedDataLength = readBits(bits);
|
1322
1303
|
queue.push({
|
1323
|
-
codeblock
|
1324
|
-
codingpasses
|
1304
|
+
codeblock,
|
1305
|
+
codingpasses,
|
1325
1306
|
dataLength: codedDataLength
|
1326
1307
|
});
|
1327
1308
|
}
|
@@ -1336,12 +1317,12 @@ var JpxImage = function JpxImageClosure() {
|
|
1336
1317
|
var packetItem = queue.shift();
|
1337
1318
|
codeblock = packetItem.codeblock;
|
1338
1319
|
|
1339
|
-
if (codeblock[
|
1320
|
+
if (codeblock["data"] === undefined) {
|
1340
1321
|
codeblock.data = [];
|
1341
1322
|
}
|
1342
1323
|
|
1343
1324
|
codeblock.data.push({
|
1344
|
-
data
|
1325
|
+
data,
|
1345
1326
|
start: offset + position,
|
1346
1327
|
end: offset + position + packetItem.dataLength,
|
1347
1328
|
codingpasses: packetItem.codingpasses
|
@@ -1358,8 +1339,8 @@ var JpxImage = function JpxImageClosure() {
|
|
1358
1339
|
var y0 = subband.tby0;
|
1359
1340
|
var width = subband.tbx1 - subband.tbx0;
|
1360
1341
|
var codeblocks = subband.codeblocks;
|
1361
|
-
var right = subband.type.charAt(0) ===
|
1362
|
-
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;
|
1363
1344
|
|
1364
1345
|
for (var i = 0, ii = codeblocks.length; i < ii; ++i) {
|
1365
1346
|
var codeblock = codeblocks[i];
|
@@ -1370,7 +1351,7 @@ var JpxImage = function JpxImageClosure() {
|
|
1370
1351
|
continue;
|
1371
1352
|
}
|
1372
1353
|
|
1373
|
-
if (codeblock[
|
1354
|
+
if (codeblock["data"] === undefined) {
|
1374
1355
|
continue;
|
1375
1356
|
}
|
1376
1357
|
|
@@ -1431,7 +1412,7 @@ var JpxImage = function JpxImageClosure() {
|
|
1431
1412
|
var magnitudeCorrection = reversible ? 0 : 0.5;
|
1432
1413
|
var k, n, nb;
|
1433
1414
|
position = 0;
|
1434
|
-
var interleave = subband.type !==
|
1415
|
+
var interleave = subband.type !== "LL";
|
1435
1416
|
|
1436
1417
|
for (j = 0; j < blockHeight; j++) {
|
1437
1418
|
var row = offset / width | 0;
|
@@ -1501,14 +1482,14 @@ var JpxImage = function JpxImageClosure() {
|
|
1501
1482
|
|
1502
1483
|
var subband = resolution.subbands[j];
|
1503
1484
|
var gainLog2 = SubbandsGainLog2[subband.type];
|
1504
|
-
var delta = reversible ? 1 :
|
1485
|
+
var delta = reversible ? 1 : 2 ** (precision + gainLog2 - epsilon) * (1 + mu / 2048);
|
1505
1486
|
var mb = guardBits + epsilon - 1;
|
1506
1487
|
copyCoefficients(coefficients, width, height, subband, delta, mb, reversible, segmentationSymbolUsed);
|
1507
1488
|
}
|
1508
1489
|
|
1509
1490
|
subbandCoefficients.push({
|
1510
|
-
width
|
1511
|
-
height
|
1491
|
+
width,
|
1492
|
+
height,
|
1512
1493
|
items: coefficients
|
1513
1494
|
});
|
1514
1495
|
}
|
@@ -1581,7 +1562,7 @@ var JpxImage = function JpxImageClosure() {
|
|
1581
1562
|
y0 = y0items[j] + offset;
|
1582
1563
|
y1 = y1items[j];
|
1583
1564
|
y2 = y2items[j];
|
1584
|
-
|
1565
|
+
const g = y0 - (y2 + y1 >> 2);
|
1585
1566
|
out[pos++] = g + y2 >> shift;
|
1586
1567
|
out[pos++] = g >> shift;
|
1587
1568
|
out[pos++] = g + y1 >> shift;
|
@@ -1630,13 +1611,13 @@ var JpxImage = function JpxImageClosure() {
|
|
1630
1611
|
|
1631
1612
|
var TagTree = function TagTreeClosure() {
|
1632
1613
|
function TagTree(width, height) {
|
1633
|
-
var levelsLength = (0,
|
1614
|
+
var levelsLength = (0, _core_utils.log2)(Math.max(width, height)) + 1;
|
1634
1615
|
this.levels = [];
|
1635
1616
|
|
1636
1617
|
for (var i = 0; i < levelsLength; i++) {
|
1637
1618
|
var level = {
|
1638
|
-
width
|
1639
|
-
height
|
1619
|
+
width,
|
1620
|
+
height,
|
1640
1621
|
items: []
|
1641
1622
|
};
|
1642
1623
|
this.levels.push(level);
|
@@ -1698,7 +1679,7 @@ var JpxImage = function JpxImageClosure() {
|
|
1698
1679
|
|
1699
1680
|
var InclusionTree = function InclusionTreeClosure() {
|
1700
1681
|
function InclusionTree(width, height, defaultValue) {
|
1701
|
-
var levelsLength = (0,
|
1682
|
+
var levelsLength = (0, _core_utils.log2)(Math.max(width, height)) + 1;
|
1702
1683
|
this.levels = [];
|
1703
1684
|
|
1704
1685
|
for (var i = 0; i < levelsLength; i++) {
|
@@ -1709,9 +1690,9 @@ var JpxImage = function JpxImageClosure() {
|
|
1709
1690
|
}
|
1710
1691
|
|
1711
1692
|
var level = {
|
1712
|
-
width
|
1713
|
-
height
|
1714
|
-
items
|
1693
|
+
width,
|
1694
|
+
height,
|
1695
|
+
items
|
1715
1696
|
};
|
1716
1697
|
this.levels.push(level);
|
1717
1698
|
width = Math.ceil(width / 2);
|
@@ -1729,7 +1710,7 @@ var JpxImage = function JpxImageClosure() {
|
|
1729
1710
|
level.index = index;
|
1730
1711
|
var value = level.items[index];
|
1731
1712
|
|
1732
|
-
if (value ===
|
1713
|
+
if (value === 0xff) {
|
1733
1714
|
break;
|
1734
1715
|
}
|
1735
1716
|
|
@@ -1766,7 +1747,7 @@ var JpxImage = function JpxImageClosure() {
|
|
1766
1747
|
var currentLevel = this.currentLevel;
|
1767
1748
|
var level = this.levels[currentLevel];
|
1768
1749
|
var value = level.items[level.index];
|
1769
|
-
level.items[level.index] =
|
1750
|
+
level.items[level.index] = 0xff;
|
1770
1751
|
currentLevel--;
|
1771
1752
|
|
1772
1753
|
if (currentLevel < 0) {
|
@@ -1792,11 +1773,31 @@ var JpxImage = function JpxImageClosure() {
|
|
1792
1773
|
function BitModel(width, height, subband, zeroBitPlanes, mb) {
|
1793
1774
|
this.width = width;
|
1794
1775
|
this.height = height;
|
1795
|
-
|
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;
|
1796
1787
|
var coefficientCount = width * height;
|
1797
1788
|
this.neighborsSignificance = new Uint8Array(coefficientCount);
|
1798
1789
|
this.coefficentsSign = new Uint8Array(coefficientCount);
|
1799
|
-
|
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;
|
1800
1801
|
this.processingFlags = new Uint8Array(coefficientCount);
|
1801
1802
|
var bitsDecoded = new Uint8Array(coefficientCount);
|
1802
1803
|
|
@@ -2097,8 +2098,8 @@ var JpxImage = function JpxImageClosure() {
|
|
2097
2098
|
var contexts = this.contexts;
|
2098
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);
|
2099
2100
|
|
2100
|
-
if (symbol !==
|
2101
|
-
throw new JpxError(
|
2101
|
+
if (symbol !== 0xa) {
|
2102
|
+
throw new JpxError("Invalid segmentation symbol");
|
2102
2103
|
}
|
2103
2104
|
}
|
2104
2105
|
};
|
@@ -2218,9 +2219,9 @@ var JpxImage = function JpxImageClosure() {
|
|
2218
2219
|
}
|
2219
2220
|
|
2220
2221
|
return {
|
2221
|
-
width
|
2222
|
-
height
|
2223
|
-
items
|
2222
|
+
width,
|
2223
|
+
height,
|
2224
|
+
items
|
2224
2225
|
};
|
2225
2226
|
};
|
2226
2227
|
|