{"version":3,"file":"util.mjs","names":["PNG","PNG_MAGIC","PNG_MAGIC_SIZE","IHDR","SRGB","IDAT","IEND","CRC32_TABLE","crc32","data","length","i","c","j","r","l","concatUint8Arrays","arrays","a","Uint8Array","set","decodePngToRgba","png","Promise","resolve","reject","parse","Buffer","from","buffer","byteOffset","byteLength","err","width","height","d","encodeRgbaToPng","imageData","srgb","deflateLevel","deflateStrategy","deflateChunkSize","packed","on","push","pack","pngRepack","pngReader","Error","dv","DataView","size","getUint32","tag","subarray","crc","pngEncode","tags","total","setUint32","f","ihdr","iend","idats","pieces","pngIhdr","td","bitDepth","getUint8","colorType","compressionMethod","filterMethod","interlacemethod","packBitsIcns","chunks","b","e","p"],"sources":["../src/util.ts"],"sourcesContent":["import {PNG} from 'pngjs';\n\nimport {IImageData, IPngIhdr} from './types.ts';\n\nconst PNG_MAGIC = [137, 80, 78, 71, 13, 10, 26, 10];\nconst PNG_MAGIC_SIZE = 8;\nconst IHDR = 0x49484452;\nconst SRGB = 0x73524742;\nconst IDAT = 0x49444154;\nconst IEND = 0x49454e44;\n\nconst CRC32_TABLE: number[] = [];\n\n/**\n * Hash data with CRC32.\n *\n * @param data Data to be hashed.\n * @returns Data hash.\n */\nexport function crc32(data: Readonly<Uint8Array>) {\n\tif (!CRC32_TABLE.length) {\n\t\tfor (let i = 256; i--; ) {\n\t\t\tlet c = i;\n\t\t\tfor (let j = 0; j < 8; j++) {\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tc = c & 1 ? 0xedb88320 ^ (c >>> 1) : c >>> 1;\n\t\t\t}\n\t\t\tCRC32_TABLE[i] = c;\n\t\t}\n\t}\n\tlet r = -1;\n\tconst l = data.length;\n\tfor (let i = 0; i < l; ) {\n\t\t// eslint-disable-next-line no-bitwise\n\t\tr = CRC32_TABLE[(r ^ data[i++]) & 0xff] ^ (r >>> 8);\n\t}\n\t// eslint-disable-next-line no-bitwise\n\treturn r ^ -1;\n}\n\n/**\n * Concatenate multiple Uint8Array together.\n *\n * @param arrays Uint8Array arrays.\n * @returns Uint8Array array.\n */\nexport function concatUint8Arrays(arrays: readonly Readonly<Uint8Array>[]) {\n\tlet l = 0;\n\tfor (const a of arrays) {\n\t\tl += a.length;\n\t}\n\tconst r = new Uint8Array(l);\n\tlet i = 0;\n\tfor (const a of arrays) {\n\t\tr.set(a, i);\n\t\ti += a.length;\n\t}\n\treturn r;\n}\n\n/**\n * Decode PNG data to RGBA image.\n *\n * @param data PNG data.\n * @returns Image data.\n */\nexport async function decodePngToRgba(data: Readonly<Uint8Array>) {\n\tconst png = new PNG();\n\tawait new Promise((resolve, reject) => {\n\t\tpng.parse(\n\t\t\tBuffer.from(data.buffer, data.byteOffset, data.byteLength),\n\t\t\terr => {\n\t\t\t\tif (err) {\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tresolve(png);\n\t\t\t}\n\t\t);\n\t});\n\tconst {width, height, data: d} = png;\n\treturn {\n\t\twidth,\n\t\theight,\n\t\tdata: new Uint8Array(d.buffer, d.byteOffset, d.byteLength)\n\t} as IImageData;\n}\n\n/**\n * Encode RGBA image to PNG data.\n *\n * @param imageData Image data.\n * @param srgb SRGB mode.\n * @returns PNG data.\n */\nexport async function encodeRgbaToPng(\n\timageData: Readonly<IImageData>,\n\tsrgb: number | null = null\n) {\n\tconst {width, height, data} = imageData;\n\tconst png = new PNG({\n\t\twidth,\n\t\theight,\n\t\tdeflateLevel: 9,\n\t\tdeflateStrategy: 1,\n\t\tdeflateChunkSize: 32 * 1024\n\t});\n\tpng.data = Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n\tconst packed: Uint8Array[] = [];\n\tawait new Promise((resolve, reject) => {\n\t\tpng.on('data', (d: Buffer) => {\n\t\t\tpacked.push(d);\n\t\t});\n\t\tpng.on('error', reject);\n\t\tpng.on('end', resolve);\n\t\tpng.pack();\n\t});\n\treturn pngRepack(concatUint8Arrays(packed), srgb);\n}\n\n/**\n * Read PNG file tags.\n *\n * @param data PNG data.\n * @yields PNG tags.\n */\nexport function* pngReader(data: Readonly<Uint8Array>) {\n\tlet i = 0;\n\tfor (; i < PNG_MAGIC_SIZE; i++) {\n\t\tif (data[i] !== PNG_MAGIC[i]) {\n\t\t\tthrow new Error('Invalid PNG header signature');\n\t\t}\n\t}\n\n\tconst dv = new DataView(data.buffer, data.byteOffset, data.byteLength);\n\twhile (i < data.length) {\n\t\tconst size = dv.getUint32(i, false);\n\t\ti += 4;\n\t\tconst tag = dv.getUint32(i, false);\n\t\ti += 4;\n\t\tconst d = data.subarray(i, i + size);\n\t\ti += size;\n\t\tconst crc = dv.getUint32(i, false);\n\t\tyield [tag, d, crc] as [number, Uint8Array, number];\n\t\ti += 4;\n\t}\n}\n\n/**\n * Encode PNG from tags.\n *\n * @param tags PNG tags and data.\n * @returns PNG data.\n */\nexport function pngEncode(tags: readonly [number, Readonly<Uint8Array>][]) {\n\tlet total = PNG_MAGIC_SIZE;\n\tfor (const [, data] of tags) {\n\t\ttotal += 12 + data.length;\n\t}\n\tconst r = new Uint8Array(total);\n\tconst d = new DataView(r.buffer, r.byteOffset, r.byteLength);\n\tr.set(PNG_MAGIC);\n\tlet i = PNG_MAGIC_SIZE;\n\tfor (const [tag, data] of tags) {\n\t\tconst l = data.length;\n\t\td.setUint32(i, l, false);\n\t\ti += 4;\n\t\tconst f = i;\n\t\td.setUint32(i, tag, false);\n\t\ti += 4;\n\t\tr.set(data, i);\n\t\ti += l;\n\t\td.setUint32(i, crc32(r.subarray(f, i)), false);\n\t\ti += 4;\n\t}\n\treturn r;\n}\n\n/**\n * Repack PNG tag data with a single IDAT.\n *\n * @param data PNG data.\n * @param srgb Set an SRGB value.\n * @returns PNG data.\n */\nexport function pngRepack(\n\tdata: Readonly<Uint8Array>,\n\tsrgb: number | null = null\n) {\n\tlet ihdr: Uint8Array | null = null;\n\tlet iend: Uint8Array | null = null;\n\tconst idats = [];\n\tfor (const [tag, d] of pngReader(data)) {\n\t\tswitch (tag) {\n\t\t\tcase IDAT: {\n\t\t\t\tidats.push(d);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase IHDR: {\n\t\t\t\tihdr = d;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase IEND: {\n\t\t\t\tiend = d;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\t// Discard others.\n\t\t\t}\n\t\t}\n\t}\n\tif (!ihdr || !iend) {\n\t\tthrow new Error('Invalid PNG');\n\t}\n\tconst pieces: [number, Uint8Array][] = [[IHDR, ihdr]];\n\tif (srgb !== null) {\n\t\tpieces.push([SRGB, new Uint8Array([srgb])]);\n\t}\n\tpieces.push([IDAT, concatUint8Arrays(idats)], [IEND, iend]);\n\treturn pngEncode(pieces);\n}\n\n/**\n * Read PNG IHDR data.\n *\n * @param data PNG data.\n * @returns PNG IHDR.\n */\nexport function pngIhdr(data: Readonly<Uint8Array>): IPngIhdr {\n\tfor (const [tag, td] of pngReader(data)) {\n\t\tif (tag === IHDR) {\n\t\t\tconst d = new DataView(td.buffer, td.byteOffset, td.byteLength);\n\t\t\treturn {\n\t\t\t\twidth: d.getUint32(0, false),\n\t\t\t\theight: d.getUint32(4, false),\n\t\t\t\tbitDepth: d.getUint8(8),\n\t\t\t\tcolorType: d.getUint8(9),\n\t\t\t\tcompressionMethod: d.getUint8(10),\n\t\t\t\tfilterMethod: d.getUint8(11),\n\t\t\t\tinterlacemethod: d.getUint8(12)\n\t\t\t};\n\t\t}\n\t}\n\tthrow new Error('Missing PNG IHDR tag');\n}\n\n/**\n * Encode data using PackBits ICNS compression.\n *\n * @param data Data to be compressed.\n * @returns Compressed data.\n */\nexport function packBitsIcns(data: Readonly<Uint8Array>) {\n\tconst chunks = [];\n\tconst l = data.length;\n\tfor (let i = 0; i < l; ) {\n\t\tconst b = data[i];\n\t\tif (i + 2 >= l) {\n\t\t\t// Not enough left for anything but literal data.\n\t\t\tchunks.push(new Uint8Array([l - i - 1]), data.subarray(i, l));\n\t\t\tbreak;\n\t\t}\n\t\tif (b === data[i + 1] && b === data[i + 2]) {\n\t\t\t// 3+ bytes repeat RLE.\n\t\t\ti += 2;\n\t\t\tlet c = 3;\n\t\t\tfor (; ++i < l && b === data[i] && c < 130; c++);\n\t\t\tchunks.push(new Uint8Array([c + 125, b]));\n\t\t} else {\n\t\t\t// Literal until next 3 bytes repeat.\n\t\t\tlet e = i + 2;\n\t\t\tlet c = 3;\n\t\t\tfor (let r = 1, p = data[e]; ++e < l && c < 128; c++) {\n\t\t\t\tconst b = data[e];\n\t\t\t\tif (p !== b) {\n\t\t\t\t\tp = b;\n\t\t\t\t\tr = 1;\n\t\t\t\t} else if (++r > 2) {\n\t\t\t\t\te -= 2;\n\t\t\t\t\tc -= 2;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tchunks.push(new Uint8Array([c - 1]), data.subarray(i, e));\n\t\t\ti = e;\n\t\t}\n\t}\n\treturn concatUint8Arrays(chunks);\n}\n"],"mappings":"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","ignoreList":[]}