x_ite 8.6.24 → 8.7.0
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.
- package/README.md +2 -0
- package/dist/assets/components/Annotation.js +13 -13
- package/dist/assets/components/Annotation.min.js +1 -1
- package/dist/assets/components/CADGeometry.js +13 -13
- package/dist/assets/components/CADGeometry.min.js +1 -1
- package/dist/assets/components/CubeMapTexturing.js +34 -39
- package/dist/assets/components/CubeMapTexturing.min.js +1 -1
- package/dist/assets/components/DIS.js +13 -13
- package/dist/assets/components/DIS.min.js +1 -1
- package/dist/assets/components/EventUtilities.js +9 -9
- package/dist/assets/components/EventUtilities.min.js +1 -1
- package/dist/assets/components/Geometry2D.js +19 -19
- package/dist/assets/components/Geometry2D.min.js +1 -1
- package/dist/assets/components/Geospatial.js +33 -33
- package/dist/assets/components/Geospatial.min.js +1 -1
- package/dist/assets/components/HAnim.js +18 -18
- package/dist/assets/components/HAnim.min.js +1 -1
- package/dist/assets/components/KeyDeviceSensor.js +8 -8
- package/dist/assets/components/KeyDeviceSensor.min.js +1 -1
- package/dist/assets/components/Layout.js +27 -27
- package/dist/assets/components/Layout.min.js +1 -1
- package/dist/assets/components/NURBS.js +32 -32
- package/dist/assets/components/NURBS.min.js +1 -1
- package/dist/assets/components/ParticleSystems.js +22 -22
- package/dist/assets/components/ParticleSystems.min.js +1 -1
- package/dist/assets/components/Picking.js +26 -26
- package/dist/assets/components/Picking.min.js +1 -1
- package/dist/assets/components/RigidBodyPhysics.js +20 -20
- package/dist/assets/components/RigidBodyPhysics.min.js +1 -1
- package/dist/assets/components/Scripting.js +28 -28
- package/dist/assets/components/Scripting.min.js +1 -1
- package/dist/assets/components/Text.js +24 -24
- package/dist/assets/components/Text.min.js +1 -1
- package/dist/assets/components/TextureProjector.js +14 -14
- package/dist/assets/components/TextureProjector.min.js +1 -1
- package/dist/assets/components/Texturing3D.js +1116 -1685
- package/dist/assets/components/Texturing3D.min.js +1 -1
- package/dist/assets/components/VolumeRendering.js +25 -25
- package/dist/assets/components/VolumeRendering.min.js +1 -1
- package/dist/assets/components/X_ITE.js +9 -9
- package/dist/assets/components/X_ITE.min.js +1 -1
- package/dist/x_ite.css +1 -1
- package/dist/x_ite.js +275 -235
- package/dist/x_ite.min.js +1 -1
- package/dist/x_ite.zip +0 -0
- package/docs/_config.yml +1 -1
- package/docs/_posts/accessing-the-external-browser.md +1 -1
- package/docs/_posts/components/Geospatial/GeoViewpoint.md +41 -0
- package/docs/_posts/components/Navigation/OrthoViewpoint.md +41 -0
- package/docs/_posts/components/Navigation/Viewpoint.md +41 -0
- package/docs/_posts/components/Networking/Inline.md +1 -1
- package/docs/_posts/components/X_ITE/BlendMode.md +1 -1
- package/docs/_posts/getting-started.md +4 -1
- package/docs/_posts/glossary.md +3 -3
- package/docs/_posts/laboratory/x3d-file-converter.md +1 -1
- package/docs/_posts/reference/browser-services.md +48 -20
- package/docs/_posts/reference/field-services-and-objects.md +23 -23
- package/docs/_posts/reference/scene-services.md +1 -1
- package/docs/_posts/supported-nodes.md +1 -1
- package/docs/_posts/tutorials/basic-nodes.md +1 -1
- package/docs/_posts/tutorials/building-a-x3d-world.md +1 -1
- package/docs/_posts/tutorials/building-primitive-shapes.md +1 -1
- package/docs/_posts/tutorials/increasing-rendering-speed.md +1 -1
- package/docs/_posts/tutorials/introducing-x3d.md +1 -1
- package/docs/_posts/tutorials/overview.md +1 -1
- package/docs/_posts/what's-new.md +11 -1
- package/package.json +4 -4
- package/src/x_ite/Base/X3DBaseNode.js +2 -2
- package/src/x_ite/Base/X3DField.js +4 -4
- package/src/x_ite/Browser/Core/BrowserOptions.js +12 -4
- package/src/x_ite/Browser/Core/X3DCoreContext.js +79 -31
- package/src/x_ite/Browser/NURBS/NURBS.js +3 -3
- package/src/x_ite/Browser/Shaders/X3DShadersContext.js +2 -2
- package/src/x_ite/Browser/Texturing/X3DTexturingContext.js +10 -11
- package/src/x_ite/Browser/VERSION.js +1 -1
- package/src/x_ite/Browser/X3DBrowser.js +52 -28
- package/src/x_ite/Components/CubeMapTexturing/ComposedCubeMapTexture.js +9 -14
- package/src/x_ite/Components/EnvironmentalEffects/Background.js +6 -6
- package/src/x_ite/Components/EnvironmentalEffects/TextureBackground.js +14 -34
- package/src/x_ite/Components/EnvironmentalEffects/X3DBackgroundNode.js +9 -36
- package/src/x_ite/Components/NURBS/NurbsCurve.js +1 -1
- package/src/x_ite/Components/NURBS/NurbsCurve2D.js +1 -1
- package/src/x_ite/Components/NURBS/NurbsOrientationInterpolator.js +1 -1
- package/src/x_ite/Components/NURBS/NurbsPositionInterpolator.js +1 -1
- package/src/x_ite/Components/NURBS/X3DNurbsSurfaceGeometryNode.js +1 -1
- package/src/x_ite/Components/Picking/LinePickSensor.js +2 -2
- package/src/x_ite/Components/Picking/PointPickSensor.js +2 -2
- package/src/x_ite/Components/Picking/PrimitivePickSensor.js +2 -2
- package/src/x_ite/Components/Picking/VolumePickSensor.js +2 -2
- package/src/x_ite/Components/RigidBodyPhysics/CollisionSensor.js +1 -1
- package/src/x_ite/Components/RigidBodyPhysics/MotorJoint.js +1 -1
- package/src/x_ite/Components/Shape/X3DOneSidedMaterialNode.js +1 -1
- package/src/x_ite/Components/Sound/ListenerPointSource.js +2 -1
- package/src/x_ite/Components/Sound/MicrophoneSource.js +2 -1
- package/src/x_ite/Components/Sound/OscillatorSource.js +2 -1
- package/src/x_ite/Components/Sound/StreamAudioSource.js +2 -1
- package/src/x_ite/Components/Sound/X3DSoundProcessingNode.js +3 -0
- package/src/x_ite/Components/VolumeRendering/IsoSurfaceVolumeData.js +2 -2
- package/src/x_ite/Components/VolumeRendering/SegmentedVolumeData.js +2 -2
- package/src/x_ite/Components/VolumeRendering/VolumeData.js +2 -2
- package/src/x_ite/Fields/SFNode.js +5 -5
- package/src/x_ite/Fields.js +5 -4
- package/src/x_ite/Parser/X3DParser.js +1 -1
- package/src/x_ite/X3DCanvasElement.js +4 -4
- package/src/x_ite.html +1 -1
- package/x_ite.min.html +1 -1
|
@@ -1,7 +1,22 @@
|
|
|
1
|
-
/* X_ITE v8.
|
|
1
|
+
/* X_ITE v8.7.0 */(() => { // webpackBootstrap
|
|
2
2
|
/******/ var __webpack_modules__ = ({
|
|
3
3
|
|
|
4
|
-
/***/
|
|
4
|
+
/***/ 460:
|
|
5
|
+
/***/ ((module) => {
|
|
6
|
+
|
|
7
|
+
function webpackEmptyContext(req) {
|
|
8
|
+
var e = new Error("Cannot find module '" + req + "'");
|
|
9
|
+
e.code = 'MODULE_NOT_FOUND';
|
|
10
|
+
throw e;
|
|
11
|
+
}
|
|
12
|
+
webpackEmptyContext.keys = () => ([]);
|
|
13
|
+
webpackEmptyContext.resolve = webpackEmptyContext;
|
|
14
|
+
webpackEmptyContext.id = 460;
|
|
15
|
+
module.exports = webpackEmptyContext;
|
|
16
|
+
|
|
17
|
+
/***/ }),
|
|
18
|
+
|
|
19
|
+
/***/ 990:
|
|
5
20
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
6
21
|
|
|
7
22
|
var __dirname = "/";
|
|
@@ -38,7 +53,7 @@ var Ib=[cx,_q,cr,Yr,as,fs,hs,Hu,Su,cx,cx,cx,cx,cx,cx,cx];var Jb=[dx,si,gi,Wh,Kh,
|
|
|
38
53
|
|
|
39
54
|
/***/ }),
|
|
40
55
|
|
|
41
|
-
/***/
|
|
56
|
+
/***/ 881:
|
|
42
57
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
43
58
|
|
|
44
59
|
var __dirname = "/";
|
|
@@ -72,7 +87,7 @@ var _a=[yj,od,ef,yj];var $a=[zj,Li,di,bi,Kb,Lb,Mb,Nb,Rc,Sc,Uc,jd,xd,Ye,lf,yd,zd,
|
|
|
72
87
|
|
|
73
88
|
/***/ }),
|
|
74
89
|
|
|
75
|
-
/***/
|
|
90
|
+
/***/ 615:
|
|
76
91
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
77
92
|
|
|
78
93
|
/*! dicom-parser - 1.8.12 - 2023-02-20 | (c) 2017 Chris Hafey | https://github.com/cornerstonejs/dicomParser */
|
|
@@ -4028,7 +4043,7 @@ module.exports = __WEBPACK_EXTERNAL_MODULE_zlib__;
|
|
|
4028
4043
|
|
|
4029
4044
|
/***/ }),
|
|
4030
4045
|
|
|
4031
|
-
/***/
|
|
4046
|
+
/***/ 622:
|
|
4032
4047
|
/***/ ((module) => {
|
|
4033
4048
|
|
|
4034
4049
|
/* -*- tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- /
|
|
@@ -5183,1767 +5198,1183 @@ function decode(jpegData, userOpts = {}) {
|
|
|
5183
5198
|
|
|
5184
5199
|
/***/ }),
|
|
5185
5200
|
|
|
5186
|
-
/***/
|
|
5187
|
-
/***/ ((
|
|
5188
|
-
|
|
5189
|
-
(function(f){if(true){module.exports=f()}else { var g; }})(function(){var define,module,exports;return (function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=undefined;if(!u&&a)return require(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=undefined;for(var o=0;o<r.length;o++)s(r[o]);return s}return e})()({1:[function(require,module,exports){
|
|
5190
|
-
/*
|
|
5191
|
-
* Copyright (C) 2015 Michael Martinez
|
|
5192
|
-
* Changes: Added support for selection values 2-7, fixed minor bugs &
|
|
5193
|
-
* warnings, split into multiple class files, and general clean up.
|
|
5194
|
-
*
|
|
5195
|
-
* 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.
|
|
5196
|
-
*/
|
|
5197
|
-
|
|
5198
|
-
/*
|
|
5199
|
-
* Copyright (C) Helmut Dersch
|
|
5200
|
-
*
|
|
5201
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
5202
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
5203
|
-
* in the Software without restriction, including without limitation the rights
|
|
5204
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
5205
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
5206
|
-
* furnished to do so, subject to the following conditions:
|
|
5207
|
-
|
|
5208
|
-
* The above copyright notice and this permission notice shall be included in
|
|
5209
|
-
* all copies or substantial portions of the Software.
|
|
5210
|
-
|
|
5211
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
5212
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
5213
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
5214
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
5215
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
5216
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
5217
|
-
* THE SOFTWARE.
|
|
5218
|
-
*/
|
|
5219
|
-
|
|
5220
|
-
/*jslint browser: true, node: true */
|
|
5221
|
-
/*global require, module */
|
|
5222
|
-
|
|
5223
|
-
"use strict";
|
|
5224
|
-
|
|
5225
|
-
/*** Imports ***/
|
|
5226
|
-
var jpeg = jpeg || {};
|
|
5227
|
-
jpeg.lossless = jpeg.lossless || {};
|
|
5228
|
-
|
|
5229
|
-
|
|
5230
|
-
/*** Constructor ***/
|
|
5231
|
-
jpeg.lossless.ComponentSpec = jpeg.lossless.ComponentSpec || function () {
|
|
5232
|
-
this.hSamp = 0; // Horizontal sampling factor
|
|
5233
|
-
this.quantTableSel = 0; // Quantization table destination selector
|
|
5234
|
-
this.vSamp = 0; // Vertical
|
|
5235
|
-
};
|
|
5236
|
-
|
|
5237
|
-
|
|
5238
|
-
/*** Exports ***/
|
|
5239
|
-
|
|
5240
|
-
var moduleType = typeof module;
|
|
5241
|
-
if ((moduleType !== 'undefined') && module.exports) {
|
|
5242
|
-
module.exports = jpeg.lossless.ComponentSpec;
|
|
5243
|
-
}
|
|
5244
|
-
|
|
5245
|
-
},{}],2:[function(require,module,exports){
|
|
5246
|
-
/*
|
|
5247
|
-
* Copyright (C) 2015 Michael Martinez
|
|
5248
|
-
* Changes: Added support for selection values 2-7, fixed minor bugs &
|
|
5249
|
-
* warnings, split into multiple class files, and general clean up.
|
|
5250
|
-
*
|
|
5251
|
-
* 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.
|
|
5252
|
-
*/
|
|
5253
|
-
|
|
5254
|
-
/*
|
|
5255
|
-
* Copyright (C) Helmut Dersch
|
|
5256
|
-
*
|
|
5257
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
5258
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
5259
|
-
* in the Software without restriction, including without limitation the rights
|
|
5260
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
5261
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
5262
|
-
* furnished to do so, subject to the following conditions:
|
|
5263
|
-
|
|
5264
|
-
* The above copyright notice and this permission notice shall be included in
|
|
5265
|
-
* all copies or substantial portions of the Software.
|
|
5266
|
-
|
|
5267
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
5268
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
5269
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
5270
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
5271
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
5272
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
5273
|
-
* THE SOFTWARE.
|
|
5274
|
-
*/
|
|
5275
|
-
|
|
5276
|
-
/*jslint browser: true, node: true */
|
|
5277
|
-
/*global require, module */
|
|
5201
|
+
/***/ 782:
|
|
5202
|
+
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
|
|
5278
5203
|
|
|
5279
5204
|
"use strict";
|
|
5280
5205
|
|
|
5281
|
-
|
|
5282
|
-
var
|
|
5283
|
-
|
|
5284
|
-
|
|
5206
|
+
(() => {
|
|
5207
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5208
|
+
var __require = /* @__PURE__ */ ((x) => true ? __webpack_require__(460) : 0)(function(x) {
|
|
5209
|
+
if (true)
|
|
5210
|
+
return __webpack_require__(460).apply(this, arguments);
|
|
5211
|
+
throw new Error('Dynamic require of "' + x + '" is not supported');
|
|
5212
|
+
});
|
|
5213
|
+
var __commonJS = (cb, mod) => function __require2() {
|
|
5214
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
5215
|
+
};
|
|
5285
5216
|
|
|
5286
|
-
|
|
5287
|
-
|
|
5288
|
-
|
|
5289
|
-
|
|
5290
|
-
|
|
5291
|
-
|
|
5217
|
+
// src/component-spec.js
|
|
5218
|
+
var require_component_spec = __commonJS({
|
|
5219
|
+
"src/component-spec.js"(exports, module) {
|
|
5220
|
+
"use strict";
|
|
5221
|
+
var jpeg = jpeg || {};
|
|
5222
|
+
jpeg.lossless = jpeg.lossless || {};
|
|
5223
|
+
jpeg.lossless.ComponentSpec = jpeg.lossless.ComponentSpec || function() {
|
|
5224
|
+
this.hSamp = 0;
|
|
5225
|
+
this.quantTableSel = 0;
|
|
5226
|
+
this.vSamp = 0;
|
|
5227
|
+
};
|
|
5228
|
+
var moduleType = typeof module;
|
|
5229
|
+
if (moduleType !== "undefined" && module.exports) {
|
|
5230
|
+
module.exports = jpeg.lossless.ComponentSpec;
|
|
5231
|
+
}
|
|
5292
5232
|
}
|
|
5293
|
-
|
|
5294
|
-
|
|
5295
|
-
|
|
5296
|
-
|
|
5297
|
-
|
|
5298
|
-
|
|
5299
|
-
|
|
5300
|
-
|
|
5301
|
-
|
|
5302
|
-
|
|
5303
|
-
|
|
5304
|
-
|
|
5305
|
-
|
|
5306
|
-
|
|
5307
|
-
|
|
5308
|
-
|
|
5309
|
-
|
|
5310
|
-
|
|
5311
|
-
|
|
5312
|
-
|
|
5313
|
-
|
|
5314
|
-
|
|
5315
|
-
|
|
5316
|
-
|
|
5317
|
-
|
|
5318
|
-
|
|
5319
|
-
|
|
5320
|
-
|
|
5321
|
-
|
|
5322
|
-
}
|
|
5323
|
-
/*
|
|
5324
|
-
* Copyright (C) 2015 Michael Martinez
|
|
5325
|
-
* Changes: Added support for selection values 2-7, fixed minor bugs &
|
|
5326
|
-
* warnings, split into multiple class files, and general clean up.
|
|
5327
|
-
*
|
|
5328
|
-
* 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.
|
|
5329
|
-
*/
|
|
5330
|
-
|
|
5331
|
-
/*
|
|
5332
|
-
* Copyright (C) Helmut Dersch
|
|
5333
|
-
*
|
|
5334
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
5335
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
5336
|
-
* in the Software without restriction, including without limitation the rights
|
|
5337
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
5338
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
5339
|
-
* furnished to do so, subject to the following conditions:
|
|
5340
|
-
|
|
5341
|
-
* The above copyright notice and this permission notice shall be included in
|
|
5342
|
-
* all copies or substantial portions of the Software.
|
|
5343
|
-
|
|
5344
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
5345
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
5346
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
5347
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
5348
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
5349
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
5350
|
-
* THE SOFTWARE.
|
|
5351
|
-
*/
|
|
5352
|
-
|
|
5353
|
-
/*jslint browser: true, node: true */
|
|
5354
|
-
/*global require, module */
|
|
5355
|
-
|
|
5356
|
-
"use strict";
|
|
5357
|
-
|
|
5358
|
-
/*** Imports ***/
|
|
5359
|
-
var jpeg = jpeg || {};
|
|
5360
|
-
jpeg.lossless = jpeg.lossless || {};
|
|
5361
|
-
jpeg.lossless.DataStream = jpeg.lossless.DataStream || ((typeof require !== 'undefined') ? require('./data-stream.js') : null);
|
|
5362
|
-
jpeg.lossless.HuffmanTable = jpeg.lossless.HuffmanTable || ((typeof require !== 'undefined') ? require('./huffman-table.js') : null);
|
|
5363
|
-
jpeg.lossless.QuantizationTable = jpeg.lossless.QuantizationTable || ((typeof require !== 'undefined') ? require('./quantization-table.js') : null);
|
|
5364
|
-
jpeg.lossless.ScanHeader = jpeg.lossless.ScanHeader || ((typeof require !== 'undefined') ? require('./scan-header.js') : null);
|
|
5365
|
-
jpeg.lossless.FrameHeader = jpeg.lossless.FrameHeader || ((typeof require !== 'undefined') ? require('./frame-header.js') : null);
|
|
5366
|
-
jpeg.lossless.Utils = jpeg.lossless.Utils || ((typeof require !== 'undefined') ? require('./utils.js') : null);
|
|
5367
|
-
|
|
5368
|
-
|
|
5369
|
-
/*** Constructor ***/
|
|
5370
|
-
|
|
5371
|
-
/**
|
|
5372
|
-
* The Decoder constructor.
|
|
5373
|
-
* @property {number} xDim - size of x dimension
|
|
5374
|
-
* @property {number} yDim - size of y dimension
|
|
5375
|
-
* @property {number} numComp - number of components
|
|
5376
|
-
* @property {number} numBytes - number of bytes per component
|
|
5377
|
-
* @type {Function}
|
|
5378
|
-
*/
|
|
5379
|
-
jpeg.lossless.Decoder = jpeg.lossless.Decoder || function (buffer, numBytes) {
|
|
5380
|
-
this.buffer = buffer;
|
|
5381
|
-
this.frame = new jpeg.lossless.FrameHeader();
|
|
5382
|
-
this.huffTable = new jpeg.lossless.HuffmanTable();
|
|
5383
|
-
this.quantTable = new jpeg.lossless.QuantizationTable();
|
|
5384
|
-
this.scan = new jpeg.lossless.ScanHeader();
|
|
5385
|
-
this.DU = jpeg.lossless.Utils.createArray(10, 4, 64); // at most 10 data units in a MCU, at most 4 data units in one component
|
|
5386
|
-
this.HuffTab = jpeg.lossless.Utils.createArray(4, 2, 50 * 256);
|
|
5387
|
-
this.IDCT_Source = [];
|
|
5388
|
-
this.nBlock = []; // number of blocks in the i-th Comp in a scan
|
|
5389
|
-
this.acTab = jpeg.lossless.Utils.createArray(10, 1); // ac HuffTab for the i-th Comp in a scan
|
|
5390
|
-
this.dcTab = jpeg.lossless.Utils.createArray(10, 1); // dc HuffTab for the i-th Comp in a scan
|
|
5391
|
-
this.qTab = jpeg.lossless.Utils.createArray(10, 1); // quantization table for the i-th Comp in a scan
|
|
5392
|
-
this.marker = 0;
|
|
5393
|
-
this.markerIndex = 0;
|
|
5394
|
-
this.numComp = 0;
|
|
5395
|
-
this.restartInterval = 0;
|
|
5396
|
-
this.selection = 0;
|
|
5397
|
-
this.xDim = 0;
|
|
5398
|
-
this.yDim = 0;
|
|
5399
|
-
this.xLoc = 0;
|
|
5400
|
-
this.yLoc = 0;
|
|
5401
|
-
this.numBytes = 0;
|
|
5402
|
-
this.outputData = null;
|
|
5403
|
-
this.restarting = false;
|
|
5404
|
-
this.mask = 0;
|
|
5405
|
-
|
|
5406
|
-
if (typeof numBytes !== "undefined") {
|
|
5407
|
-
this.numBytes = numBytes;
|
|
5233
|
+
});
|
|
5234
|
+
|
|
5235
|
+
// src/data-stream.js
|
|
5236
|
+
var require_data_stream = __commonJS({
|
|
5237
|
+
"src/data-stream.js"(exports, module) {
|
|
5238
|
+
"use strict";
|
|
5239
|
+
var jpeg = jpeg || {};
|
|
5240
|
+
jpeg.lossless = jpeg.lossless || {};
|
|
5241
|
+
jpeg.lossless.DataStream = jpeg.lossless.DataStream || function(data, offset, length) {
|
|
5242
|
+
if (offset === void 0 && length === void 0) {
|
|
5243
|
+
this.buffer = new Uint8Array(data);
|
|
5244
|
+
} else {
|
|
5245
|
+
this.buffer = new Uint8Array(data, offset, length);
|
|
5246
|
+
}
|
|
5247
|
+
this.index = 0;
|
|
5248
|
+
};
|
|
5249
|
+
jpeg.lossless.DataStream.prototype.get16 = function() {
|
|
5250
|
+
var value = (this.buffer[this.index] << 8) + this.buffer[this.index + 1];
|
|
5251
|
+
this.index += 2;
|
|
5252
|
+
return value;
|
|
5253
|
+
};
|
|
5254
|
+
jpeg.lossless.DataStream.prototype.get8 = function() {
|
|
5255
|
+
var value = this.buffer[this.index];
|
|
5256
|
+
this.index += 1;
|
|
5257
|
+
return value;
|
|
5258
|
+
};
|
|
5259
|
+
var moduleType = typeof module;
|
|
5260
|
+
if (moduleType !== "undefined" && module.exports) {
|
|
5261
|
+
module.exports = jpeg.lossless.DataStream;
|
|
5262
|
+
}
|
|
5408
5263
|
}
|
|
5409
|
-
};
|
|
5410
|
-
|
|
5411
|
-
|
|
5412
|
-
|
|
5413
|
-
|
|
5414
|
-
|
|
5415
|
-
|
|
5416
|
-
jpeg.lossless
|
|
5417
|
-
|
|
5418
|
-
jpeg.lossless.
|
|
5419
|
-
|
|
5420
|
-
|
|
5421
|
-
|
|
5422
|
-
|
|
5423
|
-
|
|
5424
|
-
|
|
5425
|
-
|
|
5426
|
-
|
|
5427
|
-
|
|
5428
|
-
|
|
5429
|
-
|
|
5430
|
-
|
|
5431
|
-
|
|
5432
|
-
|
|
5433
|
-
|
|
5434
|
-
}
|
|
5435
|
-
|
|
5436
|
-
|
|
5437
|
-
|
|
5438
|
-
|
|
5439
|
-
|
|
5440
|
-
|
|
5441
|
-
|
|
5442
|
-
|
|
5443
|
-
|
|
5444
|
-
|
|
5264
|
+
});
|
|
5265
|
+
|
|
5266
|
+
// src/utils.js
|
|
5267
|
+
var require_utils = __commonJS({
|
|
5268
|
+
"src/utils.js"(exports, module) {
|
|
5269
|
+
"use strict";
|
|
5270
|
+
var jpeg = jpeg || {};
|
|
5271
|
+
jpeg.lossless = jpeg.lossless || {};
|
|
5272
|
+
jpeg.lossless.Utils = jpeg.lossless.Utils || {};
|
|
5273
|
+
jpeg.lossless.Utils.createArray = function(length) {
|
|
5274
|
+
var arr = new Array(length || 0), i = length;
|
|
5275
|
+
if (arguments.length > 1) {
|
|
5276
|
+
var args = Array.prototype.slice.call(arguments, 1);
|
|
5277
|
+
while (i--)
|
|
5278
|
+
arr[length - 1 - i] = jpeg.lossless.Utils.createArray.apply(this, args);
|
|
5279
|
+
}
|
|
5280
|
+
return arr;
|
|
5281
|
+
};
|
|
5282
|
+
jpeg.lossless.Utils.makeCRCTable = function() {
|
|
5283
|
+
var c;
|
|
5284
|
+
var crcTable = [];
|
|
5285
|
+
for (var n = 0; n < 256; n++) {
|
|
5286
|
+
c = n;
|
|
5287
|
+
for (var k = 0; k < 8; k++) {
|
|
5288
|
+
c = c & 1 ? 3988292384 ^ c >>> 1 : c >>> 1;
|
|
5289
|
+
}
|
|
5290
|
+
crcTable[n] = c;
|
|
5291
|
+
}
|
|
5292
|
+
return crcTable;
|
|
5293
|
+
};
|
|
5294
|
+
jpeg.lossless.Utils.crc32 = function(dataView) {
|
|
5295
|
+
var uint8view = new Uint8Array(dataView.buffer);
|
|
5296
|
+
var crcTable = jpeg.lossless.Utils.crcTable || (jpeg.lossless.Utils.crcTable = jpeg.lossless.Utils.makeCRCTable());
|
|
5297
|
+
var crc = 0 ^ -1;
|
|
5298
|
+
for (var i = 0; i < uint8view.length; i++) {
|
|
5299
|
+
crc = crc >>> 8 ^ crcTable[(crc ^ uint8view[i]) & 255];
|
|
5300
|
+
}
|
|
5301
|
+
return (crc ^ -1) >>> 0;
|
|
5302
|
+
};
|
|
5303
|
+
var moduleType = typeof module;
|
|
5304
|
+
if (moduleType !== "undefined" && module.exports) {
|
|
5305
|
+
module.exports = jpeg.lossless.Utils;
|
|
5306
|
+
}
|
|
5445
5307
|
}
|
|
5446
|
-
|
|
5447
|
-
|
|
5448
|
-
|
|
5308
|
+
});
|
|
5309
|
+
|
|
5310
|
+
// src/huffman-table.js
|
|
5311
|
+
var require_huffman_table = __commonJS({
|
|
5312
|
+
"src/huffman-table.js"(exports, module) {
|
|
5313
|
+
"use strict";
|
|
5314
|
+
var jpeg = jpeg || {};
|
|
5315
|
+
jpeg.lossless = jpeg.lossless || {};
|
|
5316
|
+
jpeg.lossless.DataStream = jpeg.lossless.DataStream || (typeof __require !== "undefined" ? require_data_stream() : null);
|
|
5317
|
+
jpeg.lossless.Utils = jpeg.lossless.Utils || (typeof __require !== "undefined" ? require_utils() : null);
|
|
5318
|
+
jpeg.lossless.HuffmanTable = jpeg.lossless.HuffmanTable || function() {
|
|
5319
|
+
this.l = jpeg.lossless.Utils.createArray(4, 2, 16);
|
|
5320
|
+
this.th = [];
|
|
5321
|
+
this.v = jpeg.lossless.Utils.createArray(4, 2, 16, 200);
|
|
5322
|
+
this.tc = jpeg.lossless.Utils.createArray(4, 2);
|
|
5323
|
+
this.tc[0][0] = 0;
|
|
5324
|
+
this.tc[1][0] = 0;
|
|
5325
|
+
this.tc[2][0] = 0;
|
|
5326
|
+
this.tc[3][0] = 0;
|
|
5327
|
+
this.tc[0][1] = 0;
|
|
5328
|
+
this.tc[1][1] = 0;
|
|
5329
|
+
this.tc[2][1] = 0;
|
|
5330
|
+
this.tc[3][1] = 0;
|
|
5331
|
+
this.th[0] = 0;
|
|
5332
|
+
this.th[1] = 0;
|
|
5333
|
+
this.th[2] = 0;
|
|
5334
|
+
this.th[3] = 0;
|
|
5335
|
+
};
|
|
5336
|
+
jpeg.lossless.HuffmanTable.MSB = 2147483648;
|
|
5337
|
+
jpeg.lossless.HuffmanTable.prototype.read = function(data, HuffTab) {
|
|
5338
|
+
var count = 0, length, temp, t, c, i, j;
|
|
5339
|
+
length = data.get16();
|
|
5340
|
+
count += 2;
|
|
5341
|
+
while (count < length) {
|
|
5342
|
+
temp = data.get8();
|
|
5343
|
+
count += 1;
|
|
5344
|
+
t = temp & 15;
|
|
5345
|
+
if (t > 3) {
|
|
5346
|
+
throw new Error("ERROR: Huffman table ID > 3");
|
|
5347
|
+
}
|
|
5348
|
+
c = temp >> 4;
|
|
5349
|
+
if (c > 2) {
|
|
5350
|
+
throw new Error("ERROR: Huffman table [Table class > 2 ]");
|
|
5351
|
+
}
|
|
5352
|
+
this.th[t] = 1;
|
|
5353
|
+
this.tc[t][c] = 1;
|
|
5354
|
+
for (i = 0; i < 16; i += 1) {
|
|
5355
|
+
this.l[t][c][i] = data.get8();
|
|
5356
|
+
count += 1;
|
|
5357
|
+
}
|
|
5358
|
+
for (i = 0; i < 16; i += 1) {
|
|
5359
|
+
for (j = 0; j < this.l[t][c][i]; j += 1) {
|
|
5360
|
+
if (count > length) {
|
|
5361
|
+
throw new Error("ERROR: Huffman table format error [count>Lh]");
|
|
5362
|
+
}
|
|
5363
|
+
this.v[t][c][i][j] = data.get8();
|
|
5364
|
+
count += 1;
|
|
5365
|
+
}
|
|
5366
|
+
}
|
|
5367
|
+
}
|
|
5368
|
+
if (count !== length) {
|
|
5369
|
+
throw new Error("ERROR: Huffman table format error [count!=Lf]");
|
|
5370
|
+
}
|
|
5371
|
+
for (i = 0; i < 4; i += 1) {
|
|
5372
|
+
for (j = 0; j < 2; j += 1) {
|
|
5373
|
+
if (this.tc[i][j] !== 0) {
|
|
5374
|
+
this.buildHuffTable(HuffTab[i][j], this.l[i][j], this.v[i][j]);
|
|
5375
|
+
}
|
|
5376
|
+
}
|
|
5377
|
+
}
|
|
5378
|
+
return 1;
|
|
5379
|
+
};
|
|
5380
|
+
jpeg.lossless.HuffmanTable.prototype.buildHuffTable = function(tab, L, V) {
|
|
5381
|
+
var currentTable, temp, k, i, j, n;
|
|
5382
|
+
temp = 256;
|
|
5383
|
+
k = 0;
|
|
5384
|
+
for (i = 0; i < 8; i += 1) {
|
|
5385
|
+
for (j = 0; j < L[i]; j += 1) {
|
|
5386
|
+
for (n = 0; n < temp >> i + 1; n += 1) {
|
|
5387
|
+
tab[k] = V[i][j] | i + 1 << 8;
|
|
5388
|
+
k += 1;
|
|
5389
|
+
}
|
|
5390
|
+
}
|
|
5391
|
+
}
|
|
5392
|
+
for (i = 1; k < 256; i += 1, k += 1) {
|
|
5393
|
+
tab[k] = i | jpeg.lossless.HuffmanTable.MSB;
|
|
5394
|
+
}
|
|
5395
|
+
currentTable = 1;
|
|
5396
|
+
k = 0;
|
|
5397
|
+
for (i = 8; i < 16; i += 1) {
|
|
5398
|
+
for (j = 0; j < L[i]; j += 1) {
|
|
5399
|
+
for (n = 0; n < temp >> i - 7; n += 1) {
|
|
5400
|
+
tab[currentTable * 256 + k] = V[i][j] | i + 1 << 8;
|
|
5401
|
+
k += 1;
|
|
5402
|
+
}
|
|
5403
|
+
if (k >= 256) {
|
|
5404
|
+
if (k > 256) {
|
|
5405
|
+
throw new Error("ERROR: Huffman table error(1)!");
|
|
5406
|
+
}
|
|
5407
|
+
k = 0;
|
|
5408
|
+
currentTable += 1;
|
|
5409
|
+
}
|
|
5410
|
+
}
|
|
5411
|
+
}
|
|
5412
|
+
};
|
|
5413
|
+
var moduleType = typeof module;
|
|
5414
|
+
if (moduleType !== "undefined" && module.exports) {
|
|
5415
|
+
module.exports = jpeg.lossless.HuffmanTable;
|
|
5416
|
+
}
|
|
5449
5417
|
}
|
|
5450
|
-
|
|
5451
|
-
|
|
5452
|
-
|
|
5453
|
-
|
|
5454
|
-
|
|
5455
|
-
|
|
5456
|
-
|
|
5457
|
-
|
|
5458
|
-
|
|
5459
|
-
|
|
5418
|
+
});
|
|
5419
|
+
|
|
5420
|
+
// src/quantization-table.js
|
|
5421
|
+
var require_quantization_table = __commonJS({
|
|
5422
|
+
"src/quantization-table.js"(exports, module) {
|
|
5423
|
+
"use strict";
|
|
5424
|
+
var jpeg = jpeg || {};
|
|
5425
|
+
jpeg.lossless = jpeg.lossless || {};
|
|
5426
|
+
jpeg.lossless.DataStream = jpeg.lossless.DataStream || (typeof __require !== "undefined" ? require_data_stream() : null);
|
|
5427
|
+
jpeg.lossless.Utils = jpeg.lossless.Utils || (typeof __require !== "undefined" ? require_utils() : null);
|
|
5428
|
+
jpeg.lossless.QuantizationTable = jpeg.lossless.QuantizationTable || function() {
|
|
5429
|
+
this.precision = [];
|
|
5430
|
+
this.tq = [];
|
|
5431
|
+
this.quantTables = jpeg.lossless.Utils.createArray(4, 64);
|
|
5432
|
+
this.tq[0] = 0;
|
|
5433
|
+
this.tq[1] = 0;
|
|
5434
|
+
this.tq[2] = 0;
|
|
5435
|
+
this.tq[3] = 0;
|
|
5436
|
+
};
|
|
5437
|
+
jpeg.lossless.QuantizationTable.enhanceQuantizationTable = function(qtab, table) {
|
|
5438
|
+
var i;
|
|
5439
|
+
for (i = 0; i < 8; i += 1) {
|
|
5440
|
+
qtab[table[0 * 8 + i]] *= 90;
|
|
5441
|
+
qtab[table[4 * 8 + i]] *= 90;
|
|
5442
|
+
qtab[table[2 * 8 + i]] *= 118;
|
|
5443
|
+
qtab[table[6 * 8 + i]] *= 49;
|
|
5444
|
+
qtab[table[5 * 8 + i]] *= 71;
|
|
5445
|
+
qtab[table[1 * 8 + i]] *= 126;
|
|
5446
|
+
qtab[table[7 * 8 + i]] *= 25;
|
|
5447
|
+
qtab[table[3 * 8 + i]] *= 106;
|
|
5448
|
+
}
|
|
5449
|
+
for (i = 0; i < 8; i += 1) {
|
|
5450
|
+
qtab[table[0 + 8 * i]] *= 90;
|
|
5451
|
+
qtab[table[4 + 8 * i]] *= 90;
|
|
5452
|
+
qtab[table[2 + 8 * i]] *= 118;
|
|
5453
|
+
qtab[table[6 + 8 * i]] *= 49;
|
|
5454
|
+
qtab[table[5 + 8 * i]] *= 71;
|
|
5455
|
+
qtab[table[1 + 8 * i]] *= 126;
|
|
5456
|
+
qtab[table[7 + 8 * i]] *= 25;
|
|
5457
|
+
qtab[table[3 + 8 * i]] *= 106;
|
|
5458
|
+
}
|
|
5459
|
+
for (i = 0; i < 64; i += 1) {
|
|
5460
|
+
qtab[i] >>= 6;
|
|
5461
|
+
}
|
|
5462
|
+
};
|
|
5463
|
+
jpeg.lossless.QuantizationTable.prototype.read = function(data, table) {
|
|
5464
|
+
var count = 0, length, temp, t, i;
|
|
5465
|
+
length = data.get16();
|
|
5466
|
+
count += 2;
|
|
5467
|
+
while (count < length) {
|
|
5468
|
+
temp = data.get8();
|
|
5469
|
+
count += 1;
|
|
5470
|
+
t = temp & 15;
|
|
5471
|
+
if (t > 3) {
|
|
5472
|
+
throw new Error("ERROR: Quantization table ID > 3");
|
|
5473
|
+
}
|
|
5474
|
+
this.precision[t] = temp >> 4;
|
|
5475
|
+
if (this.precision[t] === 0) {
|
|
5476
|
+
this.precision[t] = 8;
|
|
5477
|
+
} else if (this.precision[t] === 1) {
|
|
5478
|
+
this.precision[t] = 16;
|
|
5479
|
+
} else {
|
|
5480
|
+
throw new Error("ERROR: Quantization table precision error");
|
|
5481
|
+
}
|
|
5482
|
+
this.tq[t] = 1;
|
|
5483
|
+
if (this.precision[t] === 8) {
|
|
5484
|
+
for (i = 0; i < 64; i += 1) {
|
|
5485
|
+
if (count > length) {
|
|
5486
|
+
throw new Error("ERROR: Quantization table format error");
|
|
5487
|
+
}
|
|
5488
|
+
this.quantTables[t][i] = data.get8();
|
|
5489
|
+
count += 1;
|
|
5490
|
+
}
|
|
5491
|
+
jpeg.lossless.QuantizationTable.enhanceQuantizationTable(this.quantTables[t], table);
|
|
5492
|
+
} else {
|
|
5493
|
+
for (i = 0; i < 64; i += 1) {
|
|
5494
|
+
if (count > length) {
|
|
5495
|
+
throw new Error("ERROR: Quantization table format error");
|
|
5496
|
+
}
|
|
5497
|
+
this.quantTables[t][i] = data.get16();
|
|
5498
|
+
count += 2;
|
|
5499
|
+
}
|
|
5500
|
+
jpeg.lossless.QuantizationTable.enhanceQuantizationTable(this.quantTables[t], table);
|
|
5501
|
+
}
|
|
5502
|
+
}
|
|
5503
|
+
if (count !== length) {
|
|
5504
|
+
throw new Error("ERROR: Quantization table error [count!=Lq]");
|
|
5505
|
+
}
|
|
5506
|
+
return 1;
|
|
5507
|
+
};
|
|
5508
|
+
var moduleType = typeof module;
|
|
5509
|
+
if (moduleType !== "undefined" && module.exports) {
|
|
5510
|
+
module.exports = jpeg.lossless.QuantizationTable;
|
|
5511
|
+
}
|
|
5460
5512
|
}
|
|
5461
|
-
|
|
5462
|
-
|
|
5463
|
-
|
|
5464
|
-
|
|
5465
|
-
|
|
5466
|
-
|
|
5513
|
+
});
|
|
5514
|
+
|
|
5515
|
+
// src/scan-component.js
|
|
5516
|
+
var require_scan_component = __commonJS({
|
|
5517
|
+
"src/scan-component.js"(exports, module) {
|
|
5518
|
+
"use strict";
|
|
5519
|
+
var jpeg = jpeg || {};
|
|
5520
|
+
jpeg.lossless = jpeg.lossless || {};
|
|
5521
|
+
jpeg.lossless.ScanComponent = jpeg.lossless.ScanComponent || function() {
|
|
5522
|
+
this.acTabSel = 0;
|
|
5523
|
+
this.dcTabSel = 0;
|
|
5524
|
+
this.scanCompSel = 0;
|
|
5525
|
+
};
|
|
5526
|
+
var moduleType = typeof module;
|
|
5527
|
+
if (moduleType !== "undefined" && module.exports) {
|
|
5528
|
+
module.exports = jpeg.lossless.ScanComponent;
|
|
5529
|
+
}
|
|
5530
|
+
}
|
|
5531
|
+
});
|
|
5532
|
+
|
|
5533
|
+
// src/scan-header.js
|
|
5534
|
+
var require_scan_header = __commonJS({
|
|
5535
|
+
"src/scan-header.js"(exports, module) {
|
|
5536
|
+
"use strict";
|
|
5537
|
+
var jpeg = jpeg || {};
|
|
5538
|
+
jpeg.lossless = jpeg.lossless || {};
|
|
5539
|
+
jpeg.lossless.DataStream = jpeg.lossless.DataStream || (typeof __require !== "undefined" ? require_data_stream() : null);
|
|
5540
|
+
jpeg.lossless.ScanComponent = jpeg.lossless.ScanComponent || (typeof __require !== "undefined" ? require_scan_component() : null);
|
|
5541
|
+
jpeg.lossless.ScanHeader = jpeg.lossless.ScanHeader || function() {
|
|
5542
|
+
this.ah = 0;
|
|
5543
|
+
this.al = 0;
|
|
5544
|
+
this.numComp = 0;
|
|
5545
|
+
this.selection = 0;
|
|
5546
|
+
this.spectralEnd = 0;
|
|
5547
|
+
this.components = [];
|
|
5548
|
+
};
|
|
5549
|
+
jpeg.lossless.ScanHeader.prototype.read = function(data) {
|
|
5550
|
+
var count = 0, length, i, temp;
|
|
5551
|
+
length = data.get16();
|
|
5552
|
+
count += 2;
|
|
5553
|
+
this.numComp = data.get8();
|
|
5554
|
+
count += 1;
|
|
5555
|
+
for (i = 0; i < this.numComp; i += 1) {
|
|
5556
|
+
this.components[i] = new jpeg.lossless.ScanComponent();
|
|
5557
|
+
if (count > length) {
|
|
5558
|
+
throw new Error("ERROR: scan header format error");
|
|
5559
|
+
}
|
|
5560
|
+
this.components[i].scanCompSel = data.get8();
|
|
5561
|
+
count += 1;
|
|
5562
|
+
temp = data.get8();
|
|
5563
|
+
count += 1;
|
|
5564
|
+
this.components[i].dcTabSel = temp >> 4;
|
|
5565
|
+
this.components[i].acTabSel = temp & 15;
|
|
5566
|
+
}
|
|
5567
|
+
this.selection = data.get8();
|
|
5568
|
+
count += 1;
|
|
5569
|
+
this.spectralEnd = data.get8();
|
|
5570
|
+
count += 1;
|
|
5571
|
+
temp = data.get8();
|
|
5572
|
+
this.ah = temp >> 4;
|
|
5573
|
+
this.al = temp & 15;
|
|
5574
|
+
count += 1;
|
|
5575
|
+
if (count !== length) {
|
|
5576
|
+
throw new Error("ERROR: scan header format error [count!=Ns]");
|
|
5577
|
+
}
|
|
5578
|
+
return 1;
|
|
5579
|
+
};
|
|
5580
|
+
var moduleType = typeof module;
|
|
5581
|
+
if (moduleType !== "undefined" && module.exports) {
|
|
5582
|
+
module.exports = jpeg.lossless.ScanHeader;
|
|
5583
|
+
}
|
|
5584
|
+
}
|
|
5585
|
+
});
|
|
5586
|
+
|
|
5587
|
+
// src/frame-header.js
|
|
5588
|
+
var require_frame_header = __commonJS({
|
|
5589
|
+
"src/frame-header.js"(exports, module) {
|
|
5590
|
+
"use strict";
|
|
5591
|
+
var jpeg = jpeg || {};
|
|
5592
|
+
jpeg.lossless = jpeg.lossless || {};
|
|
5593
|
+
jpeg.lossless.ComponentSpec = jpeg.lossless.ComponentSpec || (typeof __require !== "undefined" ? require_component_spec() : null);
|
|
5594
|
+
jpeg.lossless.DataStream = jpeg.lossless.DataStream || (typeof __require !== "undefined" ? require_data_stream() : null);
|
|
5595
|
+
jpeg.lossless.FrameHeader = jpeg.lossless.FrameHeader || function() {
|
|
5596
|
+
this.components = [];
|
|
5597
|
+
this.dimX = 0;
|
|
5598
|
+
this.dimY = 0;
|
|
5599
|
+
this.numComp = 0;
|
|
5600
|
+
this.precision = 0;
|
|
5601
|
+
};
|
|
5602
|
+
jpeg.lossless.FrameHeader.prototype.read = function(data) {
|
|
5603
|
+
var count = 0, length, i, c, temp;
|
|
5604
|
+
length = data.get16();
|
|
5605
|
+
count += 2;
|
|
5606
|
+
this.precision = data.get8();
|
|
5607
|
+
count += 1;
|
|
5608
|
+
this.dimY = data.get16();
|
|
5609
|
+
count += 2;
|
|
5610
|
+
this.dimX = data.get16();
|
|
5611
|
+
count += 2;
|
|
5612
|
+
this.numComp = data.get8();
|
|
5613
|
+
count += 1;
|
|
5614
|
+
for (i = 1; i <= this.numComp; i += 1) {
|
|
5615
|
+
if (count > length) {
|
|
5616
|
+
throw new Error("ERROR: frame format error");
|
|
5617
|
+
}
|
|
5618
|
+
c = data.get8();
|
|
5619
|
+
count += 1;
|
|
5620
|
+
if (count >= length) {
|
|
5621
|
+
throw new Error("ERROR: frame format error [c>=Lf]");
|
|
5622
|
+
}
|
|
5623
|
+
temp = data.get8();
|
|
5624
|
+
count += 1;
|
|
5625
|
+
if (!this.components[c]) {
|
|
5626
|
+
this.components[c] = new jpeg.lossless.ComponentSpec();
|
|
5627
|
+
}
|
|
5628
|
+
this.components[c].hSamp = temp >> 4;
|
|
5629
|
+
this.components[c].vSamp = temp & 15;
|
|
5630
|
+
this.components[c].quantTableSel = data.get8();
|
|
5631
|
+
count += 1;
|
|
5632
|
+
}
|
|
5633
|
+
if (count !== length) {
|
|
5634
|
+
throw new Error("ERROR: frame format error [Lf!=count]");
|
|
5635
|
+
}
|
|
5636
|
+
return 1;
|
|
5637
|
+
};
|
|
5638
|
+
var moduleType = typeof module;
|
|
5639
|
+
if (moduleType !== "undefined" && module.exports) {
|
|
5640
|
+
module.exports = jpeg.lossless.FrameHeader;
|
|
5641
|
+
}
|
|
5642
|
+
}
|
|
5643
|
+
});
|
|
5644
|
+
|
|
5645
|
+
// src/decoder.js
|
|
5646
|
+
var require_decoder = __commonJS({
|
|
5647
|
+
"src/decoder.js"(exports, module) {
|
|
5648
|
+
"use strict";
|
|
5649
|
+
var jpeg = jpeg || {};
|
|
5650
|
+
jpeg.lossless = jpeg.lossless || {};
|
|
5651
|
+
jpeg.lossless.DataStream = jpeg.lossless.DataStream || (typeof __require !== "undefined" ? require_data_stream() : null);
|
|
5652
|
+
jpeg.lossless.HuffmanTable = jpeg.lossless.HuffmanTable || (typeof __require !== "undefined" ? require_huffman_table() : null);
|
|
5653
|
+
jpeg.lossless.QuantizationTable = jpeg.lossless.QuantizationTable || (typeof __require !== "undefined" ? require_quantization_table() : null);
|
|
5654
|
+
jpeg.lossless.ScanHeader = jpeg.lossless.ScanHeader || (typeof __require !== "undefined" ? require_scan_header() : null);
|
|
5655
|
+
jpeg.lossless.FrameHeader = jpeg.lossless.FrameHeader || (typeof __require !== "undefined" ? require_frame_header() : null);
|
|
5656
|
+
jpeg.lossless.Utils = jpeg.lossless.Utils || (typeof __require !== "undefined" ? require_utils() : null);
|
|
5657
|
+
jpeg.lossless.Decoder = jpeg.lossless.Decoder || function(buffer, numBytes) {
|
|
5658
|
+
this.buffer = buffer;
|
|
5659
|
+
this.frame = new jpeg.lossless.FrameHeader();
|
|
5660
|
+
this.huffTable = new jpeg.lossless.HuffmanTable();
|
|
5661
|
+
this.quantTable = new jpeg.lossless.QuantizationTable();
|
|
5662
|
+
this.scan = new jpeg.lossless.ScanHeader();
|
|
5663
|
+
this.DU = jpeg.lossless.Utils.createArray(10, 4, 64);
|
|
5664
|
+
this.HuffTab = jpeg.lossless.Utils.createArray(4, 2, 50 * 256);
|
|
5665
|
+
this.IDCT_Source = [];
|
|
5666
|
+
this.nBlock = [];
|
|
5667
|
+
this.acTab = jpeg.lossless.Utils.createArray(10, 1);
|
|
5668
|
+
this.dcTab = jpeg.lossless.Utils.createArray(10, 1);
|
|
5669
|
+
this.qTab = jpeg.lossless.Utils.createArray(10, 1);
|
|
5670
|
+
this.marker = 0;
|
|
5671
|
+
this.markerIndex = 0;
|
|
5672
|
+
this.numComp = 0;
|
|
5673
|
+
this.restartInterval = 0;
|
|
5674
|
+
this.selection = 0;
|
|
5675
|
+
this.xDim = 0;
|
|
5676
|
+
this.yDim = 0;
|
|
5677
|
+
this.xLoc = 0;
|
|
5678
|
+
this.yLoc = 0;
|
|
5679
|
+
this.numBytes = 0;
|
|
5680
|
+
this.outputData = null;
|
|
5681
|
+
this.restarting = false;
|
|
5682
|
+
this.mask = 0;
|
|
5683
|
+
if (typeof numBytes !== "undefined") {
|
|
5684
|
+
this.numBytes = numBytes;
|
|
5685
|
+
}
|
|
5686
|
+
};
|
|
5687
|
+
jpeg.lossless.Decoder.IDCT_P = [
|
|
5688
|
+
0,
|
|
5689
|
+
5,
|
|
5690
|
+
40,
|
|
5691
|
+
16,
|
|
5692
|
+
45,
|
|
5693
|
+
2,
|
|
5694
|
+
7,
|
|
5695
|
+
42,
|
|
5696
|
+
21,
|
|
5697
|
+
56,
|
|
5698
|
+
8,
|
|
5699
|
+
61,
|
|
5700
|
+
18,
|
|
5701
|
+
47,
|
|
5702
|
+
1,
|
|
5703
|
+
4,
|
|
5704
|
+
41,
|
|
5705
|
+
23,
|
|
5706
|
+
58,
|
|
5707
|
+
13,
|
|
5708
|
+
32,
|
|
5709
|
+
24,
|
|
5710
|
+
37,
|
|
5711
|
+
10,
|
|
5712
|
+
63,
|
|
5713
|
+
17,
|
|
5714
|
+
44,
|
|
5715
|
+
3,
|
|
5716
|
+
6,
|
|
5717
|
+
43,
|
|
5718
|
+
20,
|
|
5719
|
+
57,
|
|
5720
|
+
15,
|
|
5721
|
+
34,
|
|
5722
|
+
29,
|
|
5723
|
+
48,
|
|
5724
|
+
53,
|
|
5725
|
+
26,
|
|
5726
|
+
39,
|
|
5727
|
+
9,
|
|
5728
|
+
60,
|
|
5729
|
+
19,
|
|
5730
|
+
46,
|
|
5731
|
+
22,
|
|
5732
|
+
59,
|
|
5733
|
+
12,
|
|
5734
|
+
33,
|
|
5735
|
+
31,
|
|
5736
|
+
50,
|
|
5737
|
+
55,
|
|
5738
|
+
25,
|
|
5739
|
+
36,
|
|
5740
|
+
11,
|
|
5741
|
+
62,
|
|
5742
|
+
14,
|
|
5743
|
+
35,
|
|
5744
|
+
28,
|
|
5745
|
+
49,
|
|
5746
|
+
52,
|
|
5747
|
+
27,
|
|
5748
|
+
38,
|
|
5749
|
+
30,
|
|
5750
|
+
51,
|
|
5751
|
+
54
|
|
5752
|
+
];
|
|
5753
|
+
jpeg.lossless.Decoder.TABLE = [
|
|
5754
|
+
0,
|
|
5755
|
+
1,
|
|
5756
|
+
5,
|
|
5757
|
+
6,
|
|
5758
|
+
14,
|
|
5759
|
+
15,
|
|
5760
|
+
27,
|
|
5761
|
+
28,
|
|
5762
|
+
2,
|
|
5763
|
+
4,
|
|
5764
|
+
7,
|
|
5765
|
+
13,
|
|
5766
|
+
16,
|
|
5767
|
+
26,
|
|
5768
|
+
29,
|
|
5769
|
+
42,
|
|
5770
|
+
3,
|
|
5771
|
+
8,
|
|
5772
|
+
12,
|
|
5773
|
+
17,
|
|
5774
|
+
25,
|
|
5775
|
+
30,
|
|
5776
|
+
41,
|
|
5777
|
+
43,
|
|
5778
|
+
9,
|
|
5779
|
+
11,
|
|
5780
|
+
18,
|
|
5781
|
+
24,
|
|
5782
|
+
31,
|
|
5783
|
+
40,
|
|
5784
|
+
44,
|
|
5785
|
+
53,
|
|
5786
|
+
10,
|
|
5787
|
+
19,
|
|
5788
|
+
23,
|
|
5789
|
+
32,
|
|
5790
|
+
39,
|
|
5791
|
+
45,
|
|
5792
|
+
52,
|
|
5793
|
+
54,
|
|
5794
|
+
20,
|
|
5795
|
+
22,
|
|
5796
|
+
33,
|
|
5797
|
+
38,
|
|
5798
|
+
46,
|
|
5799
|
+
51,
|
|
5800
|
+
55,
|
|
5801
|
+
60,
|
|
5802
|
+
21,
|
|
5803
|
+
34,
|
|
5804
|
+
37,
|
|
5805
|
+
47,
|
|
5806
|
+
50,
|
|
5807
|
+
56,
|
|
5808
|
+
59,
|
|
5809
|
+
61,
|
|
5810
|
+
35,
|
|
5811
|
+
36,
|
|
5812
|
+
48,
|
|
5813
|
+
49,
|
|
5814
|
+
57,
|
|
5815
|
+
58,
|
|
5816
|
+
62,
|
|
5817
|
+
63
|
|
5818
|
+
];
|
|
5819
|
+
jpeg.lossless.Decoder.MAX_HUFFMAN_SUBTREE = 50;
|
|
5820
|
+
jpeg.lossless.Decoder.MSB = 2147483648;
|
|
5821
|
+
jpeg.lossless.Decoder.RESTART_MARKER_BEGIN = 65488;
|
|
5822
|
+
jpeg.lossless.Decoder.RESTART_MARKER_END = 65495;
|
|
5823
|
+
jpeg.lossless.Decoder.prototype.decompress = function(buffer, offset, length) {
|
|
5824
|
+
return this.decode(buffer, offset, length).buffer;
|
|
5825
|
+
};
|
|
5826
|
+
jpeg.lossless.Decoder.prototype.decode = function(buffer, offset, length, numBytes) {
|
|
5827
|
+
var current, scanNum = 0, pred = [], i, compN, temp = [], index = [], mcuNum;
|
|
5828
|
+
if (typeof buffer !== "undefined") {
|
|
5829
|
+
this.buffer = buffer;
|
|
5830
|
+
}
|
|
5831
|
+
if (typeof numBytes !== "undefined") {
|
|
5832
|
+
this.numBytes = numBytes;
|
|
5833
|
+
}
|
|
5834
|
+
this.stream = new jpeg.lossless.DataStream(this.buffer, offset, length);
|
|
5835
|
+
this.buffer = null;
|
|
5836
|
+
this.xLoc = 0;
|
|
5837
|
+
this.yLoc = 0;
|
|
5838
|
+
current = this.stream.get16();
|
|
5839
|
+
if (current !== 65496) {
|
|
5840
|
+
throw new Error("Not a JPEG file");
|
|
5841
|
+
}
|
|
5842
|
+
current = this.stream.get16();
|
|
5843
|
+
while (current >> 4 !== 4092 || current === 65476) {
|
|
5844
|
+
switch (current) {
|
|
5845
|
+
case 65476:
|
|
5846
|
+
this.huffTable.read(this.stream, this.HuffTab);
|
|
5847
|
+
break;
|
|
5848
|
+
case 65484:
|
|
5849
|
+
throw new Error("Program doesn't support arithmetic coding. (format throw new IOException)");
|
|
5850
|
+
case 65499:
|
|
5851
|
+
this.quantTable.read(this.stream, jpeg.lossless.Decoder.TABLE);
|
|
5852
|
+
break;
|
|
5853
|
+
case 65501:
|
|
5854
|
+
this.restartInterval = this.readNumber();
|
|
5855
|
+
break;
|
|
5856
|
+
case 65504:
|
|
5857
|
+
case 65505:
|
|
5858
|
+
case 65506:
|
|
5859
|
+
case 65507:
|
|
5860
|
+
case 65508:
|
|
5861
|
+
case 65509:
|
|
5862
|
+
case 65510:
|
|
5863
|
+
case 65511:
|
|
5864
|
+
case 65512:
|
|
5865
|
+
case 65513:
|
|
5866
|
+
case 65514:
|
|
5867
|
+
case 65515:
|
|
5868
|
+
case 65516:
|
|
5869
|
+
case 65517:
|
|
5870
|
+
case 65518:
|
|
5871
|
+
case 65519:
|
|
5872
|
+
this.readApp();
|
|
5873
|
+
break;
|
|
5874
|
+
case 65534:
|
|
5875
|
+
this.readComment();
|
|
5876
|
+
break;
|
|
5877
|
+
default:
|
|
5878
|
+
if (current >> 8 !== 255) {
|
|
5879
|
+
throw new Error("ERROR: format throw new IOException! (decode)");
|
|
5880
|
+
}
|
|
5881
|
+
}
|
|
5882
|
+
current = this.stream.get16();
|
|
5883
|
+
}
|
|
5884
|
+
if (current < 65472 || current > 65479) {
|
|
5885
|
+
throw new Error("ERROR: could not handle arithmetic code!");
|
|
5886
|
+
}
|
|
5887
|
+
this.frame.read(this.stream);
|
|
5888
|
+
current = this.stream.get16();
|
|
5889
|
+
do {
|
|
5890
|
+
while (current !== 65498) {
|
|
5891
|
+
switch (current) {
|
|
5892
|
+
case 65476:
|
|
5467
5893
|
this.huffTable.read(this.stream, this.HuffTab);
|
|
5468
5894
|
break;
|
|
5469
|
-
|
|
5895
|
+
case 65484:
|
|
5470
5896
|
throw new Error("Program doesn't support arithmetic coding. (format throw new IOException)");
|
|
5471
|
-
|
|
5897
|
+
case 65499:
|
|
5472
5898
|
this.quantTable.read(this.stream, jpeg.lossless.Decoder.TABLE);
|
|
5473
5899
|
break;
|
|
5474
|
-
|
|
5900
|
+
case 65501:
|
|
5475
5901
|
this.restartInterval = this.readNumber();
|
|
5476
5902
|
break;
|
|
5477
|
-
|
|
5478
|
-
|
|
5479
|
-
|
|
5480
|
-
|
|
5481
|
-
|
|
5482
|
-
|
|
5483
|
-
|
|
5484
|
-
|
|
5485
|
-
|
|
5486
|
-
|
|
5487
|
-
|
|
5488
|
-
|
|
5489
|
-
|
|
5490
|
-
|
|
5491
|
-
|
|
5492
|
-
|
|
5903
|
+
case 65504:
|
|
5904
|
+
case 65505:
|
|
5905
|
+
case 65506:
|
|
5906
|
+
case 65507:
|
|
5907
|
+
case 65508:
|
|
5908
|
+
case 65509:
|
|
5909
|
+
case 65510:
|
|
5910
|
+
case 65511:
|
|
5911
|
+
case 65512:
|
|
5912
|
+
case 65513:
|
|
5913
|
+
case 65514:
|
|
5914
|
+
case 65515:
|
|
5915
|
+
case 65516:
|
|
5916
|
+
case 65517:
|
|
5917
|
+
case 65518:
|
|
5918
|
+
case 65519:
|
|
5493
5919
|
this.readApp();
|
|
5494
5920
|
break;
|
|
5495
|
-
|
|
5921
|
+
case 65534:
|
|
5496
5922
|
this.readComment();
|
|
5497
5923
|
break;
|
|
5498
|
-
|
|
5499
|
-
if (
|
|
5500
|
-
|
|
5924
|
+
default:
|
|
5925
|
+
if (current >> 8 !== 255) {
|
|
5926
|
+
throw new Error("ERROR: format throw new IOException! (Parser.decode)");
|
|
5501
5927
|
}
|
|
5502
|
-
}
|
|
5503
|
-
|
|
5504
|
-
current = this.stream.get16();
|
|
5505
|
-
}
|
|
5506
|
-
|
|
5507
|
-
if ((current < 0xFFC0) || (current > 0xFFC7)) {
|
|
5508
|
-
throw new Error("ERROR: could not handle arithmetic code!");
|
|
5509
|
-
}
|
|
5510
|
-
|
|
5511
|
-
this.frame.read(this.stream);
|
|
5512
|
-
current = this.stream.get16();
|
|
5513
|
-
|
|
5514
|
-
do {
|
|
5515
|
-
while (current !== 0x0FFDA) { // SOS
|
|
5516
|
-
switch (current) {
|
|
5517
|
-
case 0xFFC4: // DHT
|
|
5518
|
-
this.huffTable.read(this.stream, this.HuffTab);
|
|
5519
|
-
break;
|
|
5520
|
-
case 0xFFCC: // DAC
|
|
5521
|
-
throw new Error("Program doesn't support arithmetic coding. (format throw new IOException)");
|
|
5522
|
-
case 0xFFDB:
|
|
5523
|
-
this.quantTable.read(this.stream, jpeg.lossless.Decoder.TABLE);
|
|
5524
|
-
break;
|
|
5525
|
-
case 0xFFDD:
|
|
5526
|
-
this.restartInterval = this.readNumber();
|
|
5527
|
-
break;
|
|
5528
|
-
case 0xFFE0:
|
|
5529
|
-
case 0xFFE1:
|
|
5530
|
-
case 0xFFE2:
|
|
5531
|
-
case 0xFFE3:
|
|
5532
|
-
case 0xFFE4:
|
|
5533
|
-
case 0xFFE5:
|
|
5534
|
-
case 0xFFE6:
|
|
5535
|
-
case 0xFFE7:
|
|
5536
|
-
case 0xFFE8:
|
|
5537
|
-
case 0xFFE9:
|
|
5538
|
-
case 0xFFEA:
|
|
5539
|
-
case 0xFFEB:
|
|
5540
|
-
case 0xFFEC:
|
|
5541
|
-
case 0xFFED:
|
|
5542
|
-
case 0xFFEE:
|
|
5543
|
-
case 0xFFEF:
|
|
5544
|
-
this.readApp();
|
|
5545
|
-
break;
|
|
5546
|
-
case 0xFFFE:
|
|
5547
|
-
this.readComment();
|
|
5548
|
-
break;
|
|
5549
|
-
default:
|
|
5550
|
-
if ((current >> 8) !== 0xFF) {
|
|
5551
|
-
throw new Error("ERROR: format throw new IOException! (Parser.decode)");
|
|
5552
|
-
}
|
|
5553
5928
|
}
|
|
5554
|
-
|
|
5555
5929
|
current = this.stream.get16();
|
|
5556
|
-
|
|
5557
|
-
|
|
5558
|
-
|
|
5559
|
-
|
|
5560
|
-
|
|
5561
|
-
if (!this.numBytes) {
|
|
5930
|
+
}
|
|
5931
|
+
this.precision = this.frame.precision;
|
|
5932
|
+
this.components = this.frame.components;
|
|
5933
|
+
if (!this.numBytes) {
|
|
5562
5934
|
this.numBytes = parseInt(Math.ceil(this.precision / 8));
|
|
5563
|
-
|
|
5564
|
-
|
|
5565
|
-
|
|
5566
|
-
|
|
5567
|
-
|
|
5568
|
-
|
|
5569
|
-
|
|
5570
|
-
|
|
5571
|
-
|
|
5572
|
-
|
|
5573
|
-
this.selection = this.scan.selection;
|
|
5574
|
-
|
|
5575
|
-
if (this.numBytes === 1) {
|
|
5935
|
+
}
|
|
5936
|
+
if (this.numBytes == 1) {
|
|
5937
|
+
this.mask = 255;
|
|
5938
|
+
} else {
|
|
5939
|
+
this.mask = 65535;
|
|
5940
|
+
}
|
|
5941
|
+
this.scan.read(this.stream);
|
|
5942
|
+
this.numComp = this.scan.numComp;
|
|
5943
|
+
this.selection = this.scan.selection;
|
|
5944
|
+
if (this.numBytes === 1) {
|
|
5576
5945
|
if (this.numComp === 3) {
|
|
5577
|
-
|
|
5578
|
-
|
|
5579
|
-
|
|
5946
|
+
this.getter = this.getValueRGB;
|
|
5947
|
+
this.setter = this.setValueRGB;
|
|
5948
|
+
this.output = this.outputRGB;
|
|
5580
5949
|
} else {
|
|
5581
|
-
|
|
5582
|
-
|
|
5583
|
-
|
|
5950
|
+
this.getter = this.getValue8;
|
|
5951
|
+
this.setter = this.setValue8;
|
|
5952
|
+
this.output = this.outputSingle;
|
|
5584
5953
|
}
|
|
5585
|
-
|
|
5954
|
+
} else {
|
|
5586
5955
|
this.getter = this.getValue16;
|
|
5587
5956
|
this.setter = this.setValue16;
|
|
5588
5957
|
this.output = this.outputSingle;
|
|
5589
|
-
|
|
5590
|
-
|
|
5591
|
-
switch (this.selection) {
|
|
5958
|
+
}
|
|
5959
|
+
switch (this.selection) {
|
|
5592
5960
|
case 2:
|
|
5593
|
-
|
|
5594
|
-
|
|
5961
|
+
this.selector = this.select2;
|
|
5962
|
+
break;
|
|
5595
5963
|
case 3:
|
|
5596
|
-
|
|
5597
|
-
|
|
5964
|
+
this.selector = this.select3;
|
|
5965
|
+
break;
|
|
5598
5966
|
case 4:
|
|
5599
|
-
|
|
5600
|
-
|
|
5967
|
+
this.selector = this.select4;
|
|
5968
|
+
break;
|
|
5601
5969
|
case 5:
|
|
5602
|
-
|
|
5603
|
-
|
|
5970
|
+
this.selector = this.select5;
|
|
5971
|
+
break;
|
|
5604
5972
|
case 6:
|
|
5605
|
-
|
|
5606
|
-
|
|
5973
|
+
this.selector = this.select6;
|
|
5974
|
+
break;
|
|
5607
5975
|
case 7:
|
|
5608
|
-
|
|
5609
|
-
|
|
5976
|
+
this.selector = this.select7;
|
|
5977
|
+
break;
|
|
5610
5978
|
default:
|
|
5611
|
-
|
|
5612
|
-
|
|
5613
|
-
|
|
5614
|
-
|
|
5615
|
-
|
|
5616
|
-
|
|
5617
|
-
|
|
5618
|
-
for (i = 0; i < this.numComp; i+=1) {
|
|
5979
|
+
this.selector = this.select1;
|
|
5980
|
+
break;
|
|
5981
|
+
}
|
|
5982
|
+
this.scanComps = this.scan.components;
|
|
5983
|
+
this.quantTables = this.quantTable.quantTables;
|
|
5984
|
+
for (i = 0; i < this.numComp; i += 1) {
|
|
5619
5985
|
compN = this.scanComps[i].scanCompSel;
|
|
5620
5986
|
this.qTab[i] = this.quantTables[this.components[compN].quantTableSel];
|
|
5621
5987
|
this.nBlock[i] = this.components[compN].vSamp * this.components[compN].hSamp;
|
|
5622
5988
|
this.dcTab[i] = this.HuffTab[this.scanComps[i].dcTabSel][0];
|
|
5623
5989
|
this.acTab[i] = this.HuffTab[this.scanComps[i].acTabSel][1];
|
|
5624
|
-
|
|
5625
|
-
|
|
5626
|
-
|
|
5627
|
-
|
|
5628
|
-
if (this.numBytes == 1) {
|
|
5990
|
+
}
|
|
5991
|
+
this.xDim = this.frame.dimX;
|
|
5992
|
+
this.yDim = this.frame.dimY;
|
|
5993
|
+
if (this.numBytes == 1) {
|
|
5629
5994
|
this.outputData = new Uint8Array(new ArrayBuffer(this.xDim * this.yDim * this.numBytes * this.numComp));
|
|
5630
|
-
|
|
5995
|
+
} else {
|
|
5631
5996
|
this.outputData = new Uint16Array(new ArrayBuffer(this.xDim * this.yDim * this.numBytes * this.numComp));
|
|
5632
|
-
|
|
5633
|
-
|
|
5634
|
-
|
|
5635
|
-
|
|
5636
|
-
while (true) { // Decode one scan
|
|
5997
|
+
}
|
|
5998
|
+
scanNum += 1;
|
|
5999
|
+
while (true) {
|
|
5637
6000
|
temp[0] = 0;
|
|
5638
6001
|
index[0] = 0;
|
|
5639
|
-
|
|
5640
|
-
|
|
5641
|
-
pred[i] = (1 << (this.precision - 1));
|
|
6002
|
+
for (i = 0; i < 10; i += 1) {
|
|
6003
|
+
pred[i] = 1 << this.precision - 1;
|
|
5642
6004
|
}
|
|
5643
|
-
|
|
5644
6005
|
if (this.restartInterval === 0) {
|
|
6006
|
+
current = this.decodeUnit(pred, temp, index);
|
|
6007
|
+
while (current === 0 && (this.xLoc < this.xDim && this.yLoc < this.yDim)) {
|
|
6008
|
+
this.output(pred);
|
|
5645
6009
|
current = this.decodeUnit(pred, temp, index);
|
|
5646
|
-
|
|
5647
|
-
|
|
5648
|
-
this.output(pred);
|
|
5649
|
-
current = this.decodeUnit(pred, temp, index);
|
|
5650
|
-
}
|
|
5651
|
-
|
|
5652
|
-
break; //current=MARKER
|
|
6010
|
+
}
|
|
6011
|
+
break;
|
|
5653
6012
|
}
|
|
5654
|
-
|
|
5655
|
-
|
|
5656
|
-
|
|
5657
|
-
|
|
5658
|
-
|
|
5659
|
-
|
|
5660
|
-
|
|
5661
|
-
break;
|
|
5662
|
-
}
|
|
6013
|
+
for (mcuNum = 0; mcuNum < this.restartInterval; mcuNum += 1) {
|
|
6014
|
+
this.restarting = mcuNum == 0;
|
|
6015
|
+
current = this.decodeUnit(pred, temp, index);
|
|
6016
|
+
this.output(pred);
|
|
6017
|
+
if (current !== 0) {
|
|
6018
|
+
break;
|
|
6019
|
+
}
|
|
5663
6020
|
}
|
|
5664
|
-
|
|
5665
6021
|
if (current === 0) {
|
|
5666
|
-
|
|
5667
|
-
|
|
5668
|
-
|
|
5669
|
-
|
|
5670
|
-
|
|
5671
|
-
|
|
6022
|
+
if (this.markerIndex !== 0) {
|
|
6023
|
+
current = 65280 | this.marker;
|
|
6024
|
+
this.markerIndex = 0;
|
|
6025
|
+
} else {
|
|
6026
|
+
current = this.stream.get16();
|
|
6027
|
+
}
|
|
5672
6028
|
}
|
|
5673
|
-
|
|
5674
|
-
|
|
5675
|
-
(current <= jpeg.lossless.Decoder.RESTART_MARKER_END))) {
|
|
5676
|
-
break; //current=MARKER
|
|
6029
|
+
if (!(current >= jpeg.lossless.Decoder.RESTART_MARKER_BEGIN && current <= jpeg.lossless.Decoder.RESTART_MARKER_END)) {
|
|
6030
|
+
break;
|
|
5677
6031
|
}
|
|
5678
|
-
|
|
5679
|
-
|
|
5680
|
-
if ((current === 0xFFDC) && (scanNum === 1)) { //DNL
|
|
6032
|
+
}
|
|
6033
|
+
if (current === 65500 && scanNum === 1) {
|
|
5681
6034
|
this.readNumber();
|
|
5682
6035
|
current = this.stream.get16();
|
|
6036
|
+
}
|
|
6037
|
+
} while (current !== 65497 && (this.xLoc < this.xDim && this.yLoc < this.yDim) && scanNum === 0);
|
|
6038
|
+
return this.outputData;
|
|
6039
|
+
};
|
|
6040
|
+
jpeg.lossless.Decoder.prototype.decodeUnit = function(prev, temp, index) {
|
|
6041
|
+
if (this.numComp == 1) {
|
|
6042
|
+
return this.decodeSingle(prev, temp, index);
|
|
6043
|
+
} else if (this.numComp == 3) {
|
|
6044
|
+
return this.decodeRGB(prev, temp, index);
|
|
6045
|
+
} else {
|
|
6046
|
+
return -1;
|
|
5683
6047
|
}
|
|
5684
|
-
|
|
5685
|
-
|
|
5686
|
-
|
|
5687
|
-
};
|
|
5688
|
-
|
|
5689
|
-
|
|
5690
|
-
|
|
5691
|
-
jpeg.lossless.Decoder.prototype.
|
|
5692
|
-
|
|
5693
|
-
|
|
5694
|
-
|
|
5695
|
-
return this.
|
|
5696
|
-
|
|
5697
|
-
|
|
5698
|
-
|
|
5699
|
-
};
|
|
5700
|
-
|
|
5701
|
-
|
|
5702
|
-
|
|
5703
|
-
jpeg.lossless.Decoder.prototype.
|
|
5704
|
-
|
|
5705
|
-
};
|
|
5706
|
-
|
|
5707
|
-
|
|
5708
|
-
|
|
5709
|
-
|
|
5710
|
-
|
|
5711
|
-
|
|
5712
|
-
|
|
5713
|
-
|
|
5714
|
-
|
|
5715
|
-
|
|
5716
|
-
|
|
5717
|
-
|
|
5718
|
-
|
|
5719
|
-
|
|
5720
|
-
|
|
5721
|
-
jpeg.lossless.Decoder.prototype.select4 = function (compOffset) {
|
|
5722
|
-
return (this.getPreviousX(compOffset) + this.getPreviousY(compOffset)) - this.getPreviousXY(compOffset);
|
|
5723
|
-
};
|
|
5724
|
-
|
|
5725
|
-
|
|
5726
|
-
|
|
5727
|
-
jpeg.lossless.Decoder.prototype.select5 = function (compOffset) {
|
|
5728
|
-
return this.getPreviousX(compOffset) + ((this.getPreviousY(compOffset) - this.getPreviousXY(compOffset)) >> 1);
|
|
5729
|
-
};
|
|
5730
|
-
|
|
5731
|
-
|
|
5732
|
-
|
|
5733
|
-
jpeg.lossless.Decoder.prototype.select6 = function (compOffset) {
|
|
5734
|
-
return this.getPreviousY(compOffset) + ((this.getPreviousX(compOffset) - this.getPreviousXY(compOffset)) >> 1);
|
|
5735
|
-
};
|
|
5736
|
-
|
|
5737
|
-
|
|
5738
|
-
|
|
5739
|
-
jpeg.lossless.Decoder.prototype.select7 = function (compOffset) {
|
|
5740
|
-
return ((this.getPreviousX(compOffset) + this.getPreviousY(compOffset)) / 2);
|
|
5741
|
-
};
|
|
5742
|
-
|
|
5743
|
-
|
|
5744
|
-
|
|
5745
|
-
jpeg.lossless.Decoder.prototype.decodeRGB = function (prev, temp, index) {
|
|
5746
|
-
/*jslint bitwise: true */
|
|
5747
|
-
|
|
5748
|
-
var value, actab, dctab, qtab, ctrC, i, k, j;
|
|
5749
|
-
|
|
5750
|
-
prev[0] = this.selector(0);
|
|
5751
|
-
prev[1] = this.selector(1);
|
|
5752
|
-
prev[2] = this.selector(2);
|
|
5753
|
-
|
|
5754
|
-
for (ctrC = 0; ctrC < this.numComp; ctrC+=1) {
|
|
5755
|
-
qtab = this.qTab[ctrC];
|
|
5756
|
-
actab = this.acTab[ctrC];
|
|
5757
|
-
dctab = this.dcTab[ctrC];
|
|
5758
|
-
for (i = 0; i < this.nBlock[ctrC]; i+=1) {
|
|
5759
|
-
for (k = 0; k < this.IDCT_Source.length; k+=1) {
|
|
5760
|
-
this.IDCT_Source[k] = 0;
|
|
6048
|
+
};
|
|
6049
|
+
jpeg.lossless.Decoder.prototype.select1 = function(compOffset) {
|
|
6050
|
+
return this.getPreviousX(compOffset);
|
|
6051
|
+
};
|
|
6052
|
+
jpeg.lossless.Decoder.prototype.select2 = function(compOffset) {
|
|
6053
|
+
return this.getPreviousY(compOffset);
|
|
6054
|
+
};
|
|
6055
|
+
jpeg.lossless.Decoder.prototype.select3 = function(compOffset) {
|
|
6056
|
+
return this.getPreviousXY(compOffset);
|
|
6057
|
+
};
|
|
6058
|
+
jpeg.lossless.Decoder.prototype.select4 = function(compOffset) {
|
|
6059
|
+
return this.getPreviousX(compOffset) + this.getPreviousY(compOffset) - this.getPreviousXY(compOffset);
|
|
6060
|
+
};
|
|
6061
|
+
jpeg.lossless.Decoder.prototype.select5 = function(compOffset) {
|
|
6062
|
+
return this.getPreviousX(compOffset) + (this.getPreviousY(compOffset) - this.getPreviousXY(compOffset) >> 1);
|
|
6063
|
+
};
|
|
6064
|
+
jpeg.lossless.Decoder.prototype.select6 = function(compOffset) {
|
|
6065
|
+
return this.getPreviousY(compOffset) + (this.getPreviousX(compOffset) - this.getPreviousXY(compOffset) >> 1);
|
|
6066
|
+
};
|
|
6067
|
+
jpeg.lossless.Decoder.prototype.select7 = function(compOffset) {
|
|
6068
|
+
return (this.getPreviousX(compOffset) + this.getPreviousY(compOffset)) / 2;
|
|
6069
|
+
};
|
|
6070
|
+
jpeg.lossless.Decoder.prototype.decodeRGB = function(prev, temp, index) {
|
|
6071
|
+
var value, actab, dctab, qtab, ctrC, i, k, j;
|
|
6072
|
+
prev[0] = this.selector(0);
|
|
6073
|
+
prev[1] = this.selector(1);
|
|
6074
|
+
prev[2] = this.selector(2);
|
|
6075
|
+
for (ctrC = 0; ctrC < this.numComp; ctrC += 1) {
|
|
6076
|
+
qtab = this.qTab[ctrC];
|
|
6077
|
+
actab = this.acTab[ctrC];
|
|
6078
|
+
dctab = this.dcTab[ctrC];
|
|
6079
|
+
for (i = 0; i < this.nBlock[ctrC]; i += 1) {
|
|
6080
|
+
for (k = 0; k < this.IDCT_Source.length; k += 1) {
|
|
6081
|
+
this.IDCT_Source[k] = 0;
|
|
5761
6082
|
}
|
|
5762
|
-
|
|
5763
6083
|
value = this.getHuffmanValue(dctab, temp, index);
|
|
5764
|
-
|
|
5765
|
-
|
|
5766
|
-
return value;
|
|
6084
|
+
if (value >= 65280) {
|
|
6085
|
+
return value;
|
|
5767
6086
|
}
|
|
5768
|
-
|
|
5769
6087
|
prev[ctrC] = this.IDCT_Source[0] = prev[ctrC] + this.getn(index, value, temp, index);
|
|
5770
6088
|
this.IDCT_Source[0] *= qtab[0];
|
|
5771
|
-
|
|
5772
|
-
|
|
5773
|
-
|
|
5774
|
-
|
|
5775
|
-
|
|
5776
|
-
|
|
5777
|
-
|
|
5778
|
-
|
|
5779
|
-
|
|
5780
|
-
|
|
5781
|
-
if ((value & 0x0F) === 0) {
|
|
5782
|
-
if ((value >> 4) === 0) {
|
|
5783
|
-
break;
|
|
5784
|
-
}
|
|
5785
|
-
} else {
|
|
5786
|
-
this.IDCT_Source[jpeg.lossless.Decoder.IDCT_P[j]] = this.getn(index, value & 0x0F, temp, index) * qtab[j];
|
|
6089
|
+
for (j = 1; j < 64; j += 1) {
|
|
6090
|
+
value = this.getHuffmanValue(actab, temp, index);
|
|
6091
|
+
if (value >= 65280) {
|
|
6092
|
+
return value;
|
|
6093
|
+
}
|
|
6094
|
+
j += value >> 4;
|
|
6095
|
+
if ((value & 15) === 0) {
|
|
6096
|
+
if (value >> 4 === 0) {
|
|
6097
|
+
break;
|
|
5787
6098
|
}
|
|
6099
|
+
} else {
|
|
6100
|
+
this.IDCT_Source[jpeg.lossless.Decoder.IDCT_P[j]] = this.getn(index, value & 15, temp, index) * qtab[j];
|
|
6101
|
+
}
|
|
5788
6102
|
}
|
|
6103
|
+
}
|
|
5789
6104
|
}
|
|
5790
|
-
|
|
5791
|
-
|
|
5792
|
-
|
|
5793
|
-
|
|
5794
|
-
|
|
5795
|
-
|
|
5796
|
-
|
|
5797
|
-
|
|
5798
|
-
|
|
5799
|
-
|
|
5800
|
-
var value, i, n, nRestart;
|
|
5801
|
-
|
|
5802
|
-
if (this.restarting) {
|
|
5803
|
-
this.restarting = false;
|
|
5804
|
-
prev[0] = (1 << (this.frame.precision - 1));
|
|
5805
|
-
} else {
|
|
5806
|
-
prev[0] = this.selector();
|
|
5807
|
-
}
|
|
5808
|
-
|
|
5809
|
-
for (i = 0; i < this.nBlock[0]; i+=1) {
|
|
5810
|
-
value = this.getHuffmanValue(this.dcTab[0], temp, index);
|
|
5811
|
-
if (value >= 0xFF00) {
|
|
5812
|
-
return value;
|
|
6105
|
+
return 0;
|
|
6106
|
+
};
|
|
6107
|
+
jpeg.lossless.Decoder.prototype.decodeSingle = function(prev, temp, index) {
|
|
6108
|
+
var value, i, n, nRestart;
|
|
6109
|
+
if (this.restarting) {
|
|
6110
|
+
this.restarting = false;
|
|
6111
|
+
prev[0] = 1 << this.frame.precision - 1;
|
|
6112
|
+
} else {
|
|
6113
|
+
prev[0] = this.selector();
|
|
5813
6114
|
}
|
|
5814
|
-
|
|
5815
|
-
|
|
5816
|
-
|
|
5817
|
-
|
|
5818
|
-
|
|
6115
|
+
for (i = 0; i < this.nBlock[0]; i += 1) {
|
|
6116
|
+
value = this.getHuffmanValue(this.dcTab[0], temp, index);
|
|
6117
|
+
if (value >= 65280) {
|
|
6118
|
+
return value;
|
|
6119
|
+
}
|
|
6120
|
+
n = this.getn(prev, value, temp, index);
|
|
6121
|
+
nRestart = n >> 8;
|
|
6122
|
+
if (nRestart >= jpeg.lossless.Decoder.RESTART_MARKER_BEGIN && nRestart <= jpeg.lossless.Decoder.RESTART_MARKER_END) {
|
|
5819
6123
|
return nRestart;
|
|
6124
|
+
}
|
|
6125
|
+
prev[0] += n;
|
|
5820
6126
|
}
|
|
5821
|
-
|
|
5822
|
-
|
|
5823
|
-
|
|
5824
|
-
|
|
5825
|
-
|
|
5826
|
-
|
|
5827
|
-
|
|
5828
|
-
|
|
5829
|
-
|
|
5830
|
-
// Huffman table for fast search: (HuffTab) 8-bit Look up table 2-layer search architecture, 1st-layer represent 256 node (8 bits) if codeword-length > 8
|
|
5831
|
-
// bits, then the entry of 1st-layer = (# of 2nd-layer table) | MSB and it is stored in the 2nd-layer Size of tables in each layer are 256.
|
|
5832
|
-
// HuffTab[*][*][0-256] is always the only 1st-layer table.
|
|
5833
|
-
//
|
|
5834
|
-
// An entry can be: (1) (# of 2nd-layer table) | MSB , for code length > 8 in 1st-layer (2) (Code length) << 8 | HuffVal
|
|
5835
|
-
//
|
|
5836
|
-
// HuffmanValue(table HuffTab[x][y] (ex) HuffmanValue(HuffTab[1][0],...)
|
|
5837
|
-
// ):
|
|
5838
|
-
// return: Huffman Value of table
|
|
5839
|
-
// 0xFF?? if it receives a MARKER
|
|
5840
|
-
// Parameter: table HuffTab[x][y] (ex) HuffmanValue(HuffTab[1][0],...)
|
|
5841
|
-
// temp temp storage for remainded bits
|
|
5842
|
-
// index index to bit of temp
|
|
5843
|
-
// in FILE pointer
|
|
5844
|
-
// Effect:
|
|
5845
|
-
// temp store new remainded bits
|
|
5846
|
-
// index change to new index
|
|
5847
|
-
// in change to new position
|
|
5848
|
-
// NOTE:
|
|
5849
|
-
// Initial by temp=0; index=0;
|
|
5850
|
-
// NOTE: (explain temp and index)
|
|
5851
|
-
// temp: is always in the form at calling time or returning time
|
|
5852
|
-
// | byte 4 | byte 3 | byte 2 | byte 1 |
|
|
5853
|
-
// | 0 | 0 | 00000000 | 00000??? | if not a MARKER
|
|
5854
|
-
// ^index=3 (from 0 to 15)
|
|
5855
|
-
// 321
|
|
5856
|
-
// NOTE (marker and marker_index):
|
|
5857
|
-
// If get a MARKER from 'in', marker=the low-byte of the MARKER
|
|
5858
|
-
// and marker_index=9
|
|
5859
|
-
// If marker_index=9 then index is always > 8, or HuffmanValue()
|
|
5860
|
-
// will not be called
|
|
5861
|
-
jpeg.lossless.Decoder.prototype.getHuffmanValue = function (table, temp, index) {
|
|
5862
|
-
/*jslint bitwise: true */
|
|
5863
|
-
|
|
5864
|
-
var code, input, mask;
|
|
5865
|
-
mask = 0xFFFF;
|
|
5866
|
-
|
|
5867
|
-
if (index[0] < 8) {
|
|
5868
|
-
temp[0] <<= 8;
|
|
5869
|
-
input = this.stream.get8();
|
|
5870
|
-
if (input === 0xFF) {
|
|
6127
|
+
return 0;
|
|
6128
|
+
};
|
|
6129
|
+
jpeg.lossless.Decoder.prototype.getHuffmanValue = function(table, temp, index) {
|
|
6130
|
+
var code, input, mask;
|
|
6131
|
+
mask = 65535;
|
|
6132
|
+
if (index[0] < 8) {
|
|
6133
|
+
temp[0] <<= 8;
|
|
6134
|
+
input = this.stream.get8();
|
|
6135
|
+
if (input === 255) {
|
|
5871
6136
|
this.marker = this.stream.get8();
|
|
5872
6137
|
if (this.marker !== 0) {
|
|
5873
|
-
|
|
6138
|
+
this.markerIndex = 9;
|
|
5874
6139
|
}
|
|
6140
|
+
}
|
|
6141
|
+
temp[0] |= input;
|
|
6142
|
+
} else {
|
|
6143
|
+
index[0] -= 8;
|
|
5875
6144
|
}
|
|
5876
|
-
temp[0]
|
|
5877
|
-
|
|
5878
|
-
|
|
5879
|
-
}
|
|
5880
|
-
|
|
5881
|
-
code = table[temp[0] >> index[0]];
|
|
5882
|
-
|
|
5883
|
-
if ((code & jpeg.lossless.Decoder.MSB) !== 0) {
|
|
5884
|
-
if (this.markerIndex !== 0) {
|
|
6145
|
+
code = table[temp[0] >> index[0]];
|
|
6146
|
+
if ((code & jpeg.lossless.Decoder.MSB) !== 0) {
|
|
6147
|
+
if (this.markerIndex !== 0) {
|
|
5885
6148
|
this.markerIndex = 0;
|
|
5886
|
-
return
|
|
5887
|
-
|
|
5888
|
-
|
|
5889
|
-
|
|
5890
|
-
|
|
5891
|
-
|
|
5892
|
-
|
|
5893
|
-
if (input === 0xFF) {
|
|
6149
|
+
return 65280 | this.marker;
|
|
6150
|
+
}
|
|
6151
|
+
temp[0] &= mask >> 16 - index[0];
|
|
6152
|
+
temp[0] <<= 8;
|
|
6153
|
+
input = this.stream.get8();
|
|
6154
|
+
if (input === 255) {
|
|
5894
6155
|
this.marker = this.stream.get8();
|
|
5895
6156
|
if (this.marker !== 0) {
|
|
5896
|
-
|
|
6157
|
+
this.markerIndex = 9;
|
|
5897
6158
|
}
|
|
6159
|
+
}
|
|
6160
|
+
temp[0] |= input;
|
|
6161
|
+
code = table[(code & 255) * 256 + (temp[0] >> index[0])];
|
|
6162
|
+
index[0] += 8;
|
|
5898
6163
|
}
|
|
5899
|
-
|
|
5900
|
-
|
|
5901
|
-
|
|
5902
|
-
|
|
5903
|
-
|
|
5904
|
-
|
|
5905
|
-
|
|
5906
|
-
|
|
5907
|
-
|
|
5908
|
-
|
|
5909
|
-
|
|
5910
|
-
|
|
5911
|
-
|
|
5912
|
-
|
|
5913
|
-
|
|
5914
|
-
|
|
5915
|
-
|
|
5916
|
-
|
|
5917
|
-
|
|
5918
|
-
|
|
5919
|
-
|
|
5920
|
-
|
|
5921
|
-
|
|
5922
|
-
jpeg.lossless.Decoder.prototype.getn = function (PRED, n, temp, index) {
|
|
5923
|
-
/*jslint bitwise: true */
|
|
5924
|
-
|
|
5925
|
-
var result, one, n_one, mask, input;
|
|
5926
|
-
one = 1;
|
|
5927
|
-
n_one = -1;
|
|
5928
|
-
mask = 0xFFFF;
|
|
5929
|
-
|
|
5930
|
-
if (n === 0) {
|
|
5931
|
-
return 0;
|
|
5932
|
-
}
|
|
5933
|
-
|
|
5934
|
-
if (n === 16) {
|
|
5935
|
-
if (PRED[0] >= 0) {
|
|
6164
|
+
index[0] += 8 - (code >> 8);
|
|
6165
|
+
if (index[0] < 0) {
|
|
6166
|
+
throw new Error("index=" + index[0] + " temp=" + temp[0] + " code=" + code + " in HuffmanValue()");
|
|
6167
|
+
}
|
|
6168
|
+
if (index[0] < this.markerIndex) {
|
|
6169
|
+
this.markerIndex = 0;
|
|
6170
|
+
return 65280 | this.marker;
|
|
6171
|
+
}
|
|
6172
|
+
temp[0] &= mask >> 16 - index[0];
|
|
6173
|
+
return code & 255;
|
|
6174
|
+
};
|
|
6175
|
+
jpeg.lossless.Decoder.prototype.getn = function(PRED, n, temp, index) {
|
|
6176
|
+
var result, one, n_one, mask, input;
|
|
6177
|
+
one = 1;
|
|
6178
|
+
n_one = -1;
|
|
6179
|
+
mask = 65535;
|
|
6180
|
+
if (n === 0) {
|
|
6181
|
+
return 0;
|
|
6182
|
+
}
|
|
6183
|
+
if (n === 16) {
|
|
6184
|
+
if (PRED[0] >= 0) {
|
|
5936
6185
|
return -32768;
|
|
5937
|
-
|
|
6186
|
+
} else {
|
|
5938
6187
|
return 32768;
|
|
6188
|
+
}
|
|
5939
6189
|
}
|
|
5940
|
-
|
|
5941
|
-
|
|
5942
|
-
|
|
5943
|
-
|
|
5944
|
-
if (index[0] >= 0) {
|
|
5945
|
-
if ((index[0] < this.markerIndex) && !this.isLastPixel()) { // this was corrupting the last pixel in some cases
|
|
6190
|
+
index[0] -= n;
|
|
6191
|
+
if (index[0] >= 0) {
|
|
6192
|
+
if (index[0] < this.markerIndex && !this.isLastPixel()) {
|
|
5946
6193
|
this.markerIndex = 0;
|
|
5947
|
-
return (
|
|
5948
|
-
|
|
5949
|
-
|
|
5950
|
-
|
|
5951
|
-
|
|
5952
|
-
|
|
5953
|
-
|
|
5954
|
-
|
|
5955
|
-
|
|
5956
|
-
if (input === 0xFF) {
|
|
6194
|
+
return (65280 | this.marker) << 8;
|
|
6195
|
+
}
|
|
6196
|
+
result = temp[0] >> index[0];
|
|
6197
|
+
temp[0] &= mask >> 16 - index[0];
|
|
6198
|
+
} else {
|
|
6199
|
+
temp[0] <<= 8;
|
|
6200
|
+
input = this.stream.get8();
|
|
6201
|
+
if (input === 255) {
|
|
5957
6202
|
this.marker = this.stream.get8();
|
|
5958
6203
|
if (this.marker !== 0) {
|
|
5959
|
-
|
|
6204
|
+
this.markerIndex = 9;
|
|
5960
6205
|
}
|
|
5961
|
-
|
|
5962
|
-
|
|
5963
|
-
|
|
5964
|
-
|
|
5965
|
-
|
|
5966
|
-
if (index[0] < 0) {
|
|
6206
|
+
}
|
|
6207
|
+
temp[0] |= input;
|
|
6208
|
+
index[0] += 8;
|
|
6209
|
+
if (index[0] < 0) {
|
|
5967
6210
|
if (this.markerIndex !== 0) {
|
|
5968
|
-
|
|
5969
|
-
|
|
6211
|
+
this.markerIndex = 0;
|
|
6212
|
+
return (65280 | this.marker) << 8;
|
|
5970
6213
|
}
|
|
5971
|
-
|
|
5972
6214
|
temp[0] <<= 8;
|
|
5973
6215
|
input = this.stream.get8();
|
|
5974
|
-
|
|
5975
|
-
|
|
5976
|
-
|
|
5977
|
-
|
|
5978
|
-
|
|
5979
|
-
}
|
|
6216
|
+
if (input === 255) {
|
|
6217
|
+
this.marker = this.stream.get8();
|
|
6218
|
+
if (this.marker !== 0) {
|
|
6219
|
+
this.markerIndex = 9;
|
|
6220
|
+
}
|
|
5980
6221
|
}
|
|
5981
|
-
|
|
5982
6222
|
temp[0] |= input;
|
|
5983
6223
|
index[0] += 8;
|
|
5984
|
-
|
|
5985
|
-
|
|
5986
|
-
if (index[0] < 0) {
|
|
6224
|
+
}
|
|
6225
|
+
if (index[0] < 0) {
|
|
5987
6226
|
throw new Error("index=" + index[0] + " in getn()");
|
|
5988
|
-
|
|
5989
|
-
|
|
5990
|
-
if (index[0] < this.markerIndex) {
|
|
6227
|
+
}
|
|
6228
|
+
if (index[0] < this.markerIndex) {
|
|
5991
6229
|
this.markerIndex = 0;
|
|
5992
|
-
return (
|
|
6230
|
+
return (65280 | this.marker) << 8;
|
|
6231
|
+
}
|
|
6232
|
+
result = temp[0] >> index[0];
|
|
6233
|
+
temp[0] &= mask >> 16 - index[0];
|
|
5993
6234
|
}
|
|
5994
|
-
|
|
5995
|
-
|
|
5996
|
-
temp[0] &= (mask >> (16 - index[0]));
|
|
5997
|
-
}
|
|
5998
|
-
|
|
5999
|
-
if (result < (one << (n - 1))) {
|
|
6000
|
-
result += (n_one << n) + 1;
|
|
6001
|
-
}
|
|
6002
|
-
|
|
6003
|
-
return result;
|
|
6004
|
-
};
|
|
6005
|
-
|
|
6006
|
-
|
|
6007
|
-
|
|
6008
|
-
jpeg.lossless.Decoder.prototype.getPreviousX = function (compOffset) {
|
|
6009
|
-
/*jslint bitwise: true */
|
|
6010
|
-
|
|
6011
|
-
if (this.xLoc > 0) {
|
|
6012
|
-
return this.getter((((this.yLoc * this.xDim) + this.xLoc) - 1), compOffset);
|
|
6013
|
-
} else if (this.yLoc > 0) {
|
|
6014
|
-
return this.getPreviousY(compOffset);
|
|
6015
|
-
} else {
|
|
6016
|
-
return (1 << (this.frame.precision - 1));
|
|
6017
|
-
}
|
|
6018
|
-
};
|
|
6019
|
-
|
|
6020
|
-
|
|
6021
|
-
|
|
6022
|
-
jpeg.lossless.Decoder.prototype.getPreviousXY = function (compOffset) {
|
|
6023
|
-
/*jslint bitwise: true */
|
|
6024
|
-
|
|
6025
|
-
if ((this.xLoc > 0) && (this.yLoc > 0)) {
|
|
6026
|
-
return this.getter(((((this.yLoc - 1) * this.xDim) + this.xLoc) - 1), compOffset);
|
|
6027
|
-
} else {
|
|
6028
|
-
return this.getPreviousY(compOffset);
|
|
6029
|
-
}
|
|
6030
|
-
};
|
|
6031
|
-
|
|
6032
|
-
|
|
6033
|
-
|
|
6034
|
-
jpeg.lossless.Decoder.prototype.getPreviousY = function (compOffset) {
|
|
6035
|
-
/*jslint bitwise: true */
|
|
6036
|
-
|
|
6037
|
-
if (this.yLoc > 0) {
|
|
6038
|
-
return this.getter((((this.yLoc - 1) * this.xDim) + this.xLoc), compOffset);
|
|
6039
|
-
} else {
|
|
6040
|
-
return this.getPreviousX(compOffset);
|
|
6041
|
-
}
|
|
6042
|
-
};
|
|
6043
|
-
|
|
6044
|
-
|
|
6045
|
-
|
|
6046
|
-
jpeg.lossless.Decoder.prototype.isLastPixel = function () {
|
|
6047
|
-
return (this.xLoc === (this.xDim - 1)) && (this.yLoc === (this.yDim - 1));
|
|
6048
|
-
};
|
|
6049
|
-
|
|
6050
|
-
|
|
6051
|
-
|
|
6052
|
-
jpeg.lossless.Decoder.prototype.outputSingle = function (PRED) {
|
|
6053
|
-
if ((this.xLoc < this.xDim) && (this.yLoc < this.yDim)) {
|
|
6054
|
-
this.setter((((this.yLoc * this.xDim) + this.xLoc)), this.mask & PRED[0]);
|
|
6055
|
-
|
|
6056
|
-
this.xLoc+=1;
|
|
6057
|
-
|
|
6058
|
-
if (this.xLoc >= this.xDim) {
|
|
6059
|
-
this.yLoc+=1;
|
|
6060
|
-
this.xLoc = 0;
|
|
6235
|
+
if (result < one << n - 1) {
|
|
6236
|
+
result += (n_one << n) + 1;
|
|
6061
6237
|
}
|
|
6062
|
-
|
|
6063
|
-
};
|
|
6064
|
-
|
|
6065
|
-
|
|
6066
|
-
|
|
6067
|
-
|
|
6068
|
-
|
|
6069
|
-
|
|
6070
|
-
|
|
6071
|
-
this.setter(offset, PRED[0], 0);
|
|
6072
|
-
this.setter(offset, PRED[1], 1);
|
|
6073
|
-
this.setter(offset, PRED[2], 2);
|
|
6074
|
-
|
|
6075
|
-
this.xLoc+=1;
|
|
6076
|
-
|
|
6077
|
-
if (this.xLoc >= this.xDim) {
|
|
6078
|
-
this.yLoc+=1;
|
|
6079
|
-
this.xLoc = 0;
|
|
6238
|
+
return result;
|
|
6239
|
+
};
|
|
6240
|
+
jpeg.lossless.Decoder.prototype.getPreviousX = function(compOffset) {
|
|
6241
|
+
if (this.xLoc > 0) {
|
|
6242
|
+
return this.getter(this.yLoc * this.xDim + this.xLoc - 1, compOffset);
|
|
6243
|
+
} else if (this.yLoc > 0) {
|
|
6244
|
+
return this.getPreviousY(compOffset);
|
|
6245
|
+
} else {
|
|
6246
|
+
return 1 << this.frame.precision - 1;
|
|
6080
6247
|
}
|
|
6081
|
-
|
|
6082
|
-
|
|
6083
|
-
|
|
6084
|
-
|
|
6085
|
-
|
|
6086
|
-
|
|
6087
|
-
|
|
6088
|
-
jpeg.lossless.Decoder.prototype.getValue8 = function (index) {
|
|
6089
|
-
return this.outputData[index]; // mask should not be necessary because outputData is either Int8Array or Int16Array
|
|
6090
|
-
};
|
|
6091
|
-
|
|
6092
|
-
var littleEndian = (function() {
|
|
6093
|
-
var buffer = new ArrayBuffer(2);
|
|
6094
|
-
new DataView(buffer).setInt16(0, 256, true /* littleEndian */);
|
|
6095
|
-
// Int16Array uses the platform's endianness.
|
|
6096
|
-
return new Int16Array(buffer)[0] === 256;
|
|
6097
|
-
})();
|
|
6098
|
-
|
|
6099
|
-
if (littleEndian) {
|
|
6100
|
-
// just reading from an array is fine then. Int16Array will use platform endianness.
|
|
6101
|
-
jpeg.lossless.Decoder.prototype.setValue16 = jpeg.lossless.Decoder.prototype.setValue8;
|
|
6102
|
-
jpeg.lossless.Decoder.prototype.getValue16 = jpeg.lossless.Decoder.prototype.getValue8;
|
|
6103
|
-
}
|
|
6104
|
-
else {
|
|
6105
|
-
// If platform is big-endian, we will need to convert to little-endian
|
|
6106
|
-
jpeg.lossless.Decoder.prototype.setValue16 = function (index, val) {
|
|
6107
|
-
this.outputData[index] = ((val & 0xFF) << 8) | ((val >> 8) & 0xFF);
|
|
6108
|
-
};
|
|
6109
|
-
|
|
6110
|
-
jpeg.lossless.Decoder.prototype.getValue16 = function (index) {
|
|
6111
|
-
var val = this.outputData[index];
|
|
6112
|
-
return ((val & 0xFF) << 8) | ((val >> 8) & 0xFF);
|
|
6113
|
-
};
|
|
6114
|
-
}
|
|
6115
|
-
|
|
6116
|
-
jpeg.lossless.Decoder.prototype.setValueRGB = function (index, val, compOffset) {
|
|
6117
|
-
// this.outputData.setUint8(index * 3 + compOffset, val);
|
|
6118
|
-
this.outputData[index * 3 + compOffset] = val;
|
|
6119
|
-
};
|
|
6120
|
-
|
|
6121
|
-
jpeg.lossless.Decoder.prototype.getValueRGB = function (index, compOffset) {
|
|
6122
|
-
// return this.outputData.getUint8(index * 3 + compOffset);
|
|
6123
|
-
return this.outputData[index * 3 + compOffset];
|
|
6124
|
-
};
|
|
6125
|
-
|
|
6126
|
-
|
|
6127
|
-
|
|
6128
|
-
jpeg.lossless.Decoder.prototype.readApp = function() {
|
|
6129
|
-
var count = 0, length = this.stream.get16();
|
|
6130
|
-
count += 2;
|
|
6131
|
-
|
|
6132
|
-
while (count < length) {
|
|
6133
|
-
this.stream.get8();
|
|
6134
|
-
count+=1;
|
|
6135
|
-
}
|
|
6136
|
-
|
|
6137
|
-
return length;
|
|
6138
|
-
};
|
|
6139
|
-
|
|
6140
|
-
|
|
6141
|
-
|
|
6142
|
-
jpeg.lossless.Decoder.prototype.readComment = function () {
|
|
6143
|
-
var sb = "", count = 0, length;
|
|
6144
|
-
|
|
6145
|
-
length = this.stream.get16();
|
|
6146
|
-
count += 2;
|
|
6147
|
-
|
|
6148
|
-
while (count < length) {
|
|
6149
|
-
sb += this.stream.get8();
|
|
6150
|
-
count+=1;
|
|
6151
|
-
}
|
|
6152
|
-
|
|
6153
|
-
return sb;
|
|
6154
|
-
};
|
|
6155
|
-
|
|
6156
|
-
|
|
6157
|
-
|
|
6158
|
-
jpeg.lossless.Decoder.prototype.readNumber = function() {
|
|
6159
|
-
var Ld = this.stream.get16();
|
|
6160
|
-
|
|
6161
|
-
if (Ld !== 4) {
|
|
6162
|
-
throw new Error("ERROR: Define number format throw new IOException [Ld!=4]");
|
|
6163
|
-
}
|
|
6164
|
-
|
|
6165
|
-
return this.stream.get16();
|
|
6166
|
-
};
|
|
6167
|
-
|
|
6168
|
-
|
|
6169
|
-
|
|
6170
|
-
/*** Exports ***/
|
|
6171
|
-
|
|
6172
|
-
var moduleType = typeof module;
|
|
6173
|
-
if ((moduleType !== 'undefined') && module.exports) {
|
|
6174
|
-
module.exports = jpeg.lossless.Decoder;
|
|
6175
|
-
}
|
|
6176
|
-
|
|
6177
|
-
},{"./data-stream.js":2,"./frame-header.js":4,"./huffman-table.js":5,"./quantization-table.js":7,"./scan-header.js":9,"./utils.js":10}],4:[function(require,module,exports){
|
|
6178
|
-
/*
|
|
6179
|
-
* Copyright (C) 2015 Michael Martinez
|
|
6180
|
-
* Changes: Added support for selection values 2-7, fixed minor bugs &
|
|
6181
|
-
* warnings, split into multiple class files, and general clean up.
|
|
6182
|
-
*
|
|
6183
|
-
* 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.
|
|
6184
|
-
*/
|
|
6185
|
-
|
|
6186
|
-
/*
|
|
6187
|
-
* Copyright (C) Helmut Dersch
|
|
6188
|
-
*
|
|
6189
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6190
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
6191
|
-
* in the Software without restriction, including without limitation the rights
|
|
6192
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
6193
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
6194
|
-
* furnished to do so, subject to the following conditions:
|
|
6195
|
-
|
|
6196
|
-
* The above copyright notice and this permission notice shall be included in
|
|
6197
|
-
* all copies or substantial portions of the Software.
|
|
6198
|
-
|
|
6199
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
6200
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
6201
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
6202
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
6203
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
6204
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
6205
|
-
* THE SOFTWARE.
|
|
6206
|
-
*/
|
|
6207
|
-
|
|
6208
|
-
/*jslint browser: true, node: true */
|
|
6209
|
-
/*global require, module */
|
|
6210
|
-
|
|
6211
|
-
"use strict";
|
|
6212
|
-
|
|
6213
|
-
/*** Imports ***/
|
|
6214
|
-
var jpeg = jpeg || {};
|
|
6215
|
-
jpeg.lossless = jpeg.lossless || {};
|
|
6216
|
-
jpeg.lossless.ComponentSpec = jpeg.lossless.ComponentSpec || ((typeof require !== 'undefined') ? require('./component-spec.js') : null);
|
|
6217
|
-
jpeg.lossless.DataStream = jpeg.lossless.DataStream || ((typeof require !== 'undefined') ? require('./data-stream.js') : null);
|
|
6218
|
-
|
|
6219
|
-
|
|
6220
|
-
/*** Constructor ***/
|
|
6221
|
-
jpeg.lossless.FrameHeader = jpeg.lossless.FrameHeader || function () {
|
|
6222
|
-
this.components = []; // Components
|
|
6223
|
-
this.dimX = 0; // Number of samples per line
|
|
6224
|
-
this.dimY = 0; // Number of lines
|
|
6225
|
-
this.numComp = 0; // Number of component in the frame
|
|
6226
|
-
this.precision = 0; // Sample Precision (from the original image)
|
|
6227
|
-
};
|
|
6228
|
-
|
|
6229
|
-
|
|
6230
|
-
|
|
6231
|
-
/*** Prototype Methods ***/
|
|
6232
|
-
|
|
6233
|
-
jpeg.lossless.FrameHeader.prototype.read = function (data) {
|
|
6234
|
-
/*jslint bitwise: true */
|
|
6235
|
-
|
|
6236
|
-
var count = 0, length, i, c, temp;
|
|
6237
|
-
|
|
6238
|
-
length = data.get16();
|
|
6239
|
-
count += 2;
|
|
6240
|
-
|
|
6241
|
-
this.precision = data.get8();
|
|
6242
|
-
count+=1;
|
|
6243
|
-
|
|
6244
|
-
this.dimY = data.get16();
|
|
6245
|
-
count += 2;
|
|
6246
|
-
|
|
6247
|
-
this.dimX = data.get16();
|
|
6248
|
-
count += 2;
|
|
6249
|
-
|
|
6250
|
-
this.numComp = data.get8();
|
|
6251
|
-
count+=1;
|
|
6252
|
-
for (i = 1; i <= this.numComp; i+=1) {
|
|
6253
|
-
if (count > length) {
|
|
6254
|
-
throw new Error("ERROR: frame format error");
|
|
6255
|
-
}
|
|
6256
|
-
|
|
6257
|
-
c = data.get8();
|
|
6258
|
-
count+=1;
|
|
6259
|
-
|
|
6260
|
-
if (count >= length) {
|
|
6261
|
-
throw new Error("ERROR: frame format error [c>=Lf]");
|
|
6262
|
-
}
|
|
6263
|
-
|
|
6264
|
-
temp = data.get8();
|
|
6265
|
-
count+=1;
|
|
6266
|
-
|
|
6267
|
-
if (!this.components[c]) {
|
|
6268
|
-
this.components[c] = new jpeg.lossless.ComponentSpec();
|
|
6269
|
-
}
|
|
6270
|
-
|
|
6271
|
-
this.components[c].hSamp = temp >> 4;
|
|
6272
|
-
this.components[c].vSamp = temp & 0x0F;
|
|
6273
|
-
this.components[c].quantTableSel = data.get8();
|
|
6274
|
-
count+=1;
|
|
6275
|
-
}
|
|
6276
|
-
|
|
6277
|
-
if (count !== length) {
|
|
6278
|
-
throw new Error("ERROR: frame format error [Lf!=count]");
|
|
6279
|
-
}
|
|
6280
|
-
|
|
6281
|
-
return 1;
|
|
6282
|
-
};
|
|
6283
|
-
|
|
6284
|
-
|
|
6285
|
-
/*** Exports ***/
|
|
6286
|
-
|
|
6287
|
-
var moduleType = typeof module;
|
|
6288
|
-
if ((moduleType !== 'undefined') && module.exports) {
|
|
6289
|
-
module.exports = jpeg.lossless.FrameHeader;
|
|
6290
|
-
}
|
|
6291
|
-
|
|
6292
|
-
},{"./component-spec.js":1,"./data-stream.js":2}],5:[function(require,module,exports){
|
|
6293
|
-
/*
|
|
6294
|
-
* Copyright (C) 2015 Michael Martinez
|
|
6295
|
-
* Changes: Added support for selection values 2-7, fixed minor bugs &
|
|
6296
|
-
* warnings, split into multiple class files, and general clean up.
|
|
6297
|
-
*
|
|
6298
|
-
* 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.
|
|
6299
|
-
*/
|
|
6300
|
-
|
|
6301
|
-
/*
|
|
6302
|
-
* Copyright (C) Helmut Dersch
|
|
6303
|
-
*
|
|
6304
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6305
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
6306
|
-
* in the Software without restriction, including without limitation the rights
|
|
6307
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
6308
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
6309
|
-
* furnished to do so, subject to the following conditions:
|
|
6310
|
-
|
|
6311
|
-
* The above copyright notice and this permission notice shall be included in
|
|
6312
|
-
* all copies or substantial portions of the Software.
|
|
6313
|
-
|
|
6314
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
6315
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
6316
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
6317
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
6318
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
6319
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
6320
|
-
* THE SOFTWARE.
|
|
6321
|
-
*/
|
|
6322
|
-
|
|
6323
|
-
/*jslint browser: true, node: true */
|
|
6324
|
-
/*global require, module */
|
|
6325
|
-
|
|
6326
|
-
"use strict";
|
|
6327
|
-
|
|
6328
|
-
/*** Imports ***/
|
|
6329
|
-
var jpeg = jpeg || {};
|
|
6330
|
-
jpeg.lossless = jpeg.lossless || {};
|
|
6331
|
-
jpeg.lossless.DataStream = jpeg.lossless.DataStream || ((typeof require !== 'undefined') ? require('./data-stream.js') : null);
|
|
6332
|
-
jpeg.lossless.Utils = jpeg.lossless.Utils || ((typeof require !== 'undefined') ? require('./utils.js') : null);
|
|
6333
|
-
|
|
6334
|
-
|
|
6335
|
-
/*** Constructor ***/
|
|
6336
|
-
jpeg.lossless.HuffmanTable = jpeg.lossless.HuffmanTable || function () {
|
|
6337
|
-
this.l = jpeg.lossless.Utils.createArray(4, 2, 16);
|
|
6338
|
-
this.th = [];
|
|
6339
|
-
this.v = jpeg.lossless.Utils.createArray(4, 2, 16, 200);
|
|
6340
|
-
this.tc = jpeg.lossless.Utils.createArray(4, 2);
|
|
6341
|
-
|
|
6342
|
-
this.tc[0][0] = 0;
|
|
6343
|
-
this.tc[1][0] = 0;
|
|
6344
|
-
this.tc[2][0] = 0;
|
|
6345
|
-
this.tc[3][0] = 0;
|
|
6346
|
-
this.tc[0][1] = 0;
|
|
6347
|
-
this.tc[1][1] = 0;
|
|
6348
|
-
this.tc[2][1] = 0;
|
|
6349
|
-
this.tc[3][1] = 0;
|
|
6350
|
-
this.th[0] = 0;
|
|
6351
|
-
this.th[1] = 0;
|
|
6352
|
-
this.th[2] = 0;
|
|
6353
|
-
this.th[3] = 0;
|
|
6354
|
-
};
|
|
6355
|
-
|
|
6356
|
-
|
|
6357
|
-
|
|
6358
|
-
/*** Static Pseudo-constants ***/
|
|
6359
|
-
|
|
6360
|
-
jpeg.lossless.HuffmanTable.MSB = 0x80000000;
|
|
6361
|
-
|
|
6362
|
-
|
|
6363
|
-
/*** Prototype Methods ***/
|
|
6364
|
-
|
|
6365
|
-
jpeg.lossless.HuffmanTable.prototype.read = function(data, HuffTab) {
|
|
6366
|
-
/*jslint bitwise: true */
|
|
6367
|
-
|
|
6368
|
-
var count = 0, length, temp, t, c, i, j;
|
|
6369
|
-
|
|
6370
|
-
length = data.get16();
|
|
6371
|
-
count += 2;
|
|
6372
|
-
|
|
6373
|
-
while (count < length) {
|
|
6374
|
-
temp = data.get8();
|
|
6375
|
-
count+=1;
|
|
6376
|
-
t = temp & 0x0F;
|
|
6377
|
-
if (t > 3) {
|
|
6378
|
-
throw new Error("ERROR: Huffman table ID > 3");
|
|
6379
|
-
}
|
|
6380
|
-
|
|
6381
|
-
c = temp >> 4;
|
|
6382
|
-
if (c > 2) {
|
|
6383
|
-
throw new Error("ERROR: Huffman table [Table class > 2 ]");
|
|
6384
|
-
}
|
|
6385
|
-
|
|
6386
|
-
this.th[t] = 1;
|
|
6387
|
-
this.tc[t][c] = 1;
|
|
6388
|
-
|
|
6389
|
-
for (i = 0; i < 16; i+=1) {
|
|
6390
|
-
this.l[t][c][i] = data.get8();
|
|
6391
|
-
count+=1;
|
|
6392
|
-
}
|
|
6393
|
-
|
|
6394
|
-
for (i = 0; i < 16; i+=1) {
|
|
6395
|
-
for (j = 0; j < this.l[t][c][i]; j+=1) {
|
|
6396
|
-
if (count > length) {
|
|
6397
|
-
throw new Error("ERROR: Huffman table format error [count>Lh]");
|
|
6398
|
-
}
|
|
6399
|
-
|
|
6400
|
-
this.v[t][c][i][j] = data.get8();
|
|
6401
|
-
count+=1;
|
|
6402
|
-
}
|
|
6403
|
-
}
|
|
6404
|
-
}
|
|
6405
|
-
|
|
6406
|
-
if (count !== length) {
|
|
6407
|
-
throw new Error("ERROR: Huffman table format error [count!=Lf]");
|
|
6408
|
-
}
|
|
6409
|
-
|
|
6410
|
-
for (i = 0; i < 4; i+=1) {
|
|
6411
|
-
for (j = 0; j < 2; j+=1) {
|
|
6412
|
-
if (this.tc[i][j] !== 0) {
|
|
6413
|
-
this.buildHuffTable(HuffTab[i][j], this.l[i][j], this.v[i][j]);
|
|
6414
|
-
}
|
|
6415
|
-
}
|
|
6416
|
-
}
|
|
6417
|
-
|
|
6418
|
-
return 1;
|
|
6419
|
-
};
|
|
6420
|
-
|
|
6421
|
-
|
|
6422
|
-
|
|
6423
|
-
// Build_HuffTab()
|
|
6424
|
-
// Parameter: t table ID
|
|
6425
|
-
// c table class ( 0 for DC, 1 for AC )
|
|
6426
|
-
// L[i] # of codewords which length is i
|
|
6427
|
-
// V[i][j] Huffman Value (length=i)
|
|
6428
|
-
// Effect:
|
|
6429
|
-
// build up HuffTab[t][c] using L and V.
|
|
6430
|
-
jpeg.lossless.HuffmanTable.prototype.buildHuffTable = function(tab, L, V) {
|
|
6431
|
-
/*jslint bitwise: true */
|
|
6432
|
-
|
|
6433
|
-
var currentTable, temp, k, i, j, n;
|
|
6434
|
-
temp = 256;
|
|
6435
|
-
k = 0;
|
|
6436
|
-
|
|
6437
|
-
for (i = 0; i < 8; i+=1) { // i+1 is Code length
|
|
6438
|
-
for (j = 0; j < L[i]; j+=1) {
|
|
6439
|
-
for (n = 0; n < (temp >> (i + 1)); n+=1) {
|
|
6440
|
-
tab[k] = V[i][j] | ((i + 1) << 8);
|
|
6441
|
-
k+=1;
|
|
6442
|
-
}
|
|
6248
|
+
};
|
|
6249
|
+
jpeg.lossless.Decoder.prototype.getPreviousXY = function(compOffset) {
|
|
6250
|
+
if (this.xLoc > 0 && this.yLoc > 0) {
|
|
6251
|
+
return this.getter((this.yLoc - 1) * this.xDim + this.xLoc - 1, compOffset);
|
|
6252
|
+
} else {
|
|
6253
|
+
return this.getPreviousY(compOffset);
|
|
6443
6254
|
}
|
|
6444
|
-
|
|
6445
|
-
|
|
6446
|
-
|
|
6447
|
-
|
|
6448
|
-
|
|
6449
|
-
|
|
6450
|
-
currentTable = 1;
|
|
6451
|
-
k = 0;
|
|
6452
|
-
|
|
6453
|
-
for (i = 8; i < 16; i+=1) { // i+1 is Code length
|
|
6454
|
-
for (j = 0; j < L[i]; j+=1) {
|
|
6455
|
-
for (n = 0; n < (temp >> (i - 7)); n+=1) {
|
|
6456
|
-
tab[(currentTable * 256) + k] = V[i][j] | ((i + 1) << 8);
|
|
6457
|
-
k+=1;
|
|
6458
|
-
}
|
|
6459
|
-
|
|
6460
|
-
if (k >= 256) {
|
|
6461
|
-
if (k > 256) {
|
|
6462
|
-
throw new Error("ERROR: Huffman table error(1)!");
|
|
6463
|
-
}
|
|
6464
|
-
|
|
6465
|
-
k = 0;
|
|
6466
|
-
currentTable+=1;
|
|
6467
|
-
}
|
|
6255
|
+
};
|
|
6256
|
+
jpeg.lossless.Decoder.prototype.getPreviousY = function(compOffset) {
|
|
6257
|
+
if (this.yLoc > 0) {
|
|
6258
|
+
return this.getter((this.yLoc - 1) * this.xDim + this.xLoc, compOffset);
|
|
6259
|
+
} else {
|
|
6260
|
+
return this.getPreviousX(compOffset);
|
|
6468
6261
|
}
|
|
6469
|
-
|
|
6470
|
-
|
|
6471
|
-
|
|
6472
|
-
|
|
6473
|
-
|
|
6474
|
-
|
|
6475
|
-
|
|
6476
|
-
|
|
6477
|
-
|
|
6478
|
-
|
|
6479
|
-
|
|
6480
|
-
}
|
|
6481
|
-
/*jslint browser: true, node: true */
|
|
6482
|
-
/*global require, module */
|
|
6483
|
-
|
|
6484
|
-
"use strict";
|
|
6485
|
-
|
|
6486
|
-
/*** Imports ****/
|
|
6487
|
-
|
|
6488
|
-
/**
|
|
6489
|
-
* jpeg
|
|
6490
|
-
* @type {*|{}}
|
|
6491
|
-
*/
|
|
6492
|
-
var jpeg = jpeg || {};
|
|
6493
|
-
|
|
6494
|
-
/**
|
|
6495
|
-
* jpeg.lossless
|
|
6496
|
-
* @type {*|{}}
|
|
6497
|
-
*/
|
|
6498
|
-
jpeg.lossless = jpeg.lossless || {};
|
|
6499
|
-
|
|
6500
|
-
|
|
6501
|
-
jpeg.lossless.ComponentSpec = jpeg.lossless.ComponentSpec || ((typeof require !== 'undefined') ? require('./component-spec.js') : null);
|
|
6502
|
-
jpeg.lossless.DataStream = jpeg.lossless.DataStream || ((typeof require !== 'undefined') ? require('./data-stream.js') : null);
|
|
6503
|
-
jpeg.lossless.Decoder = jpeg.lossless.Decoder || ((typeof require !== 'undefined') ? require('./decoder.js') : null);
|
|
6504
|
-
jpeg.lossless.FrameHeader = jpeg.lossless.FrameHeader || ((typeof require !== 'undefined') ? require('./frame-header.js') : null);
|
|
6505
|
-
jpeg.lossless.HuffmanTable = jpeg.lossless.HuffmanTable || ((typeof require !== 'undefined') ? require('./huffman-table.js') : null);
|
|
6506
|
-
jpeg.lossless.QuantizationTable = jpeg.lossless.QuantizationTable || ((typeof require !== 'undefined') ? require('./quantization-table.js') : null);
|
|
6507
|
-
jpeg.lossless.ScanComponent = jpeg.lossless.ScanComponent || ((typeof require !== 'undefined') ? require('./scan-component.js') : null);
|
|
6508
|
-
jpeg.lossless.ScanHeader = jpeg.lossless.ScanHeader || ((typeof require !== 'undefined') ? require('./scan-header.js') : null);
|
|
6509
|
-
jpeg.lossless.Utils = jpeg.lossless.Utils || ((typeof require !== 'undefined') ? require('./utils.js') : null);
|
|
6510
|
-
|
|
6511
|
-
|
|
6512
|
-
/*** Exports ***/
|
|
6513
|
-
var moduleType = typeof module;
|
|
6514
|
-
if ((moduleType !== 'undefined') && module.exports) {
|
|
6515
|
-
module.exports = jpeg;
|
|
6516
|
-
}
|
|
6517
|
-
|
|
6518
|
-
},{"./component-spec.js":1,"./data-stream.js":2,"./decoder.js":3,"./frame-header.js":4,"./huffman-table.js":5,"./quantization-table.js":7,"./scan-component.js":8,"./scan-header.js":9,"./utils.js":10}],7:[function(require,module,exports){
|
|
6519
|
-
/*
|
|
6520
|
-
* Copyright (C) 2015 Michael Martinez
|
|
6521
|
-
* Changes: Added support for selection values 2-7, fixed minor bugs &
|
|
6522
|
-
* warnings, split into multiple class files, and general clean up.
|
|
6523
|
-
*
|
|
6524
|
-
* 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.
|
|
6525
|
-
*/
|
|
6526
|
-
|
|
6527
|
-
/*
|
|
6528
|
-
* Copyright (C) Helmut Dersch
|
|
6529
|
-
*
|
|
6530
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6531
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
6532
|
-
* in the Software without restriction, including without limitation the rights
|
|
6533
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
6534
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
6535
|
-
* furnished to do so, subject to the following conditions:
|
|
6536
|
-
|
|
6537
|
-
* The above copyright notice and this permission notice shall be included in
|
|
6538
|
-
* all copies or substantial portions of the Software.
|
|
6539
|
-
|
|
6540
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
6541
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
6542
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
6543
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
6544
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
6545
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
6546
|
-
* THE SOFTWARE.
|
|
6547
|
-
*/
|
|
6548
|
-
|
|
6549
|
-
/*jslint browser: true, node: true */
|
|
6550
|
-
/*global require, module */
|
|
6551
|
-
|
|
6552
|
-
"use strict";
|
|
6553
|
-
|
|
6554
|
-
/*** Imports ***/
|
|
6555
|
-
var jpeg = jpeg || {};
|
|
6556
|
-
jpeg.lossless = jpeg.lossless || {};
|
|
6557
|
-
jpeg.lossless.DataStream = jpeg.lossless.DataStream || ((typeof require !== 'undefined') ? require('./data-stream.js') : null);
|
|
6558
|
-
jpeg.lossless.Utils = jpeg.lossless.Utils || ((typeof require !== 'undefined') ? require('./utils.js') : null);
|
|
6559
|
-
|
|
6560
|
-
|
|
6561
|
-
/*** Constructor ***/
|
|
6562
|
-
jpeg.lossless.QuantizationTable = jpeg.lossless.QuantizationTable || function () {
|
|
6563
|
-
this.precision = []; // Quantization precision 8 or 16
|
|
6564
|
-
this.tq = []; // 1: this table is presented
|
|
6565
|
-
this.quantTables = jpeg.lossless.Utils.createArray(4, 64); // Tables
|
|
6566
|
-
|
|
6567
|
-
this.tq[0] = 0;
|
|
6568
|
-
this.tq[1] = 0;
|
|
6569
|
-
this.tq[2] = 0;
|
|
6570
|
-
this.tq[3] = 0;
|
|
6571
|
-
};
|
|
6572
|
-
|
|
6573
|
-
|
|
6574
|
-
|
|
6575
|
-
/*** Static Methods ***/
|
|
6576
|
-
|
|
6577
|
-
jpeg.lossless.QuantizationTable.enhanceQuantizationTable = function(qtab, table) {
|
|
6578
|
-
/*jslint bitwise: true */
|
|
6579
|
-
|
|
6580
|
-
var i;
|
|
6581
|
-
|
|
6582
|
-
for (i = 0; i < 8; i+=1) {
|
|
6583
|
-
qtab[table[(0 * 8) + i]] *= 90;
|
|
6584
|
-
qtab[table[(4 * 8) + i]] *= 90;
|
|
6585
|
-
qtab[table[(2 * 8) + i]] *= 118;
|
|
6586
|
-
qtab[table[(6 * 8) + i]] *= 49;
|
|
6587
|
-
qtab[table[(5 * 8) + i]] *= 71;
|
|
6588
|
-
qtab[table[(1 * 8) + i]] *= 126;
|
|
6589
|
-
qtab[table[(7 * 8) + i]] *= 25;
|
|
6590
|
-
qtab[table[(3 * 8) + i]] *= 106;
|
|
6591
|
-
}
|
|
6592
|
-
|
|
6593
|
-
for (i = 0; i < 8; i+=1) {
|
|
6594
|
-
qtab[table[0 + (8 * i)]] *= 90;
|
|
6595
|
-
qtab[table[4 + (8 * i)]] *= 90;
|
|
6596
|
-
qtab[table[2 + (8 * i)]] *= 118;
|
|
6597
|
-
qtab[table[6 + (8 * i)]] *= 49;
|
|
6598
|
-
qtab[table[5 + (8 * i)]] *= 71;
|
|
6599
|
-
qtab[table[1 + (8 * i)]] *= 126;
|
|
6600
|
-
qtab[table[7 + (8 * i)]] *= 25;
|
|
6601
|
-
qtab[table[3 + (8 * i)]] *= 106;
|
|
6602
|
-
}
|
|
6603
|
-
|
|
6604
|
-
for (i = 0; i < 64; i+=1) {
|
|
6605
|
-
qtab[i] >>= 6;
|
|
6606
|
-
}
|
|
6607
|
-
};
|
|
6608
|
-
|
|
6609
|
-
|
|
6610
|
-
/*** Prototype Methods ***/
|
|
6611
|
-
|
|
6612
|
-
jpeg.lossless.QuantizationTable.prototype.read = function (data, table) {
|
|
6613
|
-
/*jslint bitwise: true */
|
|
6614
|
-
|
|
6615
|
-
var count = 0, length, temp, t, i;
|
|
6616
|
-
|
|
6617
|
-
length = data.get16();
|
|
6618
|
-
count += 2;
|
|
6619
|
-
|
|
6620
|
-
while (count < length) {
|
|
6621
|
-
temp = data.get8();
|
|
6622
|
-
count+=1;
|
|
6623
|
-
t = temp & 0x0F;
|
|
6624
|
-
|
|
6625
|
-
if (t > 3) {
|
|
6626
|
-
throw new Error("ERROR: Quantization table ID > 3");
|
|
6262
|
+
};
|
|
6263
|
+
jpeg.lossless.Decoder.prototype.isLastPixel = function() {
|
|
6264
|
+
return this.xLoc === this.xDim - 1 && this.yLoc === this.yDim - 1;
|
|
6265
|
+
};
|
|
6266
|
+
jpeg.lossless.Decoder.prototype.outputSingle = function(PRED) {
|
|
6267
|
+
if (this.xLoc < this.xDim && this.yLoc < this.yDim) {
|
|
6268
|
+
this.setter(this.yLoc * this.xDim + this.xLoc, this.mask & PRED[0]);
|
|
6269
|
+
this.xLoc += 1;
|
|
6270
|
+
if (this.xLoc >= this.xDim) {
|
|
6271
|
+
this.yLoc += 1;
|
|
6272
|
+
this.xLoc = 0;
|
|
6273
|
+
}
|
|
6627
6274
|
}
|
|
6628
|
-
|
|
6629
|
-
|
|
6630
|
-
|
|
6631
|
-
if (this.
|
|
6632
|
-
|
|
6633
|
-
|
|
6634
|
-
|
|
6635
|
-
|
|
6636
|
-
|
|
6275
|
+
};
|
|
6276
|
+
jpeg.lossless.Decoder.prototype.outputRGB = function(PRED) {
|
|
6277
|
+
var offset = this.yLoc * this.xDim + this.xLoc;
|
|
6278
|
+
if (this.xLoc < this.xDim && this.yLoc < this.yDim) {
|
|
6279
|
+
this.setter(offset, PRED[0], 0);
|
|
6280
|
+
this.setter(offset, PRED[1], 1);
|
|
6281
|
+
this.setter(offset, PRED[2], 2);
|
|
6282
|
+
this.xLoc += 1;
|
|
6283
|
+
if (this.xLoc >= this.xDim) {
|
|
6284
|
+
this.yLoc += 1;
|
|
6285
|
+
this.xLoc = 0;
|
|
6286
|
+
}
|
|
6637
6287
|
}
|
|
6638
|
-
|
|
6639
|
-
|
|
6640
|
-
|
|
6641
|
-
|
|
6642
|
-
|
|
6643
|
-
|
|
6644
|
-
|
|
6645
|
-
|
|
6646
|
-
|
|
6647
|
-
|
|
6648
|
-
|
|
6649
|
-
|
|
6650
|
-
|
|
6651
|
-
|
|
6652
|
-
|
|
6653
|
-
|
|
6654
|
-
|
|
6655
|
-
|
|
6656
|
-
|
|
6657
|
-
|
|
6658
|
-
|
|
6659
|
-
|
|
6660
|
-
|
|
6661
|
-
|
|
6662
|
-
|
|
6288
|
+
};
|
|
6289
|
+
jpeg.lossless.Decoder.prototype.setValue8 = function(index, val) {
|
|
6290
|
+
this.outputData[index] = val;
|
|
6291
|
+
};
|
|
6292
|
+
jpeg.lossless.Decoder.prototype.getValue8 = function(index) {
|
|
6293
|
+
return this.outputData[index];
|
|
6294
|
+
};
|
|
6295
|
+
var littleEndian = function() {
|
|
6296
|
+
var buffer = new ArrayBuffer(2);
|
|
6297
|
+
new DataView(buffer).setInt16(
|
|
6298
|
+
0,
|
|
6299
|
+
256,
|
|
6300
|
+
true
|
|
6301
|
+
/* littleEndian */
|
|
6302
|
+
);
|
|
6303
|
+
return new Int16Array(buffer)[0] === 256;
|
|
6304
|
+
}();
|
|
6305
|
+
if (littleEndian) {
|
|
6306
|
+
jpeg.lossless.Decoder.prototype.setValue16 = jpeg.lossless.Decoder.prototype.setValue8;
|
|
6307
|
+
jpeg.lossless.Decoder.prototype.getValue16 = jpeg.lossless.Decoder.prototype.getValue8;
|
|
6308
|
+
} else {
|
|
6309
|
+
jpeg.lossless.Decoder.prototype.setValue16 = function(index, val) {
|
|
6310
|
+
this.outputData[index] = (val & 255) << 8 | val >> 8 & 255;
|
|
6311
|
+
};
|
|
6312
|
+
jpeg.lossless.Decoder.prototype.getValue16 = function(index) {
|
|
6313
|
+
var val = this.outputData[index];
|
|
6314
|
+
return (val & 255) << 8 | val >> 8 & 255;
|
|
6315
|
+
};
|
|
6316
|
+
}
|
|
6317
|
+
jpeg.lossless.Decoder.prototype.setValueRGB = function(index, val, compOffset) {
|
|
6318
|
+
this.outputData[index * 3 + compOffset] = val;
|
|
6319
|
+
};
|
|
6320
|
+
jpeg.lossless.Decoder.prototype.getValueRGB = function(index, compOffset) {
|
|
6321
|
+
return this.outputData[index * 3 + compOffset];
|
|
6322
|
+
};
|
|
6323
|
+
jpeg.lossless.Decoder.prototype.readApp = function() {
|
|
6324
|
+
var count = 0, length = this.stream.get16();
|
|
6325
|
+
count += 2;
|
|
6326
|
+
while (count < length) {
|
|
6327
|
+
this.stream.get8();
|
|
6328
|
+
count += 1;
|
|
6663
6329
|
}
|
|
6664
|
-
|
|
6665
|
-
|
|
6666
|
-
|
|
6667
|
-
|
|
6668
|
-
|
|
6669
|
-
|
|
6670
|
-
|
|
6671
|
-
|
|
6672
|
-
|
|
6673
|
-
|
|
6674
|
-
|
|
6675
|
-
/*** Exports ***/
|
|
6676
|
-
|
|
6677
|
-
var moduleType = typeof module;
|
|
6678
|
-
if ((moduleType !== 'undefined') && module.exports) {
|
|
6679
|
-
module.exports = jpeg.lossless.QuantizationTable;
|
|
6680
|
-
}
|
|
6681
|
-
|
|
6682
|
-
},{"./data-stream.js":2,"./utils.js":10}],8:[function(require,module,exports){
|
|
6683
|
-
/*
|
|
6684
|
-
* Copyright (C) 2015 Michael Martinez
|
|
6685
|
-
* Changes: Added support for selection values 2-7, fixed minor bugs &
|
|
6686
|
-
* warnings, split into multiple class files, and general clean up.
|
|
6687
|
-
*
|
|
6688
|
-
* 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.
|
|
6689
|
-
*/
|
|
6690
|
-
|
|
6691
|
-
/*
|
|
6692
|
-
* Copyright (C) Helmut Dersch
|
|
6693
|
-
*
|
|
6694
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6695
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
6696
|
-
* in the Software without restriction, including without limitation the rights
|
|
6697
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
6698
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
6699
|
-
* furnished to do so, subject to the following conditions:
|
|
6700
|
-
|
|
6701
|
-
* The above copyright notice and this permission notice shall be included in
|
|
6702
|
-
* all copies or substantial portions of the Software.
|
|
6703
|
-
|
|
6704
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
6705
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
6706
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
6707
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
6708
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
6709
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
6710
|
-
* THE SOFTWARE.
|
|
6711
|
-
*/
|
|
6712
|
-
|
|
6713
|
-
/*jslint browser: true, node: true */
|
|
6714
|
-
/*global require, module */
|
|
6715
|
-
|
|
6716
|
-
"use strict";
|
|
6717
|
-
|
|
6718
|
-
/*** Imports ***/
|
|
6719
|
-
var jpeg = jpeg || {};
|
|
6720
|
-
jpeg.lossless = jpeg.lossless || {};
|
|
6721
|
-
|
|
6722
|
-
|
|
6723
|
-
/*** Constructor ***/
|
|
6724
|
-
jpeg.lossless.ScanComponent = jpeg.lossless.ScanComponent || function () {
|
|
6725
|
-
this.acTabSel = 0; // AC table selector
|
|
6726
|
-
this.dcTabSel = 0; // DC table selector
|
|
6727
|
-
this.scanCompSel = 0; // Scan component selector
|
|
6728
|
-
};
|
|
6729
|
-
|
|
6730
|
-
|
|
6731
|
-
|
|
6732
|
-
/*** Exports ***/
|
|
6733
|
-
|
|
6734
|
-
var moduleType = typeof module;
|
|
6735
|
-
if ((moduleType !== 'undefined') && module.exports) {
|
|
6736
|
-
module.exports = jpeg.lossless.ScanComponent;
|
|
6737
|
-
}
|
|
6738
|
-
|
|
6739
|
-
},{}],9:[function(require,module,exports){
|
|
6740
|
-
/*
|
|
6741
|
-
* Copyright (C) 2015 Michael Martinez
|
|
6742
|
-
* Changes: Added support for selection values 2-7, fixed minor bugs &
|
|
6743
|
-
* warnings, split into multiple class files, and general clean up.
|
|
6744
|
-
*
|
|
6745
|
-
* 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.
|
|
6746
|
-
*/
|
|
6747
|
-
|
|
6748
|
-
/*
|
|
6749
|
-
* Copyright (C) Helmut Dersch
|
|
6750
|
-
*
|
|
6751
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6752
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
6753
|
-
* in the Software without restriction, including without limitation the rights
|
|
6754
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
6755
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
6756
|
-
* furnished to do so, subject to the following conditions:
|
|
6757
|
-
|
|
6758
|
-
* The above copyright notice and this permission notice shall be included in
|
|
6759
|
-
* all copies or substantial portions of the Software.
|
|
6760
|
-
|
|
6761
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
6762
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
6763
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
6764
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
6765
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
6766
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
6767
|
-
* THE SOFTWARE.
|
|
6768
|
-
*/
|
|
6769
|
-
|
|
6770
|
-
/*jslint browser: true, node: true */
|
|
6771
|
-
/*global require, module */
|
|
6772
|
-
|
|
6773
|
-
"use strict";
|
|
6774
|
-
|
|
6775
|
-
/*** Imports ***/
|
|
6776
|
-
var jpeg = jpeg || {};
|
|
6777
|
-
jpeg.lossless = jpeg.lossless || {};
|
|
6778
|
-
jpeg.lossless.DataStream = jpeg.lossless.DataStream || ((typeof require !== 'undefined') ? require('./data-stream.js') : null);
|
|
6779
|
-
jpeg.lossless.ScanComponent = jpeg.lossless.ScanComponent || ((typeof require !== 'undefined') ? require('./scan-component.js') : null);
|
|
6780
|
-
|
|
6781
|
-
|
|
6782
|
-
/*** Constructor ***/
|
|
6783
|
-
jpeg.lossless.ScanHeader = jpeg.lossless.ScanHeader || function () {
|
|
6784
|
-
this.ah = 0;
|
|
6785
|
-
this.al = 0;
|
|
6786
|
-
this.numComp = 0; // Number of components in the scan
|
|
6787
|
-
this.selection = 0; // Start of spectral or predictor selection
|
|
6788
|
-
this.spectralEnd = 0; // End of spectral selection
|
|
6789
|
-
this.components = [];
|
|
6790
|
-
};
|
|
6791
|
-
|
|
6792
|
-
|
|
6793
|
-
/*** Prototype Methods ***/
|
|
6794
|
-
|
|
6795
|
-
jpeg.lossless.ScanHeader.prototype.read = function(data) {
|
|
6796
|
-
/*jslint bitwise: true */
|
|
6797
|
-
|
|
6798
|
-
var count = 0, length, i, temp;
|
|
6799
|
-
|
|
6800
|
-
length = data.get16();
|
|
6801
|
-
count += 2;
|
|
6802
|
-
|
|
6803
|
-
this.numComp = data.get8();
|
|
6804
|
-
count+=1;
|
|
6805
|
-
|
|
6806
|
-
for (i = 0; i < this.numComp; i+=1) {
|
|
6807
|
-
this.components[i] = new jpeg.lossless.ScanComponent();
|
|
6808
|
-
|
|
6809
|
-
if (count > length) {
|
|
6810
|
-
throw new Error("ERROR: scan header format error");
|
|
6330
|
+
return length;
|
|
6331
|
+
};
|
|
6332
|
+
jpeg.lossless.Decoder.prototype.readComment = function() {
|
|
6333
|
+
var sb = "", count = 0, length;
|
|
6334
|
+
length = this.stream.get16();
|
|
6335
|
+
count += 2;
|
|
6336
|
+
while (count < length) {
|
|
6337
|
+
sb += this.stream.get8();
|
|
6338
|
+
count += 1;
|
|
6811
6339
|
}
|
|
6812
|
-
|
|
6813
|
-
|
|
6814
|
-
|
|
6815
|
-
|
|
6816
|
-
|
|
6817
|
-
|
|
6818
|
-
|
|
6819
|
-
this.components[i].dcTabSel = (temp >> 4);
|
|
6820
|
-
this.components[i].acTabSel = (temp & 0x0F);
|
|
6821
|
-
}
|
|
6822
|
-
|
|
6823
|
-
this.selection = data.get8();
|
|
6824
|
-
count+=1;
|
|
6825
|
-
|
|
6826
|
-
this.spectralEnd = data.get8();
|
|
6827
|
-
count+=1;
|
|
6828
|
-
|
|
6829
|
-
temp = data.get8();
|
|
6830
|
-
this.ah = (temp >> 4);
|
|
6831
|
-
this.al = (temp & 0x0F);
|
|
6832
|
-
count+=1;
|
|
6833
|
-
|
|
6834
|
-
if (count !== length) {
|
|
6835
|
-
throw new Error("ERROR: scan header format error [count!=Ns]");
|
|
6836
|
-
}
|
|
6837
|
-
|
|
6838
|
-
return 1;
|
|
6839
|
-
};
|
|
6840
|
-
|
|
6841
|
-
|
|
6842
|
-
|
|
6843
|
-
/*** Exports ***/
|
|
6844
|
-
|
|
6845
|
-
var moduleType = typeof module;
|
|
6846
|
-
if ((moduleType !== 'undefined') && module.exports) {
|
|
6847
|
-
module.exports = jpeg.lossless.ScanHeader;
|
|
6848
|
-
}
|
|
6849
|
-
|
|
6850
|
-
},{"./data-stream.js":2,"./scan-component.js":8}],10:[function(require,module,exports){
|
|
6851
|
-
/*
|
|
6852
|
-
* Copyright (C) 2015 Michael Martinez
|
|
6853
|
-
* Changes: Added support for selection values 2-7, fixed minor bugs &
|
|
6854
|
-
* warnings, split into multiple class files, and general clean up.
|
|
6855
|
-
*
|
|
6856
|
-
* 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.
|
|
6857
|
-
*/
|
|
6858
|
-
|
|
6859
|
-
/*
|
|
6860
|
-
* Copyright (C) Helmut Dersch
|
|
6861
|
-
*
|
|
6862
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6863
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
6864
|
-
* in the Software without restriction, including without limitation the rights
|
|
6865
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
6866
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
6867
|
-
* furnished to do so, subject to the following conditions:
|
|
6868
|
-
|
|
6869
|
-
* The above copyright notice and this permission notice shall be included in
|
|
6870
|
-
* all copies or substantial portions of the Software.
|
|
6871
|
-
|
|
6872
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
6873
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
6874
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
6875
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
6876
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
6877
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
6878
|
-
* THE SOFTWARE.
|
|
6879
|
-
*/
|
|
6880
|
-
|
|
6881
|
-
/*jslint browser: true, node: true */
|
|
6882
|
-
/*global require, module */
|
|
6883
|
-
|
|
6884
|
-
"use strict";
|
|
6885
|
-
|
|
6886
|
-
/*** Imports ***/
|
|
6887
|
-
var jpeg = jpeg || {};
|
|
6888
|
-
jpeg.lossless = jpeg.lossless || {};
|
|
6889
|
-
|
|
6890
|
-
|
|
6891
|
-
/*** Constructor ***/
|
|
6892
|
-
jpeg.lossless.Utils = jpeg.lossless.Utils || {};
|
|
6893
|
-
|
|
6894
|
-
|
|
6895
|
-
/*** Static methods ***/
|
|
6896
|
-
|
|
6897
|
-
// http://stackoverflow.com/questions/966225/how-can-i-create-a-two-dimensional-array-in-javascript
|
|
6898
|
-
jpeg.lossless.Utils.createArray = function (length) {
|
|
6899
|
-
var arr = new Array(length || 0),
|
|
6900
|
-
i = length;
|
|
6901
|
-
|
|
6902
|
-
if (arguments.length > 1) {
|
|
6903
|
-
var args = Array.prototype.slice.call(arguments, 1);
|
|
6904
|
-
while(i--) arr[length-1 - i] = jpeg.lossless.Utils.createArray.apply(this, args);
|
|
6905
|
-
}
|
|
6906
|
-
|
|
6907
|
-
return arr;
|
|
6908
|
-
};
|
|
6909
|
-
|
|
6910
|
-
|
|
6911
|
-
// http://stackoverflow.com/questions/18638900/javascript-crc32
|
|
6912
|
-
jpeg.lossless.Utils.makeCRCTable = function(){
|
|
6913
|
-
var c;
|
|
6914
|
-
var crcTable = [];
|
|
6915
|
-
for(var n =0; n < 256; n++){
|
|
6916
|
-
c = n;
|
|
6917
|
-
for(var k =0; k < 8; k++){
|
|
6918
|
-
c = ((c&1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));
|
|
6340
|
+
return sb;
|
|
6341
|
+
};
|
|
6342
|
+
jpeg.lossless.Decoder.prototype.readNumber = function() {
|
|
6343
|
+
var Ld = this.stream.get16();
|
|
6344
|
+
if (Ld !== 4) {
|
|
6345
|
+
throw new Error("ERROR: Define number format throw new IOException [Ld!=4]");
|
|
6919
6346
|
}
|
|
6920
|
-
|
|
6347
|
+
return this.stream.get16();
|
|
6348
|
+
};
|
|
6349
|
+
var moduleType = typeof module;
|
|
6350
|
+
if (moduleType !== "undefined" && module.exports) {
|
|
6351
|
+
module.exports = jpeg.lossless.Decoder;
|
|
6352
|
+
}
|
|
6921
6353
|
}
|
|
6922
|
-
|
|
6923
|
-
|
|
6924
|
-
|
|
6925
|
-
|
|
6926
|
-
|
|
6927
|
-
|
|
6928
|
-
|
|
6929
|
-
|
|
6930
|
-
|
|
6931
|
-
|
|
6354
|
+
});
|
|
6355
|
+
|
|
6356
|
+
// src/main.js
|
|
6357
|
+
var require_main = __commonJS({
|
|
6358
|
+
"src/main.js"(exports, module) {
|
|
6359
|
+
var jpeg = jpeg || {};
|
|
6360
|
+
jpeg.lossless = jpeg.lossless || {};
|
|
6361
|
+
jpeg.lossless.ComponentSpec = jpeg.lossless.ComponentSpec || (typeof __require !== "undefined" ? require_component_spec() : null);
|
|
6362
|
+
jpeg.lossless.DataStream = jpeg.lossless.DataStream || (typeof __require !== "undefined" ? require_data_stream() : null);
|
|
6363
|
+
jpeg.lossless.Decoder = jpeg.lossless.Decoder || (typeof __require !== "undefined" ? require_decoder() : null);
|
|
6364
|
+
jpeg.lossless.FrameHeader = jpeg.lossless.FrameHeader || (typeof __require !== "undefined" ? require_frame_header() : null);
|
|
6365
|
+
jpeg.lossless.HuffmanTable = jpeg.lossless.HuffmanTable || (typeof __require !== "undefined" ? require_huffman_table() : null);
|
|
6366
|
+
jpeg.lossless.QuantizationTable = jpeg.lossless.QuantizationTable || (typeof __require !== "undefined" ? require_quantization_table() : null);
|
|
6367
|
+
jpeg.lossless.ScanComponent = jpeg.lossless.ScanComponent || (typeof __require !== "undefined" ? require_scan_component() : null);
|
|
6368
|
+
jpeg.lossless.ScanHeader = jpeg.lossless.ScanHeader || (typeof __require !== "undefined" ? require_scan_header() : null);
|
|
6369
|
+
jpeg.lossless.Utils = jpeg.lossless.Utils || (typeof __require !== "undefined" ? require_utils() : null);
|
|
6370
|
+
var moduleType = typeof module;
|
|
6371
|
+
if (moduleType !== "undefined" && module.exports) {
|
|
6372
|
+
module.exports = jpeg;
|
|
6373
|
+
}
|
|
6932
6374
|
}
|
|
6933
|
-
|
|
6934
|
-
|
|
6935
|
-
};
|
|
6936
|
-
|
|
6937
|
-
|
|
6938
|
-
/*** Exports ***/
|
|
6939
|
-
|
|
6940
|
-
var moduleType = typeof module;
|
|
6941
|
-
if ((moduleType !== 'undefined') && module.exports) {
|
|
6942
|
-
module.exports = jpeg.lossless.Utils;
|
|
6943
|
-
}
|
|
6944
|
-
|
|
6945
|
-
},{}]},{},[6])(6)
|
|
6946
|
-
});
|
|
6375
|
+
});
|
|
6376
|
+
require_main();
|
|
6377
|
+
})();
|
|
6947
6378
|
|
|
6948
6379
|
|
|
6949
6380
|
/***/ }),
|
|
@@ -6952,7 +6383,7 @@ if ((moduleType !== 'undefined') && module.exports) {
|
|
|
6952
6383
|
/***/ ((module) => {
|
|
6953
6384
|
|
|
6954
6385
|
"use strict";
|
|
6955
|
-
module.exports = window [Symbol .for ("X_ITE.X3D-8.
|
|
6386
|
+
module.exports = window [Symbol .for ("X_ITE.X3D-8.7.0")] .require ("lib/jquery");
|
|
6956
6387
|
|
|
6957
6388
|
/***/ }),
|
|
6958
6389
|
|
|
@@ -7056,25 +6487,25 @@ var __webpack_exports__ = {};
|
|
|
7056
6487
|
// UNUSED EXPORTS: default
|
|
7057
6488
|
|
|
7058
6489
|
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Components\")"
|
|
7059
|
-
const Components_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.
|
|
6490
|
+
const Components_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.7.0")] .require ("x_ite/Components");
|
|
7060
6491
|
var Components_default = /*#__PURE__*/__webpack_require__.n(Components_namespaceObject);
|
|
7061
6492
|
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Fields\")"
|
|
7062
|
-
const Fields_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.
|
|
6493
|
+
const Fields_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.7.0")] .require ("x_ite/Fields");
|
|
7063
6494
|
var Fields_default = /*#__PURE__*/__webpack_require__.n(Fields_namespaceObject);
|
|
7064
6495
|
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Base/X3DFieldDefinition\")"
|
|
7065
|
-
const X3DFieldDefinition_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.
|
|
6496
|
+
const X3DFieldDefinition_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.7.0")] .require ("x_ite/Base/X3DFieldDefinition");
|
|
7066
6497
|
var X3DFieldDefinition_default = /*#__PURE__*/__webpack_require__.n(X3DFieldDefinition_namespaceObject);
|
|
7067
6498
|
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Base/FieldDefinitionArray\")"
|
|
7068
|
-
const FieldDefinitionArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.
|
|
6499
|
+
const FieldDefinitionArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.7.0")] .require ("x_ite/Base/FieldDefinitionArray");
|
|
7069
6500
|
var FieldDefinitionArray_default = /*#__PURE__*/__webpack_require__.n(FieldDefinitionArray_namespaceObject);
|
|
7070
6501
|
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Components/Texturing/X3DSingleTextureNode\")"
|
|
7071
|
-
const X3DSingleTextureNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.
|
|
6502
|
+
const X3DSingleTextureNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.7.0")] .require ("x_ite/Components/Texturing/X3DSingleTextureNode");
|
|
7072
6503
|
var X3DSingleTextureNode_default = /*#__PURE__*/__webpack_require__.n(X3DSingleTextureNode_namespaceObject);
|
|
7073
6504
|
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Base/X3DConstants\")"
|
|
7074
|
-
const X3DConstants_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.
|
|
6505
|
+
const X3DConstants_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.7.0")] .require ("x_ite/Base/X3DConstants");
|
|
7075
6506
|
var X3DConstants_default = /*#__PURE__*/__webpack_require__.n(X3DConstants_namespaceObject);
|
|
7076
6507
|
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Namespace\")"
|
|
7077
|
-
const Namespace_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.
|
|
6508
|
+
const Namespace_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.7.0")] .require ("x_ite/Namespace");
|
|
7078
6509
|
var Namespace_default = /*#__PURE__*/__webpack_require__.n(Namespace_namespaceObject);
|
|
7079
6510
|
;// CONCATENATED MODULE: ./src/x_ite/Components/Texturing3D/X3DTexture3DNode.js
|
|
7080
6511
|
/*******************************************************************************
|
|
@@ -7242,7 +6673,7 @@ const __default__ = X3DTexture3DNode;
|
|
|
7242
6673
|
Namespace_default().set ("x_ite/Components/Texturing3D/X3DTexture3DNode", __default__);
|
|
7243
6674
|
/* harmony default export */ const Texturing3D_X3DTexture3DNode = (__default__);
|
|
7244
6675
|
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Base/X3DCast\")"
|
|
7245
|
-
const X3DCast_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.
|
|
6676
|
+
const X3DCast_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.7.0")] .require ("x_ite/Base/X3DCast");
|
|
7246
6677
|
var X3DCast_default = /*#__PURE__*/__webpack_require__.n(X3DCast_namespaceObject);
|
|
7247
6678
|
;// CONCATENATED MODULE: ./src/x_ite/Components/Texturing3D/ComposedTexture3D.js
|
|
7248
6679
|
/*******************************************************************************
|
|
@@ -7440,10 +6871,10 @@ const ComposedTexture3D_default_ = ComposedTexture3D;
|
|
|
7440
6871
|
Namespace_default().set ("x_ite/Components/Texturing3D/ComposedTexture3D", ComposedTexture3D_default_);
|
|
7441
6872
|
/* harmony default export */ const Texturing3D_ComposedTexture3D = (ComposedTexture3D_default_);
|
|
7442
6873
|
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Components/Networking/X3DUrlObject\")"
|
|
7443
|
-
const X3DUrlObject_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.
|
|
6874
|
+
const X3DUrlObject_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.7.0")] .require ("x_ite/Components/Networking/X3DUrlObject");
|
|
7444
6875
|
var X3DUrlObject_default = /*#__PURE__*/__webpack_require__.n(X3DUrlObject_namespaceObject);
|
|
7445
6876
|
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Parser/Expressions\")"
|
|
7446
|
-
const Expressions_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.
|
|
6877
|
+
const Expressions_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.7.0")] .require ("x_ite/Parser/Expressions");
|
|
7447
6878
|
var Expressions_default = /*#__PURE__*/__webpack_require__.n(Expressions_namespaceObject);
|
|
7448
6879
|
// EXTERNAL MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"lib/jquery\")"
|
|
7449
6880
|
var jquery_ = __webpack_require__(355);
|
|
@@ -7912,11 +7343,11 @@ const NRRDParser_default_ = NRRDParser;
|
|
|
7912
7343
|
Namespace_default().set ("x_ite/Browser/Texturing3D/NRRDParser", NRRDParser_default_);
|
|
7913
7344
|
/* harmony default export */ const Texturing3D_NRRDParser = (NRRDParser_default_);
|
|
7914
7345
|
;// CONCATENATED MODULE: ./src/x_ite/Browser/Texturing3D/DICOMParser.js
|
|
7915
|
-
/* provided dependency */ var dicomParser = __webpack_require__(
|
|
7916
|
-
/* provided dependency */ var JpegImage = __webpack_require__(
|
|
7917
|
-
/* provided dependency */ var jpeg = __webpack_require__(
|
|
7918
|
-
/* provided dependency */ var CharLS = __webpack_require__(
|
|
7919
|
-
/* provided dependency */ var OpenJPEG = __webpack_require__(
|
|
7346
|
+
/* provided dependency */ var dicomParser = __webpack_require__(615);
|
|
7347
|
+
/* provided dependency */ var JpegImage = __webpack_require__(622);
|
|
7348
|
+
/* provided dependency */ var jpeg = __webpack_require__(782);
|
|
7349
|
+
/* provided dependency */ var CharLS = __webpack_require__(990);
|
|
7350
|
+
/* provided dependency */ var OpenJPEG = __webpack_require__(881);
|
|
7920
7351
|
/*******************************************************************************
|
|
7921
7352
|
*
|
|
7922
7353
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
@@ -9019,7 +8450,7 @@ const DICOMParser_default_ = DicomParser;
|
|
|
9019
8450
|
Namespace_default().set ("x_ite/Browser/Texturing3D/DICOMParser", DICOMParser_default_);
|
|
9020
8451
|
/* harmony default export */ const DICOMParser = (DICOMParser_default_);
|
|
9021
8452
|
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/InputOutput/FileLoader\")"
|
|
9022
|
-
const FileLoader_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.
|
|
8453
|
+
const FileLoader_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.7.0")] .require ("x_ite/InputOutput/FileLoader");
|
|
9023
8454
|
var FileLoader_default = /*#__PURE__*/__webpack_require__.n(FileLoader_namespaceObject);
|
|
9024
8455
|
;// CONCATENATED MODULE: ./src/x_ite/Components/Texturing3D/ImageTexture3D.js
|
|
9025
8456
|
/*******************************************************************************
|
|
@@ -9199,7 +8630,7 @@ const ImageTexture3D_default_ = ImageTexture3D;
|
|
|
9199
8630
|
Namespace_default().set ("x_ite/Components/Texturing3D/ImageTexture3D", ImageTexture3D_default_);
|
|
9200
8631
|
/* harmony default export */ const Texturing3D_ImageTexture3D = (ImageTexture3D_default_);
|
|
9201
8632
|
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/DEBUG\")"
|
|
9202
|
-
const DEBUG_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.
|
|
8633
|
+
const DEBUG_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.7.0")] .require ("x_ite/DEBUG");
|
|
9203
8634
|
var DEBUG_default = /*#__PURE__*/__webpack_require__.n(DEBUG_namespaceObject);
|
|
9204
8635
|
;// CONCATENATED MODULE: ./src/x_ite/Components/Texturing3D/ImageTextureAtlas.js
|
|
9205
8636
|
/* provided dependency */ var $ = __webpack_require__(355);
|
|
@@ -9657,10 +9088,10 @@ const PixelTexture3D_default_ = PixelTexture3D;
|
|
|
9657
9088
|
Namespace_default().set ("x_ite/Components/Texturing3D/PixelTexture3D", PixelTexture3D_default_);
|
|
9658
9089
|
/* harmony default export */ const Texturing3D_PixelTexture3D = (PixelTexture3D_default_);
|
|
9659
9090
|
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Components/Texturing/X3DSingleTextureCoordinateNode\")"
|
|
9660
|
-
const X3DSingleTextureCoordinateNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.
|
|
9091
|
+
const X3DSingleTextureCoordinateNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.7.0")] .require ("x_ite/Components/Texturing/X3DSingleTextureCoordinateNode");
|
|
9661
9092
|
var X3DSingleTextureCoordinateNode_default = /*#__PURE__*/__webpack_require__.n(X3DSingleTextureCoordinateNode_namespaceObject);
|
|
9662
9093
|
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"standard/Math/Numbers/Vector4\")"
|
|
9663
|
-
const Vector4_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.
|
|
9094
|
+
const Vector4_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.7.0")] .require ("standard/Math/Numbers/Vector4");
|
|
9664
9095
|
;// CONCATENATED MODULE: ./src/x_ite/Components/Texturing3D/TextureCoordinate3D.js
|
|
9665
9096
|
/*******************************************************************************
|
|
9666
9097
|
*
|
|
@@ -10008,16 +9439,16 @@ const TextureCoordinate4D_default_ = TextureCoordinate4D;
|
|
|
10008
9439
|
Namespace_default().set ("x_ite/Components/Texturing3D/TextureCoordinate4D", TextureCoordinate4D_default_);
|
|
10009
9440
|
/* harmony default export */ const Texturing3D_TextureCoordinate4D = (TextureCoordinate4D_default_);
|
|
10010
9441
|
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Components/Texturing/X3DSingleTextureTransformNode\")"
|
|
10011
|
-
const X3DSingleTextureTransformNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.
|
|
9442
|
+
const X3DSingleTextureTransformNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.7.0")] .require ("x_ite/Components/Texturing/X3DSingleTextureTransformNode");
|
|
10012
9443
|
var X3DSingleTextureTransformNode_default = /*#__PURE__*/__webpack_require__.n(X3DSingleTextureTransformNode_namespaceObject);
|
|
10013
9444
|
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"standard/Math/Numbers/Vector3\")"
|
|
10014
|
-
const Vector3_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.
|
|
9445
|
+
const Vector3_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.7.0")] .require ("standard/Math/Numbers/Vector3");
|
|
10015
9446
|
var Vector3_default = /*#__PURE__*/__webpack_require__.n(Vector3_namespaceObject);
|
|
10016
9447
|
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"standard/Math/Numbers/Rotation4\")"
|
|
10017
|
-
const Rotation4_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.
|
|
9448
|
+
const Rotation4_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.7.0")] .require ("standard/Math/Numbers/Rotation4");
|
|
10018
9449
|
var Rotation4_default = /*#__PURE__*/__webpack_require__.n(Rotation4_namespaceObject);
|
|
10019
9450
|
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"standard/Math/Numbers/Matrix4\")"
|
|
10020
|
-
const Matrix4_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.
|
|
9451
|
+
const Matrix4_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.7.0")] .require ("standard/Math/Numbers/Matrix4");
|
|
10021
9452
|
var Matrix4_default = /*#__PURE__*/__webpack_require__.n(Matrix4_namespaceObject);
|
|
10022
9453
|
;// CONCATENATED MODULE: ./src/x_ite/Components/Texturing3D/TextureTransform3D.js
|
|
10023
9454
|
/*******************************************************************************
|