@twin.org/image 0.0.2-next.9 → 0.0.3-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/es/color.js +213 -0
- package/dist/es/color.js.map +1 -0
- package/dist/es/encoders/jpegEncoder.js +740 -0
- package/dist/es/encoders/jpegEncoder.js.map +1 -0
- package/dist/es/encoders/png/frame.js +4 -0
- package/dist/es/encoders/png/frame.js.map +1 -0
- package/dist/es/encoders/png/imageData.js +2 -0
- package/dist/es/encoders/png/imageData.js.map +1 -0
- package/dist/es/encoders/png/leaf.js +4 -0
- package/dist/es/encoders/png/leaf.js.map +1 -0
- package/dist/es/encoders/pngEncoder.js +939 -0
- package/dist/es/encoders/pngEncoder.js.map +1 -0
- package/dist/es/index.js +6 -0
- package/dist/es/index.js.map +1 -0
- package/dist/types/color.d.ts +4 -0
- package/dist/types/encoders/jpegEncoder.d.ts +4 -0
- package/dist/types/index.d.ts +3 -3
- package/docs/changelog.md +281 -0
- package/docs/reference/classes/Color.md +10 -2
- package/docs/reference/classes/JpegEncoder.md +8 -0
- package/locales/en.json +4 -0
- package/package.json +19 -10
- package/dist/cjs/index.cjs +0 -1898
- package/dist/esm/index.mjs +0 -1894
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jpegEncoder.js","sourceRoot":"","sources":["../../../src/encoders/jpegEncoder.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,uCAAuC;AACvC,+BAA+B;AAC/B,uCAAuC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C;;;GAGG;AACH,MAAM,OAAO,WAAW;IACvB;;OAEG;IACI,MAAM,CAAU,UAAU,iBAAiC;IAElE;;OAEG;IACK,MAAM,CAAU,0BAA0B,GAAa;QAC9D,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;KACjD,CAAC;IAEF;;OAEG;IACK,MAAM,CAAU,wBAAwB,GAAa;QAC5D,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;KACpC,CAAC;IAEF;;OAEG;IACK,MAAM,CAAU,0BAA0B,GAAa;QAC9D,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI;KACpD,CAAC;IAEF;;OAEG;IACK,MAAM,CAAU,wBAAwB,GAAa;QAC5D,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,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","sourcesContent":["// Copyright 2024 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\n/* eslint-disable no-bitwise */\n/* eslint-disable no-mixed-operators */\nimport { GeneralError } from \"@twin.org/core\";\nimport { nameof } from \"@twin.org/nameof\";\n\n/**\n * JPEG Encoder.\n * Based on JPEG encoder ported to JavaScript and optimized by Andreas Ritter.\n */\nexport class JpegEncoder {\n\t/**\n\t * Runtime name for the class.\n\t */\n\tpublic static readonly CLASS_NAME: string = nameof<JpegEncoder>();\n\n\t/**\n\t * @internal\n\t */\n\tprivate static readonly _STD_DC_LUMINANCE_NR_CODES: number[] = [\n\t\t0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0\n\t];\n\n\t/**\n\t * @internal\n\t */\n\tprivate static readonly _STD_DC_LUMINANCE_VALUES: number[] = [\n\t\t0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11\n\t];\n\n\t/**\n\t * @internal\n\t */\n\tprivate static readonly _STD_AC_LUMINANCE_NR_CODES: number[] = [\n\t\t0, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 0x7d\n\t];\n\n\t/**\n\t * @internal\n\t */\n\tprivate static readonly _STD_AC_LUMINANCE_VALUES: number[] = [\n\t\t0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12, 0x21, 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07,\n\t\t0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xa1, 0x08, 0x23, 0x42, 0xb1, 0xc1, 0x15, 0x52, 0xd1, 0xf0,\n\t\t0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0a, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28,\n\t\t0x29, 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49,\n\t\t0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69,\n\t\t0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89,\n\t\t0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,\n\t\t0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5,\n\t\t0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe1, 0xe2,\n\t\t0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,\n\t\t0xf9, 0xfa\n\t];\n\n\t/**\n\t * @internal\n\t */\n\tprivate static readonly _STD_DC_CHROMINANCE_NR_CODES: number[] = [\n\t\t0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0\n\t];\n\n\t/**\n\t * @internal\n\t */\n\tprivate static readonly _STD_DC_CHROMINANCE_VALUES: number[] = [\n\t\t0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11\n\t];\n\n\t/**\n\t * @internal\n\t */\n\tprivate static readonly _STD_AC_CHROMINANCE_NR_CODES: number[] = [\n\t\t0, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 0x77\n\t];\n\n\t/**\n\t * @internal\n\t */\n\tprivate static readonly _STD_AC_CHROMINANCE_VALUES: number[] = [\n\t\t0x00, 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21, 0x31, 0x06, 0x12, 0x41, 0x51, 0x07, 0x61, 0x71,\n\t\t0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91, 0xa1, 0xb1, 0xc1, 0x09, 0x23, 0x33, 0x52, 0xf0,\n\t\t0x15, 0x62, 0x72, 0xd1, 0x0a, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, 0x17, 0x18, 0x19, 0x1a, 0x26,\n\t\t0x27, 0x28, 0x29, 0x2a, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,\n\t\t0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,\n\t\t0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,\n\t\t0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5,\n\t\t0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3,\n\t\t0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda,\n\t\t0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,\n\t\t0xf9, 0xfa\n\t];\n\n\t/** @internal */\n\tprivate static readonly _SIG_ZAG: number[] = [\n\t\t0, 1, 5, 6, 14, 15, 27, 28, 2, 4, 7, 13, 16, 26, 29, 42, 3, 8, 12, 17, 25, 30, 41, 43, 9, 11,\n\t\t18, 24, 31, 40, 44, 53, 10, 19, 23, 32, 39, 45, 52, 54, 20, 22, 33, 38, 46, 51, 55, 60, 21, 34,\n\t\t37, 47, 50, 56, 59, 61, 35, 36, 48, 49, 57, 58, 62, 63\n\t];\n\n\t/**\n\t * @internal\n\t */\n\tprivate readonly _yTable: number[];\n\n\t/**\n\t * @internal\n\t */\n\tprivate readonly _uvTable: number[];\n\n\t/**\n\t * @internal\n\t */\n\tprivate readonly _fdTblY: number[];\n\n\t/**\n\t * @internal\n\t */\n\tprivate readonly _fdTblUV: number[];\n\n\t/**\n\t * @internal\n\t */\n\tprivate _ydcHashTable: number[][] | undefined;\n\n\t/**\n\t * @internal\n\t */\n\tprivate _uVdcHashTable: number[][] | undefined;\n\n\t/**\n\t * @internal\n\t */\n\tprivate _yacHashTable: number[][] | undefined;\n\n\t/**\n\t * @internal\n\t */\n\tprivate _uVacHashTable: number[][] | undefined;\n\n\t/**\n\t * @internal\n\t */\n\tprivate readonly _bitCode: number[][];\n\n\t/**\n\t * @internal\n\t */\n\tprivate readonly _category: number[];\n\n\t/**\n\t * @internal\n\t */\n\tprivate readonly _outputFDctQuant: number[];\n\n\t/**\n\t * @internal\n\t */\n\tprivate readonly _du: number[];\n\n\t/**\n\t * @internal\n\t */\n\tprivate _byteOut: number[];\n\n\t/**\n\t * @internal\n\t */\n\tprivate _byteNew: number;\n\n\t/**\n\t * @internal\n\t */\n\tprivate _bytePos: number;\n\n\t/**\n\t * @internal\n\t */\n\tprivate readonly _ydu: number[];\n\n\t/**\n\t * @internal\n\t */\n\tprivate readonly _udu: number[];\n\n\t/**\n\t * @internal\n\t */\n\tprivate readonly _vdu: number[];\n\n\t/**\n\t * @internal\n\t */\n\tprivate readonly _rgbYuvTable: number[];\n\n\t/**\n\t * Create a new instance of JpegEncoder.\n\t */\n\tconstructor() {\n\t\tthis._yTable = Array.from({ length: 64 });\n\t\tthis._uvTable = Array.from({ length: 64 });\n\t\tthis._fdTblY = Array.from({ length: 64 });\n\t\tthis._fdTblUV = Array.from({ length: 64 });\n\n\t\tthis._bitCode = Array.from({ length: 65535 });\n\t\tthis._category = Array.from({ length: 65535 });\n\t\tthis._outputFDctQuant = Array.from({ length: 64 });\n\t\tthis._du = Array.from({ length: 64 });\n\t\tthis._byteOut = [];\n\t\tthis._byteNew = 0;\n\t\tthis._bytePos = 7;\n\n\t\tthis._ydu = Array.from({ length: 64 });\n\t\tthis._udu = Array.from({ length: 64 });\n\t\tthis._vdu = Array.from({ length: 64 });\n\t\tthis._rgbYuvTable = Array.from({ length: 2048 });\n\n\t\tthis.initHuffmanTbl();\n\t\tthis.initCategoryNumber();\n\t\tthis.initRGBYUVTable();\n\t}\n\n\t/**\n\t * Encode the image with the given quality.\n\t * @param width The width of the image to encode.\n\t * @param height The height of the image to encode.\n\t * @param imageData The data for the image.\n\t * @param quality The quality to encode the image at.\n\t * @returns The data for the encoded image.\n\t */\n\tpublic encode(width: number, height: number, imageData: Uint8Array, quality: number): Uint8Array {\n\t\tthis.setQuality(quality);\n\n\t\t// Initialize bit writer\n\t\tthis._byteOut = [];\n\t\tthis._byteNew = 0;\n\t\tthis._bytePos = 7;\n\n\t\t// Add JPEG headers\n\t\tthis.writeWord(0xffd8); // SOI\n\t\tthis.writeAPP0();\n\t\tthis.writeDQT();\n\t\tthis.writeSOF0(width, height);\n\t\tthis.writeDHT();\n\t\tthis.writeSOS();\n\n\t\t// Encode 8x8 macro blocks\n\t\tlet DCY = 0;\n\t\tlet DCU = 0;\n\t\tlet DCV = 0;\n\n\t\tthis._byteNew = 0;\n\t\tthis._bytePos = 7;\n\n\t\tconst quadWidth = width * 4;\n\n\t\tlet x;\n\t\tlet y = 0;\n\t\tlet r;\n\t\tlet g;\n\t\tlet b;\n\t\tlet start;\n\t\tlet p;\n\t\tlet col;\n\t\tlet row;\n\t\tlet pos;\n\t\twhile (y < height) {\n\t\t\tx = 0;\n\t\t\twhile (x < quadWidth) {\n\t\t\t\tstart = quadWidth * y + x;\n\t\t\t\tp = start;\n\t\t\t\tcol = -1;\n\t\t\t\trow = 0;\n\n\t\t\t\tfor (pos = 0; pos < 64; pos++) {\n\t\t\t\t\trow = pos >> 3; // /8\n\t\t\t\t\tcol = (pos & 7) * 4; // %8\n\t\t\t\t\tp = start + row * quadWidth + col;\n\n\t\t\t\t\tif (y + row >= height) {\n\t\t\t\t\t\t// padding bottom\n\t\t\t\t\t\tp -= quadWidth * (y + 1 + row - height);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (x + col >= quadWidth) {\n\t\t\t\t\t\t// padding right\n\t\t\t\t\t\tp -= x + col - quadWidth + 4;\n\t\t\t\t\t}\n\n\t\t\t\t\tr = imageData[p++];\n\t\t\t\t\tg = imageData[p++];\n\t\t\t\t\tb = imageData[p++];\n\n\t\t\t\t\t// use lookup table (slightly faster)\n\t\t\t\t\tthis._ydu[pos] =\n\t\t\t\t\t\t((this._rgbYuvTable[r] +\n\t\t\t\t\t\t\tthis._rgbYuvTable[Math.trunc(g + 256)] +\n\t\t\t\t\t\t\tthis._rgbYuvTable[Math.trunc(b + 512)]) >>\n\t\t\t\t\t\t\t16) -\n\t\t\t\t\t\t128;\n\t\t\t\t\tthis._udu[pos] =\n\t\t\t\t\t\t((this._rgbYuvTable[Math.trunc(r + 768)] +\n\t\t\t\t\t\t\tthis._rgbYuvTable[Math.trunc(g + 1024)] +\n\t\t\t\t\t\t\tthis._rgbYuvTable[Math.trunc(b + 1280)]) >>\n\t\t\t\t\t\t\t16) -\n\t\t\t\t\t\t128;\n\t\t\t\t\tthis._vdu[pos] =\n\t\t\t\t\t\t((this._rgbYuvTable[Math.trunc(r + 1280)] +\n\t\t\t\t\t\t\tthis._rgbYuvTable[Math.trunc(g + 1536)] +\n\t\t\t\t\t\t\tthis._rgbYuvTable[Math.trunc(b + 1792)]) >>\n\t\t\t\t\t\t\t16) -\n\t\t\t\t\t\t128;\n\t\t\t\t}\n\n\t\t\t\tif (this._ydcHashTable && this._yacHashTable) {\n\t\t\t\t\tDCY = this.processDU(\n\t\t\t\t\t\tthis._ydu,\n\t\t\t\t\t\tthis._fdTblY,\n\t\t\t\t\t\tDCY,\n\t\t\t\t\t\tthis._ydcHashTable,\n\t\t\t\t\t\tthis._yacHashTable\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (this._uVdcHashTable && this._uVacHashTable) {\n\t\t\t\t\tDCU = this.processDU(\n\t\t\t\t\t\tthis._udu,\n\t\t\t\t\t\tthis._fdTblUV,\n\t\t\t\t\t\tDCU,\n\t\t\t\t\t\tthis._uVdcHashTable,\n\t\t\t\t\t\tthis._uVacHashTable\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (this._uVdcHashTable && this._uVacHashTable) {\n\t\t\t\t\tDCV = this.processDU(\n\t\t\t\t\t\tthis._vdu,\n\t\t\t\t\t\tthis._fdTblUV,\n\t\t\t\t\t\tDCV,\n\t\t\t\t\t\tthis._uVdcHashTable,\n\t\t\t\t\t\tthis._uVacHashTable\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tx += 32;\n\t\t\t}\n\t\t\ty += 8;\n\t\t}\n\n\t\t// Do the bit alignment of the EOI marker\n\t\tif (this._bytePos >= 0) {\n\t\t\tconst fillBits = [];\n\t\t\tfillBits[1] = this._bytePos + 1;\n\t\t\tfillBits[0] = (1 << (this._bytePos + 1)) - 1;\n\t\t\tthis.writeBits(fillBits);\n\t\t}\n\n\t\tthis.writeWord(0xffd9); // EOI\n\n\t\treturn new Uint8Array(this._byteOut);\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate setQuality(quality: number): void {\n\t\tif (quality <= 0 || quality > 100) {\n\t\t\tthrow new GeneralError(JpegEncoder.CLASS_NAME, \"invalidQuality\", { value: quality });\n\t\t}\n\n\t\tlet sf = 0;\n\t\tif (quality < 50) {\n\t\t\tsf = Math.floor(5000 / quality);\n\t\t} else {\n\t\t\tsf = Math.floor(200 - quality * 2);\n\t\t}\n\n\t\tthis.initQuantTables(sf);\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate initQuantTables(sf: number): void {\n\t\tconst YQT = [\n\t\t\t16, 11, 10, 16, 24, 40, 51, 61, 12, 12, 14, 19, 26, 58, 60, 55, 14, 13, 16, 24, 40, 57, 69,\n\t\t\t56, 14, 17, 22, 29, 51, 87, 80, 62, 18, 22, 37, 56, 68, 109, 103, 77, 24, 35, 55, 64, 81, 104,\n\t\t\t113, 92, 49, 64, 78, 87, 103, 121, 120, 101, 72, 92, 95, 98, 112, 100, 103, 99\n\t\t];\n\n\t\tfor (let i = 0; i < 64; i++) {\n\t\t\tlet t = Math.floor((YQT[i] * sf + 50) / 100);\n\t\t\tif (t < 1) {\n\t\t\t\tt = 1;\n\t\t\t} else if (t > 255) {\n\t\t\t\tt = 255;\n\t\t\t}\n\t\t\tthis._yTable[JpegEncoder._SIG_ZAG[i]] = t;\n\t\t}\n\t\tconst UVQT = [\n\t\t\t17, 18, 24, 47, 99, 99, 99, 99, 18, 21, 26, 66, 99, 99, 99, 99, 24, 26, 56, 99, 99, 99, 99,\n\t\t\t99, 47, 66, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,\n\t\t\t99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99\n\t\t];\n\t\tfor (let j = 0; j < 64; j++) {\n\t\t\tlet u = Math.floor((UVQT[j] * sf + 50) / 100);\n\t\t\tif (u < 1) {\n\t\t\t\tu = 1;\n\t\t\t} else if (u > 255) {\n\t\t\t\tu = 255;\n\t\t\t}\n\t\t\tthis._uvTable[JpegEncoder._SIG_ZAG[j]] = u;\n\t\t}\n\t\tconst aAsf = [1, 1.387039845, 1.306562965, 1.175875602, 1, 0.785694958, 0.5411961, 0.275899379];\n\t\tlet k = 0;\n\t\tfor (let row = 0; row < 8; row++) {\n\t\t\tfor (let col = 0; col < 8; col++) {\n\t\t\t\tthis._fdTblY[k] = 1 / (this._yTable[JpegEncoder._SIG_ZAG[k]] * aAsf[row] * aAsf[col] * 8);\n\t\t\t\tthis._fdTblUV[k] = 1 / (this._uvTable[JpegEncoder._SIG_ZAG[k]] * aAsf[row] * aAsf[col] * 8);\n\t\t\t\tk++;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate computeHuffmanTbl(nrCodes: number[], stdTable: number[]): number[][] {\n\t\tlet codeValue = 0;\n\t\tlet posInTable = 0;\n\t\tconst HT: number[][] = [];\n\t\tfor (let k = 1; k <= 16; k++) {\n\t\t\tfor (let j = 1; j <= nrCodes[k]; j++) {\n\t\t\t\tHT[stdTable[posInTable]] = [];\n\t\t\t\tHT[stdTable[posInTable]][0] = codeValue;\n\t\t\t\tHT[stdTable[posInTable]][1] = k;\n\t\t\t\tposInTable++;\n\t\t\t\tcodeValue++;\n\t\t\t}\n\t\t\tcodeValue *= 2;\n\t\t}\n\t\treturn HT;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate initHuffmanTbl(): void {\n\t\tthis._ydcHashTable = this.computeHuffmanTbl(\n\t\t\tJpegEncoder._STD_DC_LUMINANCE_NR_CODES,\n\t\t\tJpegEncoder._STD_DC_LUMINANCE_VALUES\n\t\t);\n\t\tthis._uVdcHashTable = this.computeHuffmanTbl(\n\t\t\tJpegEncoder._STD_DC_CHROMINANCE_NR_CODES,\n\t\t\tJpegEncoder._STD_DC_CHROMINANCE_VALUES\n\t\t);\n\t\tthis._yacHashTable = this.computeHuffmanTbl(\n\t\t\tJpegEncoder._STD_AC_LUMINANCE_NR_CODES,\n\t\t\tJpegEncoder._STD_AC_LUMINANCE_VALUES\n\t\t);\n\t\tthis._uVacHashTable = this.computeHuffmanTbl(\n\t\t\tJpegEncoder._STD_AC_CHROMINANCE_NR_CODES,\n\t\t\tJpegEncoder._STD_AC_CHROMINANCE_VALUES\n\t\t);\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate initCategoryNumber(): void {\n\t\tlet nrLower = 1;\n\t\tlet nrUpper = 2;\n\t\tfor (let cat = 1; cat <= 15; cat++) {\n\t\t\t// Positive numbers\n\t\t\tfor (let nr = nrLower; nr < nrUpper; nr++) {\n\t\t\t\tthis._category[32767 + nr] = cat;\n\t\t\t\tthis._bitCode[32767 + nr] = [];\n\t\t\t\tthis._bitCode[32767 + nr][1] = cat;\n\t\t\t\tthis._bitCode[32767 + nr][0] = nr;\n\t\t\t}\n\t\t\t// Negative numbers\n\t\t\tfor (let nrNeg = -(nrUpper - 1); nrNeg <= -nrLower; nrNeg++) {\n\t\t\t\tthis._category[32767 + nrNeg] = cat;\n\t\t\t\tthis._bitCode[32767 + nrNeg] = [];\n\t\t\t\tthis._bitCode[32767 + nrNeg][1] = cat;\n\t\t\t\tthis._bitCode[32767 + nrNeg][0] = nrUpper - 1 + nrNeg;\n\t\t\t}\n\t\t\tnrLower <<= 1;\n\t\t\tnrUpper <<= 1;\n\t\t}\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate initRGBYUVTable(): void {\n\t\tfor (let i = 0; i < 256; i++) {\n\t\t\tthis._rgbYuvTable[i] = 19595 * i;\n\t\t\tthis._rgbYuvTable[Math.trunc(i + 256)] = 38470 * i;\n\t\t\tthis._rgbYuvTable[Math.trunc(i + 512)] = 7471 * i + 0x8000;\n\t\t\tthis._rgbYuvTable[Math.trunc(i + 768)] = -11059 * i;\n\t\t\tthis._rgbYuvTable[Math.trunc(i + 1024)] = -21709 * i;\n\t\t\tthis._rgbYuvTable[Math.trunc(i + 1280)] = 32768 * i + 0x807fff;\n\t\t\tthis._rgbYuvTable[Math.trunc(i + 1536)] = -27439 * i;\n\t\t\tthis._rgbYuvTable[Math.trunc(i + 1792)] = -5329 * i;\n\t\t}\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate writeBits(bs: number[]): void {\n\t\tconst value = bs[0];\n\t\tlet posVal = bs[1] - 1;\n\t\twhile (posVal >= 0) {\n\t\t\tif (value & (1 << posVal)) {\n\t\t\t\tthis._byteNew |= 1 << this._bytePos;\n\t\t\t}\n\t\t\tposVal--;\n\t\t\tthis._bytePos--;\n\t\t\tif (this._bytePos < 0) {\n\t\t\t\tif (this._byteNew === 0xff) {\n\t\t\t\t\tthis.writeByte(0xff);\n\t\t\t\t\tthis.writeByte(0);\n\t\t\t\t} else {\n\t\t\t\t\tthis.writeByte(this._byteNew);\n\t\t\t\t}\n\t\t\t\tthis._bytePos = 7;\n\t\t\t\tthis._byteNew = 0;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate writeByte(value: number): void {\n\t\tthis._byteOut.push(value);\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate writeWord(value: number): void {\n\t\tthis.writeByte((value >> 8) & 0xff);\n\t\tthis.writeByte(value & 0xff);\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate fDCTQuant(data: number[], fdTbl: number[]): number[] {\n\t\tlet d0;\n\t\tlet d1;\n\t\tlet d2;\n\t\tlet d3;\n\t\tlet d4;\n\t\tlet d5;\n\t\tlet d6;\n\t\tlet d7;\n\t\t/* Pass 1: process rows. */\n\t\tlet dataOff = 0;\n\t\tlet i;\n\t\tconst I8 = 8;\n\t\tconst I64 = 64;\n\t\tfor (i = 0; i < I8; ++i) {\n\t\t\td0 = data[dataOff];\n\t\t\td1 = data[dataOff + 1];\n\t\t\td2 = data[dataOff + 2];\n\t\t\td3 = data[dataOff + 3];\n\t\t\td4 = data[dataOff + 4];\n\t\t\td5 = data[dataOff + 5];\n\t\t\td6 = data[dataOff + 6];\n\t\t\td7 = data[dataOff + 7];\n\n\t\t\tconst tmp0 = d0 + d7;\n\t\t\tconst tmp7 = d0 - d7;\n\t\t\tconst tmp1 = d1 + d6;\n\t\t\tconst tmp6 = d1 - d6;\n\t\t\tconst tmp2 = d2 + d5;\n\t\t\tconst tmp5 = d2 - d5;\n\t\t\tconst tmp3 = d3 + d4;\n\t\t\tconst tmp4 = d3 - d4;\n\n\t\t\t/* Even part */\n\t\t\tlet tmp10 = tmp0 + tmp3; /* phase 2 */\n\t\t\tconst tmp13 = tmp0 - tmp3;\n\t\t\tlet tmp11 = tmp1 + tmp2;\n\t\t\tlet tmp12 = tmp1 - tmp2;\n\n\t\t\tdata[dataOff] = tmp10 + tmp11; /* phase 3 */\n\t\t\tdata[dataOff + 4] = tmp10 - tmp11;\n\n\t\t\tconst z1 = (tmp12 + tmp13) * 0.707106781; /* c4 */\n\t\t\tdata[dataOff + 2] = tmp13 + z1; /* phase 5 */\n\t\t\tdata[dataOff + 6] = tmp13 - z1;\n\n\t\t\t/* Odd part */\n\t\t\ttmp10 = tmp4 + tmp5; /* phase 2 */\n\t\t\ttmp11 = tmp5 + tmp6;\n\t\t\ttmp12 = tmp6 + tmp7;\n\n\t\t\t/* The rotator is modified from fig 4-8 to avoid extra negations. */\n\t\t\tconst z5 = (tmp10 - tmp12) * 0.382683433; /* c6 */\n\t\t\tconst z2 = 0.5411961 * tmp10 + z5; /* c2-c6 */\n\t\t\tconst z4 = 1.306562965 * tmp12 + z5; /* c2+c6 */\n\t\t\tconst z3 = tmp11 * 0.707106781; /* c4 */\n\n\t\t\tconst z11 = tmp7 + z3; /* phase 5 */\n\t\t\tconst z13 = tmp7 - z3;\n\n\t\t\tdata[dataOff + 5] = z13 + z2; /* phase 6 */\n\t\t\tdata[dataOff + 3] = z13 - z2;\n\t\t\tdata[dataOff + 1] = z11 + z4;\n\t\t\tdata[dataOff + 7] = z11 - z4;\n\n\t\t\tdataOff += 8; /* advance pointer to next row */\n\t\t}\n\n\t\t/* Pass 2: process columns. */\n\t\tdataOff = 0;\n\t\tfor (i = 0; i < I8; ++i) {\n\t\t\td0 = data[dataOff];\n\t\t\td1 = data[dataOff + 8];\n\t\t\td2 = data[dataOff + 16];\n\t\t\td3 = data[dataOff + 24];\n\t\t\td4 = data[dataOff + 32];\n\t\t\td5 = data[dataOff + 40];\n\t\t\td6 = data[dataOff + 48];\n\t\t\td7 = data[dataOff + 56];\n\n\t\t\tconst tmp0p2 = d0 + d7;\n\t\t\tconst tmp7p2 = d0 - d7;\n\t\t\tconst tmp1p2 = d1 + d6;\n\t\t\tconst tmp6p2 = d1 - d6;\n\t\t\tconst tmp2p2 = d2 + d5;\n\t\t\tconst tmp5p2 = d2 - d5;\n\t\t\tconst tmp3p2 = d3 + d4;\n\t\t\tconst tmp4p2 = d3 - d4;\n\n\t\t\t/* Even part */\n\t\t\tlet tmp10p2 = tmp0p2 + tmp3p2; /* phase 2 */\n\t\t\tconst tmp13p2 = tmp0p2 - tmp3p2;\n\t\t\tlet tmp11p2 = tmp1p2 + tmp2p2;\n\t\t\tlet tmp12p2 = tmp1p2 - tmp2p2;\n\n\t\t\tdata[dataOff] = tmp10p2 + tmp11p2; /* phase 3 */\n\t\t\tdata[dataOff + 32] = tmp10p2 - tmp11p2;\n\n\t\t\tconst z1p2 = (tmp12p2 + tmp13p2) * 0.707106781; /* c4 */\n\t\t\tdata[dataOff + 16] = tmp13p2 + z1p2; /* phase 5 */\n\t\t\tdata[dataOff + 48] = tmp13p2 - z1p2;\n\n\t\t\t/* Odd part */\n\t\t\ttmp10p2 = tmp4p2 + tmp5p2; /* phase 2 */\n\t\t\ttmp11p2 = tmp5p2 + tmp6p2;\n\t\t\ttmp12p2 = tmp6p2 + tmp7p2;\n\n\t\t\t/* The rotator is modified from fig 4-8 to avoid extra negations. */\n\t\t\tconst z5p2 = (tmp10p2 - tmp12p2) * 0.382683433; /* c6 */\n\t\t\tconst z2p2 = 0.5411961 * tmp10p2 + z5p2; /* c2-c6 */\n\t\t\tconst z4p2 = 1.306562965 * tmp12p2 + z5p2; /* c2+c6 */\n\t\t\tconst z3p2 = tmp11p2 * 0.707106781; /* c4 */\n\n\t\t\tconst z11p2 = tmp7p2 + z3p2; /* phase 5 */\n\t\t\tconst z13p2 = tmp7p2 - z3p2;\n\n\t\t\tdata[dataOff + 40] = z13p2 + z2p2; /* phase 6 */\n\t\t\tdata[dataOff + 24] = z13p2 - z2p2;\n\t\t\tdata[dataOff + 8] = z11p2 + z4p2;\n\t\t\tdata[dataOff + 56] = z11p2 - z4p2;\n\n\t\t\tdataOff++; /* advance pointer to next column */\n\t\t}\n\n\t\t// Quantize/descale the coefficients\n\t\tlet fDCTQuant;\n\t\tfor (i = 0; i < I64; ++i) {\n\t\t\t// Apply the quantization and scaling factor & Round to nearest integer\n\t\t\tfDCTQuant = data[i] * fdTbl[i];\n\t\t\tthis._outputFDctQuant[i] =\n\t\t\t\tfDCTQuant > 0 ? Math.trunc(fDCTQuant + 0.5) : Math.trunc(fDCTQuant - 0.5);\n\t\t}\n\t\treturn this._outputFDctQuant;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate writeAPP0(): void {\n\t\tthis.writeWord(0xffe0); // marker\n\t\tthis.writeWord(16); // length\n\t\tthis.writeByte(0x4a); // J\n\t\tthis.writeByte(0x46); // F\n\t\tthis.writeByte(0x49); // I\n\t\tthis.writeByte(0x46); // F\n\t\t// cspell:disable-next-line\n\t\tthis.writeByte(0); // = \"JFIF\",'\\0'\n\t\tthis.writeByte(1); // version hi\n\t\tthis.writeByte(1); // version lo\n\t\tthis.writeByte(0); // xy units\n\t\tthis.writeWord(1); // x density\n\t\tthis.writeWord(1); // y density\n\t\tthis.writeByte(0); // thumb n width\n\t\tthis.writeByte(0); // thumb n height\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate writeSOF0(width: number, height: number): void {\n\t\tthis.writeWord(0xffc0); // marker\n\t\tthis.writeWord(17); // length, true color YUV JPG\n\t\tthis.writeByte(8); // precision\n\t\tthis.writeWord(height);\n\t\tthis.writeWord(width);\n\t\tthis.writeByte(3); // nr of components\n\t\tthis.writeByte(1); // IdY\n\t\tthis.writeByte(0x11); // HVY\n\t\tthis.writeByte(0); // QTY\n\t\tthis.writeByte(2); // IdU\n\t\tthis.writeByte(0x11); // HVU\n\t\tthis.writeByte(1); // QTU\n\t\tthis.writeByte(3); // IdV\n\t\tthis.writeByte(0x11); // HVV\n\t\tthis.writeByte(1); // QTV\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate writeDQT(): void {\n\t\tthis.writeWord(0xffdb); // marker\n\t\tthis.writeWord(132); // length\n\t\tthis.writeByte(0);\n\t\tfor (let i = 0; i < 64; i++) {\n\t\t\tthis.writeByte(this._yTable[i]);\n\t\t}\n\t\tthis.writeByte(1);\n\t\tfor (let j = 0; j < 64; j++) {\n\t\t\tthis.writeByte(this._uvTable[j]);\n\t\t}\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate writeDHT(): void {\n\t\tthis.writeWord(0xffc4); // marker\n\t\tthis.writeWord(0x01a2); // length\n\n\t\tthis.writeByte(0); // HTYDc info\n\t\tfor (let i = 0; i < 16; i++) {\n\t\t\tthis.writeByte(JpegEncoder._STD_DC_LUMINANCE_NR_CODES[i + 1]);\n\t\t}\n\t\tfor (let j = 0; j <= 11; j++) {\n\t\t\tthis.writeByte(JpegEncoder._STD_DC_LUMINANCE_VALUES[j]);\n\t\t}\n\n\t\tthis.writeByte(0x10); // HTYAc info\n\t\tfor (let k = 0; k < 16; k++) {\n\t\t\tthis.writeByte(JpegEncoder._STD_AC_LUMINANCE_NR_CODES[k + 1]);\n\t\t}\n\t\tfor (let l = 0; l <= 161; l++) {\n\t\t\tthis.writeByte(JpegEncoder._STD_AC_LUMINANCE_VALUES[l]);\n\t\t}\n\n\t\tthis.writeByte(1); // HTUDc info\n\t\tfor (let m = 0; m < 16; m++) {\n\t\t\tthis.writeByte(JpegEncoder._STD_DC_CHROMINANCE_NR_CODES[m + 1]);\n\t\t}\n\t\tfor (let n = 0; n <= 11; n++) {\n\t\t\tthis.writeByte(JpegEncoder._STD_DC_CHROMINANCE_VALUES[n]);\n\t\t}\n\n\t\tthis.writeByte(0x11); // HTUAc info\n\t\tfor (let o = 0; o < 16; o++) {\n\t\t\tthis.writeByte(JpegEncoder._STD_AC_CHROMINANCE_NR_CODES[o + 1]);\n\t\t}\n\t\tfor (let p = 0; p <= 161; p++) {\n\t\t\tthis.writeByte(JpegEncoder._STD_AC_CHROMINANCE_VALUES[p]);\n\t\t}\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate writeSOS(): void {\n\t\tthis.writeWord(0xffda); // marker\n\t\tthis.writeWord(12); // length\n\t\tthis.writeByte(3); // nr of components\n\t\tthis.writeByte(1); // IdY\n\t\tthis.writeByte(0); // HTY\n\t\tthis.writeByte(2); // IdU\n\t\tthis.writeByte(0x11); // HTU\n\t\tthis.writeByte(3); // IdV\n\t\tthis.writeByte(0x11); // HTV\n\t\tthis.writeByte(0); // Ss\n\t\tthis.writeByte(0x3f); // Se\n\t\tthis.writeByte(0); // Bf\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate processDU(\n\t\tCDU: number[],\n\t\tfdTbl: number[],\n\t\tpassedDC: number,\n\t\tHTDc: number[][],\n\t\tHTAc: number[][]\n\t): number {\n\t\tlet DC = passedDC;\n\t\tconst EOB = HTAc[0x00];\n\t\tconst m16zeroes = HTAc[0xf0];\n\t\tlet pos;\n\t\tconst I16 = 16;\n\t\tconst I63 = 63;\n\t\tconst I64 = 64;\n\t\tconst DU_DCT = this.fDCTQuant(CDU, fdTbl);\n\t\t// ZigZag reorder\n\t\tfor (let j = 0; j < I64; ++j) {\n\t\t\tthis._du[JpegEncoder._SIG_ZAG[j]] = DU_DCT[j];\n\t\t}\n\t\tconst diff = this._du[0] - DC;\n\t\tDC = this._du[0];\n\t\t// Encode DC\n\t\tif (diff === 0) {\n\t\t\tthis.writeBits(HTDc[0]); // Diff might be 0\n\t\t} else {\n\t\t\tpos = 32767 + diff;\n\t\t\tthis.writeBits(HTDc[this._category[pos]]);\n\t\t\tthis.writeBits(this._bitCode[pos]);\n\t\t}\n\t\t// Encode ACs\n\t\tlet end0pos = 63; // was const... which is crazy\n\t\tfor (; end0pos > 0 && this._du[end0pos] === 0; end0pos--) {}\n\t\t// end0pos = first element in reverse order !=0\n\t\tif (end0pos === 0) {\n\t\t\tthis.writeBits(EOB);\n\t\t\treturn DC;\n\t\t}\n\t\tlet i = 1;\n\t\tlet lng;\n\t\twhile (i <= end0pos) {\n\t\t\tconst startPos = i;\n\t\t\tfor (; this._du[i] === 0 && i <= end0pos; ++i) {}\n\t\t\tlet nrZeroes = i - startPos;\n\t\t\tif (nrZeroes >= I16) {\n\t\t\t\tlng = nrZeroes >> 4;\n\t\t\t\tfor (let nrMarker = 1; nrMarker <= lng; ++nrMarker) {\n\t\t\t\t\tthis.writeBits(m16zeroes);\n\t\t\t\t}\n\t\t\t\tnrZeroes &= 0xf;\n\t\t\t}\n\t\t\tpos = 32767 + this._du[i];\n\t\t\tthis.writeBits(HTAc[(nrZeroes << 4) + this._category[pos]]);\n\t\t\tthis.writeBits(this._bitCode[pos]);\n\t\t\ti++;\n\t\t}\n\t\tif (end0pos !== I63) {\n\t\t\tthis.writeBits(EOB);\n\t\t}\n\t\treturn DC;\n\t}\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frame.js","sourceRoot":"","sources":["../../../../src/encoders/png/frame.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,uCAAuC","sourcesContent":["// Copyright 2024 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\n\n/**\n * Frame for the PNG encoder.\n * @internal\n */\nexport interface Frame {\n\t/**\n\t * @internal\n\t */\n\timg: Uint8Array;\n\n\t/**\n\t * @internal\n\t */\n\trect: { width: number; height: number; x: number; y: number };\n\n\t/**\n\t * @internal\n\t */\n\tbpl: number;\n\n\t/**\n\t * @internal\n\t */\n\tbpp: number;\n\n\t/**\n\t * @internal\n\t */\n\tdispose: number;\n\n\t/**\n\t * @internal\n\t */\n\tblend: number;\n\n\t/**\n\t * @internal\n\t */\n\tcImg?: Uint8Array;\n\n\t/**\n\t * @internal\n\t */\n\tdepth?: number;\n\n\t/**\n\t * @internal\n\t */\n\tcType?: number;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"imageData.js","sourceRoot":"","sources":["../../../../src/encoders/png/imageData.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright 2024 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport type { Frame } from \"./frame.js\";\n\n/**\n * Image data for the PNG encoder.\n * @internal\n */\nexport interface ImageData {\n\t/**\n\t * @internal\n\t */\n\tcType: number;\n\t/**\n\t * @internal\n\t */\n\tdepth: number;\n\t/**\n\t * @internal\n\t */\n\tplte: number[];\n\t/**\n\t * @internal\n\t */\n\tgotAlpha: boolean;\n\t/**\n\t * @internal\n\t */\n\tframes: Frame[];\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leaf.js","sourceRoot":"","sources":["../../../../src/encoders/png/leaf.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,uCAAuC","sourcesContent":["// Copyright 2024 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\n\n/**\n * Leaf for the PNG encoder.\n * @internal\n */\nexport interface Leaf {\n\t/**\n\t * @internal\n\t */\n\ti0: number;\n\n\t/**\n\t * @internal\n\t */\n\ti1: number;\n\n\t/**\n\t * @internal\n\t */\n\tbst: { R: number[]; m: number[]; N: number } | null;\n\n\t/**\n\t * @internal\n\t */\n\test: {\n\t\tCov: number[];\n\t\tq: number[];\n\t\te: number[];\n\t\tL: number;\n\t\teMq255: number;\n\t\teMq: number;\n\t\trgba: number;\n\t} | null;\n\n\t/**\n\t * @internal\n\t */\n\ttDst: number;\n\n\t/**\n\t * @internal\n\t */\n\tleft: Leaf | null;\n\n\t/**\n\t * @internal\n\t */\n\tright: Leaf | null;\n}\n"]}
|