@twin.org/image 0.0.2-next.8 → 0.0.3-next.1

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pngEncoder.js","sourceRoot":"","sources":["../../../src/encoders/pngEncoder.ts"],"names":[],"mappings":"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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 */\n/* eslint-disable no-continue */\nimport { Compression } from \"@twin.org/core\";\nimport type { Frame } from \"./png/frame.js\";\nimport type { ImageData } from \"./png/imageData.js\";\nimport type { Leaf } from \"./png/leaf.js\";\n\n/**\n * PNG Encoder.\n * Based on https://github.com/photopea/UPNG.js.\n */\nexport class PngEncoder {\n\t/**\n\t * Encode the image frames to png.\n\t * @param buffers The frame buffers to encode.\n\t * @param w The image width.\n\t * @param h The image height.\n\t * @returns The data for the image.\n\t */\n\tpublic async encode(buffers: ArrayBuffer[], w: number, h: number): Promise<Uint8Array> {\n\t\tconst ps = 0;\n\t\tconst forbidPlte = false;\n\t\tconst data = new Uint8Array(buffers[0].byteLength * buffers.length + 100);\n\t\tconst wr = [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a];\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\tdata[i] = wr[i];\n\t\t}\n\t\tlet offset = 8;\n\n\t\tconst nImg = await this.compressPNG(buffers, w, h, ps, forbidPlte);\n\n\t\tthis.writeUint(data, offset, 13);\n\t\toffset += 4;\n\t\t// cspell:disable-next-line\n\t\tthis.writeASCII(data, offset, \"IHDR\");\n\t\toffset += 4;\n\t\tthis.writeUint(data, offset, w);\n\t\toffset += 4;\n\t\tthis.writeUint(data, offset, h);\n\t\toffset += 4;\n\t\tdata[offset] = nImg.depth;\n\t\toffset++;\n\t\tdata[offset] = nImg.cType;\n\t\toffset++;\n\t\tdata[offset] = 0; // compress\n\t\toffset++;\n\t\tdata[offset] = 0; // filter\n\t\toffset++;\n\t\tdata[offset] = 0; // interlace\n\t\toffset++;\n\t\tthis.writeUint(data, offset, this.crc(data, offset - 17, 17));\n\t\toffset += 4; // crc\n\n\t\t// 9 bytes to say, that it is sRGB\n\t\tthis.writeUint(data, offset, 1);\n\t\toffset += 4;\n\t\tthis.writeASCII(data, offset, \"sRGB\");\n\t\toffset += 4;\n\t\tdata[offset] = 1;\n\t\toffset++;\n\t\tthis.writeUint(data, offset, this.crc(data, offset - 5, 5));\n\t\toffset += 4; // crc\n\n\t\tconst anim = buffers.length > 1;\n\t\tif (anim) {\n\t\t\tthis.writeUint(data, offset, 8);\n\t\t\toffset += 4;\n\t\t\tthis.writeASCII(data, offset, \"acTL\");\n\t\t\toffset += 4;\n\t\t\tthis.writeUint(data, offset, buffers.length);\n\t\t\toffset += 4;\n\t\t\tthis.writeUint(data, offset, 0);\n\t\t\toffset += 4;\n\t\t\tthis.writeUint(data, offset, this.crc(data, offset - 12, 12));\n\t\t\toffset += 4; // crc\n\t\t}\n\n\t\tif (nImg.cType === 3) {\n\t\t\tconst dl = nImg.plte.length;\n\t\t\tthis.writeUint(data, offset, dl * 3);\n\t\t\toffset += 4;\n\t\t\tthis.writeASCII(data, offset, \"PLTE\");\n\t\t\toffset += 4;\n\t\t\tfor (let i = 0; i < dl; i++) {\n\t\t\t\tconst ti = i * 3;\n\t\t\t\tconst c = nImg.plte[i];\n\t\t\t\tconst r = c & 255;\n\t\t\t\tconst g = (c >> 8) & 255;\n\t\t\t\tconst b = (c >> 16) & 255;\n\t\t\t\tdata[offset + ti + 0] = r;\n\t\t\t\tdata[offset + ti + 1] = g;\n\t\t\t\tdata[offset + ti + 2] = b;\n\t\t\t}\n\t\t\toffset += dl * 3;\n\t\t\tthis.writeUint(data, offset, this.crc(data, offset - dl * 3 - 4, dl * 3 + 4));\n\t\t\toffset += 4; // crc\n\n\t\t\tif (nImg.gotAlpha) {\n\t\t\t\tthis.writeUint(data, offset, dl);\n\t\t\t\toffset += 4;\n\t\t\t\tthis.writeASCII(data, offset, \"tRNS\");\n\t\t\t\toffset += 4;\n\t\t\t\tfor (let i = 0; i < dl; i++) {\n\t\t\t\t\tdata[offset + i] = (nImg.plte[i] >> 24) & 255;\n\t\t\t\t}\n\t\t\t\toffset += dl;\n\t\t\t\tthis.writeUint(data, offset, this.crc(data, offset - dl - 4, dl + 4));\n\t\t\t\toffset += 4; // crc\n\t\t\t}\n\t\t}\n\n\t\tlet fi = 0;\n\t\tfor (let j = 0; j < nImg.frames.length; j++) {\n\t\t\tconst fr = nImg.frames[j];\n\t\t\tif (anim) {\n\t\t\t\tthis.writeUint(data, offset, 26);\n\t\t\t\toffset += 4;\n\t\t\t\tthis.writeASCII(data, offset, \"fcTL\");\n\t\t\t\toffset += 4;\n\t\t\t\tthis.writeUint(data, offset, fi++);\n\t\t\t\toffset += 4;\n\t\t\t\tthis.writeUint(data, offset, fr.rect.width);\n\t\t\t\toffset += 4;\n\t\t\t\tthis.writeUint(data, offset, fr.rect.height);\n\t\t\t\toffset += 4;\n\t\t\t\tthis.writeUint(data, offset, fr.rect.x);\n\t\t\t\toffset += 4;\n\t\t\t\tthis.writeUint(data, offset, fr.rect.y);\n\t\t\t\toffset += 4;\n\t\t\t\tthis.writeUshort(data, offset, 0);\n\t\t\t\toffset += 2;\n\t\t\t\tthis.writeUshort(data, offset, 1000);\n\t\t\t\toffset += 2;\n\t\t\t\tdata[offset] = fr.dispose;\n\t\t\t\toffset++; // dispose\n\t\t\t\tdata[offset] = fr.blend;\n\t\t\t\toffset++; // blend\n\t\t\t\tthis.writeUint(data, offset, this.crc(data, offset - 30, 30));\n\t\t\t\toffset += 4; // crc\n\t\t\t}\n\n\t\t\tconst imgD = fr.cImg;\n\t\t\tconst dl: number = imgD?.length ?? 0;\n\t\t\tthis.writeUint(data, offset, dl + (j === 0 ? 0 : 4));\n\t\t\toffset += 4;\n\t\t\tconst iOff = offset;\n\t\t\t// cspell:disable-next-line\n\t\t\tthis.writeASCII(data, offset, j === 0 ? \"IDAT\" : \"fdAT\");\n\t\t\toffset += 4;\n\t\t\tif (j !== 0) {\n\t\t\t\tthis.writeUint(data, offset, fi++);\n\t\t\t\toffset += 4;\n\t\t\t}\n\t\t\tif (imgD) {\n\t\t\t\tfor (let i = 0; i < dl; i++) {\n\t\t\t\t\tdata[offset + i] = imgD[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\toffset += dl;\n\t\t\tthis.writeUint(data, offset, this.crc(data, iOff, offset - iOff));\n\t\t\toffset += 4; // crc\n\t\t}\n\n\t\tthis.writeUint(data, offset, 0);\n\t\toffset += 4;\n\t\t// cspell:disable-next-line\n\t\tthis.writeASCII(data, offset, \"IEND\");\n\t\toffset += 4;\n\t\tthis.writeUint(data, offset, this.crc(data, offset - 4, 4));\n\t\toffset += 4; // crc\n\n\t\treturn new Uint8Array(data.buffer.slice(0, offset));\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate async compressPNG(\n\t\tbuffers: ArrayBuffer[],\n\t\tw: number,\n\t\th: number,\n\t\tps: number,\n\t\tforbidPlte: boolean\n\t): Promise<ImageData> {\n\t\tconst out = this.compress(buffers, w, h, ps, 0, forbidPlte);\n\t\tfor (let i = 0; i < buffers.length; i++) {\n\t\t\tconst frm = out.frames[i];\n\t\t\tconst nw = frm.rect.width;\n\t\t\tconst nh = frm.rect.height;\n\t\t\tconst bpl = frm.bpl;\n\t\t\tconst bpp = frm.bpp;\n\t\t\tconst fData = new Uint8Array(nw * bpl + nh);\n\t\t\tfrm.cImg = await this.filterZero(frm.img, nh, bpp, bpl, fData);\n\t\t}\n\t\treturn out;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate compress(\n\t\tinBuffers: ArrayBufferLike[],\n\t\tw: number,\n\t\th: number,\n\t\tinPs: number,\n\t\tforGIF: number,\n\t\tforbidPlte: boolean\n\t): ImageData {\n\t\tlet cType = 6;\n\t\tlet depth = 8;\n\t\tlet bpp = 4;\n\t\tlet alphaAnd = 255;\n\t\tlet ps = inPs;\n\t\tlet buffers = inBuffers;\n\n\t\tfor (let j = 0; j < buffers.length; j++) {\n\t\t\t// when not quantized, other frames can contain colors, that are not in an initial frame\n\t\t\tconst img = new Uint8Array(buffers[j]);\n\t\t\tconst iLen = img.length;\n\t\t\tfor (let i = 0; i < iLen; i += 4) {\n\t\t\t\talphaAnd &= img[i + 3];\n\t\t\t}\n\t\t}\n\t\tlet gotAlpha: boolean = alphaAnd !== 255;\n\n\t\tconst cMap: { [id: number]: number } = {};\n\t\tconst pLte = [];\n\t\tif (buffers.length !== 0) {\n\t\t\tcMap[0] = 0;\n\t\t\tpLte.push(0);\n\t\t\tif (ps !== 0) {\n\t\t\t\tps--;\n\t\t\t}\n\t\t}\n\n\t\tif (ps !== 0) {\n\t\t\tconst qRes = this.quantize(buffers, ps, forGIF);\n\t\t\tbuffers = qRes.buffers;\n\t\t\tfor (let i = 0; i < qRes.plte.length; i++) {\n\t\t\t\tconst c = qRes.plte[i].est?.rgba ?? 0;\n\t\t\t\tif (!cMap[c]) {\n\t\t\t\t\tcMap[c] = pLte.length;\n\t\t\t\t\tpLte.push(c);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// what if ps==0, but there are <=256 colors? we still need to detect, if the palette could be used\n\t\t\tfor (let j = 0; j < buffers.length; j++) {\n\t\t\t\t// when not quantized, other frames can contain colors, that are not in an initial frame\n\t\t\t\tconst img32 = new Uint32Array(buffers[j]);\n\t\t\t\tconst iLen = img32.length;\n\t\t\t\tfor (let i = 0; i < iLen; i++) {\n\t\t\t\t\tconst c = img32[i];\n\t\t\t\t\tif ((i < w || (c !== img32[i - 1] && c !== img32[i - w])) && !cMap[c]) {\n\t\t\t\t\t\tcMap[c] = pLte.length;\n\t\t\t\t\t\tpLte.push(c);\n\t\t\t\t\t\tif (pLte.length >= 300) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst brute = gotAlpha ? forGIF : false; // brute : frames can only be copied, not \"blended\"\n\t\tconst cc = pLte.length;\n\t\tif (cc <= 256 && !forbidPlte) {\n\t\t\tif (cc <= 2) {\n\t\t\t\tdepth = 1;\n\t\t\t} else if (cc <= 4) {\n\t\t\t\tdepth = 2;\n\t\t\t} else if (cc <= 16) {\n\t\t\t\tdepth = 4;\n\t\t\t} else {\n\t\t\t\tdepth = 8;\n\t\t\t}\n\t\t\tif (forGIF) {\n\t\t\t\tdepth = 8;\n\t\t\t}\n\t\t\tgotAlpha = true;\n\t\t}\n\n\t\tconst frames: Frame[] = [];\n\t\tfor (let j = 0; j < buffers.length; j++) {\n\t\t\tlet cImg = new Uint8Array(buffers[j]);\n\t\t\tlet cImg32 = new Uint32Array(cImg.buffer);\n\n\t\t\tlet nx = 0;\n\t\t\tlet ny = 0;\n\t\t\tlet nw = w;\n\t\t\tlet nh = h;\n\t\t\tlet blend = 0;\n\t\t\tif (j !== 0 && !brute) {\n\t\t\t\tconst tLim = forGIF || j === 1 || frames[frames.length - 2].dispose === 2 ? 1 : 2;\n\t\t\t\tlet tStp = 0;\n\t\t\t\tlet tArea = 1e9;\n\t\t\t\tfor (let it = 0; it < tLim; it++) {\n\t\t\t\t\tconst p32 = new Uint32Array(buffers[j - 1 - it]);\n\t\t\t\t\tlet mix = w;\n\t\t\t\t\tlet miy = h;\n\t\t\t\t\tlet max = -1;\n\t\t\t\t\tlet may = -1;\n\t\t\t\t\tfor (let y = 0; y < h; y++) {\n\t\t\t\t\t\tfor (let x = 0; x < w; x++) {\n\t\t\t\t\t\t\tconst i = y * w + x;\n\t\t\t\t\t\t\tif (cImg32[i] !== p32[i]) {\n\t\t\t\t\t\t\t\tif (x < mix) {\n\t\t\t\t\t\t\t\t\tmix = x;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (x > max) {\n\t\t\t\t\t\t\t\t\tmax = x;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (y < miy) {\n\t\t\t\t\t\t\t\t\tmiy = y;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (y > may) {\n\t\t\t\t\t\t\t\t\tmay = y;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst sArea = max === -1 ? 1 : (max - mix + 1) * (may - miy + 1);\n\t\t\t\t\tif (sArea < tArea) {\n\t\t\t\t\t\ttArea = sArea;\n\t\t\t\t\t\ttStp = it;\n\t\t\t\t\t\tif (max === -1) {\n\t\t\t\t\t\t\tnx = 0;\n\t\t\t\t\t\t\tny = 0;\n\t\t\t\t\t\t\tnw = 1;\n\t\t\t\t\t\t\tnh = 1;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnx = mix;\n\t\t\t\t\t\t\tny = miy;\n\t\t\t\t\t\t\tnw = max - mix + 1;\n\t\t\t\t\t\t\tnh = may - miy + 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst pImg = new Uint8Array(buffers[j - 1 - tStp]);\n\t\t\t\tif (tStp === 1) {\n\t\t\t\t\tframes[frames.length - 1].dispose = 2;\n\t\t\t\t}\n\n\t\t\t\tconst nImg = new Uint8Array(nw * nh * 4);\n\t\t\t\tthis.copyTile(pImg, w, h, nImg, nw, nh, -nx, -ny, 0);\n\t\t\t\tif (this.copyTile(cImg, w, h, nImg, nw, nh, -nx, -ny, 3)) {\n\t\t\t\t\tthis.copyTile(cImg, w, h, nImg, nw, nh, -nx, -ny, 2);\n\t\t\t\t\tblend = 1;\n\t\t\t\t} else {\n\t\t\t\t\tthis.copyTile(cImg, w, h, nImg, nw, nh, -nx, -ny, 0);\n\t\t\t\t\tblend = 0;\n\t\t\t\t}\n\t\t\t\tcImg = nImg;\n\t\t\t\tcImg32 = new Uint32Array(cImg.buffer);\n\t\t\t}\n\t\t\tlet bpl = 4 * nw;\n\t\t\tif (cc <= 256 && !forbidPlte) {\n\t\t\t\tbpl = Math.ceil((depth * nw) / 8);\n\t\t\t\tconst nImg = new Uint8Array(bpl * nh);\n\t\t\t\tfor (let y = 0; y < nh; y++) {\n\t\t\t\t\tconst i = y * bpl;\n\t\t\t\t\tconst ii = y * nw;\n\t\t\t\t\tif (depth === 8) {\n\t\t\t\t\t\tfor (let x = 0; x < nw; x++) {\n\t\t\t\t\t\t\tnImg[i + x] = cMap[cImg32[ii + x]];\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (depth === 4) {\n\t\t\t\t\t\tfor (let x = 0; x < nw; x++) {\n\t\t\t\t\t\t\tnImg[i + (x >> 1)] |= cMap[cImg32[ii + x]] << (4 - (x & 1) * 4);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (depth === 2) {\n\t\t\t\t\t\tfor (let x = 0; x < nw; x++) {\n\t\t\t\t\t\t\tnImg[i + (x >> 2)] |= cMap[cImg32[ii + x]] << (6 - (x & 3) * 2);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (depth === 1) {\n\t\t\t\t\t\tfor (let x = 0; x < nw; x++) {\n\t\t\t\t\t\t\tnImg[i + (x >> 3)] |= cMap[cImg32[ii + x]] << (7 - (x & 7) * 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcImg = nImg;\n\t\t\t\tcType = 3;\n\t\t\t\tbpp = 1;\n\t\t\t} else if (!gotAlpha && buffers.length === 1) {\n\t\t\t\t// some next \"reduced\" frames may contain alpha for blending\n\t\t\t\tconst nImg = new Uint8Array(nw * nh * 3);\n\t\t\t\tconst area = nw * nh;\n\t\t\t\tfor (let i = 0; i < area; i++) {\n\t\t\t\t\tconst ti = i * 3;\n\t\t\t\t\tconst qi = i * 4;\n\t\t\t\t\tnImg[ti] = cImg[qi];\n\t\t\t\t\tnImg[ti + 1] = cImg[qi + 1];\n\t\t\t\t\tnImg[ti + 2] = cImg[qi + 2];\n\t\t\t\t}\n\t\t\t\tcImg = nImg;\n\t\t\t\tcType = 2;\n\t\t\t\tbpp = 3;\n\t\t\t\tbpl = 3 * nw;\n\t\t\t}\n\t\t\tframes.push({\n\t\t\t\trect: {\n\t\t\t\t\tx: nx,\n\t\t\t\t\ty: ny,\n\t\t\t\t\twidth: nw,\n\t\t\t\t\theight: nh\n\t\t\t\t},\n\t\t\t\timg: cImg,\n\t\t\t\tbpl,\n\t\t\t\tbpp,\n\t\t\t\tblend,\n\t\t\t\tdispose: brute ? 1 : 0\n\t\t\t});\n\t\t}\n\t\treturn { cType, depth, plte: pLte, gotAlpha, frames };\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate async filterZero(\n\t\timg: Uint8Array,\n\t\th: number,\n\t\tbpp: number,\n\t\tbpl: number,\n\t\tdata: Uint8Array\n\t): Promise<Uint8Array> {\n\t\tconst fls = [];\n\t\tfor (let t = 0; t < 5; t++) {\n\t\t\tif (h * bpl > 500000 && (t === 2 || t === 3 || t === 4)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tfor (let y = 0; y < h; y++) {\n\t\t\t\tthis.filterLine(data, img, y, bpl, bpp, t);\n\t\t\t}\n\t\t\tconst deflated = await Compression.compress(data, \"deflate\");\n\t\t\tfls.push(deflated);\n\t\t\tif (bpp === 1) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tlet ti: number = 0;\n\t\tlet tSize = 1e9;\n\t\tfor (let i = 0; i < fls.length; i++) {\n\t\t\tif (fls[i].length < tSize) {\n\t\t\t\tti = i;\n\t\t\t\ttSize = fls[i].length;\n\t\t\t}\n\t\t}\n\t\treturn fls[ti];\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate filterLine(\n\t\tdata: Uint8Array,\n\t\timg: Uint8Array,\n\t\ty: number,\n\t\tbpl: number,\n\t\tbpp: number,\n\t\ttype: number\n\t): void {\n\t\tconst i = y * bpl;\n\t\tlet di = i + y;\n\t\tdata[di] = type;\n\t\tdi++;\n\n\t\tif (type === 0) {\n\t\t\tfor (let x = 0; x < bpl; x++) {\n\t\t\t\tdata[di + x] = img[i + x];\n\t\t\t}\n\t\t} else if (type === 1) {\n\t\t\tfor (let x = 0; x < bpp; x++) {\n\t\t\t\tdata[di + x] = img[i + x];\n\t\t\t}\n\t\t\tfor (let x = bpp; x < bpl; x++) {\n\t\t\t\tdata[di + x] = (img[i + x] - img[i + x - bpp] + 256) & 255;\n\t\t\t}\n\t\t} else if (y === 0) {\n\t\t\tfor (let x = 0; x < bpp; x++) {\n\t\t\t\tdata[di + x] = img[i + x];\n\t\t\t}\n\n\t\t\tif (type === 2) {\n\t\t\t\tfor (let x = bpp; x < bpl; x++) {\n\t\t\t\t\tdata[di + x] = img[i + x];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (type === 3) {\n\t\t\t\tfor (let x = bpp; x < bpl; x++) {\n\t\t\t\t\tdata[di + x] = (img[i + x] - (img[i + x - bpp] >> 1) + 256) & 255;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (type === 4) {\n\t\t\t\tfor (let x = bpp; x < bpl; x++) {\n\t\t\t\t\tdata[di + x] = (img[i + x] - this.paeth(img[i + x - bpp], 0, 0) + 256) & 255;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (type === 2) {\n\t\t\t\tfor (let x = 0; x < bpl; x++) {\n\t\t\t\t\tdata[di + x] = (img[i + x] + 256 - img[i + x - bpl]) & 255;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (type === 3) {\n\t\t\t\tfor (let x = 0; x < bpp; x++) {\n\t\t\t\t\tdata[di + x] = (img[i + x] + 256 - (img[i + x - bpl] >> 1)) & 255;\n\t\t\t\t}\n\t\t\t\tfor (let x = bpp; x < bpl; x++) {\n\t\t\t\t\tdata[di + x] = (img[i + x] + 256 - ((img[i + x - bpl] + img[i + x - bpp]) >> 1)) & 255;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (type === 4) {\n\t\t\t\tfor (let x = 0; x < bpp; x++) {\n\t\t\t\t\tdata[di + x] = (img[i + x] + 256 - this.paeth(0, img[i + x - bpl], 0)) & 255;\n\t\t\t\t}\n\t\t\t\tfor (let x = bpp; x < bpl; x++) {\n\t\t\t\t\tdata[di + x] =\n\t\t\t\t\t\t(img[i + x] +\n\t\t\t\t\t\t\t256 -\n\t\t\t\t\t\t\tthis.paeth(img[i + x - bpp], img[i + x - bpl], img[i + x - bpp - bpl])) &\n\t\t\t\t\t\t255;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate paeth(a: number, b: number, c: number): number {\n\t\tconst p = a + b - c;\n\t\tconst pa = Math.abs(p - a);\n\t\tconst pb = Math.abs(p - b);\n\t\tconst pc = Math.abs(p - c);\n\t\tif (pa <= pb && pa <= pc) {\n\t\t\treturn a;\n\t\t}\n\t\tif (pb <= pc) {\n\t\t\treturn b;\n\t\t}\n\t\treturn c;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate writeASCII(data: Uint8Array, p: number, s: string): void {\n\t\tfor (let i = 0; i < s.length; i++) {\n\t\t\tdata[p + i] = s.charCodeAt(i);\n\t\t}\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate writeUint(buff: Uint8Array, p: number, n: number): void {\n\t\tbuff[p] = (n >> 24) & 255;\n\t\tbuff[p + 1] = (n >> 16) & 255;\n\t\tbuff[p + 2] = (n >> 8) & 255;\n\t\tbuff[p + 3] = n & 255;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate writeUshort(buff: Uint8Array, p: number, n: number): void {\n\t\tbuff[p] = (n >> 8) & 255;\n\t\tbuff[p + 1] = n & 255;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate copyTile(\n\t\tsb: Uint8Array,\n\t\tsw: number,\n\t\tsh: number,\n\t\ttb: Uint8Array,\n\t\ttw: number,\n\t\tth: number,\n\t\txOffset: number,\n\t\tyOffset: number,\n\t\tmode: number\n\t): boolean {\n\t\tconst w = Math.min(sw, tw);\n\t\tconst h = Math.min(sh, th);\n\t\tlet si = 0;\n\t\tlet ti = 0;\n\t\tfor (let y = 0; y < h; y++) {\n\t\t\tfor (let x = 0; x < w; x++) {\n\t\t\t\tif (xOffset >= 0 && yOffset >= 0) {\n\t\t\t\t\tsi = (y * sw + x) << 2;\n\t\t\t\t\tti = ((yOffset + y) * tw + xOffset + x) << 2;\n\t\t\t\t} else {\n\t\t\t\t\tsi = ((-yOffset + y) * sw - xOffset + x) << 2;\n\t\t\t\t\tti = (y * tw + x) << 2;\n\t\t\t\t}\n\n\t\t\t\tif (mode === 0) {\n\t\t\t\t\ttb[ti] = sb[si];\n\t\t\t\t\ttb[ti + 1] = sb[si + 1];\n\t\t\t\t\ttb[ti + 2] = sb[si + 2];\n\t\t\t\t\ttb[ti + 3] = sb[si + 3];\n\t\t\t\t} else if (mode === 1) {\n\t\t\t\t\tconst fa = sb[si + 3] * (1 / 255);\n\t\t\t\t\tconst fr = sb[si] * fa;\n\t\t\t\t\tconst fg = sb[si + 1] * fa;\n\t\t\t\t\tconst fb = sb[si + 2] * fa;\n\t\t\t\t\tconst ba = tb[ti + 3] * (1 / 255);\n\t\t\t\t\tconst br = tb[ti] * ba;\n\t\t\t\t\tconst bg = tb[ti + 1] * ba;\n\t\t\t\t\tconst bb = tb[ti + 2] * ba;\n\n\t\t\t\t\tconst ifa = 1 - fa;\n\t\t\t\t\tconst oa = fa + ba * ifa;\n\t\t\t\t\tconst ioa = oa === 0 ? 0 : 1 / oa;\n\t\t\t\t\ttb[ti + 3] = 255 * oa;\n\t\t\t\t\ttb[ti + 0] = (fr + br * ifa) * ioa;\n\t\t\t\t\ttb[ti + 1] = (fg + bg * ifa) * ioa;\n\t\t\t\t\ttb[ti + 2] = (fb + bb * ifa) * ioa;\n\t\t\t\t} else if (mode === 2) {\n\t\t\t\t\t// copy only differences, otherwise zero\n\t\t\t\t\tconst fa = sb[si + 3];\n\t\t\t\t\tconst fr = sb[si];\n\t\t\t\t\tconst fg = sb[si + 1];\n\t\t\t\t\tconst fb = sb[si + 2];\n\t\t\t\t\tconst ba = tb[ti + 3];\n\t\t\t\t\tconst br = tb[ti];\n\t\t\t\t\tconst bg = tb[ti + 1];\n\t\t\t\t\tconst bb = tb[ti + 2];\n\t\t\t\t\tif (fa === ba && fr === br && fg === bg && fb === bb) {\n\t\t\t\t\t\ttb[ti] = 0;\n\t\t\t\t\t\ttb[ti + 1] = 0;\n\t\t\t\t\t\ttb[ti + 2] = 0;\n\t\t\t\t\t\ttb[ti + 3] = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttb[ti] = fr;\n\t\t\t\t\t\ttb[ti + 1] = fg;\n\t\t\t\t\t\ttb[ti + 2] = fb;\n\t\t\t\t\t\ttb[ti + 3] = fa;\n\t\t\t\t\t}\n\t\t\t\t} else if (mode === 3) {\n\t\t\t\t\t// check if can be blended\n\t\t\t\t\tconst fa = sb[si + 3];\n\t\t\t\t\tconst fr = sb[si];\n\t\t\t\t\tconst fg = sb[si + 1];\n\t\t\t\t\tconst fb = sb[si + 2];\n\t\t\t\t\tconst ba = tb[ti + 3];\n\t\t\t\t\tconst br = tb[ti];\n\t\t\t\t\tconst bg = tb[ti + 1];\n\t\t\t\t\tconst bb = tb[ti + 2];\n\t\t\t\t\tif (fa === ba && fr === br && fg === bg && fb === bb) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tif (fa < 220 && ba > 20) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate crc(b: Uint8Array, o: number, l: number): number {\n\t\treturn this.crcUpdate(0xffffffff, b, o, l) ^ 0xffffffff;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate crcUpdate(c: number, buf: Uint8Array, off: number, len: number): number {\n\t\tlet localC = c;\n\t\tconst crcTable = this.crcTable();\n\t\tfor (let i = 0; i < len; i++) {\n\t\t\tlocalC = crcTable[(localC ^ buf[off + i]) & 0xff] ^ (localC >>> 8);\n\t\t}\n\t\treturn localC;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate crcTable(): Uint32Array {\n\t\tconst tab = new Uint32Array(256);\n\t\tfor (let n = 0; n < 256; n++) {\n\t\t\tlet c = n;\n\t\t\tfor (let k = 0; k < 8; k++) {\n\t\t\t\tif (c & 1) {\n\t\t\t\t\tc = 0xedb88320 ^ (c >>> 1);\n\t\t\t\t} else {\n\t\t\t\t\tc >>>= 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttab[n] = c;\n\t\t}\n\t\treturn tab;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate quantize(\n\t\tbuffers: ArrayBufferLike[],\n\t\tps: number,\n\t\troundAlpha: number\n\t): { buffers: ArrayBufferLike[]; plte: Leaf[] } {\n\t\tconst imgs: Uint8Array[] = [];\n\t\tlet total = 0;\n\t\tfor (let i = 0; i < buffers.length; i++) {\n\t\t\timgs.push(this.alphaMul(new Uint8Array(buffers[i]), roundAlpha));\n\t\t\ttotal += buffers[i].byteLength;\n\t\t}\n\n\t\tconst nImg = new Uint8Array(total);\n\t\tconst nImg32 = new Uint32Array(nImg.buffer);\n\t\tlet nOff = 0;\n\t\tfor (let i = 0; i < imgs.length; i++) {\n\t\t\tconst img = imgs[i];\n\t\t\tconst il = img.length;\n\t\t\tfor (let j = 0; j < il; j++) {\n\t\t\t\tnImg[nOff + j] = img[j];\n\t\t\t}\n\t\t\tnOff += il;\n\t\t}\n\n\t\tconst root: Leaf = {\n\t\t\ti0: 0,\n\t\t\ti1: nImg.length,\n\t\t\tbst: null,\n\t\t\test: null,\n\t\t\ttDst: 0,\n\t\t\tleft: null,\n\t\t\tright: null\n\t\t};\n\t\troot.bst = this.quantizeStats(nImg, root.i0, root.i1);\n\t\troot.est = this.quantizeEStats(root.bst);\n\t\tconst leafs: Leaf[] = [root];\n\n\t\twhile (leafs.length < ps) {\n\t\t\tlet maxL = 0;\n\t\t\tlet mi = 0;\n\t\t\tfor (let i = 0; i < leafs.length; i++) {\n\t\t\t\tconst est = leafs[i].est;\n\t\t\t\tif (est && est.L > maxL) {\n\t\t\t\t\tmaxL = est.L;\n\t\t\t\t\tmi = i;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (maxL < 1e-3) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst node = leafs[mi];\n\n\t\t\tconst s0 = this.quantizeSplitPixels(\n\t\t\t\tnImg,\n\t\t\t\tnImg32,\n\t\t\t\tnode.i0,\n\t\t\t\tnode.i1,\n\t\t\t\tnode.est?.e ?? [],\n\t\t\t\tnode.est?.eMq255 ?? 0\n\t\t\t);\n\n\t\t\tconst ln: Leaf = {\n\t\t\t\ti0: node.i0,\n\t\t\t\ti1: s0,\n\t\t\t\tbst: null,\n\t\t\t\test: null,\n\t\t\t\ttDst: 0,\n\t\t\t\tleft: null,\n\t\t\t\tright: null\n\t\t\t};\n\t\t\tln.bst = this.quantizeStats(nImg, ln.i0, ln.i1);\n\t\t\tln.est = this.quantizeEStats(ln.bst);\n\t\t\tconst rn: Leaf = {\n\t\t\t\ti0: s0,\n\t\t\t\ti1: node.i1,\n\t\t\t\tbst: null,\n\t\t\t\test: null,\n\t\t\t\ttDst: 0,\n\t\t\t\tleft: null,\n\t\t\t\tright: null\n\t\t\t};\n\t\t\trn.bst = {\n\t\t\t\tR: [],\n\t\t\t\tm: [],\n\t\t\t\tN: (node.bst?.N ?? 0) - ln.bst.N\n\t\t\t};\n\t\t\tfor (let i = 0; i < 16; i++) {\n\t\t\t\trn.bst.R[i] = (node.bst?.R[i] ?? 0) - ln.bst.R[i];\n\t\t\t}\n\t\t\tfor (let i = 0; i < 4; i++) {\n\t\t\t\trn.bst.m[i] = (node.bst?.m[i] ?? 0) - ln.bst.m[i];\n\t\t\t}\n\t\t\trn.est = this.quantizeEStats(rn.bst);\n\n\t\t\tnode.left = ln;\n\t\t\tnode.right = rn;\n\t\t\tleafs[mi] = ln;\n\t\t\tleafs.push(rn);\n\t\t}\n\t\tleafs.sort((a, b) => (b.bst?.N ?? 0) - (a.bst?.N ?? 0));\n\n\t\tconst outBuffers: ArrayBufferLike[] = [];\n\t\tfor (let ii = 0; ii < imgs.length; ii++) {\n\t\t\tconst sb = new Uint8Array(imgs[ii]);\n\t\t\tconst tb: Uint32Array = new Uint32Array(imgs[ii]);\n\t\t\tconst len = sb.length;\n\n\t\t\tfor (let i = 0; i < len; i += 4) {\n\t\t\t\tconst r = sb[i] * (1 / 255);\n\t\t\t\tconst g = sb[i + 1] * (1 / 255);\n\t\t\t\tconst b = sb[i + 2] * (1 / 255);\n\t\t\t\tconst a = sb[i + 3] * (1 / 255);\n\n\t\t\t\tlet nd: Leaf | null = root;\n\t\t\t\twhile (nd?.left) {\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\t\tnd = this.quantizePlaneDst(nd.est!, r, g, b, a) <= 0 ? nd.left : nd.right;\n\t\t\t\t}\n\n\t\t\t\ttb[i >> 2] = nd?.est?.rgba ?? 0;\n\t\t\t}\n\t\t\toutBuffers[ii] = tb.buffer;\n\t\t}\n\t\treturn { buffers: outBuffers, plte: leafs };\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate quantizeStats(\n\t\tnImg: Uint8Array,\n\t\ti0: number,\n\t\ti1: number\n\t): { R: number[]; m: number[]; N: number } {\n\t\tconst R = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n\t\tconst m = [0, 0, 0, 0];\n\t\tconst N = (i1 - i0) >> 2;\n\t\tfor (let i = i0; i < i1; i += 4) {\n\t\t\tconst r = nImg[i] * (1 / 255);\n\t\t\tconst g = nImg[i + 1] * (1 / 255);\n\t\t\tconst b = nImg[i + 2] * (1 / 255);\n\t\t\tconst a = nImg[i + 3] * (1 / 255);\n\n\t\t\tm[0] += r;\n\t\t\tm[1] += g;\n\t\t\tm[2] += b;\n\t\t\tm[3] += a;\n\n\t\t\tR[0] += r * r;\n\t\t\tR[1] += r * g;\n\t\t\tR[2] += r * b;\n\t\t\tR[3] += r * a;\n\t\t\tR[5] += g * g;\n\t\t\tR[6] += g * b;\n\t\t\tR[7] += g * a;\n\t\t\tR[10] += b * b;\n\t\t\tR[11] += b * a;\n\t\t\tR[15] += a * a;\n\t\t}\n\t\tR[4] = R[1];\n\t\tR[8] = R[2];\n\t\tR[12] = R[3];\n\t\tR[9] = R[6];\n\t\tR[13] = R[7];\n\t\tR[14] = R[11];\n\n\t\treturn { R, m, N };\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate quantizeEStats(stats: { R: number[]; m: number[]; N: number }): {\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} {\n\t\tconst R = stats.R;\n\t\tconst m = stats.m;\n\t\tconst N = stats.N;\n\n\t\tconst m0 = m[0];\n\t\tconst m1 = m[1];\n\t\tconst m2 = m[2];\n\t\tconst m3 = m[3];\n\t\tconst iN = N === 0 ? 0 : 1 / N;\n\t\tconst rj = [\n\t\t\tR[0] - m0 * m0 * iN,\n\t\t\tR[1] - m0 * m1 * iN,\n\t\t\tR[2] - m0 * m2 * iN,\n\t\t\tR[3] - m0 * m3 * iN,\n\t\t\tR[4] - m1 * m0 * iN,\n\t\t\tR[5] - m1 * m1 * iN,\n\t\t\tR[6] - m1 * m2 * iN,\n\t\t\tR[7] - m1 * m3 * iN,\n\t\t\tR[8] - m2 * m0 * iN,\n\t\t\tR[9] - m2 * m1 * iN,\n\t\t\tR[10] - m2 * m2 * iN,\n\t\t\tR[11] - m2 * m3 * iN,\n\t\t\tR[12] - m3 * m0 * iN,\n\t\t\tR[13] - m3 * m1 * iN,\n\t\t\tR[14] - m3 * m2 * iN,\n\t\t\tR[15] - m3 * m3 * iN\n\t\t];\n\n\t\tconst A = rj;\n\t\tlet b = [0.5, 0.5, 0.5, 0.5];\n\t\tlet mi = 0;\n\t\tlet tmi = 0;\n\n\t\tif (N !== 0) {\n\t\t\tfor (let i = 0; i < 10; i++) {\n\t\t\t\tb = this.m4MultiplyVec(A, b);\n\t\t\t\ttmi = Math.sqrt(this.m4Dot(b, b));\n\t\t\t\tb = this.m4Sml(1 / tmi, b);\n\t\t\t\tif (Math.abs(tmi - mi) < 1e-9) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tmi = tmi;\n\t\t\t}\n\t\t}\n\t\tconst q = [m0 * iN, m1 * iN, m2 * iN, m3 * iN];\n\t\tconst eMq255 = this.m4Dot(this.m4Sml(255, q), b);\n\n\t\tconst ia = q[3] < 0.001 ? 0 : 1 / q[3];\n\n\t\treturn {\n\t\t\tCov: rj,\n\t\t\tq,\n\t\t\te: b,\n\t\t\tL: mi,\n\t\t\teMq255,\n\t\t\teMq: this.m4Dot(b, q),\n\t\t\trgba:\n\t\t\t\t((Math.round(255 * q[3]) << 24) |\n\t\t\t\t\t(Math.round(255 * q[2] * ia) << 16) |\n\t\t\t\t\t(Math.round(255 * q[1] * ia) << 8) |\n\t\t\t\t\t(Math.round(255 * q[0] * ia) << 0)) >>>\n\t\t\t\t0\n\t\t};\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate quantizePlaneDst(\n\t\test: { e: number[]; eMq: number },\n\t\tr: number,\n\t\tg: number,\n\t\tb: number,\n\t\ta: number\n\t): number {\n\t\tconst e = est.e;\n\t\treturn e[0] * r + e[1] * g + e[2] * b + e[3] * a - est.eMq;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate quantizeSplitPixels(\n\t\tnImg: Uint8Array,\n\t\tnImg32: Uint32Array,\n\t\ti0in: number,\n\t\ti1in: number,\n\t\te: number[],\n\t\teMq: number\n\t): number {\n\t\tlet i1 = i1in - 4;\n\t\tlet i0 = i0in;\n\t\twhile (i0 < i1) {\n\t\t\twhile (this.quantizeVecDot(nImg, i0, e) <= eMq) {\n\t\t\t\ti0 += 4;\n\t\t\t}\n\t\t\twhile (this.quantizeVecDot(nImg, i1, e) > eMq) {\n\t\t\t\ti1 -= 4;\n\t\t\t}\n\t\t\tif (i0 >= i1) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst t = nImg32[i0 >> 2];\n\t\t\tnImg32[i0 >> 2] = nImg32[i1 >> 2];\n\t\t\tnImg32[i1 >> 2] = t;\n\n\t\t\ti0 += 4;\n\t\t\ti1 -= 4;\n\t\t}\n\t\twhile (this.quantizeVecDot(nImg, i0, e) > eMq) {\n\t\t\ti0 -= 4;\n\t\t}\n\t\treturn i0 + 4;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate quantizeVecDot(nImg: Uint8Array, i: number, e: number[]): number {\n\t\treturn nImg[i] * e[0] + nImg[i + 1] * e[1] + nImg[i + 2] * e[2] + nImg[i + 3] * e[3];\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate m4MultiplyVec(m: number[], v: number[]): number[] {\n\t\treturn [\n\t\t\tm[0] * v[0] + m[1] * v[1] + m[2] * v[2] + m[3] * v[3],\n\t\t\tm[4] * v[0] + m[5] * v[1] + m[6] * v[2] + m[7] * v[3],\n\t\t\tm[8] * v[0] + m[9] * v[1] + m[10] * v[2] + m[11] * v[3],\n\t\t\tm[12] * v[0] + m[13] * v[1] + m[14] * v[2] + m[15] * v[3]\n\t\t];\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate m4Dot(x: number[], y: number[]): number {\n\t\treturn x[0] * y[0] + x[1] * y[1] + x[2] * y[2] + x[3] * y[3];\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate m4Sml(a: number, y: number[]): number[] {\n\t\treturn [a * y[0], a * y[1], a * y[2], a * y[3]];\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tprivate alphaMul(img: Uint8Array, roundA: number): Uint8Array {\n\t\tconst nImg = new Uint8Array(img.length);\n\t\tconst area = img.length >> 2;\n\t\tfor (let i = 0; i < area; i++) {\n\t\t\tconst qi = i << 2;\n\t\t\tlet ia = img[qi + 3];\n\t\t\tif (roundA) {\n\t\t\t\tia = ia < 128 ? 0 : 255;\n\t\t\t}\n\t\t\tconst a = ia * (1 / 255);\n\t\t\tnImg[qi + 0] = img[qi + 0] * a;\n\t\t\tnImg[qi + 1] = img[qi + 1] * a;\n\t\t\tnImg[qi + 2] = img[qi + 2] * a;\n\t\t\tnImg[qi + 3] = ia;\n\t\t}\n\t\treturn nImg;\n\t}\n}\n"]}
@@ -0,0 +1,6 @@
1
+ // Copyright 2024 IOTA Stiftung.
2
+ // SPDX-License-Identifier: Apache-2.0.
3
+ export * from "./color.js";
4
+ export * from "./encoders/jpegEncoder.js";
5
+ export * from "./encoders/pngEncoder.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,uCAAuC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC","sourcesContent":["// Copyright 2024 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nexport * from \"./color.js\";\nexport * from \"./encoders/jpegEncoder.js\";\nexport * from \"./encoders/pngEncoder.js\";\n"]}
@@ -2,6 +2,10 @@
2
2
  * Class to represent a color.
3
3
  */
4
4
  export declare class Color {
5
+ /**
6
+ * Runtime name for the class.
7
+ */
8
+ static readonly CLASS_NAME: string;
5
9
  /**
6
10
  * Create a new instance of color.
7
11
  * @param alpha The alpha element of the color.
@@ -3,6 +3,10 @@
3
3
  * Based on JPEG encoder ported to JavaScript and optimized by Andreas Ritter.
4
4
  */
5
5
  export declare class JpegEncoder {
6
+ /**
7
+ * Runtime name for the class.
8
+ */
9
+ static readonly CLASS_NAME: string;
6
10
  /**
7
11
  * Create a new instance of JpegEncoder.
8
12
  */
@@ -1,3 +1,3 @@
1
- export * from "./color";
2
- export * from "./encoders/jpegEncoder";
3
- export * from "./encoders/pngEncoder";
1
+ export * from "./color.js";
2
+ export * from "./encoders/jpegEncoder.js";
3
+ export * from "./encoders/pngEncoder.js";
package/docs/changelog.md CHANGED
@@ -1,5 +1,285 @@
1
1
  # @twin.org/image - Changelog
2
2
 
3
+ ## [0.0.3-next.1](https://github.com/twinfoundation/framework/compare/image-v0.0.3-next.0...image-v0.0.3-next.1) (2025-11-10)
4
+
5
+
6
+ ### Features
7
+
8
+ * add context id features ([#206](https://github.com/twinfoundation/framework/issues/206)) ([ef0d4ee](https://github.com/twinfoundation/framework/commit/ef0d4ee11a4f5fc6cc6f52a4958ce905c04ee13b))
9
+ * add guards arrayEndsWith and arrayStartsWith ([95d875e](https://github.com/twinfoundation/framework/commit/95d875ec8ccb4713c145fdde941d4cfedcec2ed3))
10
+ * eslint migration to flat config ([74427d7](https://github.com/twinfoundation/framework/commit/74427d78d342167f7850e49ab87269326355befe))
11
+ * locales validation ([#197](https://github.com/twinfoundation/framework/issues/197)) ([55fdadb](https://github.com/twinfoundation/framework/commit/55fdadb13595ce0047f787bd1d4135d429a99f12))
12
+ * relocate core packages from tools ([bcab8f3](https://github.com/twinfoundation/framework/commit/bcab8f3160442ea4fcaf442947462504f3d6a17d))
13
+ * update dependencies ([f3bd015](https://github.com/twinfoundation/framework/commit/f3bd015efd169196b7e0335f5cab876ba6ca1d75))
14
+ * use cause instead of inner for errors ([1f4acc4](https://github.com/twinfoundation/framework/commit/1f4acc4d7a6b71a134d9547da9bf40de1e1e49da))
15
+ * use new shared store mechanism ([#131](https://github.com/twinfoundation/framework/issues/131)) ([934385b](https://github.com/twinfoundation/framework/commit/934385b2fbaf9f5c00a505ebf9d093bd5a425f55))
16
+
17
+
18
+ ### Dependencies
19
+
20
+ * The following workspace dependencies were updated
21
+ * dependencies
22
+ * @twin.org/core bumped from 0.0.3-next.0 to 0.0.3-next.1
23
+ * @twin.org/nameof bumped from 0.0.3-next.0 to 0.0.3-next.1
24
+ * devDependencies
25
+ * @twin.org/nameof-transformer bumped from 0.0.3-next.0 to 0.0.3-next.1
26
+ * @twin.org/nameof-vitest-plugin bumped from 0.0.3-next.0 to 0.0.3-next.1
27
+ * @twin.org/validate-locales bumped from 0.0.3-next.0 to 0.0.3-next.1
28
+
29
+ ## [0.0.2-next.22](https://github.com/twinfoundation/framework/compare/image-v0.0.2-next.21...image-v0.0.2-next.22) (2025-10-10)
30
+
31
+
32
+ ### Miscellaneous Chores
33
+
34
+ * **image:** Synchronize repo versions
35
+
36
+
37
+ ### Dependencies
38
+
39
+ * The following workspace dependencies were updated
40
+ * dependencies
41
+ * @twin.org/core bumped from 0.0.2-next.21 to 0.0.2-next.22
42
+ * @twin.org/nameof bumped from 0.0.2-next.21 to 0.0.2-next.22
43
+ * devDependencies
44
+ * @twin.org/nameof-transformer bumped from 0.0.2-next.21 to 0.0.2-next.22
45
+ * @twin.org/nameof-vitest-plugin bumped from 0.0.2-next.21 to 0.0.2-next.22
46
+ * @twin.org/validate-locales bumped from 0.0.2-next.21 to 0.0.2-next.22
47
+
48
+ ## [0.0.2-next.21](https://github.com/twinfoundation/framework/compare/image-v0.0.2-next.20...image-v0.0.2-next.21) (2025-10-09)
49
+
50
+
51
+ ### Features
52
+
53
+ * locales validation ([#197](https://github.com/twinfoundation/framework/issues/197)) ([55fdadb](https://github.com/twinfoundation/framework/commit/55fdadb13595ce0047f787bd1d4135d429a99f12))
54
+
55
+
56
+ ### Dependencies
57
+
58
+ * The following workspace dependencies were updated
59
+ * dependencies
60
+ * @twin.org/core bumped from 0.0.2-next.20 to 0.0.2-next.21
61
+ * @twin.org/nameof bumped from 0.0.2-next.20 to 0.0.2-next.21
62
+ * devDependencies
63
+ * @twin.org/nameof-transformer bumped from 0.0.2-next.20 to 0.0.2-next.21
64
+ * @twin.org/nameof-vitest-plugin bumped from 0.0.2-next.20 to 0.0.2-next.21
65
+ * @twin.org/validate-locales bumped from 0.0.2-next.20 to 0.0.2-next.21
66
+
67
+ ## [0.0.2-next.20](https://github.com/twinfoundation/framework/compare/image-v0.0.2-next.19...image-v0.0.2-next.20) (2025-10-02)
68
+
69
+
70
+ ### Miscellaneous Chores
71
+
72
+ * **image:** Synchronize repo versions
73
+
74
+
75
+ ### Dependencies
76
+
77
+ * The following workspace dependencies were updated
78
+ * dependencies
79
+ * @twin.org/core bumped from 0.0.2-next.19 to 0.0.2-next.20
80
+ * @twin.org/nameof bumped from 0.0.2-next.19 to 0.0.2-next.20
81
+ * devDependencies
82
+ * @twin.org/nameof-transformer bumped from 0.0.2-next.19 to 0.0.2-next.20
83
+ * @twin.org/nameof-vitest-plugin bumped from 0.0.2-next.19 to 0.0.2-next.20
84
+
85
+ ## [0.0.2-next.19](https://github.com/twinfoundation/framework/compare/image-v0.0.2-next.18...image-v0.0.2-next.19) (2025-09-30)
86
+
87
+
88
+ ### Miscellaneous Chores
89
+
90
+ * **image:** Synchronize repo versions
91
+
92
+
93
+ ### Dependencies
94
+
95
+ * The following workspace dependencies were updated
96
+ * dependencies
97
+ * @twin.org/core bumped from 0.0.2-next.18 to 0.0.2-next.19
98
+ * @twin.org/nameof bumped from 0.0.2-next.18 to 0.0.2-next.19
99
+ * devDependencies
100
+ * @twin.org/nameof-transformer bumped from 0.0.2-next.18 to 0.0.2-next.19
101
+ * @twin.org/nameof-vitest-plugin bumped from 0.0.2-next.18 to 0.0.2-next.19
102
+
103
+ ## [0.0.2-next.18](https://github.com/twinfoundation/framework/compare/image-v0.0.2-next.17...image-v0.0.2-next.18) (2025-09-29)
104
+
105
+
106
+ ### Miscellaneous Chores
107
+
108
+ * **image:** Synchronize repo versions
109
+
110
+
111
+ ### Dependencies
112
+
113
+ * The following workspace dependencies were updated
114
+ * dependencies
115
+ * @twin.org/core bumped from 0.0.2-next.17 to 0.0.2-next.18
116
+ * @twin.org/nameof bumped from 0.0.2-next.17 to 0.0.2-next.18
117
+ * devDependencies
118
+ * @twin.org/nameof-transformer bumped from 0.0.2-next.17 to 0.0.2-next.18
119
+ * @twin.org/nameof-vitest-plugin bumped from 0.0.2-next.17 to 0.0.2-next.18
120
+
121
+ ## [0.0.2-next.17](https://github.com/twinfoundation/framework/compare/image-v0.0.2-next.16...image-v0.0.2-next.17) (2025-09-29)
122
+
123
+
124
+ ### Miscellaneous Chores
125
+
126
+ * **image:** Synchronize repo versions
127
+
128
+
129
+ ### Dependencies
130
+
131
+ * The following workspace dependencies were updated
132
+ * dependencies
133
+ * @twin.org/core bumped from 0.0.2-next.16 to 0.0.2-next.17
134
+ * @twin.org/nameof bumped from 0.0.2-next.16 to 0.0.2-next.17
135
+ * devDependencies
136
+ * @twin.org/nameof-transformer bumped from 0.0.2-next.16 to 0.0.2-next.17
137
+ * @twin.org/nameof-vitest-plugin bumped from 0.0.2-next.16 to 0.0.2-next.17
138
+
139
+ ## [0.0.2-next.16](https://github.com/twinfoundation/framework/compare/image-v0.0.2-next.15...image-v0.0.2-next.16) (2025-09-28)
140
+
141
+
142
+ ### Miscellaneous Chores
143
+
144
+ * **image:** Synchronize repo versions
145
+
146
+
147
+ ### Dependencies
148
+
149
+ * The following workspace dependencies were updated
150
+ * dependencies
151
+ * @twin.org/core bumped from 0.0.2-next.15 to 0.0.2-next.16
152
+ * @twin.org/nameof bumped from 0.0.2-next.15 to 0.0.2-next.16
153
+ * devDependencies
154
+ * @twin.org/nameof-transformer bumped from 0.0.2-next.15 to 0.0.2-next.16
155
+ * @twin.org/nameof-vitest-plugin bumped from 0.0.2-next.15 to 0.0.2-next.16
156
+
157
+ ## [0.0.2-next.15](https://github.com/twinfoundation/framework/compare/image-v0.0.2-next.14...image-v0.0.2-next.15) (2025-09-22)
158
+
159
+
160
+ ### Miscellaneous Chores
161
+
162
+ * **image:** Synchronize repo versions
163
+
164
+
165
+ ### Dependencies
166
+
167
+ * The following workspace dependencies were updated
168
+ * dependencies
169
+ * @twin.org/core bumped from 0.0.2-next.14 to 0.0.2-next.15
170
+ * @twin.org/nameof bumped from 0.0.2-next.14 to 0.0.2-next.15
171
+ * devDependencies
172
+ * @twin.org/nameof-transformer bumped from 0.0.2-next.14 to 0.0.2-next.15
173
+ * @twin.org/nameof-vitest-plugin bumped from 0.0.2-next.14 to 0.0.2-next.15
174
+
175
+ ## [0.0.2-next.14](https://github.com/twinfoundation/framework/compare/image-v0.0.2-next.13...image-v0.0.2-next.14) (2025-09-22)
176
+
177
+
178
+ ### Miscellaneous Chores
179
+
180
+ * **image:** Synchronize repo versions
181
+
182
+
183
+ ### Dependencies
184
+
185
+ * The following workspace dependencies were updated
186
+ * dependencies
187
+ * @twin.org/core bumped from 0.0.2-next.13 to 0.0.2-next.14
188
+ * @twin.org/nameof bumped from 0.0.2-next.13 to 0.0.2-next.14
189
+ * devDependencies
190
+ * @twin.org/nameof-transformer bumped from 0.0.2-next.13 to 0.0.2-next.14
191
+ * @twin.org/nameof-vitest-plugin bumped from 0.0.2-next.13 to 0.0.2-next.14
192
+
193
+ ## [0.0.2-next.13](https://github.com/twinfoundation/framework/compare/image-v0.0.2-next.12...image-v0.0.2-next.13) (2025-09-22)
194
+
195
+
196
+ ### Miscellaneous Chores
197
+
198
+ * **image:** Synchronize repo versions
199
+
200
+
201
+ ### Dependencies
202
+
203
+ * The following workspace dependencies were updated
204
+ * dependencies
205
+ * @twin.org/core bumped from 0.0.2-next.12 to 0.0.2-next.13
206
+ * @twin.org/nameof bumped from 0.0.2-next.12 to 0.0.2-next.13
207
+ * devDependencies
208
+ * @twin.org/nameof-transformer bumped from 0.0.2-next.12 to 0.0.2-next.13
209
+ * @twin.org/nameof-vitest-plugin bumped from 0.0.2-next.12 to 0.0.2-next.13
210
+
211
+ ## [0.0.2-next.12](https://github.com/twinfoundation/framework/compare/image-v0.0.2-next.11...image-v0.0.2-next.12) (2025-09-15)
212
+
213
+
214
+ ### Miscellaneous Chores
215
+
216
+ * **image:** Synchronize repo versions
217
+
218
+
219
+ ### Dependencies
220
+
221
+ * The following workspace dependencies were updated
222
+ * dependencies
223
+ * @twin.org/core bumped from 0.0.2-next.11 to 0.0.2-next.12
224
+ * @twin.org/nameof bumped from 0.0.2-next.11 to 0.0.2-next.12
225
+ * devDependencies
226
+ * @twin.org/nameof-transformer bumped from 0.0.2-next.11 to 0.0.2-next.12
227
+ * @twin.org/nameof-vitest-plugin bumped from 0.0.2-next.11 to 0.0.2-next.12
228
+
229
+ ## [0.0.2-next.11](https://github.com/twinfoundation/framework/compare/image-v0.0.2-next.10...image-v0.0.2-next.11) (2025-09-15)
230
+
231
+
232
+ ### Miscellaneous Chores
233
+
234
+ * **image:** Synchronize repo versions
235
+
236
+
237
+ ### Dependencies
238
+
239
+ * The following workspace dependencies were updated
240
+ * dependencies
241
+ * @twin.org/core bumped from 0.0.2-next.10 to 0.0.2-next.11
242
+ * @twin.org/nameof bumped from 0.0.2-next.10 to 0.0.2-next.11
243
+ * devDependencies
244
+ * @twin.org/nameof-transformer bumped from 0.0.2-next.10 to 0.0.2-next.11
245
+ * @twin.org/nameof-vitest-plugin bumped from 0.0.2-next.10 to 0.0.2-next.11
246
+
247
+ ## [0.0.2-next.10](https://github.com/twinfoundation/framework/compare/image-v0.0.2-next.9...image-v0.0.2-next.10) (2025-09-11)
248
+
249
+
250
+ ### Miscellaneous Chores
251
+
252
+ * **image:** Synchronize repo versions
253
+
254
+
255
+ ### Dependencies
256
+
257
+ * The following workspace dependencies were updated
258
+ * dependencies
259
+ * @twin.org/core bumped from 0.0.2-next.9 to 0.0.2-next.10
260
+ * @twin.org/nameof bumped from 0.0.2-next.9 to 0.0.2-next.10
261
+ * devDependencies
262
+ * @twin.org/nameof-transformer bumped from 0.0.2-next.9 to 0.0.2-next.10
263
+ * @twin.org/nameof-vitest-plugin bumped from 0.0.2-next.9 to 0.0.2-next.10
264
+
265
+ ## [0.0.2-next.9](https://github.com/twinfoundation/framework/compare/image-v0.0.2-next.8...image-v0.0.2-next.9) (2025-09-08)
266
+
267
+
268
+ ### Miscellaneous Chores
269
+
270
+ * **image:** Synchronize repo versions
271
+
272
+
273
+ ### Dependencies
274
+
275
+ * The following workspace dependencies were updated
276
+ * dependencies
277
+ * @twin.org/core bumped from 0.0.2-next.8 to 0.0.2-next.9
278
+ * @twin.org/nameof bumped from 0.0.2-next.8 to 0.0.2-next.9
279
+ * devDependencies
280
+ * @twin.org/nameof-transformer bumped from 0.0.2-next.8 to 0.0.2-next.9
281
+ * @twin.org/nameof-vitest-plugin bumped from 0.0.2-next.8 to 0.0.2-next.9
282
+
3
283
  ## [0.0.2-next.8](https://github.com/twinfoundation/framework/compare/image-v0.0.2-next.7...image-v0.0.2-next.8) (2025-09-05)
4
284
 
5
285
 
@@ -40,6 +40,14 @@ The blue element of the color.
40
40
 
41
41
  `Color`
42
42
 
43
+ ## Properties
44
+
45
+ ### CLASS\_NAME
46
+
47
+ > `readonly` `static` **CLASS\_NAME**: `string`
48
+
49
+ Runtime name for the class.
50
+
43
51
  ## Methods
44
52
 
45
53
  ### fromHex()
@@ -70,7 +78,7 @@ Error if the format is incorrect.
70
78
 
71
79
  ### coerce()
72
80
 
73
- > `static` **coerce**(`value`): `undefined` \| `Color`
81
+ > `static` **coerce**(`value`): `Color` \| `undefined`
74
82
 
75
83
  Coerce an unknown type to a color.
76
84
 
@@ -84,7 +92,7 @@ The value to try and convert.
84
92
 
85
93
  #### Returns
86
94
 
87
- `undefined` \| `Color`
95
+ `Color` \| `undefined`
88
96
 
89
97
  The color if one can be created.
90
98
 
@@ -15,6 +15,14 @@ Create a new instance of JpegEncoder.
15
15
 
16
16
  `JpegEncoder`
17
17
 
18
+ ## Properties
19
+
20
+ ### CLASS\_NAME
21
+
22
+ > `readonly` `static` **CLASS\_NAME**: `string`
23
+
24
+ Runtime name for the class.
25
+
18
26
  ## Methods
19
27
 
20
28
  ### encode()
package/locales/en.json CHANGED
@@ -2,6 +2,10 @@
2
2
  "error": {
3
3
  "jpegEncoder": {
4
4
  "invalidQuality": "Quality must be between 1 and 100, it is \"{value}\""
5
+ },
6
+ "color": {
7
+ "range": "Value must be between 0 and 355, it is \"{value}\"",
8
+ "hex": "Value must be a valid hex color in one of the forms #RGB/#ARGB/#RRGGBB/#AARRGGBB, it is \"{hex}\""
5
9
  }
6
10
  }
7
11
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@twin.org/image",
3
- "version": "0.0.2-next.8",
3
+ "version": "0.0.3-next.1",
4
4
  "description": "Classes for image manipulation",
5
5
  "repository": {
6
6
  "type": "git",
@@ -14,24 +14,33 @@
14
14
  "node": ">=20.0.0"
15
15
  },
16
16
  "dependencies": {
17
- "@twin.org/core": "0.0.2-next.8",
18
- "@twin.org/nameof": "0.0.2-next.8"
17
+ "@twin.org/core": "0.0.3-next.1",
18
+ "@twin.org/nameof": "0.0.3-next.1"
19
19
  },
20
- "main": "./dist/cjs/index.cjs",
21
- "module": "./dist/esm/index.mjs",
20
+ "main": "./dist/es/index.js",
22
21
  "types": "./dist/types/index.d.ts",
23
22
  "exports": {
24
23
  ".": {
25
24
  "types": "./dist/types/index.d.ts",
26
- "require": "./dist/cjs/index.cjs",
27
- "import": "./dist/esm/index.mjs"
25
+ "import": "./dist/es/index.js",
26
+ "default": "./dist/es/index.js"
28
27
  }
29
28
  },
30
29
  "files": [
31
- "dist/cjs",
32
- "dist/esm",
30
+ "dist/es",
33
31
  "dist/types",
34
32
  "locales",
35
33
  "docs"
36
- ]
34
+ ],
35
+ "keywords": [
36
+ "twin",
37
+ "trade",
38
+ "iota",
39
+ "framework",
40
+ "blockchain"
41
+ ],
42
+ "bugs": {
43
+ "url": "git+https://github.com/twinfoundation/framework/issues"
44
+ },
45
+ "homepage": "https://twindev.org"
37
46
  }