9e474951af36be007cd3853bc544620d0d45d981a8b2ef63a385f2c6124fe7e0.json 48 KB

1
  1. {"ast":null,"code":"import { Clamp } from \"../../../../Maths/math.scalar.functions.js\";\nimport { FLOAT32_SIZE, INT16_SIZE, INT32_SIZE, INT8_SIZE, ULONG_SIZE } from \"./exrLoader.interfaces.js\";\n/**\n * Inspired by https://github.com/sciecode/three.js/blob/dev/examples/jsm/loaders/EXRLoader.js\n * Referred to the original Industrial Light & Magic OpenEXR implementation and the TinyEXR / Syoyo Fujita\n * implementation.\n */\n// /*\n// Copyright (c) 2014 - 2017, Syoyo Fujita\n// All rights reserved.\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are met:\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above copyright\n// notice, this list of conditions and the following disclaimer in the\n// documentation and/or other materials provided with the distribution.\n// * Neither the name of the Syoyo Fujita nor the\n// names of its contributors may be used to endorse or promote products\n// derived from this software without specific prior written permission.\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n// DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n// */\n// // TinyEXR contains some OpenEXR code, which is licensed under ------------\n// ///////////////////////////////////////////////////////////////////////////\n// //\n// // Copyright (c) 2002, Industrial Light & Magic, a division of Lucas\n// // Digital Ltd. LLC\n// //\n// // All rights reserved.\n// //\n// // Redistribution and use in source and binary forms, with or without\n// // modification, are permitted provided that the following conditions are\n// // met:\n// // * Redistributions of source code must retain the above copyright\n// // notice, this list of conditions and the following disclaimer.\n// // * Redistributions in binary form must reproduce the above\n// // copyright notice, this list of conditions and the following disclaimer\n// // in the documentation and/or other materials provided with the\n// // distribution.\n// // * Neither the name of Industrial Light & Magic nor the names of\n// // its contributors may be used to endorse or promote products derived\n// // from this software without specific prior written permission.\n// //\n// // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// // \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n// //\n// ///////////////////////////////////////////////////////////////////////////\n// // End of OpenEXR license -------------------------------------------------\nexport var CompressionCodes;\n(function (CompressionCodes) {\n CompressionCodes[CompressionCodes[\"NO_COMPRESSION\"] = 0] = \"NO_COMPRESSION\";\n CompressionCodes[CompressionCodes[\"RLE_COMPRESSION\"] = 1] = \"RLE_COMPRESSION\";\n CompressionCodes[CompressionCodes[\"ZIPS_COMPRESSION\"] = 2] = \"ZIPS_COMPRESSION\";\n CompressionCodes[CompressionCodes[\"ZIP_COMPRESSION\"] = 3] = \"ZIP_COMPRESSION\";\n CompressionCodes[CompressionCodes[\"PIZ_COMPRESSION\"] = 4] = \"PIZ_COMPRESSION\";\n CompressionCodes[CompressionCodes[\"PXR24_COMPRESSION\"] = 5] = \"PXR24_COMPRESSION\";\n})(CompressionCodes || (CompressionCodes = {}));\nvar LineOrders;\n(function (LineOrders) {\n LineOrders[LineOrders[\"INCREASING_Y\"] = 0] = \"INCREASING_Y\";\n LineOrders[LineOrders[\"DECREASING_Y\"] = 1] = \"DECREASING_Y\";\n})(LineOrders || (LineOrders = {}));\nconst _tables = _GenerateTables();\n// Fast Half Float Conversions, http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf\nfunction _GenerateTables() {\n // float32 to float16 helpers\n const buffer = new ArrayBuffer(4);\n const floatView = new Float32Array(buffer);\n const uint32View = new Uint32Array(buffer);\n const baseTable = new Uint32Array(512);\n const shiftTable = new Uint32Array(512);\n for (let i = 0; i < 256; ++i) {\n const e = i - 127;\n // very small number (0, -0)\n if (e < -27) {\n baseTable[i] = 0x0000;\n baseTable[i | 0x100] = 0x8000;\n shiftTable[i] = 24;\n shiftTable[i | 0x100] = 24;\n // small number (denorm)\n } else if (e < -14) {\n baseTable[i] = 0x0400 >> -e - 14;\n baseTable[i | 0x100] = 0x0400 >> -e - 14 | 0x8000;\n shiftTable[i] = -e - 1;\n shiftTable[i | 0x100] = -e - 1;\n // normal number\n } else if (e <= 15) {\n baseTable[i] = e + 15 << 10;\n baseTable[i | 0x100] = e + 15 << 10 | 0x8000;\n shiftTable[i] = 13;\n shiftTable[i | 0x100] = 13;\n // large number (Infinity, -Infinity)\n } else if (e < 128) {\n baseTable[i] = 0x7c00;\n baseTable[i | 0x100] = 0xfc00;\n shiftTable[i] = 24;\n shiftTable[i | 0x100] = 24;\n // stay (NaN, Infinity, -Infinity)\n } else {\n baseTable[i] = 0x7c00;\n baseTable[i | 0x100] = 0xfc00;\n shiftTable[i] = 13;\n shiftTable[i | 0x100] = 13;\n }\n }\n // float16 to float32 helpers\n const mantissaTable = new Uint32Array(2048);\n const exponentTable = new Uint32Array(64);\n const offsetTable = new Uint32Array(64);\n for (let i = 1; i < 1024; ++i) {\n let m = i << 13; // zero pad mantissa bits\n let e = 0; // zero exponent\n // normalized\n while ((m & 0x00800000) === 0) {\n m <<= 1;\n e -= 0x00800000; // decrement exponent\n }\n m &= ~0x00800000; // clear leading 1 bit\n e += 0x38800000; // adjust bias\n mantissaTable[i] = m | e;\n }\n for (let i = 1024; i < 2048; ++i) {\n mantissaTable[i] = 0x38000000 + (i - 1024 << 13);\n }\n for (let i = 1; i < 31; ++i) {\n exponentTable[i] = i << 23;\n }\n exponentTable[31] = 0x47800000;\n exponentTable[32] = 0x80000000;\n for (let i = 33; i < 63; ++i) {\n exponentTable[i] = 0x80000000 + (i - 32 << 23);\n }\n exponentTable[63] = 0xc7800000;\n for (let i = 1; i < 64; ++i) {\n if (i !== 32) {\n offsetTable[i] = 1024;\n }\n }\n return {\n floatView: floatView,\n uint32View: uint32View,\n baseTable: baseTable,\n shiftTable: shiftTable,\n mantissaTable: mantissaTable,\n exponentTable: exponentTable,\n offsetTable: offsetTable\n };\n}\n/**\n * Parse a null terminated string from the buffer\n * @param buffer buffer to read from\n * @param offset current offset in the buffer\n * @returns a string\n */\nexport function ParseNullTerminatedString(buffer, offset) {\n const uintBuffer = new Uint8Array(buffer);\n let endOffset = 0;\n while (uintBuffer[offset.value + endOffset] != 0) {\n endOffset += 1;\n }\n const stringValue = new TextDecoder().decode(uintBuffer.slice(offset.value, offset.value + endOffset));\n offset.value = offset.value + endOffset + 1;\n return stringValue;\n}\n/**\n * Parse an int32 from the buffer\n * @param dataView dataview on the data\n * @param offset current offset in the data view\n * @returns an int32\n */\nexport function ParseInt32(dataView, offset) {\n const value = dataView.getInt32(offset.value, true);\n offset.value += INT32_SIZE;\n return value;\n}\n/**\n * Parse an uint32 from the buffer\n * @param dataView data view to read from\n * @param offset offset in the data view\n * @returns an uint32\n */\nexport function ParseUint32(dataView, offset) {\n const value = dataView.getUint32(offset.value, true);\n offset.value += INT32_SIZE;\n return value;\n}\n/**\n * Parse an uint8 from the buffer\n * @param dataView dataview on the data\n * @param offset current offset in the data view\n * @returns an uint8\n */\nexport function ParseUint8(dataView, offset) {\n const value = dataView.getUint8(offset.value);\n offset.value += INT8_SIZE;\n return value;\n}\n/**\n * Parse an uint16 from the buffer\n * @param dataView dataview on the data\n * @param offset current offset in the data view\n * @returns an uint16\n */\nexport function ParseUint16(dataView, offset) {\n const value = dataView.getUint16(offset.value, true);\n offset.value += INT16_SIZE;\n return value;\n}\n/**\n * Parse an uint8 from an array buffer\n * @param array array buffer\n * @param offset current offset in the data view\n * @returns an uint16\n */\nexport function ParseUint8Array(array, offset) {\n const value = array[offset.value];\n offset.value += INT8_SIZE;\n return value;\n}\n/**\n * Parse an int64 from the buffer\n * @param dataView dataview on the data\n * @param offset current offset in the data view\n * @returns an int64\n */\nexport function ParseInt64(dataView, offset) {\n let int;\n if (\"getBigInt64\" in DataView.prototype) {\n int = Number(dataView.getBigInt64(offset.value, true));\n } else {\n int = dataView.getUint32(offset.value + 4, true) + Number(dataView.getUint32(offset.value, true) << 32);\n }\n offset.value += ULONG_SIZE;\n return int;\n}\n/**\n * Parse a float32 from the buffer\n * @param dataView dataview on the data\n * @param offset current offset in the data view\n * @returns a float32\n */\nexport function ParseFloat32(dataView, offset) {\n const value = dataView.getFloat32(offset.value, true);\n offset.value += FLOAT32_SIZE;\n return value;\n}\n/**\n * Parse a float16 from the buffer\n * @param dataView dataview on the data\n * @param offset current offset in the data view\n * @returns a float16\n */\nexport function ParseFloat16(dataView, offset) {\n return DecodeFloat16(ParseUint16(dataView, offset));\n}\nfunction DecodeFloat16(binary) {\n const exponent = (binary & 0x7c00) >> 10;\n const fraction = binary & 0x03ff;\n return (binary >> 15 ? -1 : 1) * (exponent ? exponent === 0x1f ? fraction ? NaN : Infinity : Math.pow(2, exponent - 15) * (1 + fraction / 0x400) : 6.103515625e-5 * (fraction / 0x400));\n}\nfunction ToHalfFloat(value) {\n if (Math.abs(value) > 65504) {\n throw new Error(\"Value out of range.Consider using float instead of half-float.\");\n }\n value = Clamp(value, -65504, 65504);\n _tables.floatView[0] = value;\n const f = _tables.uint32View[0];\n const e = f >> 23 & 0x1ff;\n return _tables.baseTable[e] + ((f & 0x007fffff) >> _tables.shiftTable[e]);\n}\n/**\n * Decode a float32 from the buffer\n * @param dataView dataview on the data\n * @param offset current offset in the data view\n * @returns a float32\n */\nexport function DecodeFloat32(dataView, offset) {\n return ToHalfFloat(ParseFloat32(dataView, offset));\n}\nfunction ParseFixedLengthString(buffer, offset, size) {\n const stringValue = new TextDecoder().decode(new Uint8Array(buffer).slice(offset.value, offset.value + size));\n offset.value = offset.value + size;\n return stringValue;\n}\nfunction ParseRational(dataView, offset) {\n const x = ParseInt32(dataView, offset);\n const y = ParseUint32(dataView, offset);\n return [x, y];\n}\nfunction ParseTimecode(dataView, offset) {\n const x = ParseUint32(dataView, offset);\n const y = ParseUint32(dataView, offset);\n return [x, y];\n}\nfunction ParseV2f(dataView, offset) {\n const x = ParseFloat32(dataView, offset);\n const y = ParseFloat32(dataView, offset);\n return [x, y];\n}\nfunction ParseV3f(dataView, offset) {\n const x = ParseFloat32(dataView, offset);\n const y = ParseFloat32(dataView, offset);\n const z = ParseFloat32(dataView, offset);\n return [x, y, z];\n}\nfunction ParseChlist(dataView, offset, size) {\n const startOffset = offset.value;\n const channels = [];\n while (offset.value < startOffset + size - 1) {\n const name = ParseNullTerminatedString(dataView.buffer, offset);\n const pixelType = ParseInt32(dataView, offset);\n const pLinear = ParseUint8(dataView, offset);\n offset.value += 3; // reserved, three chars\n const xSampling = ParseInt32(dataView, offset);\n const ySampling = ParseInt32(dataView, offset);\n channels.push({\n name: name,\n pixelType: pixelType,\n pLinear: pLinear,\n xSampling: xSampling,\n ySampling: ySampling\n });\n }\n offset.value += 1;\n return channels;\n}\nfunction ParseChromaticities(dataView, offset) {\n const redX = ParseFloat32(dataView, offset);\n const redY = ParseFloat32(dataView, offset);\n const greenX = ParseFloat32(dataView, offset);\n const greenY = ParseFloat32(dataView, offset);\n const blueX = ParseFloat32(dataView, offset);\n const blueY = ParseFloat32(dataView, offset);\n const whiteX = ParseFloat32(dataView, offset);\n const whiteY = ParseFloat32(dataView, offset);\n return {\n redX: redX,\n redY: redY,\n greenX: greenX,\n greenY: greenY,\n blueX: blueX,\n blueY: blueY,\n whiteX: whiteX,\n whiteY: whiteY\n };\n}\nfunction ParseCompression(dataView, offset) {\n return ParseUint8(dataView, offset);\n}\nfunction ParseBox2i(dataView, offset) {\n const xMin = ParseInt32(dataView, offset);\n const yMin = ParseInt32(dataView, offset);\n const xMax = ParseInt32(dataView, offset);\n const yMax = ParseInt32(dataView, offset);\n return {\n xMin: xMin,\n yMin: yMin,\n xMax: xMax,\n yMax: yMax\n };\n}\nfunction ParseLineOrder(dataView, offset) {\n const lineOrder = ParseUint8(dataView, offset);\n return LineOrders[lineOrder];\n}\n/**\n * Parse a value from the data view\n * @param dataView defines the data view to read from\n * @param offset defines the current offset in the data view\n * @param type defines the type of the value to read\n * @param size defines the size of the value to read\n * @returns the parsed value\n */\nexport function ParseValue(dataView, offset, type, size) {\n switch (type) {\n case \"string\":\n case \"stringvector\":\n case \"iccProfile\":\n return ParseFixedLengthString(dataView.buffer, offset, size);\n case \"chlist\":\n return ParseChlist(dataView, offset, size);\n case \"chromaticities\":\n return ParseChromaticities(dataView, offset);\n case \"compression\":\n return ParseCompression(dataView, offset);\n case \"box2i\":\n return ParseBox2i(dataView, offset);\n case \"lineOrder\":\n return ParseLineOrder(dataView, offset);\n case \"float\":\n return ParseFloat32(dataView, offset);\n case \"v2f\":\n return ParseV2f(dataView, offset);\n case \"v3f\":\n return ParseV3f(dataView, offset);\n case \"int\":\n return ParseInt32(dataView, offset);\n case \"rational\":\n return ParseRational(dataView, offset);\n case \"timecode\":\n return ParseTimecode(dataView, offset);\n case \"preview\":\n offset.value += size;\n return \"skipped\";\n default:\n offset.value += size;\n return undefined;\n }\n}\n/**\n * Revert the endianness of the data\n * @param source defines the source\n */\nexport function Predictor(source) {\n for (let t = 1; t < source.length; t++) {\n const d = source[t - 1] + source[t] - 128;\n source[t] = d;\n }\n}\n/**\n * Interleave pixels\n * @param source defines the data source\n * @param out defines the output\n */\nexport function InterleaveScalar(source, out) {\n let t1 = 0;\n let t2 = Math.floor((source.length + 1) / 2);\n let s = 0;\n const stop = source.length - 1;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (s > stop) {\n break;\n }\n out[s++] = source[t1++];\n if (s > stop) {\n break;\n }\n out[s++] = source[t2++];\n }\n}","map":{"version":3,"names":["Clamp","FLOAT32_SIZE","INT16_SIZE","INT32_SIZE","INT8_SIZE","ULONG_SIZE","CompressionCodes","LineOrders","_tables","_GenerateTables","buffer","ArrayBuffer","floatView","Float32Array","uint32View","Uint32Array","baseTable","shiftTable","i","e","mantissaTable","exponentTable","offsetTable","m","ParseNullTerminatedString","offset","uintBuffer","Uint8Array","endOffset","value","stringValue","TextDecoder","decode","slice","ParseInt32","dataView","getInt32","ParseUint32","getUint32","ParseUint8","getUint8","ParseUint16","getUint16","ParseUint8Array","array","ParseInt64","int","DataView","prototype","Number","getBigInt64","ParseFloat32","getFloat32","ParseFloat16","DecodeFloat16","binary","exponent","fraction","NaN","Infinity","Math","pow","ToHalfFloat","abs","Error","f","DecodeFloat32","ParseFixedLengthString","size","ParseRational","x","y","ParseTimecode","ParseV2f","ParseV3f","z","ParseChlist","startOffset","channels","name","pixelType","pLinear","xSampling","ySampling","push","ParseChromaticities","redX","redY","greenX","greenY","blueX","blueY","whiteX","whiteY","ParseCompression","ParseBox2i","xMin","yMin","xMax","yMax","ParseLineOrder","lineOrder","ParseValue","type","undefined","Predictor","source","t","length","d","InterleaveScalar","out","t1","t2","floor","s","stop"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Materials/Textures/Loaders/EXR/exrLoader.core.js"],"sourcesContent":["import { Clamp } from \"../../../../Maths/math.scalar.functions.js\";\nimport { FLOAT32_SIZE, INT16_SIZE, INT32_SIZE, INT8_SIZE, ULONG_SIZE } from \"./exrLoader.interfaces.js\";\n/**\n * Inspired by https://github.com/sciecode/three.js/blob/dev/examples/jsm/loaders/EXRLoader.js\n * Referred to the original Industrial Light & Magic OpenEXR implementation and the TinyEXR / Syoyo Fujita\n * implementation.\n */\n// /*\n// Copyright (c) 2014 - 2017, Syoyo Fujita\n// All rights reserved.\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are met:\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above copyright\n// notice, this list of conditions and the following disclaimer in the\n// documentation and/or other materials provided with the distribution.\n// * Neither the name of the Syoyo Fujita nor the\n// names of its contributors may be used to endorse or promote products\n// derived from this software without specific prior written permission.\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n// DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n// */\n// // TinyEXR contains some OpenEXR code, which is licensed under ------------\n// ///////////////////////////////////////////////////////////////////////////\n// //\n// // Copyright (c) 2002, Industrial Light & Magic, a division of Lucas\n// // Digital Ltd. LLC\n// //\n// // All rights reserved.\n// //\n// // Redistribution and use in source and binary forms, with or without\n// // modification, are permitted provided that the following conditions are\n// // met:\n// // * Redistributions of source code must retain the above copyright\n// // notice, this list of conditions and the following disclaimer.\n// // * Redistributions in binary form must reproduce the above\n// // copyright notice, this list of conditions and the following disclaimer\n// // in the documentation and/or other materials provided with the\n// // distribution.\n// // * Neither the name of Industrial Light & Magic nor the names of\n// // its contributors may be used to endorse or promote products derived\n// // from this software without specific prior written permission.\n// //\n// // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// // \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n// //\n// ///////////////////////////////////////////////////////////////////////////\n// // End of OpenEXR license -------------------------------------------------\nexport var CompressionCodes;\n(function (CompressionCodes) {\n CompressionCodes[CompressionCodes[\"NO_COMPRESSION\"] = 0] = \"NO_COMPRESSION\";\n CompressionCodes[CompressionCodes[\"RLE_COMPRESSION\"] = 1] = \"RLE_COMPRESSION\";\n CompressionCodes[CompressionCodes[\"ZIPS_COMPRESSION\"] = 2] = \"ZIPS_COMPRESSION\";\n CompressionCodes[CompressionCodes[\"ZIP_COMPRESSION\"] = 3] = \"ZIP_COMPRESSION\";\n CompressionCodes[CompressionCodes[\"PIZ_COMPRESSION\"] = 4] = \"PIZ_COMPRESSION\";\n CompressionCodes[CompressionCodes[\"PXR24_COMPRESSION\"] = 5] = \"PXR24_COMPRESSION\";\n})(CompressionCodes || (CompressionCodes = {}));\nvar LineOrders;\n(function (LineOrders) {\n LineOrders[LineOrders[\"INCREASING_Y\"] = 0] = \"INCREASING_Y\";\n LineOrders[LineOrders[\"DECREASING_Y\"] = 1] = \"DECREASING_Y\";\n})(LineOrders || (LineOrders = {}));\nconst _tables = _GenerateTables();\n// Fast Half Float Conversions, http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf\nfunction _GenerateTables() {\n // float32 to float16 helpers\n const buffer = new ArrayBuffer(4);\n const floatView = new Float32Array(buffer);\n const uint32View = new Uint32Array(buffer);\n const baseTable = new Uint32Array(512);\n const shiftTable = new Uint32Array(512);\n for (let i = 0; i < 256; ++i) {\n const e = i - 127;\n // very small number (0, -0)\n if (e < -27) {\n baseTable[i] = 0x0000;\n baseTable[i | 0x100] = 0x8000;\n shiftTable[i] = 24;\n shiftTable[i | 0x100] = 24;\n // small number (denorm)\n }\n else if (e < -14) {\n baseTable[i] = 0x0400 >> (-e - 14);\n baseTable[i | 0x100] = (0x0400 >> (-e - 14)) | 0x8000;\n shiftTable[i] = -e - 1;\n shiftTable[i | 0x100] = -e - 1;\n // normal number\n }\n else if (e <= 15) {\n baseTable[i] = (e + 15) << 10;\n baseTable[i | 0x100] = ((e + 15) << 10) | 0x8000;\n shiftTable[i] = 13;\n shiftTable[i | 0x100] = 13;\n // large number (Infinity, -Infinity)\n }\n else if (e < 128) {\n baseTable[i] = 0x7c00;\n baseTable[i | 0x100] = 0xfc00;\n shiftTable[i] = 24;\n shiftTable[i | 0x100] = 24;\n // stay (NaN, Infinity, -Infinity)\n }\n else {\n baseTable[i] = 0x7c00;\n baseTable[i | 0x100] = 0xfc00;\n shiftTable[i] = 13;\n shiftTable[i | 0x100] = 13;\n }\n }\n // float16 to float32 helpers\n const mantissaTable = new Uint32Array(2048);\n const exponentTable = new Uint32Array(64);\n const offsetTable = new Uint32Array(64);\n for (let i = 1; i < 1024; ++i) {\n let m = i << 13; // zero pad mantissa bits\n let e = 0; // zero exponent\n // normalized\n while ((m & 0x00800000) === 0) {\n m <<= 1;\n e -= 0x00800000; // decrement exponent\n }\n m &= ~0x00800000; // clear leading 1 bit\n e += 0x38800000; // adjust bias\n mantissaTable[i] = m | e;\n }\n for (let i = 1024; i < 2048; ++i) {\n mantissaTable[i] = 0x38000000 + ((i - 1024) << 13);\n }\n for (let i = 1; i < 31; ++i) {\n exponentTable[i] = i << 23;\n }\n exponentTable[31] = 0x47800000;\n exponentTable[32] = 0x80000000;\n for (let i = 33; i < 63; ++i) {\n exponentTable[i] = 0x80000000 + ((i - 32) << 23);\n }\n exponentTable[63] = 0xc7800000;\n for (let i = 1; i < 64; ++i) {\n if (i !== 32) {\n offsetTable[i] = 1024;\n }\n }\n return {\n floatView: floatView,\n uint32View: uint32View,\n baseTable: baseTable,\n shiftTable: shiftTable,\n mantissaTable: mantissaTable,\n exponentTable: exponentTable,\n offsetTable: offsetTable,\n };\n}\n/**\n * Parse a null terminated string from the buffer\n * @param buffer buffer to read from\n * @param offset current offset in the buffer\n * @returns a string\n */\nexport function ParseNullTerminatedString(buffer, offset) {\n const uintBuffer = new Uint8Array(buffer);\n let endOffset = 0;\n while (uintBuffer[offset.value + endOffset] != 0) {\n endOffset += 1;\n }\n const stringValue = new TextDecoder().decode(uintBuffer.slice(offset.value, offset.value + endOffset));\n offset.value = offset.value + endOffset + 1;\n return stringValue;\n}\n/**\n * Parse an int32 from the buffer\n * @param dataView dataview on the data\n * @param offset current offset in the data view\n * @returns an int32\n */\nexport function ParseInt32(dataView, offset) {\n const value = dataView.getInt32(offset.value, true);\n offset.value += INT32_SIZE;\n return value;\n}\n/**\n * Parse an uint32 from the buffer\n * @param dataView data view to read from\n * @param offset offset in the data view\n * @returns an uint32\n */\nexport function ParseUint32(dataView, offset) {\n const value = dataView.getUint32(offset.value, true);\n offset.value += INT32_SIZE;\n return value;\n}\n/**\n * Parse an uint8 from the buffer\n * @param dataView dataview on the data\n * @param offset current offset in the data view\n * @returns an uint8\n */\nexport function ParseUint8(dataView, offset) {\n const value = dataView.getUint8(offset.value);\n offset.value += INT8_SIZE;\n return value;\n}\n/**\n * Parse an uint16 from the buffer\n * @param dataView dataview on the data\n * @param offset current offset in the data view\n * @returns an uint16\n */\nexport function ParseUint16(dataView, offset) {\n const value = dataView.getUint16(offset.value, true);\n offset.value += INT16_SIZE;\n return value;\n}\n/**\n * Parse an uint8 from an array buffer\n * @param array array buffer\n * @param offset current offset in the data view\n * @returns an uint16\n */\nexport function ParseUint8Array(array, offset) {\n const value = array[offset.value];\n offset.value += INT8_SIZE;\n return value;\n}\n/**\n * Parse an int64 from the buffer\n * @param dataView dataview on the data\n * @param offset current offset in the data view\n * @returns an int64\n */\nexport function ParseInt64(dataView, offset) {\n let int;\n if (\"getBigInt64\" in DataView.prototype) {\n int = Number(dataView.getBigInt64(offset.value, true));\n }\n else {\n int = dataView.getUint32(offset.value + 4, true) + Number(dataView.getUint32(offset.value, true) << 32);\n }\n offset.value += ULONG_SIZE;\n return int;\n}\n/**\n * Parse a float32 from the buffer\n * @param dataView dataview on the data\n * @param offset current offset in the data view\n * @returns a float32\n */\nexport function ParseFloat32(dataView, offset) {\n const value = dataView.getFloat32(offset.value, true);\n offset.value += FLOAT32_SIZE;\n return value;\n}\n/**\n * Parse a float16 from the buffer\n * @param dataView dataview on the data\n * @param offset current offset in the data view\n * @returns a float16\n */\nexport function ParseFloat16(dataView, offset) {\n return DecodeFloat16(ParseUint16(dataView, offset));\n}\nfunction DecodeFloat16(binary) {\n const exponent = (binary & 0x7c00) >> 10;\n const fraction = binary & 0x03ff;\n return ((binary >> 15 ? -1 : 1) *\n (exponent ? (exponent === 0x1f ? (fraction ? NaN : Infinity) : Math.pow(2, exponent - 15) * (1 + fraction / 0x400)) : 6.103515625e-5 * (fraction / 0x400)));\n}\nfunction ToHalfFloat(value) {\n if (Math.abs(value) > 65504) {\n throw new Error(\"Value out of range.Consider using float instead of half-float.\");\n }\n value = Clamp(value, -65504, 65504);\n _tables.floatView[0] = value;\n const f = _tables.uint32View[0];\n const e = (f >> 23) & 0x1ff;\n return _tables.baseTable[e] + ((f & 0x007fffff) >> _tables.shiftTable[e]);\n}\n/**\n * Decode a float32 from the buffer\n * @param dataView dataview on the data\n * @param offset current offset in the data view\n * @returns a float32\n */\nexport function DecodeFloat32(dataView, offset) {\n return ToHalfFloat(ParseFloat32(dataView, offset));\n}\nfunction ParseFixedLengthString(buffer, offset, size) {\n const stringValue = new TextDecoder().decode(new Uint8Array(buffer).slice(offset.value, offset.value + size));\n offset.value = offset.value + size;\n return stringValue;\n}\nfunction ParseRational(dataView, offset) {\n const x = ParseInt32(dataView, offset);\n const y = ParseUint32(dataView, offset);\n return [x, y];\n}\nfunction ParseTimecode(dataView, offset) {\n const x = ParseUint32(dataView, offset);\n const y = ParseUint32(dataView, offset);\n return [x, y];\n}\nfunction ParseV2f(dataView, offset) {\n const x = ParseFloat32(dataView, offset);\n const y = ParseFloat32(dataView, offset);\n return [x, y];\n}\nfunction ParseV3f(dataView, offset) {\n const x = ParseFloat32(dataView, offset);\n const y = ParseFloat32(dataView, offset);\n const z = ParseFloat32(dataView, offset);\n return [x, y, z];\n}\nfunction ParseChlist(dataView, offset, size) {\n const startOffset = offset.value;\n const channels = [];\n while (offset.value < startOffset + size - 1) {\n const name = ParseNullTerminatedString(dataView.buffer, offset);\n const pixelType = ParseInt32(dataView, offset);\n const pLinear = ParseUint8(dataView, offset);\n offset.value += 3; // reserved, three chars\n const xSampling = ParseInt32(dataView, offset);\n const ySampling = ParseInt32(dataView, offset);\n channels.push({\n name: name,\n pixelType: pixelType,\n pLinear: pLinear,\n xSampling: xSampling,\n ySampling: ySampling,\n });\n }\n offset.value += 1;\n return channels;\n}\nfunction ParseChromaticities(dataView, offset) {\n const redX = ParseFloat32(dataView, offset);\n const redY = ParseFloat32(dataView, offset);\n const greenX = ParseFloat32(dataView, offset);\n const greenY = ParseFloat32(dataView, offset);\n const blueX = ParseFloat32(dataView, offset);\n const blueY = ParseFloat32(dataView, offset);\n const whiteX = ParseFloat32(dataView, offset);\n const whiteY = ParseFloat32(dataView, offset);\n return { redX: redX, redY: redY, greenX: greenX, greenY: greenY, blueX: blueX, blueY: blueY, whiteX: whiteX, whiteY: whiteY };\n}\nfunction ParseCompression(dataView, offset) {\n return ParseUint8(dataView, offset);\n}\nfunction ParseBox2i(dataView, offset) {\n const xMin = ParseInt32(dataView, offset);\n const yMin = ParseInt32(dataView, offset);\n const xMax = ParseInt32(dataView, offset);\n const yMax = ParseInt32(dataView, offset);\n return { xMin: xMin, yMin: yMin, xMax: xMax, yMax: yMax };\n}\nfunction ParseLineOrder(dataView, offset) {\n const lineOrder = ParseUint8(dataView, offset);\n return LineOrders[lineOrder];\n}\n/**\n * Parse a value from the data view\n * @param dataView defines the data view to read from\n * @param offset defines the current offset in the data view\n * @param type defines the type of the value to read\n * @param size defines the size of the value to read\n * @returns the parsed value\n */\nexport function ParseValue(dataView, offset, type, size) {\n switch (type) {\n case \"string\":\n case \"stringvector\":\n case \"iccProfile\":\n return ParseFixedLengthString(dataView.buffer, offset, size);\n case \"chlist\":\n return ParseChlist(dataView, offset, size);\n case \"chromaticities\":\n return ParseChromaticities(dataView, offset);\n case \"compression\":\n return ParseCompression(dataView, offset);\n case \"box2i\":\n return ParseBox2i(dataView, offset);\n case \"lineOrder\":\n return ParseLineOrder(dataView, offset);\n case \"float\":\n return ParseFloat32(dataView, offset);\n case \"v2f\":\n return ParseV2f(dataView, offset);\n case \"v3f\":\n return ParseV3f(dataView, offset);\n case \"int\":\n return ParseInt32(dataView, offset);\n case \"rational\":\n return ParseRational(dataView, offset);\n case \"timecode\":\n return ParseTimecode(dataView, offset);\n case \"preview\":\n offset.value += size;\n return \"skipped\";\n default:\n offset.value += size;\n return undefined;\n }\n}\n/**\n * Revert the endianness of the data\n * @param source defines the source\n */\nexport function Predictor(source) {\n for (let t = 1; t < source.length; t++) {\n const d = source[t - 1] + source[t] - 128;\n source[t] = d;\n }\n}\n/**\n * Interleave pixels\n * @param source defines the data source\n * @param out defines the output\n */\nexport function InterleaveScalar(source, out) {\n let t1 = 0;\n let t2 = Math.floor((source.length + 1) / 2);\n let s = 0;\n const stop = source.length - 1;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (s > stop) {\n break;\n }\n out[s++] = source[t1++];\n if (s > stop) {\n break;\n }\n out[s++] = source[t2++];\n }\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}