diff --git a/Packages/ohif-cornerstone/package.js b/Packages/ohif-cornerstone/package.js index 649156513..50e35f96d 100644 --- a/Packages/ohif-cornerstone/package.js +++ b/Packages/ohif-cornerstone/package.js @@ -23,6 +23,7 @@ Package.onUse(function(api) { api.addAssets('public/js/cornerstoneWADOImageLoaderCodecs.es5.js', 'client'); api.addAssets('public/js/cornerstoneWADOImageLoaderWebWorker.es5.js', 'client'); + api.addAssets('public/js/cornerstoneWADOImageLoaderWebWorker.min.js.map', 'client'); api.mainModule('main.js', 'client'); diff --git a/Packages/ohif-cornerstone/public/js/cornerstoneWADOImageLoaderWebWorker.min.js.map b/Packages/ohif-cornerstone/public/js/cornerstoneWADOImageLoaderWebWorker.min.js.map new file mode 100644 index 000000000..84d37269c --- /dev/null +++ b/Packages/ohif-cornerstone/public/js/cornerstoneWADOImageLoaderWebWorker.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition?5ca6","webpack:///cornerstoneWADOImageLoaderWebWorker.min.js","webpack:///webpack/bootstrap 495a94f4f47c0672c4cf?5a9b","webpack:///./version.js?a0dd","webpack:///./webWorker/decodeTask/decoders/decodeJPEG2000.js","webpack:///./webWorker/decodeTask/decoders/decodeJPEGLS.js","webpack:///./webWorker/decodeTask/decodeTask.js","webpack:///./webWorker/webWorker.js","webpack:///./webWorker/decodeTask/decodeImageFrame.js","webpack:///./webWorker/decodeTask/decoders/decodeBigEndian.js","webpack:///./webWorker/decodeTask/decoders/decodeJPEGBaseline.js","webpack:///./webWorker/decodeTask/decoders/decodeJPEGLossless.js","webpack:///./webWorker/decodeTask/decoders/decodeLittleEndian.js","webpack:///./webWorker/decodeTask/decoders/decodeRLE.js","webpack:///./webWorker/decodeTask/getMinMax.js","webpack:///./webWorker/index.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","value","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","3","default","33","decodeJpx","imageFrame","pixelData","jpxImage","JpxImage","parse","tileCount","tiles","length","columns","width","rows","height","items","decodeOpenJPEG","data","bytesPerPixel","signed","dataPtr","openJPEG","_malloc","writeArrayToMemory","imagePtrPtr","imageSizePtr","imageSizeXPtr","imageSizeYPtr","imageSizeCompPtr","t0","Date","now","ccall","console","log","_free","getValue","imagePtr","image","sx","sy","nbChannels","perf_timetodecode","undefined","src32","Int32Array","HEAP32","buffer","Uint8Array","from","Int16Array","Uint16Array","t1","decodeOpenJpeg2000","bitsAllocated","pixelRepresentation","photometricInterpretation","initializeJPEG2000","decodeConfig","usePDFJS","OpenJPEG","_jp2_decode","decodeJPEG2000","options","34","jpegLSDecode","isSigned","charLS","widthPtr","heightPtr","bitsPerSamplePtr","stridePtr","allowedLossyErrorPtr","componentsPtr","interleaveModePtr","result","bitsPerSample","stride","components","allowedLossyError","interleaveMode","set","HEAP8","HEAP16","initializeJPEGLS","CharLS","_jpegls_decode","decodeJPEGLS","38","_interopRequireDefault","obj","loadCodecs","config","codecsLoaded","self","importScripts","decodeTask","codecsPath","initializeCodecsOnStartup","_decodeJPEG","_decodeJPEGLS","decodeTaskInitialize","loadCodecsOnStartup","calculateMinMax","minMax","_getMinMax2","strict","smallestPixelValue","min","warn","largestPixelValue","max","decodeTaskHandler","doneCallback","_decodeImageFrame2","transferSyntax","_getMinMax","_decodeImageFrame","taskType","handler","initialize","39","initialized","webWorkerTaskPaths","keys","taskHandlers","forEach","key","taskConfiguration","postMessage","status","workerIndex","registerTaskHandler","taskHandler","loadWebWorkerTask","sourcePath","onmessage","msg","transferList","54","decodeImageFrame","start","getTime","_decodeLittleEndian2","_decodeBigEndian2","_decodeRLE2","_decodeJPEGBaseline2","_decodeJPEGLossless2","_decodeJPEGLS2","_decodeJPEG2","end","decodeTimeInMS","_decodeLittleEndian","_decodeBigEndian","_decodeRLE","_decodeJPEGBaseline","_decodeJPEGLossless","55","swap16","val","decodeBigEndian","arrayBuffer","offset","byteOffset","slice","56","decodeJPEGBaseline","JpegImage","jpeg","colorTransform","getData","getData16","57","decodeJPEGLossless","lossless","Decoder","byteOutput","decoder","decompressedData","decode","58","decodeLittleEndian","59","decodeRLE","planarConfiguration","decode8Planar","decode8","decode16","frameData","frameSize","outFrame","ArrayBuffer","samplesPerPixel","header","DataView","Int8Array","out","outIndex","numSegments","getInt32","inIndex","maxIndex","endOfSegment","j","highByte","60","getMinMax","storedPixelData","storedPixel","numPixels","index","Math","61","version","_version","_webWorker","_decodeTask","_decodeTask2"],"mappings":"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","file":"cornerstoneWADOImageLoaderWebWorker.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"cornerstoneWADOImageLoaderWebWorker\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cornerstoneWADOImageLoaderWebWorker\"] = factory();\n\telse\n\t\troot[\"cornerstoneWADOImageLoaderWebWorker\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","/*! cornerstone-wado-image-loader - 0.14.7 - 2017-09-15 | (c) 2016 Chris Hafey | https://github.com/chafey/cornerstoneWADOImageLoader */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"cornerstoneWADOImageLoaderWebWorker\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cornerstoneWADOImageLoaderWebWorker\"] = factory();\n\telse\n\t\troot[\"cornerstoneWADOImageLoaderWebWorker\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 61);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 3:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = '0.14.7';\n\n/***/ }),\n\n/***/ 33:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n\nfunction decodeJpx(imageFrame, pixelData) {\n\n var jpxImage = new JpxImage();\n\n jpxImage.parse(pixelData);\n\n var tileCount = jpxImage.tiles.length;\n\n if (tileCount !== 1) {\n throw 'JPEG2000 decoder returned a tileCount of ' + tileCount + ', when 1 is expected';\n }\n\n imageFrame.columns = jpxImage.width;\n imageFrame.rows = jpxImage.height;\n imageFrame.pixelData = jpxImage.tiles[0].items;\n\n return imageFrame;\n}\n\nvar openJPEG = void 0;\n\nfunction decodeOpenJPEG(data, bytesPerPixel, signed) {\n var dataPtr = openJPEG._malloc(data.length);\n\n openJPEG.writeArrayToMemory(data, dataPtr);\n\n // create param outpout\n var imagePtrPtr = openJPEG._malloc(4);\n var imageSizePtr = openJPEG._malloc(4);\n var imageSizeXPtr = openJPEG._malloc(4);\n var imageSizeYPtr = openJPEG._malloc(4);\n var imageSizeCompPtr = openJPEG._malloc(4);\n\n var t0 = Date.now();\n var ret = openJPEG.ccall('jp2_decode', 'number', ['number', 'number', 'number', 'number', 'number', 'number', 'number'], [dataPtr, data.length, imagePtrPtr, imageSizePtr, imageSizeXPtr, imageSizeYPtr, imageSizeCompPtr]);\n // add num vomp..etc\n\n if (ret !== 0) {\n console.log('[opj_decode] decoding failed!');\n openJPEG._free(dataPtr);\n openJPEG._free(openJPEG.getValue(imagePtrPtr, '*'));\n openJPEG._free(imageSizeXPtr);\n openJPEG._free(imageSizeYPtr);\n openJPEG._free(imageSizePtr);\n openJPEG._free(imageSizeCompPtr);\n\n return undefined;\n }\n\n var imagePtr = openJPEG.getValue(imagePtrPtr, '*');\n\n var image = {\n length: openJPEG.getValue(imageSizePtr, 'i32'),\n sx: openJPEG.getValue(imageSizeXPtr, 'i32'),\n sy: openJPEG.getValue(imageSizeYPtr, 'i32'),\n nbChannels: openJPEG.getValue(imageSizeCompPtr, 'i32'), // hard coded for now\n perf_timetodecode: undefined,\n pixelData: undefined\n };\n\n // Copy the data from the EMSCRIPTEN heap into the correct type array\n var length = image.sx * image.sy * image.nbChannels;\n var src32 = new Int32Array(openJPEG.HEAP32.buffer, imagePtr, length);\n\n if (bytesPerPixel === 1) {\n if (Uint8Array.from) {\n image.pixelData = Uint8Array.from(src32);\n } else {\n image.pixelData = new Uint8Array(length);\n for (var i = 0; i < length; i++) {\n image.pixelData[i] = src32[i];\n }\n }\n } else if (signed) {\n if (Int16Array.from) {\n image.pixelData = Int16Array.from(src32);\n } else {\n image.pixelData = new Int16Array(length);\n for (var _i = 0; _i < length; _i++) {\n image.pixelData[_i] = src32[_i];\n }\n }\n } else if (Uint16Array.from) {\n image.pixelData = Uint16Array.from(src32);\n } else {\n image.pixelData = new Uint16Array(length);\n for (var _i2 = 0; _i2 < length; _i2++) {\n image.pixelData[_i2] = src32[_i2];\n }\n }\n\n var t1 = Date.now();\n\n image.perf_timetodecode = t1 - t0;\n\n // free\n openJPEG._free(dataPtr);\n openJPEG._free(imagePtrPtr);\n openJPEG._free(imagePtr);\n openJPEG._free(imageSizePtr);\n openJPEG._free(imageSizeXPtr);\n openJPEG._free(imageSizeYPtr);\n openJPEG._free(imageSizeCompPtr);\n\n return image;\n}\n\nfunction decodeOpenJpeg2000(imageFrame, pixelData) {\n var bytesPerPixel = imageFrame.bitsAllocated <= 8 ? 1 : 2;\n var signed = imageFrame.pixelRepresentation === 1;\n\n var image = decodeOpenJPEG(pixelData, bytesPerPixel, signed);\n\n imageFrame.columns = image.sx;\n imageFrame.rows = image.sy;\n imageFrame.pixelData = image.pixelData;\n if (image.nbChannels > 1) {\n imageFrame.photometricInterpretation = 'RGB';\n }\n\n return imageFrame;\n}\n\nfunction initializeJPEG2000(decodeConfig) {\n // check to make sure codec is loaded\n if (!decodeConfig.usePDFJS) {\n if (typeof OpenJPEG === 'undefined') {\n throw 'OpenJPEG decoder not loaded';\n }\n }\n\n if (!openJPEG) {\n openJPEG = OpenJPEG();\n if (!openJPEG || !openJPEG._jp2_decode) {\n throw 'OpenJPEG failed to initialize';\n }\n }\n}\n\nfunction decodeJPEG2000(imageFrame, pixelData, decodeConfig, options) {\n options = options || {};\n\n initializeJPEG2000(decodeConfig);\n\n if (options.usePDFJS || decodeConfig.usePDFJS) {\n // OHIF image-JPEG2000 https://github.com/OHIF/image-JPEG2000\n // console.log('PDFJS')\n return decodeJpx(imageFrame, pixelData);\n }\n\n // OpenJPEG2000 https://github.com/jpambrun/openjpeg\n // console.log('OpenJPEG')\n return decodeOpenJpeg2000(imageFrame, pixelData);\n}\n\nexports.default = decodeJPEG2000;\nexports.initializeJPEG2000 = initializeJPEG2000;\n\n/***/ }),\n\n/***/ 34:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n\nvar charLS = void 0;\n\nfunction jpegLSDecode(data, isSigned) {\n\n // prepare input parameters\n var dataPtr = charLS._malloc(data.length);\n\n charLS.writeArrayToMemory(data, dataPtr);\n\n // prepare output parameters\n var imagePtrPtr = charLS._malloc(4);\n var imageSizePtr = charLS._malloc(4);\n var widthPtr = charLS._malloc(4);\n var heightPtr = charLS._malloc(4);\n var bitsPerSamplePtr = charLS._malloc(4);\n var stridePtr = charLS._malloc(4);\n var allowedLossyErrorPtr = charLS._malloc(4);\n var componentsPtr = charLS._malloc(4);\n var interleaveModePtr = charLS._malloc(4);\n\n // Decode the image\n var result = charLS.ccall('jpegls_decode', 'number', ['number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number'], [dataPtr, data.length, imagePtrPtr, imageSizePtr, widthPtr, heightPtr, bitsPerSamplePtr, stridePtr, componentsPtr, allowedLossyErrorPtr, interleaveModePtr]);\n\n // Extract result values into object\n var image = {\n result: result,\n width: charLS.getValue(widthPtr, 'i32'),\n height: charLS.getValue(heightPtr, 'i32'),\n bitsPerSample: charLS.getValue(bitsPerSamplePtr, 'i32'),\n stride: charLS.getValue(stridePtr, 'i32'),\n components: charLS.getValue(componentsPtr, 'i32'),\n allowedLossyError: charLS.getValue(allowedLossyErrorPtr, 'i32'),\n interleaveMode: charLS.getValue(interleaveModePtr, 'i32'),\n pixelData: undefined\n };\n\n // Copy image from emscripten heap into appropriate array buffer type\n var imagePtr = charLS.getValue(imagePtrPtr, '*');\n\n if (image.bitsPerSample <= 8) {\n image.pixelData = new Uint8Array(image.width * image.height * image.components);\n image.pixelData.set(new Uint8Array(charLS.HEAP8.buffer, imagePtr, image.pixelData.length));\n } else if (isSigned) {\n image.pixelData = new Int16Array(image.width * image.height * image.components);\n image.pixelData.set(new Int16Array(charLS.HEAP16.buffer, imagePtr, image.pixelData.length));\n } else {\n image.pixelData = new Uint16Array(image.width * image.height * image.components);\n image.pixelData.set(new Uint16Array(charLS.HEAP16.buffer, imagePtr, image.pixelData.length));\n }\n\n // free memory and return image object\n charLS._free(dataPtr);\n charLS._free(imagePtr);\n charLS._free(imagePtrPtr);\n charLS._free(imageSizePtr);\n charLS._free(widthPtr);\n charLS._free(heightPtr);\n charLS._free(bitsPerSamplePtr);\n charLS._free(stridePtr);\n charLS._free(componentsPtr);\n charLS._free(interleaveModePtr);\n\n return image;\n}\n\nfunction initializeJPEGLS() {\n // check to make sure codec is loaded\n if (typeof CharLS === 'undefined') {\n throw 'No JPEG-LS decoder loaded';\n }\n\n // Try to initialize CharLS\n // CharLS https://github.com/chafey/charls\n if (!charLS) {\n charLS = CharLS();\n if (!charLS || !charLS._jpegls_decode) {\n throw 'JPEG-LS failed to initialize';\n }\n }\n}\n\nfunction decodeJPEGLS(imageFrame, pixelData) {\n initializeJPEGLS();\n\n var image = jpegLSDecode(pixelData, imageFrame.pixelRepresentation === 1);\n // console.log(image);\n\n // throw error if not success or too much data\n if (image.result !== 0 && image.result !== 6) {\n throw 'JPEG-LS decoder failed to decode frame (error code ' + image.result + ')';\n }\n\n imageFrame.columns = image.width;\n imageFrame.rows = image.height;\n imageFrame.pixelData = image.pixelData;\n\n return imageFrame;\n}\n\nexports.default = decodeJPEGLS;\nexports.initializeJPEGLS = initializeJPEGLS;\n\n/***/ }),\n\n/***/ 38:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _decodeJPEG = __webpack_require__(33);\n\nvar _decodeJPEGLS = __webpack_require__(34);\n\nvar _getMinMax = __webpack_require__(60);\n\nvar _getMinMax2 = _interopRequireDefault(_getMinMax);\n\nvar _decodeImageFrame = __webpack_require__(54);\n\nvar _decodeImageFrame2 = _interopRequireDefault(_decodeImageFrame);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// flag to ensure codecs are loaded only once\nvar codecsLoaded = false;\n\n// the configuration object for the decodeTask\nvar decodeConfig = void 0;\n\n/**\n * Function to control loading and initializing the codecs\n * @param config\n */\nfunction loadCodecs(config) {\n // prevent loading codecs more than once\n if (codecsLoaded) {\n return;\n }\n\n // Load the codecs\n // console.time('loadCodecs');\n self.importScripts(config.decodeTask.codecsPath);\n codecsLoaded = true;\n // console.timeEnd('loadCodecs');\n\n // Initialize the codecs\n if (config.decodeTask.initializeCodecsOnStartup) {\n // console.time('initializeCodecs');\n (0, _decodeJPEG.initializeJPEG2000)(config.decodeTask);\n (0, _decodeJPEGLS.initializeJPEGLS)(config.decodeTask);\n // console.timeEnd('initializeCodecs');\n }\n}\n\n/**\n * Task initialization function\n */\nfunction decodeTaskInitialize(config) {\n decodeConfig = config;\n if (config.decodeTask.loadCodecsOnStartup) {\n loadCodecs(config);\n }\n}\n\nfunction calculateMinMax(imageFrame) {\n var minMax = (0, _getMinMax2.default)(imageFrame.pixelData);\n\n if (decodeConfig.decodeTask.strict === true) {\n if (imageFrame.smallestPixelValue !== minMax.min) {\n console.warn('Image smallestPixelValue tag is incorrect. Rendering performance will suffer considerably.');\n }\n\n if (imageFrame.largestPixelValue !== minMax.max) {\n console.warn('Image largestPixelValue tag is incorrect. Rendering performance will suffer considerably.');\n }\n } else {\n imageFrame.smallestPixelValue = minMax.min;\n imageFrame.largestPixelValue = minMax.max;\n }\n}\n\n/**\n * Task handler function\n */\nfunction decodeTaskHandler(data, doneCallback) {\n // Load the codecs if they aren't already loaded\n loadCodecs(decodeConfig);\n\n var imageFrame = data.data.imageFrame;\n\n // convert pixel data from ArrayBuffer to Uint8Array since web workers support passing ArrayBuffers but\n // not typed arrays\n var pixelData = new Uint8Array(data.data.pixelData);\n\n (0, _decodeImageFrame2.default)(imageFrame, data.data.transferSyntax, pixelData, decodeConfig.decodeTask, data.data.options);\n\n calculateMinMax(imageFrame);\n\n // convert from TypedArray to ArrayBuffer since web workers support passing ArrayBuffers but not\n // typed arrays\n imageFrame.pixelData = imageFrame.pixelData.buffer;\n\n // invoke the callback with our result and pass the pixelData in the transferList to move it to\n // UI thread without making a copy\n doneCallback(imageFrame, [imageFrame.pixelData]);\n}\n\nexports.default = {\n taskType: 'decodeTask',\n handler: decodeTaskHandler,\n initialize: decodeTaskInitialize\n};\n\n/***/ }),\n\n/***/ 39:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.registerTaskHandler = registerTaskHandler;\n// an object of task handlers\nvar taskHandlers = {};\n\n// Flag to ensure web worker is only initialized once\nvar initialized = false;\n\n// the configuration object passed in when the web worker manager is initialized\nvar config = void 0;\n\n/**\n * Initialization function that loads additional web workers and initializes them\n * @param data\n */\nfunction initialize(data) {\n // console.log('web worker initialize ', data.workerIndex);\n // prevent initialization from happening more than once\n if (initialized) {\n return;\n }\n\n // save the config data\n config = data.config;\n\n // load any additional web worker tasks\n if (data.config.webWorkerTaskPaths) {\n for (var i = 0; i < data.config.webWorkerTaskPaths.length; i++) {\n self.importScripts(data.config.webWorkerTaskPaths[i]);\n }\n }\n\n // initialize each task handler\n Object.keys(taskHandlers).forEach(function (key) {\n taskHandlers[key].initialize(config.taskConfiguration);\n });\n\n // tell main ui thread that we have completed initialization\n self.postMessage({\n taskType: 'initialize',\n status: 'success',\n result: {},\n workerIndex: data.workerIndex\n });\n\n initialized = true;\n}\n\n/**\n * Function exposed to web worker tasks to register themselves\n * @param taskHandler\n */\nfunction registerTaskHandler(taskHandler) {\n if (taskHandlers[taskHandler.taskType]) {\n console.log('attempt to register duplicate task handler \"', taskHandler.taskType, '\"');\n\n return false;\n }\n taskHandlers[taskHandler.taskType] = taskHandler;\n if (initialized) {\n taskHandler.initialize(config.taskConfiguration);\n }\n}\n\n/**\n * Function to load a new web worker task with updated configuration\n * @param data\n */\nfunction loadWebWorkerTask(data) {\n config = data.config;\n self.importScripts(data.sourcePath);\n}\n\n/**\n * Web worker message handler - dispatches messages to the registered task handlers\n * @param msg\n */\nself.onmessage = function (msg) {\n // console.log('web worker onmessage', msg.data);\n\n // handle initialize message\n if (msg.data.taskType === 'initialize') {\n initialize(msg.data);\n\n return;\n }\n\n // handle loadWebWorkerTask message\n if (msg.data.taskType === 'loadWebWorkerTask') {\n loadWebWorkerTask(msg.data);\n\n return;\n }\n\n // dispatch the message if there is a handler registered for it\n if (taskHandlers[msg.data.taskType]) {\n taskHandlers[msg.data.taskType].handler(msg.data, function (result, transferList) {\n self.postMessage({\n taskType: msg.data.taskType,\n status: 'success',\n result: result,\n workerIndex: msg.data.workerIndex\n }, transferList);\n });\n\n return;\n }\n\n // not task handler registered - send a failure message back to ui thread\n console.log('no task handler for ', msg.data.taskType);\n console.log(taskHandlers);\n self.postMessage({\n taskType: msg.data.taskType,\n status: 'failed - no task handler registered',\n workerIndex: msg.data.workerIndex\n });\n};\n\n/***/ }),\n\n/***/ 54:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _decodeLittleEndian = __webpack_require__(58);\n\nvar _decodeLittleEndian2 = _interopRequireDefault(_decodeLittleEndian);\n\nvar _decodeBigEndian = __webpack_require__(55);\n\nvar _decodeBigEndian2 = _interopRequireDefault(_decodeBigEndian);\n\nvar _decodeRLE = __webpack_require__(59);\n\nvar _decodeRLE2 = _interopRequireDefault(_decodeRLE);\n\nvar _decodeJPEGBaseline = __webpack_require__(56);\n\nvar _decodeJPEGBaseline2 = _interopRequireDefault(_decodeJPEGBaseline);\n\nvar _decodeJPEGLossless = __webpack_require__(57);\n\nvar _decodeJPEGLossless2 = _interopRequireDefault(_decodeJPEGLossless);\n\nvar _decodeJPEGLS = __webpack_require__(34);\n\nvar _decodeJPEGLS2 = _interopRequireDefault(_decodeJPEGLS);\n\nvar _decodeJPEG = __webpack_require__(33);\n\nvar _decodeJPEG2 = _interopRequireDefault(_decodeJPEG);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction decodeImageFrame(imageFrame, transferSyntax, pixelData, decodeConfig, options) {\n var start = new Date().getTime();\n\n if (transferSyntax === '1.2.840.10008.1.2') {\n // Implicit VR Little Endian\n imageFrame = (0, _decodeLittleEndian2.default)(imageFrame, pixelData);\n } else if (transferSyntax === '1.2.840.10008.1.2.1') {\n // Explicit VR Little Endian\n imageFrame = (0, _decodeLittleEndian2.default)(imageFrame, pixelData);\n } else if (transferSyntax === '1.2.840.10008.1.2.2') {\n // Explicit VR Big Endian (retired)\n imageFrame = (0, _decodeBigEndian2.default)(imageFrame, pixelData);\n } else if (transferSyntax === '1.2.840.10008.1.2.1.99') {\n // Deflate transfer syntax (deflated by dicomParser)\n imageFrame = (0, _decodeLittleEndian2.default)(imageFrame, pixelData);\n } else if (transferSyntax === '1.2.840.10008.1.2.5') {\n // RLE Lossless\n imageFrame = (0, _decodeRLE2.default)(imageFrame, pixelData);\n } else if (transferSyntax === '1.2.840.10008.1.2.4.50') {\n // JPEG Baseline lossy process 1 (8 bit)\n imageFrame = (0, _decodeJPEGBaseline2.default)(imageFrame, pixelData);\n } else if (transferSyntax === '1.2.840.10008.1.2.4.51') {\n // JPEG Baseline lossy process 2 & 4 (12 bit)\n imageFrame = (0, _decodeJPEGBaseline2.default)(imageFrame, pixelData);\n } else if (transferSyntax === '1.2.840.10008.1.2.4.57') {\n // JPEG Lossless, Nonhierarchical (Processes 14)\n imageFrame = (0, _decodeJPEGLossless2.default)(imageFrame, pixelData);\n } else if (transferSyntax === '1.2.840.10008.1.2.4.70') {\n // JPEG Lossless, Nonhierarchical (Processes 14 [Selection 1])\n imageFrame = (0, _decodeJPEGLossless2.default)(imageFrame, pixelData);\n } else if (transferSyntax === '1.2.840.10008.1.2.4.80') {\n // JPEG-LS Lossless Image Compression\n imageFrame = (0, _decodeJPEGLS2.default)(imageFrame, pixelData);\n } else if (transferSyntax === '1.2.840.10008.1.2.4.81') {\n // JPEG-LS Lossy (Near-Lossless) Image Compression\n imageFrame = (0, _decodeJPEGLS2.default)(imageFrame, pixelData);\n } else if (transferSyntax === '1.2.840.10008.1.2.4.90') {\n // JPEG 2000 Lossless\n imageFrame = (0, _decodeJPEG2.default)(imageFrame, pixelData, decodeConfig, options);\n } else if (transferSyntax === '1.2.840.10008.1.2.4.91') {\n // JPEG 2000 Lossy\n imageFrame = (0, _decodeJPEG2.default)(imageFrame, pixelData, decodeConfig, options);\n } else {\n if (console && console.log) {\n console.log('Image cannot be decoded due to Unsupported transfer syntax ' + transferSyntax);\n }\n\n throw 'no decoder for transfer syntax ' + transferSyntax;\n }\n\n /* Don't know if these work...\n // JPEG 2000 Part 2 Multicomponent Image Compression (Lossless Only)\n else if(transferSyntax === \"1.2.840.10008.1.2.4.92\")\n {\n return decodeJPEG2000(dataSet, frame);\n }\n // JPEG 2000 Part 2 Multicomponent Image Compression\n else if(transferSyntax === \"1.2.840.10008.1.2.4.93\")\n {\n return decodeJPEG2000(dataSet, frame);\n }\n */\n\n var end = new Date().getTime();\n\n imageFrame.decodeTimeInMS = end - start;\n\n return imageFrame;\n}\n\nexports.default = decodeImageFrame;\n\n/***/ }),\n\n/***/ 55:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/* eslint no-bitwise: 0 */\nfunction swap16(val) {\n return (val & 0xFF) << 8 | val >> 8 & 0xFF;\n}\n\nfunction decodeBigEndian(imageFrame, pixelData) {\n if (imageFrame.bitsAllocated === 16) {\n var arrayBuffer = pixelData.buffer;\n var offset = pixelData.byteOffset;\n var length = pixelData.length;\n // if pixel data is not aligned on even boundary, shift it so we can create the 16 bit array\n // buffers on it\n\n if (offset % 2) {\n arrayBuffer = arrayBuffer.slice(offset);\n offset = 0;\n }\n\n if (imageFrame.pixelRepresentation === 0) {\n imageFrame.pixelData = new Uint16Array(arrayBuffer, offset, length / 2);\n } else {\n imageFrame.pixelData = new Int16Array(arrayBuffer, offset, length / 2);\n }\n // Do the byte swap\n for (var i = 0; i < imageFrame.pixelData.length; i++) {\n imageFrame.pixelData[i] = swap16(imageFrame.pixelData[i]);\n }\n } else if (imageFrame.bitsAllocated === 8) {\n imageFrame.pixelData = pixelData;\n }\n\n return imageFrame;\n}\n\nexports.default = decodeBigEndian;\n\n/***/ }),\n\n/***/ 56:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n\nfunction decodeJPEGBaseline(imageFrame, pixelData) {\n // check to make sure codec is loaded\n if (typeof JpegImage === 'undefined') {\n throw 'No JPEG Baseline decoder loaded';\n }\n var jpeg = new JpegImage();\n\n jpeg.parse(pixelData);\n\n // Do not use the internal jpeg.js color transformation,\n // since we will handle this afterwards\n jpeg.colorTransform = false;\n\n if (imageFrame.bitsAllocated === 8) {\n imageFrame.pixelData = jpeg.getData(imageFrame.columns, imageFrame.rows);\n\n return imageFrame;\n } else if (imageFrame.bitsAllocated === 16) {\n imageFrame.pixelData = jpeg.getData16(imageFrame.columns, imageFrame.rows);\n\n return imageFrame;\n }\n}\n\nexports.default = decodeJPEGBaseline;\n\n/***/ }),\n\n/***/ 57:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n\nfunction decodeJPEGLossless(imageFrame, pixelData) {\n // check to make sure codec is loaded\n if (typeof jpeg === 'undefined' || typeof jpeg.lossless === 'undefined' || typeof jpeg.lossless.Decoder === 'undefined') {\n throw 'No JPEG Lossless decoder loaded';\n }\n\n var byteOutput = imageFrame.bitsAllocated <= 8 ? 1 : 2;\n // console.time('jpeglossless');\n var buffer = pixelData.buffer;\n var decoder = new jpeg.lossless.Decoder();\n var decompressedData = decoder.decode(buffer, pixelData.byteOffset, pixelData.length, byteOutput);\n // console.timeEnd('jpeglossless');\n\n if (imageFrame.pixelRepresentation === 0) {\n if (imageFrame.bitsAllocated === 16) {\n imageFrame.pixelData = new Uint16Array(decompressedData.buffer);\n\n return imageFrame;\n }\n // untested!\n imageFrame.pixelData = new Uint8Array(decompressedData.buffer);\n\n return imageFrame;\n }\n imageFrame.pixelData = new Int16Array(decompressedData.buffer);\n\n return imageFrame;\n}\n\nexports.default = decodeJPEGLossless;\n\n/***/ }),\n\n/***/ 58:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction decodeLittleEndian(imageFrame, pixelData) {\n if (imageFrame.bitsAllocated === 16) {\n var arrayBuffer = pixelData.buffer;\n var offset = pixelData.byteOffset;\n var length = pixelData.length;\n // if pixel data is not aligned on even boundary, shift it so we can create the 16 bit array\n // buffers on it\n\n if (offset % 2) {\n arrayBuffer = arrayBuffer.slice(offset);\n offset = 0;\n }\n\n if (imageFrame.pixelRepresentation === 0) {\n imageFrame.pixelData = new Uint16Array(arrayBuffer, offset, length / 2);\n } else {\n imageFrame.pixelData = new Int16Array(arrayBuffer, offset, length / 2);\n }\n } else if (imageFrame.bitsAllocated === 8) {\n imageFrame.pixelData = pixelData;\n }\n\n return imageFrame;\n}\n\nexports.default = decodeLittleEndian;\n\n/***/ }),\n\n/***/ 59:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction decodeRLE(imageFrame, pixelData) {\n\n if (imageFrame.bitsAllocated === 8) {\n if (imageFrame.planarConfiguration) {\n return decode8Planar(imageFrame, pixelData);\n }\n\n return decode8(imageFrame, pixelData);\n } else if (imageFrame.bitsAllocated === 16) {\n return decode16(imageFrame, pixelData);\n }\n throw 'unsupported pixel format for RLE';\n}\n\nfunction decode8(imageFrame, pixelData) {\n var frameData = pixelData;\n var frameSize = imageFrame.rows * imageFrame.columns;\n var outFrame = new ArrayBuffer(frameSize * imageFrame.samplesPerPixel);\n var header = new DataView(frameData.buffer, frameData.byteOffset);\n var data = new Int8Array(frameData.buffer, frameData.byteOffset);\n var out = new Int8Array(outFrame);\n\n var outIndex = 0;\n var numSegments = header.getInt32(0, true);\n\n for (var s = 0; s < numSegments; ++s) {\n outIndex = s;\n\n var inIndex = header.getInt32((s + 1) * 4, true);\n var maxIndex = header.getInt32((s + 2) * 4, true);\n\n if (maxIndex === 0) {\n maxIndex = frameData.length;\n }\n\n var endOfSegment = frameSize * numSegments;\n\n while (inIndex < maxIndex) {\n var n = data[inIndex++];\n\n if (n >= 0 && n <= 127) {\n // copy n bytes\n for (var i = 0; i < n + 1 && outIndex < endOfSegment; ++i) {\n out[outIndex] = data[inIndex++];\n outIndex += imageFrame.samplesPerPixel;\n }\n } else if (n <= -1 && n >= -127) {\n var value = data[inIndex++];\n // run of n bytes\n\n for (var j = 0; j < -n + 1 && outIndex < endOfSegment; ++j) {\n out[outIndex] = value;\n outIndex += imageFrame.samplesPerPixel;\n }\n } /* else if (n === -128) {\n } // do nothing */\n }\n }\n imageFrame.pixelData = new Uint8Array(outFrame);\n\n return imageFrame;\n}\n\nfunction decode8Planar(imageFrame, pixelData) {\n var frameData = pixelData;\n var frameSize = imageFrame.rows * imageFrame.columns;\n var outFrame = new ArrayBuffer(frameSize * imageFrame.samplesPerPixel);\n var header = new DataView(frameData.buffer, frameData.byteOffset);\n var data = new Int8Array(frameData.buffer, frameData.byteOffset);\n var out = new Int8Array(outFrame);\n\n var outIndex = 0;\n var numSegments = header.getInt32(0, true);\n\n for (var s = 0; s < numSegments; ++s) {\n outIndex = s * frameSize;\n\n var inIndex = header.getInt32((s + 1) * 4, true);\n var maxIndex = header.getInt32((s + 2) * 4, true);\n\n if (maxIndex === 0) {\n maxIndex = frameData.length;\n }\n\n var endOfSegment = frameSize * numSegments;\n\n while (inIndex < maxIndex) {\n var n = data[inIndex++];\n\n if (n >= 0 && n <= 127) {\n // copy n bytes\n for (var i = 0; i < n + 1 && outIndex < endOfSegment; ++i) {\n out[outIndex] = data[inIndex++];\n outIndex++;\n }\n } else if (n <= -1 && n >= -127) {\n var value = data[inIndex++];\n // run of n bytes\n\n for (var j = 0; j < -n + 1 && outIndex < endOfSegment; ++j) {\n out[outIndex] = value;\n outIndex++;\n }\n } /* else if (n === -128) {\n } // do nothing */\n }\n }\n imageFrame.pixelData = new Uint8Array(outFrame);\n\n return imageFrame;\n}\n\nfunction decode16(imageFrame, pixelData) {\n var frameData = pixelData;\n var frameSize = imageFrame.rows * imageFrame.columns;\n var outFrame = new ArrayBuffer(frameSize * imageFrame.samplesPerPixel * 2);\n\n var header = new DataView(frameData.buffer, frameData.byteOffset);\n var data = new Int8Array(frameData.buffer, frameData.byteOffset);\n var out = new Int8Array(outFrame);\n\n var numSegments = header.getInt32(0, true);\n\n for (var s = 0; s < numSegments; ++s) {\n var outIndex = 0;\n var highByte = s === 0 ? 1 : 0;\n\n var inIndex = header.getInt32((s + 1) * 4, true);\n var maxIndex = header.getInt32((s + 2) * 4, true);\n\n if (maxIndex === 0) {\n maxIndex = frameData.length;\n }\n\n while (inIndex < maxIndex) {\n var n = data[inIndex++];\n\n if (n >= 0 && n <= 127) {\n for (var i = 0; i < n + 1 && outIndex < frameSize; ++i) {\n out[outIndex * 2 + highByte] = data[inIndex++];\n outIndex++;\n }\n } else if (n <= -1 && n >= -127) {\n var value = data[inIndex++];\n\n for (var j = 0; j < -n + 1 && outIndex < frameSize; ++j) {\n out[outIndex * 2 + highByte] = value;\n outIndex++;\n }\n } /* else if (n === -128) {\n } // do nothing */\n }\n }\n if (imageFrame.pixelRepresentation === 0) {\n imageFrame.pixelData = new Uint16Array(outFrame);\n } else {\n imageFrame.pixelData = new Int16Array(outFrame);\n }\n\n return imageFrame;\n}\n\nexports.default = decodeRLE;\n\n/***/ }),\n\n/***/ 60:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction getMinMax(storedPixelData) {\n // we always calculate the min max values since they are not always\n // present in DICOM and we don't want to trust them anyway as cornerstone\n // depends on us providing reliable values for these\n var min = storedPixelData[0];\n var max = storedPixelData[0];\n var storedPixel = void 0;\n var numPixels = storedPixelData.length;\n\n for (var index = 1; index < numPixels; index++) {\n storedPixel = storedPixelData[index];\n min = Math.min(min, storedPixel);\n max = Math.max(max, storedPixel);\n }\n\n return {\n min: min,\n max: max\n };\n}\n\nexports.default = getMinMax;\n\n/***/ }),\n\n/***/ 61:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.version = exports.registerTaskHandler = undefined;\n\nvar _version = __webpack_require__(3);\n\nObject.defineProperty(exports, 'version', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_version).default;\n }\n});\n\nvar _webWorker = __webpack_require__(39);\n\nvar _decodeTask = __webpack_require__(38);\n\nvar _decodeTask2 = _interopRequireDefault(_decodeTask);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// register our task\n(0, _webWorker.registerTaskHandler)(_decodeTask2.default);\n\nexports.registerTaskHandler = _webWorker.registerTaskHandler;\n\n/***/ })\n\n/******/ });\n});\n\n\n// WEBPACK FOOTER //\n// cornerstoneWADOImageLoaderWebWorker.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 61);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 495a94f4f47c0672c4cf","export default '0.14.7';\n\n\n\n// WEBPACK FOOTER //\n// ./version.js","\n\nfunction decodeJpx (imageFrame, pixelData) {\n\n const jpxImage = new JpxImage();\n\n jpxImage.parse(pixelData);\n\n const tileCount = jpxImage.tiles.length;\n\n if (tileCount !== 1) {\n throw `JPEG2000 decoder returned a tileCount of ${tileCount}, when 1 is expected`;\n }\n\n imageFrame.columns = jpxImage.width;\n imageFrame.rows = jpxImage.height;\n imageFrame.pixelData = jpxImage.tiles[0].items;\n\n return imageFrame;\n}\n\nlet openJPEG;\n\nfunction decodeOpenJPEG (data, bytesPerPixel, signed) {\n const dataPtr = openJPEG._malloc(data.length);\n\n openJPEG.writeArrayToMemory(data, dataPtr);\n\n // create param outpout\n const imagePtrPtr = openJPEG._malloc(4);\n const imageSizePtr = openJPEG._malloc(4);\n const imageSizeXPtr = openJPEG._malloc(4);\n const imageSizeYPtr = openJPEG._malloc(4);\n const imageSizeCompPtr = openJPEG._malloc(4);\n\n const t0 = Date.now();\n const ret = openJPEG.ccall('jp2_decode', 'number', ['number', 'number', 'number', 'number', 'number', 'number', 'number'],\n [dataPtr, data.length, imagePtrPtr, imageSizePtr, imageSizeXPtr, imageSizeYPtr, imageSizeCompPtr]);\n // add num vomp..etc\n\n if (ret !== 0) {\n console.log('[opj_decode] decoding failed!');\n openJPEG._free(dataPtr);\n openJPEG._free(openJPEG.getValue(imagePtrPtr, '*'));\n openJPEG._free(imageSizeXPtr);\n openJPEG._free(imageSizeYPtr);\n openJPEG._free(imageSizePtr);\n openJPEG._free(imageSizeCompPtr);\n\n return undefined;\n }\n\n const imagePtr = openJPEG.getValue(imagePtrPtr, '*');\n\n const image = {\n length: openJPEG.getValue(imageSizePtr, 'i32'),\n sx: openJPEG.getValue(imageSizeXPtr, 'i32'),\n sy: openJPEG.getValue(imageSizeYPtr, 'i32'),\n nbChannels: openJPEG.getValue(imageSizeCompPtr, 'i32'), // hard coded for now\n perf_timetodecode: undefined,\n pixelData: undefined\n };\n\n // Copy the data from the EMSCRIPTEN heap into the correct type array\n const length = image.sx * image.sy * image.nbChannels;\n const src32 = new Int32Array(openJPEG.HEAP32.buffer, imagePtr, length);\n\n if (bytesPerPixel === 1) {\n if (Uint8Array.from) {\n image.pixelData = Uint8Array.from(src32);\n } else {\n image.pixelData = new Uint8Array(length);\n for (let i = 0; i < length; i++) {\n image.pixelData[i] = src32[i];\n }\n }\n } else if (signed) {\n if (Int16Array.from) {\n image.pixelData = Int16Array.from(src32);\n } else {\n image.pixelData = new Int16Array(length);\n for (let i = 0; i < length; i++) {\n image.pixelData[i] = src32[i];\n }\n }\n } else if (Uint16Array.from) {\n image.pixelData = Uint16Array.from(src32);\n } else {\n image.pixelData = new Uint16Array(length);\n for (let i = 0; i < length; i++) {\n image.pixelData[i] = src32[i];\n }\n }\n\n const t1 = Date.now();\n\n image.perf_timetodecode = t1 - t0;\n\n // free\n openJPEG._free(dataPtr);\n openJPEG._free(imagePtrPtr);\n openJPEG._free(imagePtr);\n openJPEG._free(imageSizePtr);\n openJPEG._free(imageSizeXPtr);\n openJPEG._free(imageSizeYPtr);\n openJPEG._free(imageSizeCompPtr);\n\n return image;\n}\n\nfunction decodeOpenJpeg2000 (imageFrame, pixelData) {\n const bytesPerPixel = imageFrame.bitsAllocated <= 8 ? 1 : 2;\n const signed = imageFrame.pixelRepresentation === 1;\n\n const image = decodeOpenJPEG(pixelData, bytesPerPixel, signed);\n\n imageFrame.columns = image.sx;\n imageFrame.rows = image.sy;\n imageFrame.pixelData = image.pixelData;\n if (image.nbChannels > 1) {\n imageFrame.photometricInterpretation = 'RGB';\n }\n\n return imageFrame;\n}\n\nfunction initializeJPEG2000 (decodeConfig) {\n // check to make sure codec is loaded\n if (!decodeConfig.usePDFJS) {\n if (typeof OpenJPEG === 'undefined') {\n throw 'OpenJPEG decoder not loaded';\n }\n }\n\n if (!openJPEG) {\n openJPEG = OpenJPEG();\n if (!openJPEG || !openJPEG._jp2_decode) {\n throw 'OpenJPEG failed to initialize';\n }\n }\n}\n\nfunction decodeJPEG2000 (imageFrame, pixelData, decodeConfig, options) {\n options = options || {};\n\n initializeJPEG2000(decodeConfig);\n\n if (options.usePDFJS || decodeConfig.usePDFJS) {\n // OHIF image-JPEG2000 https://github.com/OHIF/image-JPEG2000\n // console.log('PDFJS')\n return decodeJpx(imageFrame, pixelData);\n }\n\n // OpenJPEG2000 https://github.com/jpambrun/openjpeg\n // console.log('OpenJPEG')\n return decodeOpenJpeg2000(imageFrame, pixelData);\n}\n\nexport default decodeJPEG2000;\nexport { initializeJPEG2000 };\n\n\n\n// WEBPACK FOOTER //\n// ./webWorker/decodeTask/decoders/decodeJPEG2000.js","\n\nlet charLS;\n\nfunction jpegLSDecode (data, isSigned) {\n\n // prepare input parameters\n const dataPtr = charLS._malloc(data.length);\n\n charLS.writeArrayToMemory(data, dataPtr);\n\n // prepare output parameters\n const imagePtrPtr = charLS._malloc(4);\n const imageSizePtr = charLS._malloc(4);\n const widthPtr = charLS._malloc(4);\n const heightPtr = charLS._malloc(4);\n const bitsPerSamplePtr = charLS._malloc(4);\n const stridePtr = charLS._malloc(4);\n const allowedLossyErrorPtr = charLS._malloc(4);\n const componentsPtr = charLS._malloc(4);\n const interleaveModePtr = charLS._malloc(4);\n\n // Decode the image\n const result = charLS.ccall(\n 'jpegls_decode',\n 'number',\n ['number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number'],\n [dataPtr, data.length, imagePtrPtr, imageSizePtr, widthPtr, heightPtr, bitsPerSamplePtr, stridePtr, componentsPtr, allowedLossyErrorPtr, interleaveModePtr]\n );\n\n // Extract result values into object\n const image = {\n result,\n width: charLS.getValue(widthPtr, 'i32'),\n height: charLS.getValue(heightPtr, 'i32'),\n bitsPerSample: charLS.getValue(bitsPerSamplePtr, 'i32'),\n stride: charLS.getValue(stridePtr, 'i32'),\n components: charLS.getValue(componentsPtr, 'i32'),\n allowedLossyError: charLS.getValue(allowedLossyErrorPtr, 'i32'),\n interleaveMode: charLS.getValue(interleaveModePtr, 'i32'),\n pixelData: undefined\n };\n\n // Copy image from emscripten heap into appropriate array buffer type\n const imagePtr = charLS.getValue(imagePtrPtr, '*');\n\n if (image.bitsPerSample <= 8) {\n image.pixelData = new Uint8Array(image.width * image.height * image.components);\n image.pixelData.set(new Uint8Array(charLS.HEAP8.buffer, imagePtr, image.pixelData.length));\n } else if (isSigned) {\n image.pixelData = new Int16Array(image.width * image.height * image.components);\n image.pixelData.set(new Int16Array(charLS.HEAP16.buffer, imagePtr, image.pixelData.length));\n } else {\n image.pixelData = new Uint16Array(image.width * image.height * image.components);\n image.pixelData.set(new Uint16Array(charLS.HEAP16.buffer, imagePtr, image.pixelData.length));\n }\n\n // free memory and return image object\n charLS._free(dataPtr);\n charLS._free(imagePtr);\n charLS._free(imagePtrPtr);\n charLS._free(imageSizePtr);\n charLS._free(widthPtr);\n charLS._free(heightPtr);\n charLS._free(bitsPerSamplePtr);\n charLS._free(stridePtr);\n charLS._free(componentsPtr);\n charLS._free(interleaveModePtr);\n\n return image;\n}\n\nfunction initializeJPEGLS () {\n // check to make sure codec is loaded\n if (typeof CharLS === 'undefined') {\n throw 'No JPEG-LS decoder loaded';\n }\n\n // Try to initialize CharLS\n // CharLS https://github.com/chafey/charls\n if (!charLS) {\n charLS = CharLS();\n if (!charLS || !charLS._jpegls_decode) {\n throw 'JPEG-LS failed to initialize';\n }\n }\n\n}\n\nfunction decodeJPEGLS (imageFrame, pixelData) {\n initializeJPEGLS();\n\n const image = jpegLSDecode(pixelData, imageFrame.pixelRepresentation === 1);\n // console.log(image);\n\n // throw error if not success or too much data\n if (image.result !== 0 && image.result !== 6) {\n throw `JPEG-LS decoder failed to decode frame (error code ${image.result})`;\n }\n\n imageFrame.columns = image.width;\n imageFrame.rows = image.height;\n imageFrame.pixelData = image.pixelData;\n\n return imageFrame;\n}\n\nexport default decodeJPEGLS;\nexport { initializeJPEGLS };\n\n\n\n// WEBPACK FOOTER //\n// ./webWorker/decodeTask/decoders/decodeJPEGLS.js","import { initializeJPEG2000 } from './decoders/decodeJPEG2000.js';\nimport { initializeJPEGLS } from './decoders/decodeJPEGLS.js';\nimport getMinMax from './getMinMax.js';\nimport decodeImageFrame from './decodeImageFrame.js';\n\n// flag to ensure codecs are loaded only once\nlet codecsLoaded = false;\n\n// the configuration object for the decodeTask\nlet decodeConfig;\n\n/**\n * Function to control loading and initializing the codecs\n * @param config\n */\nfunction loadCodecs (config) {\n // prevent loading codecs more than once\n if (codecsLoaded) {\n return;\n }\n\n // Load the codecs\n // console.time('loadCodecs');\n self.importScripts(config.decodeTask.codecsPath);\n codecsLoaded = true;\n // console.timeEnd('loadCodecs');\n\n // Initialize the codecs\n if (config.decodeTask.initializeCodecsOnStartup) {\n // console.time('initializeCodecs');\n initializeJPEG2000(config.decodeTask);\n initializeJPEGLS(config.decodeTask);\n // console.timeEnd('initializeCodecs');\n }\n}\n\n/**\n * Task initialization function\n */\nfunction decodeTaskInitialize (config) {\n decodeConfig = config;\n if (config.decodeTask.loadCodecsOnStartup) {\n loadCodecs(config);\n }\n}\n\nfunction calculateMinMax (imageFrame) {\n const minMax = getMinMax(imageFrame.pixelData);\n\n if (decodeConfig.decodeTask.strict === true) {\n if (imageFrame.smallestPixelValue !== minMax.min) {\n console.warn('Image smallestPixelValue tag is incorrect. Rendering performance will suffer considerably.');\n }\n\n if (imageFrame.largestPixelValue !== minMax.max) {\n console.warn('Image largestPixelValue tag is incorrect. Rendering performance will suffer considerably.');\n }\n } else {\n imageFrame.smallestPixelValue = minMax.min;\n imageFrame.largestPixelValue = minMax.max;\n }\n}\n\n/**\n * Task handler function\n */\nfunction decodeTaskHandler (data, doneCallback) {\n // Load the codecs if they aren't already loaded\n loadCodecs(decodeConfig);\n\n const imageFrame = data.data.imageFrame;\n\n // convert pixel data from ArrayBuffer to Uint8Array since web workers support passing ArrayBuffers but\n // not typed arrays\n const pixelData = new Uint8Array(data.data.pixelData);\n\n decodeImageFrame(\n imageFrame,\n data.data.transferSyntax,\n pixelData,\n decodeConfig.decodeTask,\n data.data.options);\n\n calculateMinMax(imageFrame);\n\n // convert from TypedArray to ArrayBuffer since web workers support passing ArrayBuffers but not\n // typed arrays\n imageFrame.pixelData = imageFrame.pixelData.buffer;\n\n // invoke the callback with our result and pass the pixelData in the transferList to move it to\n // UI thread without making a copy\n doneCallback(imageFrame, [imageFrame.pixelData]);\n}\n\nexport default {\n taskType: 'decodeTask',\n handler: decodeTaskHandler,\n initialize: decodeTaskInitialize\n};\n\n\n\n// WEBPACK FOOTER //\n// ./webWorker/decodeTask/decodeTask.js","// an object of task handlers\nconst taskHandlers = {};\n\n// Flag to ensure web worker is only initialized once\nlet initialized = false;\n\n// the configuration object passed in when the web worker manager is initialized\nlet config;\n\n/**\n * Initialization function that loads additional web workers and initializes them\n * @param data\n */\nfunction initialize (data) {\n // console.log('web worker initialize ', data.workerIndex);\n // prevent initialization from happening more than once\n if (initialized) {\n return;\n }\n\n // save the config data\n config = data.config;\n\n // load any additional web worker tasks\n if (data.config.webWorkerTaskPaths) {\n for (let i = 0; i < data.config.webWorkerTaskPaths.length; i++) {\n self.importScripts(data.config.webWorkerTaskPaths[i]);\n }\n }\n\n // initialize each task handler\n Object.keys(taskHandlers).forEach(function (key) {\n taskHandlers[key].initialize(config.taskConfiguration);\n });\n\n // tell main ui thread that we have completed initialization\n self.postMessage({\n taskType: 'initialize',\n status: 'success',\n result: {\n },\n workerIndex: data.workerIndex\n });\n\n initialized = true;\n}\n\n/**\n * Function exposed to web worker tasks to register themselves\n * @param taskHandler\n */\nexport function registerTaskHandler (taskHandler) {\n if (taskHandlers[taskHandler.taskType]) {\n console.log('attempt to register duplicate task handler \"', taskHandler.taskType, '\"');\n\n return false;\n }\n taskHandlers[taskHandler.taskType] = taskHandler;\n if (initialized) {\n taskHandler.initialize(config.taskConfiguration);\n }\n}\n\n/**\n * Function to load a new web worker task with updated configuration\n * @param data\n */\nfunction loadWebWorkerTask (data) {\n config = data.config;\n self.importScripts(data.sourcePath);\n}\n\n/**\n * Web worker message handler - dispatches messages to the registered task handlers\n * @param msg\n */\nself.onmessage = function (msg) {\n // console.log('web worker onmessage', msg.data);\n\n // handle initialize message\n if (msg.data.taskType === 'initialize') {\n initialize(msg.data);\n\n return;\n }\n\n // handle loadWebWorkerTask message\n if (msg.data.taskType === 'loadWebWorkerTask') {\n loadWebWorkerTask(msg.data);\n\n return;\n }\n\n // dispatch the message if there is a handler registered for it\n if (taskHandlers[msg.data.taskType]) {\n taskHandlers[msg.data.taskType].handler(msg.data, function (result, transferList) {\n self.postMessage({\n taskType: msg.data.taskType,\n status: 'success',\n result,\n workerIndex: msg.data.workerIndex\n }, transferList);\n });\n\n return;\n }\n\n // not task handler registered - send a failure message back to ui thread\n console.log('no task handler for ', msg.data.taskType);\n console.log(taskHandlers);\n self.postMessage({\n taskType: msg.data.taskType,\n status: 'failed - no task handler registered',\n workerIndex: msg.data.workerIndex\n });\n};\n\n\n\n// WEBPACK FOOTER //\n// ./webWorker/webWorker.js","import decodeLittleEndian from './decoders/decodeLittleEndian.js';\nimport decodeBigEndian from './decoders/decodeBigEndian.js';\nimport decodeRLE from './decoders/decodeRLE.js';\nimport decodeJPEGBaseline from './decoders/decodeJPEGBaseline.js';\nimport decodeJPEGLossless from './decoders/decodeJPEGLossless.js';\nimport decodeJPEGLS from './decoders/decodeJPEGLS.js';\nimport decodeJPEG2000 from './decoders/decodeJPEG2000.js';\n\nfunction decodeImageFrame (imageFrame, transferSyntax, pixelData, decodeConfig, options) {\n const start = new Date().getTime();\n\n if (transferSyntax === '1.2.840.10008.1.2') {\n // Implicit VR Little Endian\n imageFrame = decodeLittleEndian(imageFrame, pixelData);\n } else if (transferSyntax === '1.2.840.10008.1.2.1') {\n // Explicit VR Little Endian\n imageFrame = decodeLittleEndian(imageFrame, pixelData);\n } else if (transferSyntax === '1.2.840.10008.1.2.2') {\n // Explicit VR Big Endian (retired)\n imageFrame = decodeBigEndian(imageFrame, pixelData);\n } else if (transferSyntax === '1.2.840.10008.1.2.1.99') {\n // Deflate transfer syntax (deflated by dicomParser)\n imageFrame = decodeLittleEndian(imageFrame, pixelData);\n } else if (transferSyntax === '1.2.840.10008.1.2.5') {\n // RLE Lossless\n imageFrame = decodeRLE(imageFrame, pixelData);\n } else if (transferSyntax === '1.2.840.10008.1.2.4.50') {\n // JPEG Baseline lossy process 1 (8 bit)\n imageFrame = decodeJPEGBaseline(imageFrame, pixelData);\n } else if (transferSyntax === '1.2.840.10008.1.2.4.51') {\n // JPEG Baseline lossy process 2 & 4 (12 bit)\n imageFrame = decodeJPEGBaseline(imageFrame, pixelData);\n } else if (transferSyntax === '1.2.840.10008.1.2.4.57') {\n // JPEG Lossless, Nonhierarchical (Processes 14)\n imageFrame = decodeJPEGLossless(imageFrame, pixelData);\n } else if (transferSyntax === '1.2.840.10008.1.2.4.70') {\n // JPEG Lossless, Nonhierarchical (Processes 14 [Selection 1])\n imageFrame = decodeJPEGLossless(imageFrame, pixelData);\n } else if (transferSyntax === '1.2.840.10008.1.2.4.80') {\n // JPEG-LS Lossless Image Compression\n imageFrame = decodeJPEGLS(imageFrame, pixelData);\n } else if (transferSyntax === '1.2.840.10008.1.2.4.81') {\n // JPEG-LS Lossy (Near-Lossless) Image Compression\n imageFrame = decodeJPEGLS(imageFrame, pixelData);\n } else if (transferSyntax === '1.2.840.10008.1.2.4.90') {\n // JPEG 2000 Lossless\n imageFrame = decodeJPEG2000(imageFrame, pixelData, decodeConfig, options);\n } else if (transferSyntax === '1.2.840.10008.1.2.4.91') {\n // JPEG 2000 Lossy\n imageFrame = decodeJPEG2000(imageFrame, pixelData, decodeConfig, options);\n } else {\n if (console && console.log) {\n console.log(`Image cannot be decoded due to Unsupported transfer syntax ${transferSyntax}`);\n }\n\n throw `no decoder for transfer syntax ${transferSyntax}`;\n }\n\n /* Don't know if these work...\n // JPEG 2000 Part 2 Multicomponent Image Compression (Lossless Only)\n else if(transferSyntax === \"1.2.840.10008.1.2.4.92\")\n {\n return decodeJPEG2000(dataSet, frame);\n }\n // JPEG 2000 Part 2 Multicomponent Image Compression\n else if(transferSyntax === \"1.2.840.10008.1.2.4.93\")\n {\n return decodeJPEG2000(dataSet, frame);\n }\n */\n\n const end = new Date().getTime();\n\n imageFrame.decodeTimeInMS = end - start;\n\n return imageFrame;\n}\n\nexport default decodeImageFrame;\n\n\n\n// WEBPACK FOOTER //\n// ./webWorker/decodeTask/decodeImageFrame.js","/* eslint no-bitwise: 0 */\nfunction swap16 (val) {\n return ((val & 0xFF) << 8) |\n ((val >> 8) & 0xFF);\n}\n\n\nfunction decodeBigEndian (imageFrame, pixelData) {\n if (imageFrame.bitsAllocated === 16) {\n let arrayBuffer = pixelData.buffer;\n let offset = pixelData.byteOffset;\n const length = pixelData.length;\n // if pixel data is not aligned on even boundary, shift it so we can create the 16 bit array\n // buffers on it\n\n if (offset % 2) {\n arrayBuffer = arrayBuffer.slice(offset);\n offset = 0;\n }\n\n if (imageFrame.pixelRepresentation === 0) {\n imageFrame.pixelData = new Uint16Array(arrayBuffer, offset, length / 2);\n } else {\n imageFrame.pixelData = new Int16Array(arrayBuffer, offset, length / 2);\n }\n // Do the byte swap\n for (let i = 0; i < imageFrame.pixelData.length; i++) {\n imageFrame.pixelData[i] = swap16(imageFrame.pixelData[i]);\n }\n\n } else if (imageFrame.bitsAllocated === 8) {\n imageFrame.pixelData = pixelData;\n }\n\n return imageFrame;\n}\n\nexport default decodeBigEndian;\n\n\n\n// WEBPACK FOOTER //\n// ./webWorker/decodeTask/decoders/decodeBigEndian.js","\n\nfunction decodeJPEGBaseline (imageFrame, pixelData) {\n // check to make sure codec is loaded\n if (typeof JpegImage === 'undefined') {\n throw 'No JPEG Baseline decoder loaded';\n }\n const jpeg = new JpegImage();\n\n jpeg.parse(pixelData);\n\n // Do not use the internal jpeg.js color transformation,\n // since we will handle this afterwards\n jpeg.colorTransform = false;\n\n if (imageFrame.bitsAllocated === 8) {\n imageFrame.pixelData = jpeg.getData(imageFrame.columns, imageFrame.rows);\n\n return imageFrame;\n } else if (imageFrame.bitsAllocated === 16) {\n imageFrame.pixelData = jpeg.getData16(imageFrame.columns, imageFrame.rows);\n\n return imageFrame;\n }\n}\n\nexport default decodeJPEGBaseline;\n\n\n\n// WEBPACK FOOTER //\n// ./webWorker/decodeTask/decoders/decodeJPEGBaseline.js","\n\nfunction decodeJPEGLossless (imageFrame, pixelData) {\n // check to make sure codec is loaded\n if (typeof jpeg === 'undefined' ||\n typeof jpeg.lossless === 'undefined' ||\n typeof jpeg.lossless.Decoder === 'undefined') {\n throw 'No JPEG Lossless decoder loaded';\n }\n\n const byteOutput = imageFrame.bitsAllocated <= 8 ? 1 : 2;\n // console.time('jpeglossless');\n const buffer = pixelData.buffer;\n const decoder = new jpeg.lossless.Decoder();\n const decompressedData = decoder.decode(buffer, pixelData.byteOffset, pixelData.length, byteOutput);\n // console.timeEnd('jpeglossless');\n\n if (imageFrame.pixelRepresentation === 0) {\n if (imageFrame.bitsAllocated === 16) {\n imageFrame.pixelData = new Uint16Array(decompressedData.buffer);\n\n return imageFrame;\n }\n // untested!\n imageFrame.pixelData = new Uint8Array(decompressedData.buffer);\n\n return imageFrame;\n\n }\n imageFrame.pixelData = new Int16Array(decompressedData.buffer);\n\n return imageFrame;\n\n}\n\nexport default decodeJPEGLossless;\n\n\n\n// WEBPACK FOOTER //\n// ./webWorker/decodeTask/decoders/decodeJPEGLossless.js","function decodeLittleEndian (imageFrame, pixelData) {\n if (imageFrame.bitsAllocated === 16) {\n let arrayBuffer = pixelData.buffer;\n let offset = pixelData.byteOffset;\n const length = pixelData.length;\n // if pixel data is not aligned on even boundary, shift it so we can create the 16 bit array\n // buffers on it\n\n if (offset % 2) {\n arrayBuffer = arrayBuffer.slice(offset);\n offset = 0;\n }\n\n if (imageFrame.pixelRepresentation === 0) {\n imageFrame.pixelData = new Uint16Array(arrayBuffer, offset, length / 2);\n } else {\n imageFrame.pixelData = new Int16Array(arrayBuffer, offset, length / 2);\n }\n } else if (imageFrame.bitsAllocated === 8) {\n imageFrame.pixelData = pixelData;\n }\n\n return imageFrame;\n}\n\nexport default decodeLittleEndian;\n\n\n\n// WEBPACK FOOTER //\n// ./webWorker/decodeTask/decoders/decodeLittleEndian.js","function decodeRLE (imageFrame, pixelData) {\n\n if (imageFrame.bitsAllocated === 8) {\n if (imageFrame.planarConfiguration) {\n return decode8Planar(imageFrame, pixelData);\n }\n\n return decode8(imageFrame, pixelData);\n } else if (imageFrame.bitsAllocated === 16) {\n return decode16(imageFrame, pixelData);\n }\n throw 'unsupported pixel format for RLE';\n\n}\n\nfunction decode8 (imageFrame, pixelData) {\n const frameData = pixelData;\n const frameSize = imageFrame.rows * imageFrame.columns;\n const outFrame = new ArrayBuffer(frameSize * imageFrame.samplesPerPixel);\n const header = new DataView(frameData.buffer, frameData.byteOffset);\n const data = new Int8Array(frameData.buffer, frameData.byteOffset);\n const out = new Int8Array(outFrame);\n\n let outIndex = 0;\n const numSegments = header.getInt32(0, true);\n\n for (let s = 0; s < numSegments; ++s) {\n outIndex = s;\n\n let inIndex = header.getInt32((s + 1) * 4, true);\n let maxIndex = header.getInt32((s + 2) * 4, true);\n\n if (maxIndex === 0) {\n maxIndex = frameData.length;\n }\n\n const endOfSegment = frameSize * numSegments;\n\n while (inIndex < maxIndex) {\n const n = data[inIndex++];\n\n if (n >= 0 && n <= 127) {\n // copy n bytes\n for (let i = 0; i < n + 1 && outIndex < endOfSegment; ++i) {\n out[outIndex] = data[inIndex++];\n outIndex += imageFrame.samplesPerPixel;\n }\n } else if (n <= -1 && n >= -127) {\n const value = data[inIndex++];\n // run of n bytes\n\n for (let j = 0; j < -n + 1 && outIndex < endOfSegment; ++j) {\n out[outIndex] = value;\n outIndex += imageFrame.samplesPerPixel;\n }\n }/* else if (n === -128) {\n\n } // do nothing */\n }\n }\n imageFrame.pixelData = new Uint8Array(outFrame);\n\n return imageFrame;\n}\n\nfunction decode8Planar (imageFrame, pixelData) {\n const frameData = pixelData;\n const frameSize = imageFrame.rows * imageFrame.columns;\n const outFrame = new ArrayBuffer(frameSize * imageFrame.samplesPerPixel);\n const header = new DataView(frameData.buffer, frameData.byteOffset);\n const data = new Int8Array(frameData.buffer, frameData.byteOffset);\n const out = new Int8Array(outFrame);\n\n let outIndex = 0;\n const numSegments = header.getInt32(0, true);\n\n for (let s = 0; s < numSegments; ++s) {\n outIndex = s * frameSize;\n\n let inIndex = header.getInt32((s + 1) * 4, true);\n let maxIndex = header.getInt32((s + 2) * 4, true);\n\n if (maxIndex === 0) {\n maxIndex = frameData.length;\n }\n\n const endOfSegment = frameSize * numSegments;\n\n while (inIndex < maxIndex) {\n const n = data[inIndex++];\n\n if (n >= 0 && n <= 127) {\n // copy n bytes\n for (let i = 0; i < n + 1 && outIndex < endOfSegment; ++i) {\n out[outIndex] = data[inIndex++];\n outIndex++;\n }\n } else if (n <= -1 && n >= -127) {\n const value = data[inIndex++];\n // run of n bytes\n\n for (let j = 0; j < -n + 1 && outIndex < endOfSegment; ++j) {\n out[outIndex] = value;\n outIndex++;\n }\n }/* else if (n === -128) {\n\n } // do nothing */\n }\n }\n imageFrame.pixelData = new Uint8Array(outFrame);\n\n return imageFrame;\n}\n\nfunction decode16 (imageFrame, pixelData) {\n const frameData = pixelData;\n const frameSize = imageFrame.rows * imageFrame.columns;\n const outFrame = new ArrayBuffer(frameSize * imageFrame.samplesPerPixel * 2);\n\n const header = new DataView(frameData.buffer, frameData.byteOffset);\n const data = new Int8Array(frameData.buffer, frameData.byteOffset);\n const out = new Int8Array(outFrame);\n\n const numSegments = header.getInt32(0, true);\n\n for (let s = 0; s < numSegments; ++s) {\n let outIndex = 0;\n const highByte = (s === 0 ? 1 : 0);\n\n let inIndex = header.getInt32((s + 1) * 4, true);\n let maxIndex = header.getInt32((s + 2) * 4, true);\n\n if (maxIndex === 0) {\n maxIndex = frameData.length;\n }\n\n while (inIndex < maxIndex) {\n const n = data[inIndex++];\n\n if (n >= 0 && n <= 127) {\n for (let i = 0; i < n + 1 && outIndex < frameSize; ++i) {\n out[(outIndex * 2) + highByte] = data[inIndex++];\n outIndex++;\n }\n } else if (n <= -1 && n >= -127) {\n const value = data[inIndex++];\n\n for (let j = 0; j < -n + 1 && outIndex < frameSize; ++j) {\n out[(outIndex * 2) + highByte] = value;\n outIndex++;\n }\n }/* else if (n === -128) {\n\n } // do nothing */\n }\n }\n if (imageFrame.pixelRepresentation === 0) {\n imageFrame.pixelData = new Uint16Array(outFrame);\n } else {\n imageFrame.pixelData = new Int16Array(outFrame);\n }\n\n return imageFrame;\n}\n\nexport default decodeRLE;\n\n\n\n// WEBPACK FOOTER //\n// ./webWorker/decodeTask/decoders/decodeRLE.js","function getMinMax (storedPixelData) {\n // we always calculate the min max values since they are not always\n // present in DICOM and we don't want to trust them anyway as cornerstone\n // depends on us providing reliable values for these\n let min = storedPixelData[0];\n let max = storedPixelData[0];\n let storedPixel;\n const numPixels = storedPixelData.length;\n\n for (let index = 1; index < numPixels; index++) {\n storedPixel = storedPixelData[index];\n min = Math.min(min, storedPixel);\n max = Math.max(max, storedPixel);\n }\n\n return {\n min,\n max\n };\n}\n\nexport default getMinMax;\n\n\n\n// WEBPACK FOOTER //\n// ./webWorker/decodeTask/getMinMax.js","import { registerTaskHandler } from './webWorker.js';\nimport decodeTask from './decodeTask/decodeTask.js';\n\n// register our task\nregisterTaskHandler(decodeTask);\n\nexport { registerTaskHandler };\nexport { default as version } from '../version.js';\n\n\n\n// WEBPACK FOOTER //\n// ./webWorker/index.js"],"sourceRoot":""} \ No newline at end of file