@blazediff/cli 2.1.4 → 3.0.0
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/README.md +9 -8
- package/dist/cli.js +1178 -804
- package/dist/commands/core.js +841 -479
- package/dist/commands/gmsd.js +831 -469
- package/dist/commands/hitchhikers-ssim.js +819 -457
- package/dist/commands/msssim.js +839 -475
- package/dist/commands/ssim.js +853 -489
- package/dist/index.d.ts +6 -6
- package/package.json +2 -1
package/dist/cli.js
CHANGED
|
@@ -76,9 +76,9 @@ async function main() {
|
|
|
76
76
|
const image2 = args[1];
|
|
77
77
|
const output = args[2];
|
|
78
78
|
const options = {};
|
|
79
|
-
for (let
|
|
80
|
-
const arg = args[
|
|
81
|
-
const nextArg = args[
|
|
79
|
+
for (let i3 = 3; i3 < args.length; i3++) {
|
|
80
|
+
const arg = args[i3];
|
|
81
|
+
const nextArg = args[i3 + 1];
|
|
82
82
|
switch (arg) {
|
|
83
83
|
case "-t":
|
|
84
84
|
case "--threshold":
|
|
@@ -90,7 +90,7 @@ async function main() {
|
|
|
90
90
|
);
|
|
91
91
|
}
|
|
92
92
|
options.threshold = threshold;
|
|
93
|
-
|
|
93
|
+
i3++;
|
|
94
94
|
}
|
|
95
95
|
break;
|
|
96
96
|
case "-a":
|
|
@@ -110,7 +110,7 @@ async function main() {
|
|
|
110
110
|
);
|
|
111
111
|
}
|
|
112
112
|
options.compression = compression;
|
|
113
|
-
|
|
113
|
+
i3++;
|
|
114
114
|
}
|
|
115
115
|
break;
|
|
116
116
|
default:
|
|
@@ -161,112 +161,112 @@ var init_core_native = __esm({
|
|
|
161
161
|
});
|
|
162
162
|
|
|
163
163
|
// ../core/dist/index.mjs
|
|
164
|
-
function g(
|
|
165
|
-
if (!_(
|
|
166
|
-
if (
|
|
167
|
-
if (
|
|
168
|
-
if (y && typeof Buffer < "u" && Buffer.compare &&
|
|
169
|
-
if (t && !b) for (let A = 0; A < e * o2; A++) L(
|
|
164
|
+
function g(n3, r, t, e, o2, { threshold: f2 = 0.1, alpha: c3 = 0.1, aaColor: s = [255, 255, 0], diffColor: a2 = [255, 0, 0], includeAA: U3, diffColorAlt: O2, diffMask: b, fastBufferCheck: y = true } = {}) {
|
|
165
|
+
if (!_(n3) || !_(r) || t && !_(t)) throw new Error("Image data: Uint8Array, Uint8ClampedArray or Buffer expected.");
|
|
166
|
+
if (n3.length !== r.length || t && t.length !== n3.length) throw new Error(`Image sizes do not match. Image 1 size: ${n3.length}, image 2 size: ${r.length}`);
|
|
167
|
+
if (n3.length !== e * o2 * 4) throw new Error(`Image data size does not match width/height. Expecting ${e * o2 * 4}. Got ${n3.length}`);
|
|
168
|
+
if (y && typeof Buffer < "u" && Buffer.compare && n3 instanceof Uint8Array && r instanceof Uint8Array && Buffer.compare(n3, r) === 0) {
|
|
169
|
+
if (t && !b) for (let A = 0; A < e * o2; A++) L(n3, A * 4, c3, t);
|
|
170
170
|
return 0;
|
|
171
171
|
}
|
|
172
|
-
let
|
|
173
|
-
for (let A = 0; A < I2; A++) for (let R = 0; R <
|
|
174
|
-
let
|
|
172
|
+
let m3 = e * o2, u = new Uint32Array(n3.buffer, n3.byteOffset, m3), d2 = new Uint32Array(r.buffer, r.byteOffset, m3), l2 = tn(e, o2), i3 = Math.ceil(e / l2), I2 = Math.ceil(o2 / l2), z2 = i3 * I2, x = new Uint16Array(z2), M = 35215 * f2 * f2, B = 0;
|
|
173
|
+
for (let A = 0; A < I2; A++) for (let R = 0; R < i3; R++) {
|
|
174
|
+
let p3 = R * l2, v = A * l2, D3 = Math.min(p3 + l2, e), P4 = Math.min(v + l2, o2), $ = false;
|
|
175
175
|
n: for (let C3 = v; C3 < P4; C3++) {
|
|
176
176
|
let Y = C3 * e;
|
|
177
|
-
for (let G =
|
|
177
|
+
for (let G = p3; G < D3; G++) {
|
|
178
178
|
let E3 = Y + G;
|
|
179
179
|
if (u[E3] === d2[E3]) continue;
|
|
180
|
-
let S3 = E3 * 4, X2 = N(
|
|
180
|
+
let S3 = E3 * 4, X2 = N(n3, r, S3, S3);
|
|
181
181
|
if (Math.abs(X2) > M) {
|
|
182
182
|
$ = true;
|
|
183
183
|
break n;
|
|
184
184
|
}
|
|
185
185
|
}
|
|
186
186
|
}
|
|
187
|
-
if ($) x[B++] = A *
|
|
187
|
+
if ($) x[B++] = A * i3 + R;
|
|
188
188
|
else if (t && !b) for (let C3 = v; C3 < P4; C3++) {
|
|
189
189
|
let Y = C3 * e;
|
|
190
|
-
for (let G =
|
|
190
|
+
for (let G = p3; G < D3; G++) {
|
|
191
191
|
let E3 = Y + G;
|
|
192
|
-
L(
|
|
192
|
+
L(n3, E3 * 4, c3, t);
|
|
193
193
|
}
|
|
194
194
|
}
|
|
195
195
|
}
|
|
196
196
|
if (B === 0) return 0;
|
|
197
|
-
let [F2, J, K2] =
|
|
197
|
+
let [F2, J, K2] = s, [Q2, W2, Z2] = a2, [k, w, h4] = O2 || a2, T = 0;
|
|
198
198
|
for (let A = 0; A < B; A++) {
|
|
199
|
-
let R = x[A],
|
|
199
|
+
let R = x[A], p3 = R % i3, v = R / i3 | 0, D3 = p3 * l2, P4 = v * l2, $ = Math.min(D3 + l2, e), C3 = Math.min(P4 + l2, o2);
|
|
200
200
|
for (let Y = P4; Y < C3; Y++) {
|
|
201
201
|
let G = Y * e;
|
|
202
202
|
for (let E3 = D3; E3 < $; E3++) {
|
|
203
203
|
let S3 = G + E3, X2 = S3 * 4;
|
|
204
204
|
if (u[S3] === d2[S3]) {
|
|
205
|
-
t && !b && L(
|
|
205
|
+
t && !b && L(n3, X2, c3, t);
|
|
206
206
|
continue;
|
|
207
207
|
}
|
|
208
|
-
let H3 = N(
|
|
209
|
-
Math.abs(H3) > M ? !U3 && (j(
|
|
208
|
+
let H3 = N(n3, r, X2, X2);
|
|
209
|
+
Math.abs(H3) > M ? !U3 && (j(n3, E3, Y, e, o2, u, d2) || j(r, E3, Y, e, o2, d2, u)) ? t && !b && V(t, X2, F2, J, K2) : (t && (H3 < 0 ? V(t, X2, k, w, h4) : V(t, X2, Q2, W2, Z2)), T++) : t && !b && L(n3, X2, c3, t);
|
|
210
210
|
}
|
|
211
211
|
}
|
|
212
212
|
}
|
|
213
213
|
return T;
|
|
214
214
|
}
|
|
215
|
-
function _(
|
|
216
|
-
return ArrayBuffer.isView(
|
|
215
|
+
function _(n3) {
|
|
216
|
+
return ArrayBuffer.isView(n3) && n3.BYTES_PER_ELEMENT === 1;
|
|
217
217
|
}
|
|
218
|
-
function tn(
|
|
219
|
-
let t =
|
|
218
|
+
function tn(n3, r) {
|
|
219
|
+
let t = n3 * r, e = Math.sqrt(t) / 100, o2 = 16 * Math.sqrt(e), f2 = Math.log(o2) * nn;
|
|
220
220
|
return 1 << Math.round(f2);
|
|
221
221
|
}
|
|
222
|
-
function N(
|
|
223
|
-
let o2 =
|
|
224
|
-
if (!y && !
|
|
225
|
-
if (
|
|
222
|
+
function N(n3, r, t, e) {
|
|
223
|
+
let o2 = n3[t], f2 = n3[t + 1], c3 = n3[t + 2], s = n3[t + 3], a2 = r[e], U3 = r[e + 1], O2 = r[e + 2], b = r[e + 3], y = o2 - a2, m3 = f2 - U3, u = c3 - O2, d2 = s - b;
|
|
224
|
+
if (!y && !m3 && !u && !d2) return 0;
|
|
225
|
+
if (s < 255 || b < 255) {
|
|
226
226
|
let x = 48 + 159 * (t % 2), M = 48 + 159 * ((t / 1.618033988749895 | 0) & 1), B = 48 + 159 * ((t / 2.618033988749895 | 0) & 1);
|
|
227
|
-
y = (o2 *
|
|
227
|
+
y = (o2 * s - a2 * b - x * d2) / 255, m3 = (f2 * s - U3 * b - M * d2) / 255, u = (c3 * s - O2 * b - B * d2) / 255;
|
|
228
228
|
}
|
|
229
|
-
let
|
|
230
|
-
return
|
|
229
|
+
let l2 = y * 0.29889531 + m3 * 0.58662247 + u * 0.11448223, i3 = y * 0.59597799 - m3 * 0.2741761 - u * 0.32180189, I2 = y * 0.21147017 - m3 * 0.52261711 + u * 0.31114694, z2 = 0.5053 * l2 * l2 + 0.299 * i3 * i3 + 0.1957 * I2 * I2;
|
|
230
|
+
return l2 > 0 ? -z2 : z2;
|
|
231
231
|
}
|
|
232
|
-
function rn(
|
|
233
|
-
let o2 =
|
|
234
|
-
if (!y && !
|
|
235
|
-
if (
|
|
236
|
-
let
|
|
237
|
-
y = (o2 *
|
|
238
|
-
}
|
|
239
|
-
return y * 0.29889531 +
|
|
232
|
+
function rn(n3, r, t, e) {
|
|
233
|
+
let o2 = n3[t], f2 = n3[t + 1], c3 = n3[t + 2], s = n3[t + 3], a2 = r[e], U3 = r[e + 1], O2 = r[e + 2], b = r[e + 3], y = o2 - a2, m3 = f2 - U3, u = c3 - O2, d2 = s - b;
|
|
234
|
+
if (!y && !m3 && !u && !d2) return 0;
|
|
235
|
+
if (s < 255 || b < 255) {
|
|
236
|
+
let i3 = 48 + 159 * (t % 2), I2 = 48 + 159 * ((t / 1.618033988749895 | 0) & 1), z2 = 48 + 159 * ((t / 2.618033988749895 | 0) & 1);
|
|
237
|
+
y = (o2 * s - a2 * b - i3 * d2) / 255, m3 = (f2 * s - U3 * b - I2 * d2) / 255, u = (c3 * s - O2 * b - z2 * d2) / 255;
|
|
238
|
+
}
|
|
239
|
+
return y * 0.29889531 + m3 * 0.58662247 + u * 0.11448223;
|
|
240
240
|
}
|
|
241
|
-
function j(
|
|
242
|
-
let
|
|
243
|
-
for (let x =
|
|
241
|
+
function j(n3, r, t, e, o2, f2, c3) {
|
|
242
|
+
let s = Math.max(r - 1, 0), a2 = Math.max(t - 1, 0), U3 = Math.min(r + 1, e - 1), O2 = Math.min(t + 1, o2 - 1), y = (t * e + r) * 4, m3 = r === s || r === U3 || t === a2 || t === O2 ? 1 : 0, u = 0, d2 = 0, l2 = 0, i3 = 0, I2 = 0, z2 = 0;
|
|
243
|
+
for (let x = s; x <= U3; x++) for (let M = a2; M <= O2; M++) {
|
|
244
244
|
if (x === r && M === t) continue;
|
|
245
|
-
let B = rn(
|
|
245
|
+
let B = rn(n3, n3, y, (M * e + x) * 4);
|
|
246
246
|
if (B === 0) {
|
|
247
|
-
if (
|
|
248
|
-
} else B < u ? (u = B,
|
|
247
|
+
if (m3++, m3 > 2) return false;
|
|
248
|
+
} else B < u ? (u = B, l2 = x, i3 = M) : B > d2 && (d2 = B, I2 = x, z2 = M);
|
|
249
249
|
}
|
|
250
|
-
return u === 0 || d2 === 0 ? false : q(f2,
|
|
250
|
+
return u === 0 || d2 === 0 ? false : q(f2, l2, i3, e, o2) && q(c3, l2, i3, e, o2) || q(f2, I2, z2, e, o2) && q(c3, I2, z2, e, o2);
|
|
251
251
|
}
|
|
252
|
-
function q(
|
|
253
|
-
let f2 = t * e + r,
|
|
252
|
+
function q(n3, r, t, e, o2) {
|
|
253
|
+
let f2 = t * e + r, c3 = n3[f2], s = r === 0 || r === e - 1 || t === 0 || t === o2 - 1 ? 1 : 0;
|
|
254
254
|
if (t > 0) {
|
|
255
255
|
let a2 = f2 - e;
|
|
256
|
-
r > 0 &&
|
|
256
|
+
r > 0 && n3[a2 - 1] === c3 && s++, n3[a2] === c3 && s++, r < e - 1 && n3[a2 + 1] === c3 && s++;
|
|
257
257
|
}
|
|
258
|
-
if (r > 0 &&
|
|
258
|
+
if (r > 0 && n3[f2 - 1] === c3 && s++, r < e - 1 && n3[f2 + 1] === c3 && s++, t < o2 - 1) {
|
|
259
259
|
let a2 = f2 + e;
|
|
260
|
-
r > 0 &&
|
|
260
|
+
r > 0 && n3[a2 - 1] === c3 && s++, n3[a2] === c3 && s++, r < e - 1 && n3[a2 + 1] === c3 && s++;
|
|
261
261
|
}
|
|
262
|
-
return
|
|
262
|
+
return s > 2;
|
|
263
263
|
}
|
|
264
|
-
function L(
|
|
265
|
-
let o2 = 255 + (
|
|
264
|
+
function L(n3, r, t, e) {
|
|
265
|
+
let o2 = 255 + (n3[r] * 0.29889531 + n3[r + 1] * 0.58662247 + n3[r + 2] * 0.11448223 - 255) * t * n3[r + 3] / 255;
|
|
266
266
|
V(e, r, o2, o2, o2);
|
|
267
267
|
}
|
|
268
|
-
function V(
|
|
269
|
-
|
|
268
|
+
function V(n3, r, t, e, o2) {
|
|
269
|
+
n3[r + 0] = t, n3[r + 1] = e, n3[r + 2] = o2, n3[r + 3] = 255;
|
|
270
270
|
}
|
|
271
271
|
var nn, on;
|
|
272
272
|
var init_dist = __esm({
|
|
@@ -462,8 +462,8 @@ var require_interlace = __commonJS({
|
|
|
462
462
|
let yLeftOver = height % 8;
|
|
463
463
|
let xRepeats = (width - xLeftOver) / 8;
|
|
464
464
|
let yRepeats = (height - yLeftOver) / 8;
|
|
465
|
-
for (let
|
|
466
|
-
let pass = imagePasses[
|
|
465
|
+
for (let i3 = 0; i3 < imagePasses.length; i3++) {
|
|
466
|
+
let pass = imagePasses[i3];
|
|
467
467
|
let passWidth = xRepeats * pass.x.length;
|
|
468
468
|
let passHeight = yRepeats * pass.y.length;
|
|
469
469
|
for (let j3 = 0; j3 < pass.x.length; j3++) {
|
|
@@ -481,7 +481,7 @@ var require_interlace = __commonJS({
|
|
|
481
481
|
}
|
|
482
482
|
}
|
|
483
483
|
if (passWidth > 0 && passHeight > 0) {
|
|
484
|
-
images.push({ width: passWidth, height: passHeight, index:
|
|
484
|
+
images.push({ width: passWidth, height: passHeight, index: i3 });
|
|
485
485
|
}
|
|
486
486
|
}
|
|
487
487
|
return images;
|
|
@@ -544,10 +544,10 @@ var require_filter_parse = __commonJS({
|
|
|
544
544
|
this._images = [];
|
|
545
545
|
if (interlace) {
|
|
546
546
|
let passes = interlaceUtils.getImagePasses(width, height);
|
|
547
|
-
for (let
|
|
547
|
+
for (let i3 = 0; i3 < passes.length; i3++) {
|
|
548
548
|
this._images.push({
|
|
549
|
-
byteWidth: getByteWidth(passes[
|
|
550
|
-
height: passes[
|
|
549
|
+
byteWidth: getByteWidth(passes[i3].width, bpp, depth),
|
|
550
|
+
height: passes[i3].height,
|
|
551
551
|
lineIndex: 0
|
|
552
552
|
});
|
|
553
553
|
}
|
|
@@ -726,8 +726,8 @@ var require_crc = __commonJS({
|
|
|
726
726
|
"use strict";
|
|
727
727
|
var crcTable = [];
|
|
728
728
|
(function() {
|
|
729
|
-
for (let
|
|
730
|
-
let currentCrc =
|
|
729
|
+
for (let i3 = 0; i3 < 256; i3++) {
|
|
730
|
+
let currentCrc = i3;
|
|
731
731
|
for (let j3 = 0; j3 < 8; j3++) {
|
|
732
732
|
if (currentCrc & 1) {
|
|
733
733
|
currentCrc = 3988292384 ^ currentCrc >>> 1;
|
|
@@ -735,15 +735,15 @@ var require_crc = __commonJS({
|
|
|
735
735
|
currentCrc = currentCrc >>> 1;
|
|
736
736
|
}
|
|
737
737
|
}
|
|
738
|
-
crcTable[
|
|
738
|
+
crcTable[i3] = currentCrc;
|
|
739
739
|
}
|
|
740
740
|
})();
|
|
741
741
|
var CrcCalculator = module2.exports = function() {
|
|
742
742
|
this._crc = -1;
|
|
743
743
|
};
|
|
744
744
|
CrcCalculator.prototype.write = function(data) {
|
|
745
|
-
for (let
|
|
746
|
-
this._crc = crcTable[(this._crc ^ data[
|
|
745
|
+
for (let i3 = 0; i3 < data.length; i3++) {
|
|
746
|
+
this._crc = crcTable[(this._crc ^ data[i3]) & 255] ^ this._crc >>> 8;
|
|
747
747
|
}
|
|
748
748
|
return true;
|
|
749
749
|
};
|
|
@@ -752,8 +752,8 @@ var require_crc = __commonJS({
|
|
|
752
752
|
};
|
|
753
753
|
CrcCalculator.crc32 = function(buf) {
|
|
754
754
|
let crc = -1;
|
|
755
|
-
for (let
|
|
756
|
-
crc = crcTable[(crc ^ buf[
|
|
755
|
+
for (let i3 = 0; i3 < buf.length; i3++) {
|
|
756
|
+
crc = crcTable[(crc ^ buf[i3]) & 255] ^ crc >>> 8;
|
|
757
757
|
}
|
|
758
758
|
return crc ^ -1;
|
|
759
759
|
};
|
|
@@ -799,8 +799,8 @@ var require_parser = __commonJS({
|
|
|
799
799
|
};
|
|
800
800
|
Parser.prototype._parseSignature = function(data) {
|
|
801
801
|
let signature = constants.PNG_SIGNATURE;
|
|
802
|
-
for (let
|
|
803
|
-
if (data[
|
|
802
|
+
for (let i3 = 0; i3 < signature.length; i3++) {
|
|
803
|
+
if (data[i3] !== signature[i3]) {
|
|
804
804
|
this.error(new Error("Invalid file signature"));
|
|
805
805
|
return;
|
|
806
806
|
}
|
|
@@ -811,8 +811,8 @@ var require_parser = __commonJS({
|
|
|
811
811
|
let length = data.readUInt32BE(0);
|
|
812
812
|
let type = data.readUInt32BE(4);
|
|
813
813
|
let name = "";
|
|
814
|
-
for (let
|
|
815
|
-
name += String.fromCharCode(data[
|
|
814
|
+
for (let i3 = 4; i3 < 8; i3++) {
|
|
815
|
+
name += String.fromCharCode(data[i3]);
|
|
816
816
|
}
|
|
817
817
|
let ancillary = Boolean(data[4] & 32);
|
|
818
818
|
if (!this._hasIHDR && type !== constants.TYPE_IHDR) {
|
|
@@ -901,8 +901,8 @@ var require_parser = __commonJS({
|
|
|
901
901
|
Parser.prototype._parsePLTE = function(data) {
|
|
902
902
|
this._crc.write(data);
|
|
903
903
|
let entries = Math.floor(data.length / 3);
|
|
904
|
-
for (let
|
|
905
|
-
this._palette.push([data[
|
|
904
|
+
for (let i3 = 0; i3 < entries; i3++) {
|
|
905
|
+
this._palette.push([data[i3 * 3], data[i3 * 3 + 1], data[i3 * 3 + 2], 255]);
|
|
906
906
|
}
|
|
907
907
|
this.palette(this._palette);
|
|
908
908
|
this._handleChunkEnd();
|
|
@@ -922,8 +922,8 @@ var require_parser = __commonJS({
|
|
|
922
922
|
this.error(new Error("More transparent colors than palette size"));
|
|
923
923
|
return;
|
|
924
924
|
}
|
|
925
|
-
for (let
|
|
926
|
-
this._palette[
|
|
925
|
+
for (let i3 = 0; i3 < data.length; i3++) {
|
|
926
|
+
this._palette[i3][3] = data[i3];
|
|
927
927
|
}
|
|
928
928
|
this.palette(this._palette);
|
|
929
929
|
}
|
|
@@ -1078,20 +1078,20 @@ var require_bitmapper = __commonJS({
|
|
|
1078
1078
|
];
|
|
1079
1079
|
function bitRetriever(data, depth) {
|
|
1080
1080
|
let leftOver = [];
|
|
1081
|
-
let
|
|
1081
|
+
let i3 = 0;
|
|
1082
1082
|
function split() {
|
|
1083
|
-
if (
|
|
1083
|
+
if (i3 === data.length) {
|
|
1084
1084
|
throw new Error("Ran out of data");
|
|
1085
1085
|
}
|
|
1086
|
-
let byte = data[
|
|
1087
|
-
|
|
1086
|
+
let byte = data[i3];
|
|
1087
|
+
i3++;
|
|
1088
1088
|
let byte8, byte7, byte6, byte5, byte4, byte3, byte2, byte1;
|
|
1089
1089
|
switch (depth) {
|
|
1090
1090
|
default:
|
|
1091
1091
|
throw new Error("unrecognised depth");
|
|
1092
1092
|
case 16:
|
|
1093
|
-
byte2 = data[
|
|
1094
|
-
|
|
1093
|
+
byte2 = data[i3];
|
|
1094
|
+
i3++;
|
|
1095
1095
|
leftOver.push((byte << 8) + byte2);
|
|
1096
1096
|
break;
|
|
1097
1097
|
case 4:
|
|
@@ -1132,7 +1132,7 @@ var require_bitmapper = __commonJS({
|
|
|
1132
1132
|
leftOver.length = 0;
|
|
1133
1133
|
},
|
|
1134
1134
|
end: function() {
|
|
1135
|
-
if (
|
|
1135
|
+
if (i3 !== data.length) {
|
|
1136
1136
|
throw new Error("extra data found");
|
|
1137
1137
|
}
|
|
1138
1138
|
}
|
|
@@ -1241,8 +1241,8 @@ var require_format_normaliser = __commonJS({
|
|
|
1241
1241
|
if (!color) {
|
|
1242
1242
|
throw new Error("index " + indata[pxPos] + " not in palette");
|
|
1243
1243
|
}
|
|
1244
|
-
for (let
|
|
1245
|
-
outdata[pxPos +
|
|
1244
|
+
for (let i3 = 0; i3 < 4; i3++) {
|
|
1245
|
+
outdata[pxPos + i3] = color[i3];
|
|
1246
1246
|
}
|
|
1247
1247
|
pxPos += 4;
|
|
1248
1248
|
}
|
|
@@ -1261,8 +1261,8 @@ var require_format_normaliser = __commonJS({
|
|
|
1261
1261
|
makeTrans = true;
|
|
1262
1262
|
}
|
|
1263
1263
|
if (makeTrans) {
|
|
1264
|
-
for (let
|
|
1265
|
-
outdata[pxPos +
|
|
1264
|
+
for (let i3 = 0; i3 < 4; i3++) {
|
|
1265
|
+
outdata[pxPos + i3] = 0;
|
|
1266
1266
|
}
|
|
1267
1267
|
}
|
|
1268
1268
|
pxPos += 4;
|
|
@@ -1275,9 +1275,9 @@ var require_format_normaliser = __commonJS({
|
|
|
1275
1275
|
let pxPos = 0;
|
|
1276
1276
|
for (let y = 0; y < height; y++) {
|
|
1277
1277
|
for (let x = 0; x < width; x++) {
|
|
1278
|
-
for (let
|
|
1279
|
-
outdata[pxPos +
|
|
1280
|
-
indata[pxPos +
|
|
1278
|
+
for (let i3 = 0; i3 < 4; i3++) {
|
|
1279
|
+
outdata[pxPos + i3] = Math.floor(
|
|
1280
|
+
indata[pxPos + i3] * maxOutSample / maxInSample + 0.5
|
|
1281
1281
|
);
|
|
1282
1282
|
}
|
|
1283
1283
|
pxPos += 4;
|
|
@@ -1603,8 +1603,8 @@ var require_filter_pack = __commonJS({
|
|
|
1603
1603
|
function filterSumNone(pxData, pxPos, byteWidth) {
|
|
1604
1604
|
let sum = 0;
|
|
1605
1605
|
let length = pxPos + byteWidth;
|
|
1606
|
-
for (let
|
|
1607
|
-
sum += Math.abs(pxData[
|
|
1606
|
+
for (let i3 = pxPos; i3 < length; i3++) {
|
|
1607
|
+
sum += Math.abs(pxData[i3]);
|
|
1608
1608
|
}
|
|
1609
1609
|
return sum;
|
|
1610
1610
|
}
|
|
@@ -1713,10 +1713,10 @@ var require_filter_pack = __commonJS({
|
|
|
1713
1713
|
for (let y = 0; y < height; y++) {
|
|
1714
1714
|
if (filterTypes.length > 1) {
|
|
1715
1715
|
let min = Infinity;
|
|
1716
|
-
for (let
|
|
1717
|
-
let sum = filterSums[filterTypes[
|
|
1716
|
+
for (let i3 = 0; i3 < filterTypes.length; i3++) {
|
|
1717
|
+
let sum = filterSums[filterTypes[i3]](pxData, pxPos, byteWidth, bpp);
|
|
1718
1718
|
if (sum < min) {
|
|
1719
|
-
sel = filterTypes[
|
|
1719
|
+
sel = filterTypes[i3];
|
|
1720
1720
|
min = sum;
|
|
1721
1721
|
}
|
|
1722
1722
|
}
|
|
@@ -1913,7 +1913,7 @@ var require_sync_inflate = __commonJS({
|
|
|
1913
1913
|
if (typeof asyncCb === "function") {
|
|
1914
1914
|
return zlib.Inflate._processChunk.call(this, chunk, flushFlag, asyncCb);
|
|
1915
1915
|
}
|
|
1916
|
-
let
|
|
1916
|
+
let self2 = this;
|
|
1917
1917
|
let availInBefore = chunk && chunk.length;
|
|
1918
1918
|
let availOutBefore = this._chunkSize - this._offset;
|
|
1919
1919
|
let leftToInflate = this._maxLength;
|
|
@@ -1925,14 +1925,14 @@ var require_sync_inflate = __commonJS({
|
|
|
1925
1925
|
error = err;
|
|
1926
1926
|
});
|
|
1927
1927
|
function handleChunk(availInAfter, availOutAfter) {
|
|
1928
|
-
if (
|
|
1928
|
+
if (self2._hadError) {
|
|
1929
1929
|
return;
|
|
1930
1930
|
}
|
|
1931
1931
|
let have = availOutBefore - availOutAfter;
|
|
1932
1932
|
assert(have >= 0, "have should not go down");
|
|
1933
1933
|
if (have > 0) {
|
|
1934
|
-
let out =
|
|
1935
|
-
|
|
1934
|
+
let out = self2._buffer.slice(self2._offset, self2._offset + have);
|
|
1935
|
+
self2._offset += have;
|
|
1936
1936
|
if (out.length > leftToInflate) {
|
|
1937
1937
|
out = out.slice(0, leftToInflate);
|
|
1938
1938
|
}
|
|
@@ -1943,10 +1943,10 @@ var require_sync_inflate = __commonJS({
|
|
|
1943
1943
|
return false;
|
|
1944
1944
|
}
|
|
1945
1945
|
}
|
|
1946
|
-
if (availOutAfter === 0 ||
|
|
1947
|
-
availOutBefore =
|
|
1948
|
-
|
|
1949
|
-
|
|
1946
|
+
if (availOutAfter === 0 || self2._offset >= self2._chunkSize) {
|
|
1947
|
+
availOutBefore = self2._chunkSize;
|
|
1948
|
+
self2._offset = 0;
|
|
1949
|
+
self2._buffer = Buffer.allocUnsafe(self2._chunkSize);
|
|
1950
1950
|
}
|
|
1951
1951
|
if (availOutAfter === 0) {
|
|
1952
1952
|
inOff += availInBefore - availInAfter;
|
|
@@ -2349,10 +2349,10 @@ var require_png = __commonJS({
|
|
|
2349
2349
|
for (let y = 0; y < src.height; y++) {
|
|
2350
2350
|
for (let x = 0; x < src.width; x++) {
|
|
2351
2351
|
let idx = src.width * y + x << 2;
|
|
2352
|
-
for (let
|
|
2353
|
-
let sample = src.data[idx +
|
|
2352
|
+
for (let i3 = 0; i3 < 3; i3++) {
|
|
2353
|
+
let sample = src.data[idx + i3] / 255;
|
|
2354
2354
|
sample = Math.pow(sample, 1 / 2.2 / src.gamma);
|
|
2355
|
-
src.data[idx +
|
|
2355
|
+
src.data[idx + i3] = Math.round(sample * 255);
|
|
2356
2356
|
}
|
|
2357
2357
|
}
|
|
2358
2358
|
}
|
|
@@ -2368,37 +2368,37 @@ var require_png = __commonJS({
|
|
|
2368
2368
|
// ../codec-pngjs/dist/index.mjs
|
|
2369
2369
|
var dist_exports = {};
|
|
2370
2370
|
__export(dist_exports, {
|
|
2371
|
-
|
|
2372
|
-
|
|
2371
|
+
codecPngjs: () => h,
|
|
2372
|
+
default: () => m
|
|
2373
2373
|
});
|
|
2374
2374
|
async function d(r) {
|
|
2375
|
-
return new Promise((
|
|
2375
|
+
return new Promise((i3, n3) => {
|
|
2376
2376
|
try {
|
|
2377
2377
|
let t = typeof r == "string" ? (0, import_fs.readFileSync)(r) : r, e = import_pngjs.PNG.sync.read(t);
|
|
2378
|
-
|
|
2378
|
+
i3({ data: e.data, width: e.width, height: e.height });
|
|
2379
2379
|
} catch (t) {
|
|
2380
|
-
|
|
2380
|
+
n3(new Error(`Failed to read PNG file ${r}: ${t}`));
|
|
2381
2381
|
}
|
|
2382
2382
|
});
|
|
2383
2383
|
}
|
|
2384
|
-
async function
|
|
2385
|
-
return new Promise((
|
|
2384
|
+
async function c(r, i3) {
|
|
2385
|
+
return new Promise((n3, t) => {
|
|
2386
2386
|
try {
|
|
2387
2387
|
let e = new import_pngjs.PNG({ width: r.width, height: r.height });
|
|
2388
|
-
e.data = Buffer.isBuffer(r.data) ? r.data : Buffer.from(r.data.buffer), (0, import_fs.writeFileSync)(
|
|
2388
|
+
e.data = Buffer.isBuffer(r.data) ? r.data : Buffer.from(r.data.buffer), (0, import_fs.writeFileSync)(i3, import_pngjs.PNG.sync.write(e)), n3();
|
|
2389
2389
|
} catch (e) {
|
|
2390
|
-
t(new Error(`Failed to write PNG file ${
|
|
2390
|
+
t(new Error(`Failed to write PNG file ${i3}: ${e}`));
|
|
2391
2391
|
}
|
|
2392
2392
|
});
|
|
2393
2393
|
}
|
|
2394
|
-
var import_fs, import_pngjs,
|
|
2394
|
+
var import_fs, import_pngjs, h, m;
|
|
2395
2395
|
var init_dist2 = __esm({
|
|
2396
2396
|
"../codec-pngjs/dist/index.mjs"() {
|
|
2397
2397
|
"use strict";
|
|
2398
2398
|
import_fs = require("fs");
|
|
2399
2399
|
import_pngjs = __toESM(require_png(), 1);
|
|
2400
|
-
|
|
2401
|
-
m =
|
|
2400
|
+
h = { read: d, write: c };
|
|
2401
|
+
m = h;
|
|
2402
2402
|
}
|
|
2403
2403
|
});
|
|
2404
2404
|
|
|
@@ -2493,7 +2493,7 @@ var require_filesystem = __commonJS({
|
|
|
2493
2493
|
var LDD_PATH = "/usr/bin/ldd";
|
|
2494
2494
|
var SELF_PATH = "/proc/self/exe";
|
|
2495
2495
|
var MAX_LENGTH = 2048;
|
|
2496
|
-
var
|
|
2496
|
+
var readFileSync3 = (path) => {
|
|
2497
2497
|
const fd = fs.openSync(path, "r");
|
|
2498
2498
|
const buffer = Buffer.alloc(MAX_LENGTH);
|
|
2499
2499
|
const bytesRead = fs.readSync(fd, buffer, 0, MAX_LENGTH, 0);
|
|
@@ -2518,7 +2518,7 @@ var require_filesystem = __commonJS({
|
|
|
2518
2518
|
module2.exports = {
|
|
2519
2519
|
LDD_PATH,
|
|
2520
2520
|
SELF_PATH,
|
|
2521
|
-
readFileSync:
|
|
2521
|
+
readFileSync: readFileSync3,
|
|
2522
2522
|
readFile
|
|
2523
2523
|
};
|
|
2524
2524
|
}
|
|
@@ -2544,8 +2544,8 @@ var require_elf = __commonJS({
|
|
|
2544
2544
|
const offset = elf.readUInt32LE(32);
|
|
2545
2545
|
const size = elf.readUInt16LE(54);
|
|
2546
2546
|
const count = elf.readUInt16LE(56);
|
|
2547
|
-
for (let
|
|
2548
|
-
const headerOffset = offset +
|
|
2547
|
+
for (let i3 = 0; i3 < count; i3++) {
|
|
2548
|
+
const headerOffset = offset + i3 * size;
|
|
2549
2549
|
const type = elf.readUInt32LE(headerOffset);
|
|
2550
2550
|
if (type === 3) {
|
|
2551
2551
|
const fileOffset = elf.readUInt32LE(headerOffset + 8);
|
|
@@ -2567,7 +2567,7 @@ var require_detect_libc = __commonJS({
|
|
|
2567
2567
|
"use strict";
|
|
2568
2568
|
var childProcess = require("child_process");
|
|
2569
2569
|
var { isLinux, getReport } = require_process();
|
|
2570
|
-
var { LDD_PATH, SELF_PATH, readFile, readFileSync:
|
|
2570
|
+
var { LDD_PATH, SELF_PATH, readFile, readFileSync: readFileSync3 } = require_filesystem();
|
|
2571
2571
|
var { interpreterPath } = require_elf();
|
|
2572
2572
|
var cachedFamilyInterpreter;
|
|
2573
2573
|
var cachedFamilyFilesystem;
|
|
@@ -2659,7 +2659,7 @@ var require_detect_libc = __commonJS({
|
|
|
2659
2659
|
}
|
|
2660
2660
|
cachedFamilyFilesystem = null;
|
|
2661
2661
|
try {
|
|
2662
|
-
const lddContent =
|
|
2662
|
+
const lddContent = readFileSync3(LDD_PATH);
|
|
2663
2663
|
cachedFamilyFilesystem = getFamilyFromLddContent(lddContent);
|
|
2664
2664
|
} catch (e) {
|
|
2665
2665
|
}
|
|
@@ -2684,7 +2684,7 @@ var require_detect_libc = __commonJS({
|
|
|
2684
2684
|
}
|
|
2685
2685
|
cachedFamilyInterpreter = null;
|
|
2686
2686
|
try {
|
|
2687
|
-
const selfContent =
|
|
2687
|
+
const selfContent = readFileSync3(SELF_PATH);
|
|
2688
2688
|
const path = interpreterPath(selfContent);
|
|
2689
2689
|
cachedFamilyInterpreter = familyFromInterpreterPath(path);
|
|
2690
2690
|
} catch (e) {
|
|
@@ -2748,7 +2748,7 @@ var require_detect_libc = __commonJS({
|
|
|
2748
2748
|
}
|
|
2749
2749
|
cachedVersionFilesystem = null;
|
|
2750
2750
|
try {
|
|
2751
|
-
const lddContent =
|
|
2751
|
+
const lddContent = readFileSync3(LDD_PATH);
|
|
2752
2752
|
const versionMatch = lddContent.match(RE_GLIBC_VERSION);
|
|
2753
2753
|
if (versionMatch) {
|
|
2754
2754
|
cachedVersionFilesystem = versionMatch[1];
|
|
@@ -2764,7 +2764,7 @@ var require_detect_libc = __commonJS({
|
|
|
2764
2764
|
}
|
|
2765
2765
|
return null;
|
|
2766
2766
|
};
|
|
2767
|
-
var versionSuffix = (
|
|
2767
|
+
var versionSuffix = (s) => s.trim().split(/\s+/)[1];
|
|
2768
2768
|
var versionFromCommand = (out) => {
|
|
2769
2769
|
const [getconf, ldd1, ldd2] = out.split(/[\r\n]+/);
|
|
2770
2770
|
if (getconf && getconf.includes(GLIBC)) {
|
|
@@ -3020,14 +3020,14 @@ var require_semver = __commonJS({
|
|
|
3020
3020
|
this.options = options;
|
|
3021
3021
|
this.loose = !!options.loose;
|
|
3022
3022
|
this.includePrerelease = !!options.includePrerelease;
|
|
3023
|
-
const
|
|
3024
|
-
if (!
|
|
3023
|
+
const m3 = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]);
|
|
3024
|
+
if (!m3) {
|
|
3025
3025
|
throw new TypeError(`Invalid Version: ${version}`);
|
|
3026
3026
|
}
|
|
3027
3027
|
this.raw = version;
|
|
3028
|
-
this.major = +
|
|
3029
|
-
this.minor = +
|
|
3030
|
-
this.patch = +
|
|
3028
|
+
this.major = +m3[1];
|
|
3029
|
+
this.minor = +m3[2];
|
|
3030
|
+
this.patch = +m3[3];
|
|
3031
3031
|
if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
|
|
3032
3032
|
throw new TypeError("Invalid major version");
|
|
3033
3033
|
}
|
|
@@ -3037,10 +3037,10 @@ var require_semver = __commonJS({
|
|
|
3037
3037
|
if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
|
|
3038
3038
|
throw new TypeError("Invalid patch version");
|
|
3039
3039
|
}
|
|
3040
|
-
if (!
|
|
3040
|
+
if (!m3[4]) {
|
|
3041
3041
|
this.prerelease = [];
|
|
3042
3042
|
} else {
|
|
3043
|
-
this.prerelease =
|
|
3043
|
+
this.prerelease = m3[4].split(".").map((id) => {
|
|
3044
3044
|
if (/^[0-9]+$/.test(id)) {
|
|
3045
3045
|
const num = +id;
|
|
3046
3046
|
if (num >= 0 && num < MAX_SAFE_INTEGER) {
|
|
@@ -3050,7 +3050,7 @@ var require_semver = __commonJS({
|
|
|
3050
3050
|
return id;
|
|
3051
3051
|
});
|
|
3052
3052
|
}
|
|
3053
|
-
this.build =
|
|
3053
|
+
this.build = m3[5] ? m3[5].split(".") : [];
|
|
3054
3054
|
this.format();
|
|
3055
3055
|
}
|
|
3056
3056
|
format() {
|
|
@@ -3111,11 +3111,11 @@ var require_semver = __commonJS({
|
|
|
3111
3111
|
} else if (!this.prerelease.length && !other.prerelease.length) {
|
|
3112
3112
|
return 0;
|
|
3113
3113
|
}
|
|
3114
|
-
let
|
|
3114
|
+
let i3 = 0;
|
|
3115
3115
|
do {
|
|
3116
|
-
const a2 = this.prerelease[
|
|
3117
|
-
const b = other.prerelease[
|
|
3118
|
-
debug("prerelease compare",
|
|
3116
|
+
const a2 = this.prerelease[i3];
|
|
3117
|
+
const b = other.prerelease[i3];
|
|
3118
|
+
debug("prerelease compare", i3, a2, b);
|
|
3119
3119
|
if (a2 === void 0 && b === void 0) {
|
|
3120
3120
|
return 0;
|
|
3121
3121
|
} else if (b === void 0) {
|
|
@@ -3127,17 +3127,17 @@ var require_semver = __commonJS({
|
|
|
3127
3127
|
} else {
|
|
3128
3128
|
return compareIdentifiers(a2, b);
|
|
3129
3129
|
}
|
|
3130
|
-
} while (++
|
|
3130
|
+
} while (++i3);
|
|
3131
3131
|
}
|
|
3132
3132
|
compareBuild(other) {
|
|
3133
3133
|
if (!(other instanceof _SemVer)) {
|
|
3134
3134
|
other = new _SemVer(other, this.options);
|
|
3135
3135
|
}
|
|
3136
|
-
let
|
|
3136
|
+
let i3 = 0;
|
|
3137
3137
|
do {
|
|
3138
|
-
const a2 = this.build[
|
|
3139
|
-
const b = other.build[
|
|
3140
|
-
debug("build compare",
|
|
3138
|
+
const a2 = this.build[i3];
|
|
3139
|
+
const b = other.build[i3];
|
|
3140
|
+
debug("build compare", i3, a2, b);
|
|
3141
3141
|
if (a2 === void 0 && b === void 0) {
|
|
3142
3142
|
return 0;
|
|
3143
3143
|
} else if (b === void 0) {
|
|
@@ -3149,7 +3149,7 @@ var require_semver = __commonJS({
|
|
|
3149
3149
|
} else {
|
|
3150
3150
|
return compareIdentifiers(a2, b);
|
|
3151
3151
|
}
|
|
3152
|
-
} while (++
|
|
3152
|
+
} while (++i3);
|
|
3153
3153
|
}
|
|
3154
3154
|
// preminor will bump the version up to the next minor release, and immediately
|
|
3155
3155
|
// down to pre-release. premajor and prepatch work the same way.
|
|
@@ -3226,14 +3226,14 @@ var require_semver = __commonJS({
|
|
|
3226
3226
|
if (this.prerelease.length === 0) {
|
|
3227
3227
|
this.prerelease = [base];
|
|
3228
3228
|
} else {
|
|
3229
|
-
let
|
|
3230
|
-
while (--
|
|
3231
|
-
if (typeof this.prerelease[
|
|
3232
|
-
this.prerelease[
|
|
3233
|
-
|
|
3229
|
+
let i3 = this.prerelease.length;
|
|
3230
|
+
while (--i3 >= 0) {
|
|
3231
|
+
if (typeof this.prerelease[i3] === "number") {
|
|
3232
|
+
this.prerelease[i3]++;
|
|
3233
|
+
i3 = -2;
|
|
3234
3234
|
}
|
|
3235
3235
|
}
|
|
3236
|
-
if (
|
|
3236
|
+
if (i3 === -1) {
|
|
3237
3237
|
if (identifier === this.prerelease.join(".") && identifierBase === false) {
|
|
3238
3238
|
throw new Error("invalid increment argument: identifier already exists");
|
|
3239
3239
|
}
|
|
@@ -3527,18 +3527,18 @@ var require_comparator = __commonJS({
|
|
|
3527
3527
|
}
|
|
3528
3528
|
parse(comp) {
|
|
3529
3529
|
const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];
|
|
3530
|
-
const
|
|
3531
|
-
if (!
|
|
3530
|
+
const m3 = comp.match(r);
|
|
3531
|
+
if (!m3) {
|
|
3532
3532
|
throw new TypeError(`Invalid comparator: ${comp}`);
|
|
3533
3533
|
}
|
|
3534
|
-
this.operator =
|
|
3534
|
+
this.operator = m3[1] !== void 0 ? m3[1] : "";
|
|
3535
3535
|
if (this.operator === "=") {
|
|
3536
3536
|
this.operator = "";
|
|
3537
3537
|
}
|
|
3538
|
-
if (!
|
|
3538
|
+
if (!m3[2]) {
|
|
3539
3539
|
this.semver = ANY;
|
|
3540
3540
|
} else {
|
|
3541
|
-
this.semver = new SemVer(
|
|
3541
|
+
this.semver = new SemVer(m3[2], this.options.loose);
|
|
3542
3542
|
}
|
|
3543
3543
|
}
|
|
3544
3544
|
toString() {
|
|
@@ -3633,19 +3633,19 @@ var require_range = __commonJS({
|
|
|
3633
3633
|
this.loose = !!options.loose;
|
|
3634
3634
|
this.includePrerelease = !!options.includePrerelease;
|
|
3635
3635
|
this.raw = range.trim().replace(SPACE_CHARACTERS, " ");
|
|
3636
|
-
this.set = this.raw.split("||").map((r) => this.parseRange(r.trim())).filter((
|
|
3636
|
+
this.set = this.raw.split("||").map((r) => this.parseRange(r.trim())).filter((c3) => c3.length);
|
|
3637
3637
|
if (!this.set.length) {
|
|
3638
3638
|
throw new TypeError(`Invalid SemVer Range: ${this.raw}`);
|
|
3639
3639
|
}
|
|
3640
3640
|
if (this.set.length > 1) {
|
|
3641
3641
|
const first = this.set[0];
|
|
3642
|
-
this.set = this.set.filter((
|
|
3642
|
+
this.set = this.set.filter((c3) => !isNullSet(c3[0]));
|
|
3643
3643
|
if (this.set.length === 0) {
|
|
3644
3644
|
this.set = [first];
|
|
3645
3645
|
} else if (this.set.length > 1) {
|
|
3646
|
-
for (const
|
|
3647
|
-
if (
|
|
3648
|
-
this.set = [
|
|
3646
|
+
for (const c3 of this.set) {
|
|
3647
|
+
if (c3.length === 1 && isAny(c3[0])) {
|
|
3648
|
+
this.set = [c3];
|
|
3649
3649
|
break;
|
|
3650
3650
|
}
|
|
3651
3651
|
}
|
|
@@ -3656,11 +3656,11 @@ var require_range = __commonJS({
|
|
|
3656
3656
|
get range() {
|
|
3657
3657
|
if (this.formatted === void 0) {
|
|
3658
3658
|
this.formatted = "";
|
|
3659
|
-
for (let
|
|
3660
|
-
if (
|
|
3659
|
+
for (let i3 = 0; i3 < this.set.length; i3++) {
|
|
3660
|
+
if (i3 > 0) {
|
|
3661
3661
|
this.formatted += "||";
|
|
3662
3662
|
}
|
|
3663
|
-
const comps = this.set[
|
|
3663
|
+
const comps = this.set[i3];
|
|
3664
3664
|
for (let k = 0; k < comps.length; k++) {
|
|
3665
3665
|
if (k > 0) {
|
|
3666
3666
|
this.formatted += " ";
|
|
@@ -3743,8 +3743,8 @@ var require_range = __commonJS({
|
|
|
3743
3743
|
return false;
|
|
3744
3744
|
}
|
|
3745
3745
|
}
|
|
3746
|
-
for (let
|
|
3747
|
-
if (testSet(this.set[
|
|
3746
|
+
for (let i3 = 0; i3 < this.set.length; i3++) {
|
|
3747
|
+
if (testSet(this.set[i3], version, this.options)) {
|
|
3748
3748
|
return true;
|
|
3749
3749
|
}
|
|
3750
3750
|
}
|
|
@@ -3766,8 +3766,8 @@ var require_range = __commonJS({
|
|
|
3766
3766
|
caretTrimReplace
|
|
3767
3767
|
} = require_re();
|
|
3768
3768
|
var { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require_constants2();
|
|
3769
|
-
var isNullSet = (
|
|
3770
|
-
var isAny = (
|
|
3769
|
+
var isNullSet = (c3) => c3.value === "<0.0.0-0";
|
|
3770
|
+
var isAny = (c3) => c3.value === "";
|
|
3771
3771
|
var isSatisfiable = (comparators, options) => {
|
|
3772
3772
|
let result = true;
|
|
3773
3773
|
const remainingComparators = comparators.slice();
|
|
@@ -3795,70 +3795,70 @@ var require_range = __commonJS({
|
|
|
3795
3795
|
};
|
|
3796
3796
|
var isX = (id) => !id || id.toLowerCase() === "x" || id === "*";
|
|
3797
3797
|
var replaceTildes = (comp, options) => {
|
|
3798
|
-
return comp.trim().split(/\s+/).map((
|
|
3798
|
+
return comp.trim().split(/\s+/).map((c3) => replaceTilde(c3, options)).join(" ");
|
|
3799
3799
|
};
|
|
3800
3800
|
var replaceTilde = (comp, options) => {
|
|
3801
3801
|
const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];
|
|
3802
|
-
return comp.replace(r, (_2, M,
|
|
3803
|
-
debug("tilde", comp, _2, M,
|
|
3802
|
+
return comp.replace(r, (_2, M, m3, p3, pr) => {
|
|
3803
|
+
debug("tilde", comp, _2, M, m3, p3, pr);
|
|
3804
3804
|
let ret;
|
|
3805
3805
|
if (isX(M)) {
|
|
3806
3806
|
ret = "";
|
|
3807
|
-
} else if (isX(
|
|
3807
|
+
} else if (isX(m3)) {
|
|
3808
3808
|
ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;
|
|
3809
|
-
} else if (isX(
|
|
3810
|
-
ret = `>=${M}.${
|
|
3809
|
+
} else if (isX(p3)) {
|
|
3810
|
+
ret = `>=${M}.${m3}.0 <${M}.${+m3 + 1}.0-0`;
|
|
3811
3811
|
} else if (pr) {
|
|
3812
3812
|
debug("replaceTilde pr", pr);
|
|
3813
|
-
ret = `>=${M}.${
|
|
3813
|
+
ret = `>=${M}.${m3}.${p3}-${pr} <${M}.${+m3 + 1}.0-0`;
|
|
3814
3814
|
} else {
|
|
3815
|
-
ret = `>=${M}.${
|
|
3815
|
+
ret = `>=${M}.${m3}.${p3} <${M}.${+m3 + 1}.0-0`;
|
|
3816
3816
|
}
|
|
3817
3817
|
debug("tilde return", ret);
|
|
3818
3818
|
return ret;
|
|
3819
3819
|
});
|
|
3820
3820
|
};
|
|
3821
3821
|
var replaceCarets = (comp, options) => {
|
|
3822
|
-
return comp.trim().split(/\s+/).map((
|
|
3822
|
+
return comp.trim().split(/\s+/).map((c3) => replaceCaret(c3, options)).join(" ");
|
|
3823
3823
|
};
|
|
3824
3824
|
var replaceCaret = (comp, options) => {
|
|
3825
3825
|
debug("caret", comp, options);
|
|
3826
3826
|
const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET];
|
|
3827
3827
|
const z2 = options.includePrerelease ? "-0" : "";
|
|
3828
|
-
return comp.replace(r, (_2, M,
|
|
3829
|
-
debug("caret", comp, _2, M,
|
|
3828
|
+
return comp.replace(r, (_2, M, m3, p3, pr) => {
|
|
3829
|
+
debug("caret", comp, _2, M, m3, p3, pr);
|
|
3830
3830
|
let ret;
|
|
3831
3831
|
if (isX(M)) {
|
|
3832
3832
|
ret = "";
|
|
3833
|
-
} else if (isX(
|
|
3833
|
+
} else if (isX(m3)) {
|
|
3834
3834
|
ret = `>=${M}.0.0${z2} <${+M + 1}.0.0-0`;
|
|
3835
|
-
} else if (isX(
|
|
3835
|
+
} else if (isX(p3)) {
|
|
3836
3836
|
if (M === "0") {
|
|
3837
|
-
ret = `>=${M}.${
|
|
3837
|
+
ret = `>=${M}.${m3}.0${z2} <${M}.${+m3 + 1}.0-0`;
|
|
3838
3838
|
} else {
|
|
3839
|
-
ret = `>=${M}.${
|
|
3839
|
+
ret = `>=${M}.${m3}.0${z2} <${+M + 1}.0.0-0`;
|
|
3840
3840
|
}
|
|
3841
3841
|
} else if (pr) {
|
|
3842
3842
|
debug("replaceCaret pr", pr);
|
|
3843
3843
|
if (M === "0") {
|
|
3844
|
-
if (
|
|
3845
|
-
ret = `>=${M}.${
|
|
3844
|
+
if (m3 === "0") {
|
|
3845
|
+
ret = `>=${M}.${m3}.${p3}-${pr} <${M}.${m3}.${+p3 + 1}-0`;
|
|
3846
3846
|
} else {
|
|
3847
|
-
ret = `>=${M}.${
|
|
3847
|
+
ret = `>=${M}.${m3}.${p3}-${pr} <${M}.${+m3 + 1}.0-0`;
|
|
3848
3848
|
}
|
|
3849
3849
|
} else {
|
|
3850
|
-
ret = `>=${M}.${
|
|
3850
|
+
ret = `>=${M}.${m3}.${p3}-${pr} <${+M + 1}.0.0-0`;
|
|
3851
3851
|
}
|
|
3852
3852
|
} else {
|
|
3853
3853
|
debug("no pr");
|
|
3854
3854
|
if (M === "0") {
|
|
3855
|
-
if (
|
|
3856
|
-
ret = `>=${M}.${
|
|
3855
|
+
if (m3 === "0") {
|
|
3856
|
+
ret = `>=${M}.${m3}.${p3}${z2} <${M}.${m3}.${+p3 + 1}-0`;
|
|
3857
3857
|
} else {
|
|
3858
|
-
ret = `>=${M}.${
|
|
3858
|
+
ret = `>=${M}.${m3}.${p3}${z2} <${M}.${+m3 + 1}.0-0`;
|
|
3859
3859
|
}
|
|
3860
3860
|
} else {
|
|
3861
|
-
ret = `>=${M}.${
|
|
3861
|
+
ret = `>=${M}.${m3}.${p3} <${+M + 1}.0.0-0`;
|
|
3862
3862
|
}
|
|
3863
3863
|
}
|
|
3864
3864
|
debug("caret return", ret);
|
|
@@ -3867,16 +3867,16 @@ var require_range = __commonJS({
|
|
|
3867
3867
|
};
|
|
3868
3868
|
var replaceXRanges = (comp, options) => {
|
|
3869
3869
|
debug("replaceXRanges", comp, options);
|
|
3870
|
-
return comp.split(/\s+/).map((
|
|
3870
|
+
return comp.split(/\s+/).map((c3) => replaceXRange(c3, options)).join(" ");
|
|
3871
3871
|
};
|
|
3872
3872
|
var replaceXRange = (comp, options) => {
|
|
3873
3873
|
comp = comp.trim();
|
|
3874
3874
|
const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];
|
|
3875
|
-
return comp.replace(r, (ret, gtlt, M,
|
|
3876
|
-
debug("xRange", comp, ret, gtlt, M,
|
|
3875
|
+
return comp.replace(r, (ret, gtlt, M, m3, p3, pr) => {
|
|
3876
|
+
debug("xRange", comp, ret, gtlt, M, m3, p3, pr);
|
|
3877
3877
|
const xM = isX(M);
|
|
3878
|
-
const xm = xM || isX(
|
|
3879
|
-
const xp = xm || isX(
|
|
3878
|
+
const xm = xM || isX(m3);
|
|
3879
|
+
const xp = xm || isX(p3);
|
|
3880
3880
|
const anyX = xp;
|
|
3881
3881
|
if (gtlt === "=" && anyX) {
|
|
3882
3882
|
gtlt = "";
|
|
@@ -3890,35 +3890,35 @@ var require_range = __commonJS({
|
|
|
3890
3890
|
}
|
|
3891
3891
|
} else if (gtlt && anyX) {
|
|
3892
3892
|
if (xm) {
|
|
3893
|
-
|
|
3893
|
+
m3 = 0;
|
|
3894
3894
|
}
|
|
3895
|
-
|
|
3895
|
+
p3 = 0;
|
|
3896
3896
|
if (gtlt === ">") {
|
|
3897
3897
|
gtlt = ">=";
|
|
3898
3898
|
if (xm) {
|
|
3899
3899
|
M = +M + 1;
|
|
3900
|
-
|
|
3901
|
-
|
|
3900
|
+
m3 = 0;
|
|
3901
|
+
p3 = 0;
|
|
3902
3902
|
} else {
|
|
3903
|
-
|
|
3904
|
-
|
|
3903
|
+
m3 = +m3 + 1;
|
|
3904
|
+
p3 = 0;
|
|
3905
3905
|
}
|
|
3906
3906
|
} else if (gtlt === "<=") {
|
|
3907
3907
|
gtlt = "<";
|
|
3908
3908
|
if (xm) {
|
|
3909
3909
|
M = +M + 1;
|
|
3910
3910
|
} else {
|
|
3911
|
-
|
|
3911
|
+
m3 = +m3 + 1;
|
|
3912
3912
|
}
|
|
3913
3913
|
}
|
|
3914
3914
|
if (gtlt === "<") {
|
|
3915
3915
|
pr = "-0";
|
|
3916
3916
|
}
|
|
3917
|
-
ret = `${gtlt + M}.${
|
|
3917
|
+
ret = `${gtlt + M}.${m3}.${p3}${pr}`;
|
|
3918
3918
|
} else if (xm) {
|
|
3919
3919
|
ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;
|
|
3920
3920
|
} else if (xp) {
|
|
3921
|
-
ret = `>=${M}.${
|
|
3921
|
+
ret = `>=${M}.${m3}.0${pr} <${M}.${+m3 + 1}.0-0`;
|
|
3922
3922
|
}
|
|
3923
3923
|
debug("xRange return", ret);
|
|
3924
3924
|
return ret;
|
|
@@ -3960,19 +3960,19 @@ var require_range = __commonJS({
|
|
|
3960
3960
|
return `${from} ${to}`.trim();
|
|
3961
3961
|
};
|
|
3962
3962
|
var testSet = (set, version, options) => {
|
|
3963
|
-
for (let
|
|
3964
|
-
if (!set[
|
|
3963
|
+
for (let i3 = 0; i3 < set.length; i3++) {
|
|
3964
|
+
if (!set[i3].test(version)) {
|
|
3965
3965
|
return false;
|
|
3966
3966
|
}
|
|
3967
3967
|
}
|
|
3968
3968
|
if (version.prerelease.length && !options.includePrerelease) {
|
|
3969
|
-
for (let
|
|
3970
|
-
debug(set[
|
|
3971
|
-
if (set[
|
|
3969
|
+
for (let i3 = 0; i3 < set.length; i3++) {
|
|
3970
|
+
debug(set[i3].semver);
|
|
3971
|
+
if (set[i3].semver === Comparator.ANY) {
|
|
3972
3972
|
continue;
|
|
3973
3973
|
}
|
|
3974
|
-
if (set[
|
|
3975
|
-
const allowed = set[
|
|
3974
|
+
if (set[i3].semver.prerelease.length > 0) {
|
|
3975
|
+
const allowed = set[i3].semver;
|
|
3976
3976
|
if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) {
|
|
3977
3977
|
return true;
|
|
3978
3978
|
}
|
|
@@ -4306,7 +4306,7 @@ var require_libvips = __commonJS({
|
|
|
4306
4306
|
}
|
|
4307
4307
|
return false;
|
|
4308
4308
|
};
|
|
4309
|
-
var sha512 = (
|
|
4309
|
+
var sha512 = (s) => createHash("sha512").update(s).digest("hex");
|
|
4310
4310
|
var yarnLocator = () => {
|
|
4311
4311
|
try {
|
|
4312
4312
|
const identHash = sha512(`imgsharp-libvips-${buildPlatformArch()}`);
|
|
@@ -4780,7 +4780,7 @@ var require_input = __commonJS({
|
|
|
4780
4780
|
"tiffSubifd"
|
|
4781
4781
|
];
|
|
4782
4782
|
function _inputOptionsFromObject(obj) {
|
|
4783
|
-
const params = inputStreamParameters.filter((
|
|
4783
|
+
const params = inputStreamParameters.filter((p3) => is.defined(obj[p3])).map((p3) => [p3, obj[p3]]);
|
|
4784
4784
|
return params.length ? Object.fromEntries(params) : void 0;
|
|
4785
4785
|
}
|
|
4786
4786
|
function _createInputDescriptor(input, inputOptions, containerOptions) {
|
|
@@ -4820,7 +4820,7 @@ var require_input = __commonJS({
|
|
|
4820
4820
|
if (input.length > 1) {
|
|
4821
4821
|
if (!this.options.joining) {
|
|
4822
4822
|
this.options.joining = true;
|
|
4823
|
-
this.options.join = input.map((
|
|
4823
|
+
this.options.join = input.map((i3) => this._createInputDescriptor(i3));
|
|
4824
4824
|
} else {
|
|
4825
4825
|
throw new Error("Recursive join is unsupported");
|
|
4826
4826
|
}
|
|
@@ -6422,14 +6422,14 @@ var require_color = __commonJS({
|
|
|
6422
6422
|
const keyword = /^(\w+)$/;
|
|
6423
6423
|
let rgb = [0, 0, 0, 1];
|
|
6424
6424
|
let match;
|
|
6425
|
-
let
|
|
6425
|
+
let i3;
|
|
6426
6426
|
let hexAlpha;
|
|
6427
6427
|
if (match = string.match(hex)) {
|
|
6428
6428
|
hexAlpha = match[2];
|
|
6429
6429
|
match = match[1];
|
|
6430
|
-
for (
|
|
6431
|
-
const i22 =
|
|
6432
|
-
rgb[
|
|
6430
|
+
for (i3 = 0; i3 < 3; i3++) {
|
|
6431
|
+
const i22 = i3 * 2;
|
|
6432
|
+
rgb[i3] = Number.parseInt(match.slice(i22, i22 + 2), 16);
|
|
6433
6433
|
}
|
|
6434
6434
|
if (hexAlpha) {
|
|
6435
6435
|
rgb[3] = Number.parseInt(hexAlpha, 16) / 255;
|
|
@@ -6437,22 +6437,22 @@ var require_color = __commonJS({
|
|
|
6437
6437
|
} else if (match = string.match(abbr)) {
|
|
6438
6438
|
match = match[1];
|
|
6439
6439
|
hexAlpha = match[3];
|
|
6440
|
-
for (
|
|
6441
|
-
rgb[
|
|
6440
|
+
for (i3 = 0; i3 < 3; i3++) {
|
|
6441
|
+
rgb[i3] = Number.parseInt(match[i3] + match[i3], 16);
|
|
6442
6442
|
}
|
|
6443
6443
|
if (hexAlpha) {
|
|
6444
6444
|
rgb[3] = Number.parseInt(hexAlpha + hexAlpha, 16) / 255;
|
|
6445
6445
|
}
|
|
6446
6446
|
} else if (match = string.match(rgba)) {
|
|
6447
|
-
for (
|
|
6448
|
-
rgb[
|
|
6447
|
+
for (i3 = 0; i3 < 3; i3++) {
|
|
6448
|
+
rgb[i3] = Number.parseInt(match[i3 + 1], 10);
|
|
6449
6449
|
}
|
|
6450
6450
|
if (match[4]) {
|
|
6451
6451
|
rgb[3] = match[5] ? Number.parseFloat(match[4]) * 0.01 : Number.parseFloat(match[4]);
|
|
6452
6452
|
}
|
|
6453
6453
|
} else if (match = string.match(per)) {
|
|
6454
|
-
for (
|
|
6455
|
-
rgb[
|
|
6454
|
+
for (i3 = 0; i3 < 3; i3++) {
|
|
6455
|
+
rgb[i3] = Math.round(Number.parseFloat(match[i3 + 1]) * 2.55);
|
|
6456
6456
|
}
|
|
6457
6457
|
if (match[4]) {
|
|
6458
6458
|
rgb[3] = match[5] ? Number.parseFloat(match[4]) * 0.01 : Number.parseFloat(match[4]);
|
|
@@ -6470,8 +6470,8 @@ var require_color = __commonJS({
|
|
|
6470
6470
|
} else {
|
|
6471
6471
|
return null;
|
|
6472
6472
|
}
|
|
6473
|
-
for (
|
|
6474
|
-
rgb[
|
|
6473
|
+
for (i3 = 0; i3 < 3; i3++) {
|
|
6474
|
+
rgb[i3] = clamp(rgb[i3], 0, 255);
|
|
6475
6475
|
}
|
|
6476
6476
|
rgb[3] = clamp(rgb[3], 0, 1);
|
|
6477
6477
|
return rgb;
|
|
@@ -6484,11 +6484,11 @@ var require_color = __commonJS({
|
|
|
6484
6484
|
const match = string.match(hsl);
|
|
6485
6485
|
if (match) {
|
|
6486
6486
|
const alpha = Number.parseFloat(match[4]);
|
|
6487
|
-
const
|
|
6488
|
-
const
|
|
6489
|
-
const
|
|
6487
|
+
const h4 = (Number.parseFloat(match[1]) % 360 + 360) % 360;
|
|
6488
|
+
const s = clamp(Number.parseFloat(match[2]), 0, 100);
|
|
6489
|
+
const l2 = clamp(Number.parseFloat(match[3]), 0, 100);
|
|
6490
6490
|
const a2 = clamp(Number.isNaN(alpha) ? 1 : alpha, 0, 1);
|
|
6491
|
-
return [
|
|
6491
|
+
return [h4, s, l2, a2];
|
|
6492
6492
|
}
|
|
6493
6493
|
return null;
|
|
6494
6494
|
};
|
|
@@ -6500,11 +6500,11 @@ var require_color = __commonJS({
|
|
|
6500
6500
|
const match = string.match(hwb);
|
|
6501
6501
|
if (match) {
|
|
6502
6502
|
const alpha = Number.parseFloat(match[4]);
|
|
6503
|
-
const
|
|
6503
|
+
const h4 = (Number.parseFloat(match[1]) % 360 + 360) % 360;
|
|
6504
6504
|
const w = clamp(Number.parseFloat(match[2]), 0, 100);
|
|
6505
6505
|
const b = clamp(Number.parseFloat(match[3]), 0, 100);
|
|
6506
6506
|
const a2 = clamp(Number.isNaN(alpha) ? 1 : alpha, 0, 1);
|
|
6507
|
-
return [
|
|
6507
|
+
return [h4, w, b, a2];
|
|
6508
6508
|
}
|
|
6509
6509
|
return null;
|
|
6510
6510
|
};
|
|
@@ -6566,12 +6566,12 @@ var require_color = __commonJS({
|
|
|
6566
6566
|
};
|
|
6567
6567
|
var conversions_default = convert;
|
|
6568
6568
|
var LAB_FT = (6 / 29) ** 3;
|
|
6569
|
-
function srgbNonlinearTransform(
|
|
6570
|
-
const cc =
|
|
6569
|
+
function srgbNonlinearTransform(c3) {
|
|
6570
|
+
const cc = c3 > 31308e-7 ? 1.055 * c3 ** (1 / 2.4) - 0.055 : c3 * 12.92;
|
|
6571
6571
|
return Math.min(Math.max(0, cc), 1);
|
|
6572
6572
|
}
|
|
6573
|
-
function srgbNonlinearTransformInv(
|
|
6574
|
-
return
|
|
6573
|
+
function srgbNonlinearTransformInv(c3) {
|
|
6574
|
+
return c3 > 0.04045 ? ((c3 + 0.055) / 1.055) ** 2.4 : c3 / 12.92;
|
|
6575
6575
|
}
|
|
6576
6576
|
for (const model of Object.keys(convert)) {
|
|
6577
6577
|
if (!("channels" in convert[model])) {
|
|
@@ -6596,85 +6596,85 @@ var require_color = __commonJS({
|
|
|
6596
6596
|
const min = Math.min(r, g2, b);
|
|
6597
6597
|
const max = Math.max(r, g2, b);
|
|
6598
6598
|
const delta = max - min;
|
|
6599
|
-
let
|
|
6600
|
-
let
|
|
6599
|
+
let h4;
|
|
6600
|
+
let s;
|
|
6601
6601
|
switch (max) {
|
|
6602
6602
|
case min: {
|
|
6603
|
-
|
|
6603
|
+
h4 = 0;
|
|
6604
6604
|
break;
|
|
6605
6605
|
}
|
|
6606
6606
|
case r: {
|
|
6607
|
-
|
|
6607
|
+
h4 = (g2 - b) / delta;
|
|
6608
6608
|
break;
|
|
6609
6609
|
}
|
|
6610
6610
|
case g2: {
|
|
6611
|
-
|
|
6611
|
+
h4 = 2 + (b - r) / delta;
|
|
6612
6612
|
break;
|
|
6613
6613
|
}
|
|
6614
6614
|
case b: {
|
|
6615
|
-
|
|
6615
|
+
h4 = 4 + (r - g2) / delta;
|
|
6616
6616
|
break;
|
|
6617
6617
|
}
|
|
6618
6618
|
}
|
|
6619
|
-
|
|
6620
|
-
if (
|
|
6621
|
-
|
|
6619
|
+
h4 = Math.min(h4 * 60, 360);
|
|
6620
|
+
if (h4 < 0) {
|
|
6621
|
+
h4 += 360;
|
|
6622
6622
|
}
|
|
6623
|
-
const
|
|
6623
|
+
const l2 = (min + max) / 2;
|
|
6624
6624
|
if (max === min) {
|
|
6625
|
-
|
|
6626
|
-
} else if (
|
|
6627
|
-
|
|
6625
|
+
s = 0;
|
|
6626
|
+
} else if (l2 <= 0.5) {
|
|
6627
|
+
s = delta / (max + min);
|
|
6628
6628
|
} else {
|
|
6629
|
-
|
|
6629
|
+
s = delta / (2 - max - min);
|
|
6630
6630
|
}
|
|
6631
|
-
return [
|
|
6631
|
+
return [h4, s * 100, l2 * 100];
|
|
6632
6632
|
};
|
|
6633
6633
|
convert.rgb.hsv = function(rgb) {
|
|
6634
6634
|
let rdif;
|
|
6635
6635
|
let gdif;
|
|
6636
6636
|
let bdif;
|
|
6637
|
-
let
|
|
6638
|
-
let
|
|
6637
|
+
let h4;
|
|
6638
|
+
let s;
|
|
6639
6639
|
const r = rgb[0] / 255;
|
|
6640
6640
|
const g2 = rgb[1] / 255;
|
|
6641
6641
|
const b = rgb[2] / 255;
|
|
6642
6642
|
const v = Math.max(r, g2, b);
|
|
6643
6643
|
const diff = v - Math.min(r, g2, b);
|
|
6644
|
-
const diffc = function(
|
|
6645
|
-
return (v -
|
|
6644
|
+
const diffc = function(c3) {
|
|
6645
|
+
return (v - c3) / 6 / diff + 1 / 2;
|
|
6646
6646
|
};
|
|
6647
6647
|
if (diff === 0) {
|
|
6648
|
-
|
|
6649
|
-
|
|
6648
|
+
h4 = 0;
|
|
6649
|
+
s = 0;
|
|
6650
6650
|
} else {
|
|
6651
|
-
|
|
6651
|
+
s = diff / v;
|
|
6652
6652
|
rdif = diffc(r);
|
|
6653
6653
|
gdif = diffc(g2);
|
|
6654
6654
|
bdif = diffc(b);
|
|
6655
6655
|
switch (v) {
|
|
6656
6656
|
case r: {
|
|
6657
|
-
|
|
6657
|
+
h4 = bdif - gdif;
|
|
6658
6658
|
break;
|
|
6659
6659
|
}
|
|
6660
6660
|
case g2: {
|
|
6661
|
-
|
|
6661
|
+
h4 = 1 / 3 + rdif - bdif;
|
|
6662
6662
|
break;
|
|
6663
6663
|
}
|
|
6664
6664
|
case b: {
|
|
6665
|
-
|
|
6665
|
+
h4 = 2 / 3 + gdif - rdif;
|
|
6666
6666
|
break;
|
|
6667
6667
|
}
|
|
6668
6668
|
}
|
|
6669
|
-
if (
|
|
6670
|
-
|
|
6671
|
-
} else if (
|
|
6672
|
-
|
|
6669
|
+
if (h4 < 0) {
|
|
6670
|
+
h4 += 1;
|
|
6671
|
+
} else if (h4 > 1) {
|
|
6672
|
+
h4 -= 1;
|
|
6673
6673
|
}
|
|
6674
6674
|
}
|
|
6675
6675
|
return [
|
|
6676
|
-
|
|
6677
|
-
|
|
6676
|
+
h4 * 360,
|
|
6677
|
+
s * 100,
|
|
6678
6678
|
v * 100
|
|
6679
6679
|
];
|
|
6680
6680
|
};
|
|
@@ -6682,10 +6682,10 @@ var require_color = __commonJS({
|
|
|
6682
6682
|
const r = rgb[0];
|
|
6683
6683
|
const g2 = rgb[1];
|
|
6684
6684
|
let b = rgb[2];
|
|
6685
|
-
const
|
|
6685
|
+
const h4 = convert.rgb.hsl(rgb)[0];
|
|
6686
6686
|
const w = 1 / 255 * Math.min(r, Math.min(g2, b));
|
|
6687
6687
|
b = 1 - 1 / 255 * Math.max(r, Math.max(g2, b));
|
|
6688
|
-
return [
|
|
6688
|
+
return [h4, w * 100, b * 100];
|
|
6689
6689
|
};
|
|
6690
6690
|
convert.rgb.oklab = function(rgb) {
|
|
6691
6691
|
const r = srgbNonlinearTransformInv(rgb[0] / 255);
|
|
@@ -6694,20 +6694,20 @@ var require_color = __commonJS({
|
|
|
6694
6694
|
const lp = Math.cbrt(0.4122214708 * r + 0.5363325363 * g2 + 0.0514459929 * b);
|
|
6695
6695
|
const mp = Math.cbrt(0.2119034982 * r + 0.6806995451 * g2 + 0.1073969566 * b);
|
|
6696
6696
|
const sp = Math.cbrt(0.0883024619 * r + 0.2817188376 * g2 + 0.6299787005 * b);
|
|
6697
|
-
const
|
|
6697
|
+
const l2 = 0.2104542553 * lp + 0.793617785 * mp - 0.0040720468 * sp;
|
|
6698
6698
|
const aa = 1.9779984951 * lp - 2.428592205 * mp + 0.4505937099 * sp;
|
|
6699
6699
|
const bb = 0.0259040371 * lp + 0.7827717662 * mp - 0.808675766 * sp;
|
|
6700
|
-
return [
|
|
6700
|
+
return [l2 * 100, aa * 100, bb * 100];
|
|
6701
6701
|
};
|
|
6702
6702
|
convert.rgb.cmyk = function(rgb) {
|
|
6703
6703
|
const r = rgb[0] / 255;
|
|
6704
6704
|
const g2 = rgb[1] / 255;
|
|
6705
6705
|
const b = rgb[2] / 255;
|
|
6706
6706
|
const k = Math.min(1 - r, 1 - g2, 1 - b);
|
|
6707
|
-
const
|
|
6708
|
-
const
|
|
6707
|
+
const c3 = (1 - r - k) / (1 - k) || 0;
|
|
6708
|
+
const m3 = (1 - g2 - k) / (1 - k) || 0;
|
|
6709
6709
|
const y = (1 - b - k) / (1 - k) || 0;
|
|
6710
|
-
return [
|
|
6710
|
+
return [c3 * 100, m3 * 100, y * 100, k * 100];
|
|
6711
6711
|
};
|
|
6712
6712
|
function comparativeDistance(x, y) {
|
|
6713
6713
|
return (x[0] - y[0]) ** 2 + (x[1] - y[1]) ** 2 + (x[2] - y[2]) ** 2;
|
|
@@ -6752,26 +6752,26 @@ var require_color = __commonJS({
|
|
|
6752
6752
|
x = x > LAB_FT ? x ** (1 / 3) : 7.787 * x + 16 / 116;
|
|
6753
6753
|
y = y > LAB_FT ? y ** (1 / 3) : 7.787 * y + 16 / 116;
|
|
6754
6754
|
z2 = z2 > LAB_FT ? z2 ** (1 / 3) : 7.787 * z2 + 16 / 116;
|
|
6755
|
-
const
|
|
6755
|
+
const l2 = 116 * y - 16;
|
|
6756
6756
|
const a2 = 500 * (x - y);
|
|
6757
6757
|
const b = 200 * (y - z2);
|
|
6758
|
-
return [
|
|
6758
|
+
return [l2, a2, b];
|
|
6759
6759
|
};
|
|
6760
6760
|
convert.hsl.rgb = function(hsl) {
|
|
6761
|
-
const
|
|
6762
|
-
const
|
|
6763
|
-
const
|
|
6761
|
+
const h4 = hsl[0] / 360;
|
|
6762
|
+
const s = hsl[1] / 100;
|
|
6763
|
+
const l2 = hsl[2] / 100;
|
|
6764
6764
|
let t3;
|
|
6765
6765
|
let value;
|
|
6766
|
-
if (
|
|
6767
|
-
value =
|
|
6766
|
+
if (s === 0) {
|
|
6767
|
+
value = l2 * 255;
|
|
6768
6768
|
return [value, value, value];
|
|
6769
6769
|
}
|
|
6770
|
-
const t2 =
|
|
6771
|
-
const t1 = 2 *
|
|
6770
|
+
const t2 = l2 < 0.5 ? l2 * (1 + s) : l2 + s - l2 * s;
|
|
6771
|
+
const t1 = 2 * l2 - t2;
|
|
6772
6772
|
const rgb = [0, 0, 0];
|
|
6773
|
-
for (let
|
|
6774
|
-
t3 =
|
|
6773
|
+
for (let i3 = 0; i3 < 3; i3++) {
|
|
6774
|
+
t3 = h4 + 1 / 3 * -(i3 - 1);
|
|
6775
6775
|
if (t3 < 0) {
|
|
6776
6776
|
t3++;
|
|
6777
6777
|
}
|
|
@@ -6787,71 +6787,71 @@ var require_color = __commonJS({
|
|
|
6787
6787
|
} else {
|
|
6788
6788
|
value = t1;
|
|
6789
6789
|
}
|
|
6790
|
-
rgb[
|
|
6790
|
+
rgb[i3] = value * 255;
|
|
6791
6791
|
}
|
|
6792
6792
|
return rgb;
|
|
6793
6793
|
};
|
|
6794
6794
|
convert.hsl.hsv = function(hsl) {
|
|
6795
|
-
const
|
|
6796
|
-
let
|
|
6797
|
-
let
|
|
6798
|
-
let smin =
|
|
6799
|
-
const lmin = Math.max(
|
|
6800
|
-
|
|
6801
|
-
|
|
6795
|
+
const h4 = hsl[0];
|
|
6796
|
+
let s = hsl[1] / 100;
|
|
6797
|
+
let l2 = hsl[2] / 100;
|
|
6798
|
+
let smin = s;
|
|
6799
|
+
const lmin = Math.max(l2, 0.01);
|
|
6800
|
+
l2 *= 2;
|
|
6801
|
+
s *= l2 <= 1 ? l2 : 2 - l2;
|
|
6802
6802
|
smin *= lmin <= 1 ? lmin : 2 - lmin;
|
|
6803
|
-
const v = (
|
|
6804
|
-
const sv =
|
|
6805
|
-
return [
|
|
6803
|
+
const v = (l2 + s) / 2;
|
|
6804
|
+
const sv = l2 === 0 ? 2 * smin / (lmin + smin) : 2 * s / (l2 + s);
|
|
6805
|
+
return [h4, sv * 100, v * 100];
|
|
6806
6806
|
};
|
|
6807
6807
|
convert.hsv.rgb = function(hsv) {
|
|
6808
|
-
const
|
|
6809
|
-
const
|
|
6808
|
+
const h4 = hsv[0] / 60;
|
|
6809
|
+
const s = hsv[1] / 100;
|
|
6810
6810
|
let v = hsv[2] / 100;
|
|
6811
|
-
const hi = Math.floor(
|
|
6812
|
-
const f2 =
|
|
6813
|
-
const
|
|
6814
|
-
const q4 = 255 * v * (1 -
|
|
6815
|
-
const t = 255 * v * (1 -
|
|
6811
|
+
const hi = Math.floor(h4) % 6;
|
|
6812
|
+
const f2 = h4 - Math.floor(h4);
|
|
6813
|
+
const p3 = 255 * v * (1 - s);
|
|
6814
|
+
const q4 = 255 * v * (1 - s * f2);
|
|
6815
|
+
const t = 255 * v * (1 - s * (1 - f2));
|
|
6816
6816
|
v *= 255;
|
|
6817
6817
|
switch (hi) {
|
|
6818
6818
|
case 0: {
|
|
6819
|
-
return [v, t,
|
|
6819
|
+
return [v, t, p3];
|
|
6820
6820
|
}
|
|
6821
6821
|
case 1: {
|
|
6822
|
-
return [q4, v,
|
|
6822
|
+
return [q4, v, p3];
|
|
6823
6823
|
}
|
|
6824
6824
|
case 2: {
|
|
6825
|
-
return [
|
|
6825
|
+
return [p3, v, t];
|
|
6826
6826
|
}
|
|
6827
6827
|
case 3: {
|
|
6828
|
-
return [
|
|
6828
|
+
return [p3, q4, v];
|
|
6829
6829
|
}
|
|
6830
6830
|
case 4: {
|
|
6831
|
-
return [t,
|
|
6831
|
+
return [t, p3, v];
|
|
6832
6832
|
}
|
|
6833
6833
|
case 5: {
|
|
6834
|
-
return [v,
|
|
6834
|
+
return [v, p3, q4];
|
|
6835
6835
|
}
|
|
6836
6836
|
}
|
|
6837
6837
|
};
|
|
6838
6838
|
convert.hsv.hsl = function(hsv) {
|
|
6839
|
-
const
|
|
6840
|
-
const
|
|
6839
|
+
const h4 = hsv[0];
|
|
6840
|
+
const s = hsv[1] / 100;
|
|
6841
6841
|
const v = hsv[2] / 100;
|
|
6842
6842
|
const vmin = Math.max(v, 0.01);
|
|
6843
6843
|
let sl;
|
|
6844
|
-
let
|
|
6845
|
-
|
|
6846
|
-
const lmin = (2 -
|
|
6847
|
-
sl =
|
|
6844
|
+
let l2;
|
|
6845
|
+
l2 = (2 - s) * v;
|
|
6846
|
+
const lmin = (2 - s) * vmin;
|
|
6847
|
+
sl = s * vmin;
|
|
6848
6848
|
sl /= lmin <= 1 ? lmin : 2 - lmin;
|
|
6849
6849
|
sl = sl || 0;
|
|
6850
|
-
|
|
6851
|
-
return [
|
|
6850
|
+
l2 /= 2;
|
|
6851
|
+
return [h4, sl * 100, l2 * 100];
|
|
6852
6852
|
};
|
|
6853
6853
|
convert.hwb.rgb = function(hwb) {
|
|
6854
|
-
const
|
|
6854
|
+
const h4 = hwb[0] / 360;
|
|
6855
6855
|
let wh = hwb[1] / 100;
|
|
6856
6856
|
let bl = hwb[2] / 100;
|
|
6857
6857
|
const ratio = wh + bl;
|
|
@@ -6860,27 +6860,27 @@ var require_color = __commonJS({
|
|
|
6860
6860
|
wh /= ratio;
|
|
6861
6861
|
bl /= ratio;
|
|
6862
6862
|
}
|
|
6863
|
-
const
|
|
6863
|
+
const i3 = Math.floor(6 * h4);
|
|
6864
6864
|
const v = 1 - bl;
|
|
6865
|
-
f2 = 6 *
|
|
6866
|
-
if ((
|
|
6865
|
+
f2 = 6 * h4 - i3;
|
|
6866
|
+
if ((i3 & 1) !== 0) {
|
|
6867
6867
|
f2 = 1 - f2;
|
|
6868
6868
|
}
|
|
6869
|
-
const
|
|
6869
|
+
const n3 = wh + f2 * (v - wh);
|
|
6870
6870
|
let r;
|
|
6871
6871
|
let g2;
|
|
6872
6872
|
let b;
|
|
6873
|
-
switch (
|
|
6873
|
+
switch (i3) {
|
|
6874
6874
|
default:
|
|
6875
6875
|
case 6:
|
|
6876
6876
|
case 0: {
|
|
6877
6877
|
r = v;
|
|
6878
|
-
g2 =
|
|
6878
|
+
g2 = n3;
|
|
6879
6879
|
b = wh;
|
|
6880
6880
|
break;
|
|
6881
6881
|
}
|
|
6882
6882
|
case 1: {
|
|
6883
|
-
r =
|
|
6883
|
+
r = n3;
|
|
6884
6884
|
g2 = v;
|
|
6885
6885
|
b = wh;
|
|
6886
6886
|
break;
|
|
@@ -6888,17 +6888,17 @@ var require_color = __commonJS({
|
|
|
6888
6888
|
case 2: {
|
|
6889
6889
|
r = wh;
|
|
6890
6890
|
g2 = v;
|
|
6891
|
-
b =
|
|
6891
|
+
b = n3;
|
|
6892
6892
|
break;
|
|
6893
6893
|
}
|
|
6894
6894
|
case 3: {
|
|
6895
6895
|
r = wh;
|
|
6896
|
-
g2 =
|
|
6896
|
+
g2 = n3;
|
|
6897
6897
|
b = v;
|
|
6898
6898
|
break;
|
|
6899
6899
|
}
|
|
6900
6900
|
case 4: {
|
|
6901
|
-
r =
|
|
6901
|
+
r = n3;
|
|
6902
6902
|
g2 = wh;
|
|
6903
6903
|
b = v;
|
|
6904
6904
|
break;
|
|
@@ -6906,19 +6906,19 @@ var require_color = __commonJS({
|
|
|
6906
6906
|
case 5: {
|
|
6907
6907
|
r = v;
|
|
6908
6908
|
g2 = wh;
|
|
6909
|
-
b =
|
|
6909
|
+
b = n3;
|
|
6910
6910
|
break;
|
|
6911
6911
|
}
|
|
6912
6912
|
}
|
|
6913
6913
|
return [r * 255, g2 * 255, b * 255];
|
|
6914
6914
|
};
|
|
6915
6915
|
convert.cmyk.rgb = function(cmyk) {
|
|
6916
|
-
const
|
|
6917
|
-
const
|
|
6916
|
+
const c3 = cmyk[0] / 100;
|
|
6917
|
+
const m3 = cmyk[1] / 100;
|
|
6918
6918
|
const y = cmyk[2] / 100;
|
|
6919
6919
|
const k = cmyk[3] / 100;
|
|
6920
|
-
const r = 1 - Math.min(1,
|
|
6921
|
-
const g2 = 1 - Math.min(1,
|
|
6920
|
+
const r = 1 - Math.min(1, c3 * (1 - k) + k);
|
|
6921
|
+
const g2 = 1 - Math.min(1, m3 * (1 - k) + k);
|
|
6922
6922
|
const b = 1 - Math.min(1, y * (1 - k) + k);
|
|
6923
6923
|
return [r * 255, g2 * 255, b * 255];
|
|
6924
6924
|
};
|
|
@@ -6947,10 +6947,10 @@ var require_color = __commonJS({
|
|
|
6947
6947
|
x = x > LAB_FT ? x ** (1 / 3) : 7.787 * x + 16 / 116;
|
|
6948
6948
|
y = y > LAB_FT ? y ** (1 / 3) : 7.787 * y + 16 / 116;
|
|
6949
6949
|
z2 = z2 > LAB_FT ? z2 ** (1 / 3) : 7.787 * z2 + 16 / 116;
|
|
6950
|
-
const
|
|
6950
|
+
const l2 = 116 * y - 16;
|
|
6951
6951
|
const a2 = 500 * (x - y);
|
|
6952
6952
|
const b = 200 * (y - z2);
|
|
6953
|
-
return [
|
|
6953
|
+
return [l2, a2, b];
|
|
6954
6954
|
};
|
|
6955
6955
|
convert.xyz.oklab = function(xyz) {
|
|
6956
6956
|
const x = xyz[0] / 100;
|
|
@@ -6959,10 +6959,10 @@ var require_color = __commonJS({
|
|
|
6959
6959
|
const lp = Math.cbrt(0.8189330101 * x + 0.3618667424 * y - 0.1288597137 * z2);
|
|
6960
6960
|
const mp = Math.cbrt(0.0329845436 * x + 0.9293118715 * y + 0.0361456387 * z2);
|
|
6961
6961
|
const sp = Math.cbrt(0.0482003018 * x + 0.2643662691 * y + 0.633851707 * z2);
|
|
6962
|
-
const
|
|
6962
|
+
const l2 = 0.2104542553 * lp + 0.793617785 * mp - 0.0040720468 * sp;
|
|
6963
6963
|
const a2 = 1.9779984951 * lp - 2.428592205 * mp + 0.4505937099 * sp;
|
|
6964
6964
|
const b = 0.0259040371 * lp + 0.7827717662 * mp - 0.808675766 * sp;
|
|
6965
|
-
return [
|
|
6965
|
+
return [l2 * 100, a2 * 100, b * 100];
|
|
6966
6966
|
};
|
|
6967
6967
|
convert.oklab.oklch = function(oklab) {
|
|
6968
6968
|
return convert.lab.lch(oklab);
|
|
@@ -6971,37 +6971,37 @@ var require_color = __commonJS({
|
|
|
6971
6971
|
const ll = oklab[0] / 100;
|
|
6972
6972
|
const a2 = oklab[1] / 100;
|
|
6973
6973
|
const b = oklab[2] / 100;
|
|
6974
|
-
const
|
|
6975
|
-
const
|
|
6976
|
-
const
|
|
6977
|
-
const x = 1.227013851 *
|
|
6978
|
-
const y = -0.040580178 *
|
|
6979
|
-
const z2 = -0.076381285 *
|
|
6974
|
+
const l2 = (0.999999998 * ll + 0.396337792 * a2 + 0.215803758 * b) ** 3;
|
|
6975
|
+
const m3 = (1.000000008 * ll - 0.105561342 * a2 - 0.063854175 * b) ** 3;
|
|
6976
|
+
const s = (1.000000055 * ll - 0.089484182 * a2 - 1.291485538 * b) ** 3;
|
|
6977
|
+
const x = 1.227013851 * l2 - 0.55779998 * m3 + 0.281256149 * s;
|
|
6978
|
+
const y = -0.040580178 * l2 + 1.11225687 * m3 - 0.071676679 * s;
|
|
6979
|
+
const z2 = -0.076381285 * l2 - 0.421481978 * m3 + 1.58616322 * s;
|
|
6980
6980
|
return [x * 100, y * 100, z2 * 100];
|
|
6981
6981
|
};
|
|
6982
6982
|
convert.oklab.rgb = function(oklab) {
|
|
6983
6983
|
const ll = oklab[0] / 100;
|
|
6984
6984
|
const aa = oklab[1] / 100;
|
|
6985
6985
|
const bb = oklab[2] / 100;
|
|
6986
|
-
const
|
|
6987
|
-
const
|
|
6988
|
-
const
|
|
6989
|
-
const r = srgbNonlinearTransform(4.0767416621 *
|
|
6990
|
-
const g2 = srgbNonlinearTransform(-1.2684380046 *
|
|
6991
|
-
const b = srgbNonlinearTransform(-0.0041960863 *
|
|
6986
|
+
const l2 = (ll + 0.3963377774 * aa + 0.2158037573 * bb) ** 3;
|
|
6987
|
+
const m3 = (ll - 0.1055613458 * aa - 0.0638541728 * bb) ** 3;
|
|
6988
|
+
const s = (ll - 0.0894841775 * aa - 1.291485548 * bb) ** 3;
|
|
6989
|
+
const r = srgbNonlinearTransform(4.0767416621 * l2 - 3.3077115913 * m3 + 0.2309699292 * s);
|
|
6990
|
+
const g2 = srgbNonlinearTransform(-1.2684380046 * l2 + 2.6097574011 * m3 - 0.3413193965 * s);
|
|
6991
|
+
const b = srgbNonlinearTransform(-0.0041960863 * l2 - 0.7034186147 * m3 + 1.707614701 * s);
|
|
6992
6992
|
return [r * 255, g2 * 255, b * 255];
|
|
6993
6993
|
};
|
|
6994
6994
|
convert.oklch.oklab = function(oklch) {
|
|
6995
6995
|
return convert.lch.lab(oklch);
|
|
6996
6996
|
};
|
|
6997
6997
|
convert.lab.xyz = function(lab) {
|
|
6998
|
-
const
|
|
6998
|
+
const l2 = lab[0];
|
|
6999
6999
|
const a2 = lab[1];
|
|
7000
7000
|
const b = lab[2];
|
|
7001
7001
|
let x;
|
|
7002
7002
|
let y;
|
|
7003
7003
|
let z2;
|
|
7004
|
-
y = (
|
|
7004
|
+
y = (l2 + 16) / 116;
|
|
7005
7005
|
x = a2 / 500 + y;
|
|
7006
7006
|
z2 = y - b / 200;
|
|
7007
7007
|
const y2 = y ** 3;
|
|
@@ -7016,26 +7016,26 @@ var require_color = __commonJS({
|
|
|
7016
7016
|
return [x, y, z2];
|
|
7017
7017
|
};
|
|
7018
7018
|
convert.lab.lch = function(lab) {
|
|
7019
|
-
const
|
|
7019
|
+
const l2 = lab[0];
|
|
7020
7020
|
const a2 = lab[1];
|
|
7021
7021
|
const b = lab[2];
|
|
7022
|
-
let
|
|
7022
|
+
let h4;
|
|
7023
7023
|
const hr = Math.atan2(b, a2);
|
|
7024
|
-
|
|
7025
|
-
if (
|
|
7026
|
-
|
|
7024
|
+
h4 = hr * 360 / 2 / Math.PI;
|
|
7025
|
+
if (h4 < 0) {
|
|
7026
|
+
h4 += 360;
|
|
7027
7027
|
}
|
|
7028
|
-
const
|
|
7029
|
-
return [
|
|
7028
|
+
const c3 = Math.sqrt(a2 * a2 + b * b);
|
|
7029
|
+
return [l2, c3, h4];
|
|
7030
7030
|
};
|
|
7031
7031
|
convert.lch.lab = function(lch) {
|
|
7032
|
-
const
|
|
7033
|
-
const
|
|
7034
|
-
const
|
|
7035
|
-
const hr =
|
|
7036
|
-
const a2 =
|
|
7037
|
-
const b =
|
|
7038
|
-
return [
|
|
7032
|
+
const l2 = lch[0];
|
|
7033
|
+
const c3 = lch[1];
|
|
7034
|
+
const h4 = lch[2];
|
|
7035
|
+
const hr = h4 / 360 * 2 * Math.PI;
|
|
7036
|
+
const a2 = c3 * Math.cos(hr);
|
|
7037
|
+
const b = c3 * Math.sin(hr);
|
|
7038
|
+
return [l2, a2, b];
|
|
7039
7039
|
};
|
|
7040
7040
|
convert.rgb.ansi16 = function(args, saturation = null) {
|
|
7041
7041
|
const [r, g2, b] = args;
|
|
@@ -7088,8 +7088,8 @@ var require_color = __commonJS({
|
|
|
7088
7088
|
convert.ansi256.rgb = function(args) {
|
|
7089
7089
|
args = args[0];
|
|
7090
7090
|
if (args >= 232) {
|
|
7091
|
-
const
|
|
7092
|
-
return [
|
|
7091
|
+
const c3 = (args - 232) * 10 + 8;
|
|
7092
|
+
return [c3, c3, c3];
|
|
7093
7093
|
}
|
|
7094
7094
|
args -= 16;
|
|
7095
7095
|
let rem;
|
|
@@ -7141,34 +7141,34 @@ var require_color = __commonJS({
|
|
|
7141
7141
|
return [hue * 360, chroma * 100, grayscale * 100];
|
|
7142
7142
|
};
|
|
7143
7143
|
convert.hsl.hcg = function(hsl) {
|
|
7144
|
-
const
|
|
7145
|
-
const
|
|
7146
|
-
const
|
|
7144
|
+
const s = hsl[1] / 100;
|
|
7145
|
+
const l2 = hsl[2] / 100;
|
|
7146
|
+
const c3 = l2 < 0.5 ? 2 * s * l2 : 2 * s * (1 - l2);
|
|
7147
7147
|
let f2 = 0;
|
|
7148
|
-
if (
|
|
7149
|
-
f2 = (
|
|
7148
|
+
if (c3 < 1) {
|
|
7149
|
+
f2 = (l2 - 0.5 * c3) / (1 - c3);
|
|
7150
7150
|
}
|
|
7151
|
-
return [hsl[0],
|
|
7151
|
+
return [hsl[0], c3 * 100, f2 * 100];
|
|
7152
7152
|
};
|
|
7153
7153
|
convert.hsv.hcg = function(hsv) {
|
|
7154
|
-
const
|
|
7154
|
+
const s = hsv[1] / 100;
|
|
7155
7155
|
const v = hsv[2] / 100;
|
|
7156
|
-
const
|
|
7156
|
+
const c3 = s * v;
|
|
7157
7157
|
let f2 = 0;
|
|
7158
|
-
if (
|
|
7159
|
-
f2 = (v -
|
|
7158
|
+
if (c3 < 1) {
|
|
7159
|
+
f2 = (v - c3) / (1 - c3);
|
|
7160
7160
|
}
|
|
7161
|
-
return [hsv[0],
|
|
7161
|
+
return [hsv[0], c3 * 100, f2 * 100];
|
|
7162
7162
|
};
|
|
7163
7163
|
convert.hcg.rgb = function(hcg) {
|
|
7164
|
-
const
|
|
7165
|
-
const
|
|
7164
|
+
const h4 = hcg[0] / 360;
|
|
7165
|
+
const c3 = hcg[1] / 100;
|
|
7166
7166
|
const g2 = hcg[2] / 100;
|
|
7167
|
-
if (
|
|
7167
|
+
if (c3 === 0) {
|
|
7168
7168
|
return [g2 * 255, g2 * 255, g2 * 255];
|
|
7169
7169
|
}
|
|
7170
7170
|
const pure = [0, 0, 0];
|
|
7171
|
-
const hi =
|
|
7171
|
+
const hi = h4 % 1 * 6;
|
|
7172
7172
|
const v = hi % 1;
|
|
7173
7173
|
const w = 1 - v;
|
|
7174
7174
|
let mg = 0;
|
|
@@ -7209,51 +7209,51 @@ var require_color = __commonJS({
|
|
|
7209
7209
|
pure[2] = w;
|
|
7210
7210
|
}
|
|
7211
7211
|
}
|
|
7212
|
-
mg = (1 -
|
|
7212
|
+
mg = (1 - c3) * g2;
|
|
7213
7213
|
return [
|
|
7214
|
-
(
|
|
7215
|
-
(
|
|
7216
|
-
(
|
|
7214
|
+
(c3 * pure[0] + mg) * 255,
|
|
7215
|
+
(c3 * pure[1] + mg) * 255,
|
|
7216
|
+
(c3 * pure[2] + mg) * 255
|
|
7217
7217
|
];
|
|
7218
7218
|
};
|
|
7219
7219
|
convert.hcg.hsv = function(hcg) {
|
|
7220
|
-
const
|
|
7220
|
+
const c3 = hcg[1] / 100;
|
|
7221
7221
|
const g2 = hcg[2] / 100;
|
|
7222
|
-
const v =
|
|
7222
|
+
const v = c3 + g2 * (1 - c3);
|
|
7223
7223
|
let f2 = 0;
|
|
7224
7224
|
if (v > 0) {
|
|
7225
|
-
f2 =
|
|
7225
|
+
f2 = c3 / v;
|
|
7226
7226
|
}
|
|
7227
7227
|
return [hcg[0], f2 * 100, v * 100];
|
|
7228
7228
|
};
|
|
7229
7229
|
convert.hcg.hsl = function(hcg) {
|
|
7230
|
-
const
|
|
7230
|
+
const c3 = hcg[1] / 100;
|
|
7231
7231
|
const g2 = hcg[2] / 100;
|
|
7232
|
-
const
|
|
7233
|
-
let
|
|
7234
|
-
if (
|
|
7235
|
-
|
|
7236
|
-
} else if (
|
|
7237
|
-
|
|
7232
|
+
const l2 = g2 * (1 - c3) + 0.5 * c3;
|
|
7233
|
+
let s = 0;
|
|
7234
|
+
if (l2 > 0 && l2 < 0.5) {
|
|
7235
|
+
s = c3 / (2 * l2);
|
|
7236
|
+
} else if (l2 >= 0.5 && l2 < 1) {
|
|
7237
|
+
s = c3 / (2 * (1 - l2));
|
|
7238
7238
|
}
|
|
7239
|
-
return [hcg[0],
|
|
7239
|
+
return [hcg[0], s * 100, l2 * 100];
|
|
7240
7240
|
};
|
|
7241
7241
|
convert.hcg.hwb = function(hcg) {
|
|
7242
|
-
const
|
|
7242
|
+
const c3 = hcg[1] / 100;
|
|
7243
7243
|
const g2 = hcg[2] / 100;
|
|
7244
|
-
const v =
|
|
7245
|
-
return [hcg[0], (v -
|
|
7244
|
+
const v = c3 + g2 * (1 - c3);
|
|
7245
|
+
return [hcg[0], (v - c3) * 100, (1 - v) * 100];
|
|
7246
7246
|
};
|
|
7247
7247
|
convert.hwb.hcg = function(hwb) {
|
|
7248
7248
|
const w = hwb[1] / 100;
|
|
7249
7249
|
const b = hwb[2] / 100;
|
|
7250
7250
|
const v = 1 - b;
|
|
7251
|
-
const
|
|
7251
|
+
const c3 = v - w;
|
|
7252
7252
|
let g2 = 0;
|
|
7253
|
-
if (
|
|
7254
|
-
g2 = (v -
|
|
7253
|
+
if (c3 < 1) {
|
|
7254
|
+
g2 = (v - c3) / (1 - c3);
|
|
7255
7255
|
}
|
|
7256
|
-
return [hwb[0],
|
|
7256
|
+
return [hwb[0], c3 * 100, g2 * 100];
|
|
7257
7257
|
};
|
|
7258
7258
|
convert.apple.rgb = function(apple) {
|
|
7259
7259
|
return [apple[0] / 65535 * 255, apple[1] / 65535 * 255, apple[2] / 65535 * 255];
|
|
@@ -7290,8 +7290,8 @@ var require_color = __commonJS({
|
|
|
7290
7290
|
function buildGraph() {
|
|
7291
7291
|
const graph = {};
|
|
7292
7292
|
const models2 = Object.keys(conversions_default);
|
|
7293
|
-
for (let { length } = models2,
|
|
7294
|
-
graph[models2[
|
|
7293
|
+
for (let { length } = models2, i3 = 0; i3 < length; i3++) {
|
|
7294
|
+
graph[models2[i3]] = {
|
|
7295
7295
|
// http://jsperf.com/1-vs-infinity
|
|
7296
7296
|
// micro-opt, but this is simple.
|
|
7297
7297
|
distance: -1,
|
|
@@ -7307,8 +7307,8 @@ var require_color = __commonJS({
|
|
|
7307
7307
|
while (queue.length > 0) {
|
|
7308
7308
|
const current = queue.pop();
|
|
7309
7309
|
const adjacents = Object.keys(conversions_default[current]);
|
|
7310
|
-
for (let { length } = adjacents,
|
|
7311
|
-
const adjacent = adjacents[
|
|
7310
|
+
for (let { length } = adjacents, i3 = 0; i3 < length; i3++) {
|
|
7311
|
+
const adjacent = adjacents[i3];
|
|
7312
7312
|
const node = graph[adjacent];
|
|
7313
7313
|
if (node.distance === -1) {
|
|
7314
7314
|
node.distance = graph[current].distance + 1;
|
|
@@ -7340,8 +7340,8 @@ var require_color = __commonJS({
|
|
|
7340
7340
|
const graph = deriveBFS(fromModel);
|
|
7341
7341
|
const conversion = {};
|
|
7342
7342
|
const models2 = Object.keys(graph);
|
|
7343
|
-
for (let { length } = models2,
|
|
7344
|
-
const toModel = models2[
|
|
7343
|
+
for (let { length } = models2, i3 = 0; i3 < length; i3++) {
|
|
7344
|
+
const toModel = models2[i3];
|
|
7345
7345
|
const node = graph[toModel];
|
|
7346
7346
|
if (node.parent === null) {
|
|
7347
7347
|
continue;
|
|
@@ -7380,8 +7380,8 @@ var require_color = __commonJS({
|
|
|
7380
7380
|
}
|
|
7381
7381
|
const result = fn(args);
|
|
7382
7382
|
if (typeof result === "object") {
|
|
7383
|
-
for (let { length } = result,
|
|
7384
|
-
result[
|
|
7383
|
+
for (let { length } = result, i3 = 0; i3 < length; i3++) {
|
|
7384
|
+
result[i3] = Math.round(result[i3]);
|
|
7385
7385
|
}
|
|
7386
7386
|
}
|
|
7387
7387
|
return result;
|
|
@@ -7427,7 +7427,7 @@ var require_color = __commonJS({
|
|
|
7427
7427
|
if (model && !(model in color_convert_default)) {
|
|
7428
7428
|
throw new Error("Unknown model: " + model);
|
|
7429
7429
|
}
|
|
7430
|
-
let
|
|
7430
|
+
let i3;
|
|
7431
7431
|
let channels;
|
|
7432
7432
|
if (object == null) {
|
|
7433
7433
|
this.model = "rgb";
|
|
@@ -7474,17 +7474,17 @@ var require_color = __commonJS({
|
|
|
7474
7474
|
this.model = hashedModelKeys[hashedKeys];
|
|
7475
7475
|
const { labels } = color_convert_default[this.model];
|
|
7476
7476
|
const color = [];
|
|
7477
|
-
for (
|
|
7478
|
-
color.push(object[labels[
|
|
7477
|
+
for (i3 = 0; i3 < labels.length; i3++) {
|
|
7478
|
+
color.push(object[labels[i3]]);
|
|
7479
7479
|
}
|
|
7480
7480
|
this.color = zeroArray(color);
|
|
7481
7481
|
}
|
|
7482
7482
|
if (limiters[this.model]) {
|
|
7483
7483
|
channels = color_convert_default[this.model].channels;
|
|
7484
|
-
for (
|
|
7485
|
-
const limit = limiters[this.model][
|
|
7484
|
+
for (i3 = 0; i3 < channels; i3++) {
|
|
7485
|
+
const limit = limiters[this.model][i3];
|
|
7486
7486
|
if (limit) {
|
|
7487
|
-
this.color[
|
|
7487
|
+
this.color[i3] = limit(this.color[i3]);
|
|
7488
7488
|
}
|
|
7489
7489
|
}
|
|
7490
7490
|
}
|
|
@@ -7501,14 +7501,14 @@ var require_color = __commonJS({
|
|
|
7501
7501
|
return this[this.model]();
|
|
7502
7502
|
},
|
|
7503
7503
|
string(places) {
|
|
7504
|
-
let
|
|
7505
|
-
|
|
7506
|
-
const arguments_ =
|
|
7507
|
-
return color_string_default.to[
|
|
7504
|
+
let self2 = this.model in color_string_default.to ? this : this.rgb();
|
|
7505
|
+
self2 = self2.round(typeof places === "number" ? places : 1);
|
|
7506
|
+
const arguments_ = self2.valpha === 1 ? self2.color : [...self2.color, this.valpha];
|
|
7507
|
+
return color_string_default.to[self2.model](...arguments_);
|
|
7508
7508
|
},
|
|
7509
7509
|
percentString(places) {
|
|
7510
|
-
const
|
|
7511
|
-
const arguments_ =
|
|
7510
|
+
const self2 = this.rgb().round(typeof places === "number" ? places : 1);
|
|
7511
|
+
const arguments_ = self2.valpha === 1 ? self2.color : [...self2.color, this.valpha];
|
|
7512
7512
|
return color_string_default.to.rgb.percent(...arguments_);
|
|
7513
7513
|
},
|
|
7514
7514
|
array() {
|
|
@@ -7518,8 +7518,8 @@ var require_color = __commonJS({
|
|
|
7518
7518
|
const result = {};
|
|
7519
7519
|
const { channels } = color_convert_default[this.model];
|
|
7520
7520
|
const { labels } = color_convert_default[this.model];
|
|
7521
|
-
for (let
|
|
7522
|
-
result[labels[
|
|
7521
|
+
for (let i3 = 0; i3 < channels; i3++) {
|
|
7522
|
+
result[labels[i3]] = this.color[i3];
|
|
7523
7523
|
}
|
|
7524
7524
|
if (this.valpha !== 1) {
|
|
7525
7525
|
result.alpha = this.valpha;
|
|
@@ -7609,9 +7609,9 @@ var require_color = __commonJS({
|
|
|
7609
7609
|
luminosity() {
|
|
7610
7610
|
const rgb = this.rgb().color;
|
|
7611
7611
|
const lum = [];
|
|
7612
|
-
for (const [
|
|
7612
|
+
for (const [i3, element] of rgb.entries()) {
|
|
7613
7613
|
const chan = element / 255;
|
|
7614
|
-
lum[
|
|
7614
|
+
lum[i3] = chan <= 0.04045 ? chan / 12.92 : ((chan + 0.055) / 1.055) ** 2.4;
|
|
7615
7615
|
}
|
|
7616
7616
|
return 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];
|
|
7617
7617
|
},
|
|
@@ -7640,8 +7640,8 @@ var require_color = __commonJS({
|
|
|
7640
7640
|
},
|
|
7641
7641
|
negate() {
|
|
7642
7642
|
const rgb = this.rgb();
|
|
7643
|
-
for (let
|
|
7644
|
-
rgb.color[
|
|
7643
|
+
for (let i3 = 0; i3 < 3; i3++) {
|
|
7644
|
+
rgb.color[i3] = 255 - rgb.color[i3];
|
|
7645
7645
|
}
|
|
7646
7646
|
return rgb;
|
|
7647
7647
|
},
|
|
@@ -7700,8 +7700,8 @@ var require_color = __commonJS({
|
|
|
7700
7700
|
}
|
|
7701
7701
|
const color1 = mixinColor.rgb();
|
|
7702
7702
|
const color2 = this.rgb();
|
|
7703
|
-
const
|
|
7704
|
-
const w = 2 *
|
|
7703
|
+
const p3 = weight === void 0 ? 0.5 : weight;
|
|
7704
|
+
const w = 2 * p3 - 1;
|
|
7705
7705
|
const a2 = color1.alpha() - color2.alpha();
|
|
7706
7706
|
const w1 = ((w * a2 === -1 ? w : (w + a2) / (1 + w * a2)) + 1) / 2;
|
|
7707
7707
|
const w2 = 1 - w1;
|
|
@@ -7709,7 +7709,7 @@ var require_color = __commonJS({
|
|
|
7709
7709
|
w1 * color1.red() + w2 * color2.red(),
|
|
7710
7710
|
w1 * color1.green() + w2 * color2.green(),
|
|
7711
7711
|
w1 * color1.blue() + w2 * color2.blue(),
|
|
7712
|
-
color1.alpha() *
|
|
7712
|
+
color1.alpha() * p3 + color2.alpha() * (1 - p3)
|
|
7713
7713
|
);
|
|
7714
7714
|
}
|
|
7715
7715
|
};
|
|
@@ -7745,8 +7745,8 @@ var require_color = __commonJS({
|
|
|
7745
7745
|
}
|
|
7746
7746
|
function getset(model, channel, modifier) {
|
|
7747
7747
|
model = Array.isArray(model) ? model : [model];
|
|
7748
|
-
for (const
|
|
7749
|
-
(limiters[
|
|
7748
|
+
for (const m3 of model) {
|
|
7749
|
+
(limiters[m3] || (limiters[m3] = []))[channel] = modifier;
|
|
7750
7750
|
}
|
|
7751
7751
|
model = model[0];
|
|
7752
7752
|
return function(value) {
|
|
@@ -7775,9 +7775,9 @@ var require_color = __commonJS({
|
|
|
7775
7775
|
return Array.isArray(value) ? value : [value];
|
|
7776
7776
|
}
|
|
7777
7777
|
function zeroArray(array, length) {
|
|
7778
|
-
for (let
|
|
7779
|
-
if (typeof array[
|
|
7780
|
-
array[
|
|
7778
|
+
for (let i3 = 0; i3 < length; i3++) {
|
|
7779
|
+
if (typeof array[i3] !== "number") {
|
|
7780
|
+
array[i3] = 0;
|
|
7781
7781
|
}
|
|
7782
7782
|
}
|
|
7783
7783
|
return array;
|
|
@@ -8966,24 +8966,24 @@ var require_lib = __commonJS({
|
|
|
8966
8966
|
// ../codec-sharp/dist/index.mjs
|
|
8967
8967
|
var dist_exports2 = {};
|
|
8968
8968
|
__export(dist_exports2, {
|
|
8969
|
-
|
|
8970
|
-
|
|
8969
|
+
codecSharp: () => o,
|
|
8970
|
+
default: () => f
|
|
8971
8971
|
});
|
|
8972
|
-
async function a(
|
|
8972
|
+
async function a(r) {
|
|
8973
8973
|
try {
|
|
8974
|
-
let
|
|
8975
|
-
if (!
|
|
8976
|
-
return { data:
|
|
8977
|
-
} catch (
|
|
8978
|
-
throw new Error(`Failed to read image file ${
|
|
8974
|
+
let e = await (0, import_sharp.default)(r).ensureAlpha().raw().toBuffer({ resolveWithObject: true });
|
|
8975
|
+
if (!e.info.width || !e.info.height) throw new Error(`Invalid image dimensions: ${r}`);
|
|
8976
|
+
return { data: e.data, width: e.info.width, height: e.info.height };
|
|
8977
|
+
} catch (e) {
|
|
8978
|
+
throw new Error(`Failed to read image file ${r}: ${e}`);
|
|
8979
8979
|
}
|
|
8980
8980
|
}
|
|
8981
|
-
async function n(
|
|
8981
|
+
async function n(r, e) {
|
|
8982
8982
|
try {
|
|
8983
|
-
let t = (0, import_sharp.default)(
|
|
8984
|
-
typeof
|
|
8983
|
+
let t = (0, import_sharp.default)(r.data, { raw: { width: r.width, height: r.height, channels: 4 } });
|
|
8984
|
+
typeof e == "string" ? await t.png().toFile(e) : e.set(await t.png().toBuffer());
|
|
8985
8985
|
} catch (t) {
|
|
8986
|
-
throw new Error(`Failed to write image file ${
|
|
8986
|
+
throw new Error(`Failed to write image file ${e}: ${t}`);
|
|
8987
8987
|
}
|
|
8988
8988
|
}
|
|
8989
8989
|
var import_sharp, o, f;
|
|
@@ -8996,14 +8996,374 @@ var init_dist3 = __esm({
|
|
|
8996
8996
|
}
|
|
8997
8997
|
});
|
|
8998
8998
|
|
|
8999
|
+
// ../../node_modules/.pnpm/@jsquash+png@3.1.1/node_modules/@jsquash/png/codec/pkg/squoosh_png.js
|
|
9000
|
+
function addHeapObject(obj) {
|
|
9001
|
+
if (heap_next === heap.length) heap.push(heap.length + 1);
|
|
9002
|
+
const idx = heap_next;
|
|
9003
|
+
heap_next = heap[idx];
|
|
9004
|
+
heap[idx] = obj;
|
|
9005
|
+
return idx;
|
|
9006
|
+
}
|
|
9007
|
+
function getObject(idx) {
|
|
9008
|
+
return heap[idx];
|
|
9009
|
+
}
|
|
9010
|
+
function dropObject(idx) {
|
|
9011
|
+
if (idx < 132) return;
|
|
9012
|
+
heap[idx] = heap_next;
|
|
9013
|
+
heap_next = idx;
|
|
9014
|
+
}
|
|
9015
|
+
function takeObject(idx) {
|
|
9016
|
+
const ret = getObject(idx);
|
|
9017
|
+
dropObject(idx);
|
|
9018
|
+
return ret;
|
|
9019
|
+
}
|
|
9020
|
+
function getUint8Memory0() {
|
|
9021
|
+
if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) {
|
|
9022
|
+
cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer);
|
|
9023
|
+
}
|
|
9024
|
+
return cachedUint8Memory0;
|
|
9025
|
+
}
|
|
9026
|
+
function getStringFromWasm0(ptr, len) {
|
|
9027
|
+
ptr = ptr >>> 0;
|
|
9028
|
+
return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));
|
|
9029
|
+
}
|
|
9030
|
+
function getUint8ClampedMemory0() {
|
|
9031
|
+
if (cachedUint8ClampedMemory0 === null || cachedUint8ClampedMemory0.byteLength === 0) {
|
|
9032
|
+
cachedUint8ClampedMemory0 = new Uint8ClampedArray(wasm.memory.buffer);
|
|
9033
|
+
}
|
|
9034
|
+
return cachedUint8ClampedMemory0;
|
|
9035
|
+
}
|
|
9036
|
+
function getClampedArrayU8FromWasm0(ptr, len) {
|
|
9037
|
+
ptr = ptr >>> 0;
|
|
9038
|
+
return getUint8ClampedMemory0().subarray(ptr / 1, ptr / 1 + len);
|
|
9039
|
+
}
|
|
9040
|
+
function passArray8ToWasm0(arg, malloc) {
|
|
9041
|
+
const ptr = malloc(arg.length * 1, 1) >>> 0;
|
|
9042
|
+
getUint8Memory0().set(arg, ptr / 1);
|
|
9043
|
+
WASM_VECTOR_LEN = arg.length;
|
|
9044
|
+
return ptr;
|
|
9045
|
+
}
|
|
9046
|
+
function getInt32Memory0() {
|
|
9047
|
+
if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) {
|
|
9048
|
+
cachedInt32Memory0 = new Int32Array(wasm.memory.buffer);
|
|
9049
|
+
}
|
|
9050
|
+
return cachedInt32Memory0;
|
|
9051
|
+
}
|
|
9052
|
+
function getArrayU8FromWasm0(ptr, len) {
|
|
9053
|
+
ptr = ptr >>> 0;
|
|
9054
|
+
return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);
|
|
9055
|
+
}
|
|
9056
|
+
function encode(data, width, height, bit_depth) {
|
|
9057
|
+
try {
|
|
9058
|
+
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
9059
|
+
const ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_malloc);
|
|
9060
|
+
const len0 = WASM_VECTOR_LEN;
|
|
9061
|
+
wasm.encode(retptr, ptr0, len0, width, height, bit_depth);
|
|
9062
|
+
var r0 = getInt32Memory0()[retptr / 4 + 0];
|
|
9063
|
+
var r1 = getInt32Memory0()[retptr / 4 + 1];
|
|
9064
|
+
var v2 = getArrayU8FromWasm0(r0, r1).slice();
|
|
9065
|
+
wasm.__wbindgen_free(r0, r1 * 1, 1);
|
|
9066
|
+
return v2;
|
|
9067
|
+
} finally {
|
|
9068
|
+
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
9069
|
+
}
|
|
9070
|
+
}
|
|
9071
|
+
function decode(data) {
|
|
9072
|
+
const ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_malloc);
|
|
9073
|
+
const len0 = WASM_VECTOR_LEN;
|
|
9074
|
+
const ret = wasm.decode(ptr0, len0);
|
|
9075
|
+
return takeObject(ret);
|
|
9076
|
+
}
|
|
9077
|
+
function decode_rgba16(data) {
|
|
9078
|
+
const ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_malloc);
|
|
9079
|
+
const len0 = WASM_VECTOR_LEN;
|
|
9080
|
+
const ret = wasm.decode_rgba16(ptr0, len0);
|
|
9081
|
+
return ImageDataRGBA16.__wrap(ret);
|
|
9082
|
+
}
|
|
9083
|
+
async function __wbg_load(module2, imports) {
|
|
9084
|
+
if (typeof Response === "function" && module2 instanceof Response) {
|
|
9085
|
+
if (typeof WebAssembly.instantiateStreaming === "function") {
|
|
9086
|
+
try {
|
|
9087
|
+
return await WebAssembly.instantiateStreaming(module2, imports);
|
|
9088
|
+
} catch (e) {
|
|
9089
|
+
if (module2.headers.get("Content-Type") != "application/wasm") {
|
|
9090
|
+
console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e);
|
|
9091
|
+
} else {
|
|
9092
|
+
throw e;
|
|
9093
|
+
}
|
|
9094
|
+
}
|
|
9095
|
+
}
|
|
9096
|
+
const bytes = await module2.arrayBuffer();
|
|
9097
|
+
return await WebAssembly.instantiate(bytes, imports);
|
|
9098
|
+
} else {
|
|
9099
|
+
const instance = await WebAssembly.instantiate(module2, imports);
|
|
9100
|
+
if (instance instanceof WebAssembly.Instance) {
|
|
9101
|
+
return { instance, module: module2 };
|
|
9102
|
+
} else {
|
|
9103
|
+
return instance;
|
|
9104
|
+
}
|
|
9105
|
+
}
|
|
9106
|
+
}
|
|
9107
|
+
function __wbg_get_imports() {
|
|
9108
|
+
const imports = {};
|
|
9109
|
+
imports.wbg = {};
|
|
9110
|
+
imports.wbg.__wbindgen_memory = function() {
|
|
9111
|
+
const ret = wasm.memory;
|
|
9112
|
+
return addHeapObject(ret);
|
|
9113
|
+
};
|
|
9114
|
+
imports.wbg.__wbg_buffer_a448f833075b71ba = function(arg0) {
|
|
9115
|
+
const ret = getObject(arg0).buffer;
|
|
9116
|
+
return addHeapObject(ret);
|
|
9117
|
+
};
|
|
9118
|
+
imports.wbg.__wbg_newwithbyteoffsetandlength_099217381c451830 = function(arg0, arg1, arg2) {
|
|
9119
|
+
const ret = new Uint16Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0);
|
|
9120
|
+
return addHeapObject(ret);
|
|
9121
|
+
};
|
|
9122
|
+
imports.wbg.__wbindgen_object_drop_ref = function(arg0) {
|
|
9123
|
+
takeObject(arg0);
|
|
9124
|
+
};
|
|
9125
|
+
imports.wbg.__wbg_newwithownedu8clampedarrayandsh_91db5987993a08fb = function(arg0, arg1, arg2, arg3) {
|
|
9126
|
+
var v0 = getClampedArrayU8FromWasm0(arg0, arg1).slice();
|
|
9127
|
+
wasm.__wbindgen_free(arg0, arg1 * 1, 1);
|
|
9128
|
+
const ret = new ImageData(v0, arg2 >>> 0, arg3 >>> 0);
|
|
9129
|
+
return addHeapObject(ret);
|
|
9130
|
+
};
|
|
9131
|
+
imports.wbg.__wbindgen_throw = function(arg0, arg1) {
|
|
9132
|
+
throw new Error(getStringFromWasm0(arg0, arg1));
|
|
9133
|
+
};
|
|
9134
|
+
return imports;
|
|
9135
|
+
}
|
|
9136
|
+
function __wbg_init_memory(imports, maybe_memory) {
|
|
9137
|
+
}
|
|
9138
|
+
function __wbg_finalize_init(instance, module2) {
|
|
9139
|
+
wasm = instance.exports;
|
|
9140
|
+
__wbg_init.__wbindgen_wasm_module = module2;
|
|
9141
|
+
cachedInt32Memory0 = null;
|
|
9142
|
+
cachedUint8Memory0 = null;
|
|
9143
|
+
cachedUint8ClampedMemory0 = null;
|
|
9144
|
+
return wasm;
|
|
9145
|
+
}
|
|
9146
|
+
async function __wbg_init(input) {
|
|
9147
|
+
if (wasm !== void 0) return wasm;
|
|
9148
|
+
if (typeof input === "undefined") {
|
|
9149
|
+
input = new URL("squoosh_png_bg.wasm", import_meta.url);
|
|
9150
|
+
}
|
|
9151
|
+
const imports = __wbg_get_imports();
|
|
9152
|
+
if (typeof input === "string" || typeof Request === "function" && input instanceof Request || typeof URL === "function" && input instanceof URL) {
|
|
9153
|
+
input = fetch(input);
|
|
9154
|
+
}
|
|
9155
|
+
__wbg_init_memory(imports);
|
|
9156
|
+
const { instance, module: module2 } = await __wbg_load(await input, imports);
|
|
9157
|
+
return __wbg_finalize_init(instance, module2);
|
|
9158
|
+
}
|
|
9159
|
+
var import_meta, wasm, heap, heap_next, cachedTextDecoder, cachedUint8Memory0, cachedUint8ClampedMemory0, WASM_VECTOR_LEN, cachedInt32Memory0, ImageDataRGBA16, squoosh_png_default, isServiceWorker, isRunningInCloudFlareWorkers, isRunningInNode;
|
|
9160
|
+
var init_squoosh_png = __esm({
|
|
9161
|
+
"../../node_modules/.pnpm/@jsquash+png@3.1.1/node_modules/@jsquash/png/codec/pkg/squoosh_png.js"() {
|
|
9162
|
+
"use strict";
|
|
9163
|
+
import_meta = {};
|
|
9164
|
+
heap = new Array(128).fill(void 0);
|
|
9165
|
+
heap.push(void 0, null, true, false);
|
|
9166
|
+
heap_next = heap.length;
|
|
9167
|
+
cachedTextDecoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf-8", { ignoreBOM: true, fatal: true }) : { decode: () => {
|
|
9168
|
+
throw Error("TextDecoder not available");
|
|
9169
|
+
} };
|
|
9170
|
+
if (typeof TextDecoder !== "undefined") {
|
|
9171
|
+
cachedTextDecoder.decode();
|
|
9172
|
+
}
|
|
9173
|
+
cachedUint8Memory0 = null;
|
|
9174
|
+
cachedUint8ClampedMemory0 = null;
|
|
9175
|
+
WASM_VECTOR_LEN = 0;
|
|
9176
|
+
cachedInt32Memory0 = null;
|
|
9177
|
+
ImageDataRGBA16 = class _ImageDataRGBA16 {
|
|
9178
|
+
static __wrap(ptr) {
|
|
9179
|
+
ptr = ptr >>> 0;
|
|
9180
|
+
const obj = Object.create(_ImageDataRGBA16.prototype);
|
|
9181
|
+
obj.__wbg_ptr = ptr;
|
|
9182
|
+
return obj;
|
|
9183
|
+
}
|
|
9184
|
+
__destroy_into_raw() {
|
|
9185
|
+
const ptr = this.__wbg_ptr;
|
|
9186
|
+
this.__wbg_ptr = 0;
|
|
9187
|
+
return ptr;
|
|
9188
|
+
}
|
|
9189
|
+
free() {
|
|
9190
|
+
const ptr = this.__destroy_into_raw();
|
|
9191
|
+
wasm.__wbg_imagedatargba16_free(ptr);
|
|
9192
|
+
}
|
|
9193
|
+
/**
|
|
9194
|
+
* @returns {number}
|
|
9195
|
+
*/
|
|
9196
|
+
get width() {
|
|
9197
|
+
const ret = wasm.imagedatargba16_width(this.__wbg_ptr);
|
|
9198
|
+
return ret >>> 0;
|
|
9199
|
+
}
|
|
9200
|
+
/**
|
|
9201
|
+
* @returns {number}
|
|
9202
|
+
*/
|
|
9203
|
+
get height() {
|
|
9204
|
+
const ret = wasm.imagedatargba16_height(this.__wbg_ptr);
|
|
9205
|
+
return ret >>> 0;
|
|
9206
|
+
}
|
|
9207
|
+
/**
|
|
9208
|
+
* @returns {Uint16Array}
|
|
9209
|
+
*/
|
|
9210
|
+
get data() {
|
|
9211
|
+
const ret = wasm.imagedatargba16_data(this.__wbg_ptr);
|
|
9212
|
+
return takeObject(ret);
|
|
9213
|
+
}
|
|
9214
|
+
};
|
|
9215
|
+
squoosh_png_default = __wbg_init;
|
|
9216
|
+
isServiceWorker = globalThis.ServiceWorkerGlobalScope !== void 0;
|
|
9217
|
+
isRunningInCloudFlareWorkers = isServiceWorker && typeof self !== "undefined" && globalThis.caches && globalThis.caches.default !== void 0;
|
|
9218
|
+
isRunningInNode = typeof process === "object" && process.release && process.release.name === "node";
|
|
9219
|
+
if (isRunningInCloudFlareWorkers || isRunningInNode) {
|
|
9220
|
+
if (!globalThis.ImageData) {
|
|
9221
|
+
globalThis.ImageData = class ImageData {
|
|
9222
|
+
constructor(data, width, height) {
|
|
9223
|
+
this.data = data;
|
|
9224
|
+
this.width = width;
|
|
9225
|
+
this.height = height;
|
|
9226
|
+
}
|
|
9227
|
+
};
|
|
9228
|
+
}
|
|
9229
|
+
if (import_meta.url === void 0) {
|
|
9230
|
+
import_meta.url = "https://localhost";
|
|
9231
|
+
}
|
|
9232
|
+
if (typeof self !== "undefined" && self.location === void 0) {
|
|
9233
|
+
self.location = { href: "" };
|
|
9234
|
+
}
|
|
9235
|
+
}
|
|
9236
|
+
}
|
|
9237
|
+
});
|
|
9238
|
+
|
|
9239
|
+
// ../../node_modules/.pnpm/@jsquash+png@3.1.1/node_modules/@jsquash/png/decode.js
|
|
9240
|
+
var decode_exports = {};
|
|
9241
|
+
__export(decode_exports, {
|
|
9242
|
+
decode: () => decode2,
|
|
9243
|
+
default: () => decode_default,
|
|
9244
|
+
init: () => init
|
|
9245
|
+
});
|
|
9246
|
+
async function init(moduleOrPath) {
|
|
9247
|
+
if (!pngModule) {
|
|
9248
|
+
pngModule = squoosh_png_default(moduleOrPath);
|
|
9249
|
+
}
|
|
9250
|
+
return pngModule;
|
|
9251
|
+
}
|
|
9252
|
+
async function decode2(data, options = {}) {
|
|
9253
|
+
await init();
|
|
9254
|
+
const { bitDepth = 8 } = options;
|
|
9255
|
+
if (bitDepth === 16) {
|
|
9256
|
+
const imageData2 = await decode_rgba16(new Uint8Array(data));
|
|
9257
|
+
if (!imageData2)
|
|
9258
|
+
throw new Error("Encoding error.");
|
|
9259
|
+
return imageData2;
|
|
9260
|
+
}
|
|
9261
|
+
const imageData = await decode(new Uint8Array(data));
|
|
9262
|
+
if (!imageData)
|
|
9263
|
+
throw new Error("Encoding error.");
|
|
9264
|
+
return imageData;
|
|
9265
|
+
}
|
|
9266
|
+
var pngModule, decode_default;
|
|
9267
|
+
var init_decode = __esm({
|
|
9268
|
+
"../../node_modules/.pnpm/@jsquash+png@3.1.1/node_modules/@jsquash/png/decode.js"() {
|
|
9269
|
+
"use strict";
|
|
9270
|
+
init_squoosh_png();
|
|
9271
|
+
decode_default = decode2;
|
|
9272
|
+
}
|
|
9273
|
+
});
|
|
9274
|
+
|
|
9275
|
+
// ../../node_modules/.pnpm/@jsquash+png@3.1.1/node_modules/@jsquash/png/encode.js
|
|
9276
|
+
var encode_exports = {};
|
|
9277
|
+
__export(encode_exports, {
|
|
9278
|
+
default: () => encode2,
|
|
9279
|
+
init: () => init2
|
|
9280
|
+
});
|
|
9281
|
+
async function init2(moduleOrPath) {
|
|
9282
|
+
if (!pngModule2) {
|
|
9283
|
+
pngModule2 = squoosh_png_default(moduleOrPath);
|
|
9284
|
+
}
|
|
9285
|
+
return pngModule2;
|
|
9286
|
+
}
|
|
9287
|
+
async function encode2(data, options = {}) {
|
|
9288
|
+
var _a;
|
|
9289
|
+
await init2();
|
|
9290
|
+
const bitDepth = (_a = options === null || options === void 0 ? void 0 : options.bitDepth) !== null && _a !== void 0 ? _a : 8;
|
|
9291
|
+
if (bitDepth !== 8 && bitDepth !== 16) {
|
|
9292
|
+
throw new Error("Invalid bit depth. Must be either 8 or 16.");
|
|
9293
|
+
}
|
|
9294
|
+
const isUint16Array = data.data instanceof Uint16Array;
|
|
9295
|
+
if (isUint16Array && bitDepth !== 16) {
|
|
9296
|
+
throw new Error("Invalid bit depth, must be 16 for Uint16Array or manually convert to RGB8 values with Uint8Array.");
|
|
9297
|
+
}
|
|
9298
|
+
if (!isUint16Array && bitDepth === 16) {
|
|
9299
|
+
throw new Error("Invalid bit depth, must be 8 for Uint8Array or manually convert to RGB16 values with Uint16Array.");
|
|
9300
|
+
}
|
|
9301
|
+
const encodeData = new Uint8Array(data.data.buffer);
|
|
9302
|
+
const output = await encode(encodeData, data.width, data.height, bitDepth);
|
|
9303
|
+
if (!output)
|
|
9304
|
+
throw new Error("Encoding error.");
|
|
9305
|
+
return output.buffer;
|
|
9306
|
+
}
|
|
9307
|
+
var pngModule2;
|
|
9308
|
+
var init_encode = __esm({
|
|
9309
|
+
"../../node_modules/.pnpm/@jsquash+png@3.1.1/node_modules/@jsquash/png/encode.js"() {
|
|
9310
|
+
"use strict";
|
|
9311
|
+
init_squoosh_png();
|
|
9312
|
+
}
|
|
9313
|
+
});
|
|
9314
|
+
|
|
9315
|
+
// ../codec-jsquash-png/dist/index.mjs
|
|
9316
|
+
var dist_exports3 = {};
|
|
9317
|
+
__export(dist_exports3, {
|
|
9318
|
+
codecJsquashPng: () => l,
|
|
9319
|
+
default: () => p
|
|
9320
|
+
});
|
|
9321
|
+
function c2() {
|
|
9322
|
+
return n2 || (n2 = (async () => {
|
|
9323
|
+
let e = (0, import_path.dirname)(i2.resolve("@jsquash/png")), t = (0, import_path.join)(e, "codec", "pkg", "squoosh_png_bg.wasm"), a2 = (0, import_fs2.readFileSync)(t), o2 = await Promise.resolve().then(() => (init_decode(), decode_exports)), r = await Promise.resolve().then(() => (init_encode(), encode_exports));
|
|
9324
|
+
return await Promise.all([o2.init(a2), r.init(a2)]), { decode: o2.default, encode: r.default };
|
|
9325
|
+
})(), n2);
|
|
9326
|
+
}
|
|
9327
|
+
async function h2(e) {
|
|
9328
|
+
try {
|
|
9329
|
+
let { decode: t } = await c2(), a2 = typeof e == "string" ? (0, import_fs2.readFileSync)(e) : e, o2 = new Uint8Array(a2).buffer, r = await t(o2);
|
|
9330
|
+
return { data: r.data, width: r.width, height: r.height };
|
|
9331
|
+
} catch (t) {
|
|
9332
|
+
throw new Error(`Failed to read PNG file ${e}: ${t}`);
|
|
9333
|
+
}
|
|
9334
|
+
}
|
|
9335
|
+
async function m2(e, t) {
|
|
9336
|
+
try {
|
|
9337
|
+
let { encode: a2 } = await c2(), o2 = { data: new Uint8ClampedArray(e.data.buffer, e.data.byteOffset, e.data.byteLength), width: e.width, height: e.height, colorSpace: "srgb" }, r = await a2(o2);
|
|
9338
|
+
(0, import_fs2.writeFileSync)(t, Buffer.from(r));
|
|
9339
|
+
} catch (a2) {
|
|
9340
|
+
throw new Error(`Failed to write PNG file ${t}: ${a2}`);
|
|
9341
|
+
}
|
|
9342
|
+
}
|
|
9343
|
+
var import_fs2, import_path, i2, n2, l, p;
|
|
9344
|
+
var init_dist4 = __esm({
|
|
9345
|
+
"../codec-jsquash-png/dist/index.mjs"() {
|
|
9346
|
+
"use strict";
|
|
9347
|
+
import_fs2 = require("fs");
|
|
9348
|
+
import_path = require("path");
|
|
9349
|
+
i2 = ((e) => typeof require < "u" ? require : typeof Proxy < "u" ? new Proxy(e, { get: (t, a2) => (typeof require < "u" ? require : t)[a2] }) : e)(function(e) {
|
|
9350
|
+
if (typeof require < "u") return require.apply(this, arguments);
|
|
9351
|
+
throw Error('Dynamic require of "' + e + '" is not supported');
|
|
9352
|
+
});
|
|
9353
|
+
n2 = null;
|
|
9354
|
+
l = { read: h2, write: m2 };
|
|
9355
|
+
p = l;
|
|
9356
|
+
}
|
|
9357
|
+
});
|
|
9358
|
+
|
|
8999
9359
|
// src/commands/core.ts
|
|
9000
9360
|
var core_exports = {};
|
|
9001
9361
|
__export(core_exports, {
|
|
9002
9362
|
default: () => main2
|
|
9003
9363
|
});
|
|
9004
9364
|
function parseRGB(colorStr) {
|
|
9005
|
-
const parts = colorStr.split(",").map((
|
|
9006
|
-
if (parts.length !== 3 || parts.some((
|
|
9365
|
+
const parts = colorStr.split(",").map((s) => parseInt(s.trim(), 10));
|
|
9366
|
+
if (parts.length !== 3 || parts.some((p3) => Number.isNaN(p3) || p3 < 0 || p3 > 255)) {
|
|
9007
9367
|
throw new Error(
|
|
9008
9368
|
`Invalid RGB color format: ${colorStr}. Expected format: r,g,b (e.g., 255,0,0)`
|
|
9009
9369
|
);
|
|
@@ -9027,7 +9387,7 @@ Options:
|
|
|
9027
9387
|
--diff-color-alt <r,g,b> Alternative color for dark differences (default: same as diff-color)
|
|
9028
9388
|
--include-aa Include anti-aliasing detection
|
|
9029
9389
|
--diff-mask Draw diff over transparent background
|
|
9030
|
-
--
|
|
9390
|
+
--codec <name> Specify codec to use (pngjs, sharp, jsquash-png)
|
|
9031
9391
|
-h, --help Show this help message
|
|
9032
9392
|
|
|
9033
9393
|
Examples:
|
|
@@ -9051,15 +9411,15 @@ async function main2() {
|
|
|
9051
9411
|
const image1 = args[0];
|
|
9052
9412
|
const image2 = args[1];
|
|
9053
9413
|
const options = {};
|
|
9054
|
-
for (let
|
|
9055
|
-
const arg = args[
|
|
9056
|
-
const nextArg = args[
|
|
9414
|
+
for (let i3 = 2; i3 < args.length; i3++) {
|
|
9415
|
+
const arg = args[i3];
|
|
9416
|
+
const nextArg = args[i3 + 1];
|
|
9057
9417
|
switch (arg) {
|
|
9058
9418
|
case "-o":
|
|
9059
9419
|
case "--output":
|
|
9060
9420
|
if (nextArg) {
|
|
9061
9421
|
options.outputPath = nextArg;
|
|
9062
|
-
|
|
9422
|
+
i3++;
|
|
9063
9423
|
}
|
|
9064
9424
|
break;
|
|
9065
9425
|
case "-t":
|
|
@@ -9072,7 +9432,7 @@ async function main2() {
|
|
|
9072
9432
|
);
|
|
9073
9433
|
}
|
|
9074
9434
|
options.threshold = threshold;
|
|
9075
|
-
|
|
9435
|
+
i3++;
|
|
9076
9436
|
}
|
|
9077
9437
|
break;
|
|
9078
9438
|
case "-a":
|
|
@@ -9085,25 +9445,25 @@ async function main2() {
|
|
|
9085
9445
|
);
|
|
9086
9446
|
}
|
|
9087
9447
|
options.alpha = alpha;
|
|
9088
|
-
|
|
9448
|
+
i3++;
|
|
9089
9449
|
}
|
|
9090
9450
|
break;
|
|
9091
9451
|
case "--aa-color":
|
|
9092
9452
|
if (nextArg) {
|
|
9093
9453
|
options.aaColor = parseRGB(nextArg);
|
|
9094
|
-
|
|
9454
|
+
i3++;
|
|
9095
9455
|
}
|
|
9096
9456
|
break;
|
|
9097
9457
|
case "--diff-color":
|
|
9098
9458
|
if (nextArg) {
|
|
9099
9459
|
options.diffColor = parseRGB(nextArg);
|
|
9100
|
-
|
|
9460
|
+
i3++;
|
|
9101
9461
|
}
|
|
9102
9462
|
break;
|
|
9103
9463
|
case "--diff-color-alt":
|
|
9104
9464
|
if (nextArg) {
|
|
9105
9465
|
options.diffColorAlt = parseRGB(nextArg);
|
|
9106
|
-
|
|
9466
|
+
i3++;
|
|
9107
9467
|
}
|
|
9108
9468
|
break;
|
|
9109
9469
|
case "--include-aa":
|
|
@@ -9112,10 +9472,10 @@ async function main2() {
|
|
|
9112
9472
|
case "--diff-mask":
|
|
9113
9473
|
options.diffMask = true;
|
|
9114
9474
|
break;
|
|
9115
|
-
case "--
|
|
9475
|
+
case "--codec":
|
|
9116
9476
|
if (nextArg) {
|
|
9117
|
-
options.
|
|
9118
|
-
|
|
9477
|
+
options.codec = nextArg;
|
|
9478
|
+
i3++;
|
|
9119
9479
|
}
|
|
9120
9480
|
break;
|
|
9121
9481
|
default:
|
|
@@ -9124,12 +9484,10 @@ async function main2() {
|
|
|
9124
9484
|
process.exit(1);
|
|
9125
9485
|
}
|
|
9126
9486
|
}
|
|
9127
|
-
const
|
|
9128
|
-
options.transformer
|
|
9129
|
-
);
|
|
9487
|
+
const codec = await getCodec(options.codec);
|
|
9130
9488
|
const [img1, img2] = await Promise.all([
|
|
9131
|
-
|
|
9132
|
-
|
|
9489
|
+
codec.read(image1),
|
|
9490
|
+
codec.read(image2)
|
|
9133
9491
|
]);
|
|
9134
9492
|
if (img1.width !== img2.width || img1.height !== img2.height) {
|
|
9135
9493
|
throw new Error(
|
|
@@ -9160,7 +9518,7 @@ async function main2() {
|
|
|
9160
9518
|
);
|
|
9161
9519
|
const duration = performance.now() - startTime;
|
|
9162
9520
|
if (diffCount > 0 && options.outputPath && outputData) {
|
|
9163
|
-
await
|
|
9521
|
+
await codec.write(
|
|
9164
9522
|
{
|
|
9165
9523
|
data: outputData,
|
|
9166
9524
|
width: img1.width,
|
|
@@ -9198,21 +9556,25 @@ async function main2() {
|
|
|
9198
9556
|
process.exit(1);
|
|
9199
9557
|
}
|
|
9200
9558
|
}
|
|
9201
|
-
var
|
|
9559
|
+
var getCodec;
|
|
9202
9560
|
var init_core = __esm({
|
|
9203
9561
|
"src/commands/core.ts"() {
|
|
9204
9562
|
"use strict";
|
|
9205
9563
|
init_dist();
|
|
9206
|
-
|
|
9207
|
-
if (!
|
|
9208
|
-
const { default:
|
|
9209
|
-
return
|
|
9564
|
+
getCodec = async (codec) => {
|
|
9565
|
+
if (!codec || codec === "pngjs") {
|
|
9566
|
+
const { default: c3 } = await Promise.resolve().then(() => (init_dist2(), dist_exports));
|
|
9567
|
+
return c3;
|
|
9568
|
+
}
|
|
9569
|
+
if (codec === "sharp") {
|
|
9570
|
+
const { default: c3 } = await Promise.resolve().then(() => (init_dist3(), dist_exports2));
|
|
9571
|
+
return c3;
|
|
9210
9572
|
}
|
|
9211
|
-
if (
|
|
9212
|
-
const { default:
|
|
9213
|
-
return
|
|
9573
|
+
if (codec === "jsquash-png") {
|
|
9574
|
+
const { default: c3 } = await Promise.resolve().then(() => (init_dist4(), dist_exports3));
|
|
9575
|
+
return c3;
|
|
9214
9576
|
}
|
|
9215
|
-
throw new Error(`Unknown
|
|
9577
|
+
throw new Error(`Unknown codec: ${codec}`);
|
|
9216
9578
|
};
|
|
9217
9579
|
if (typeof require !== "undefined" && require.main === module) {
|
|
9218
9580
|
main2();
|
|
@@ -9221,90 +9583,90 @@ var init_core = __esm({
|
|
|
9221
9583
|
});
|
|
9222
9584
|
|
|
9223
9585
|
// ../gmsd/dist/index.mjs
|
|
9224
|
-
function D(e,
|
|
9225
|
-
let { downsample:
|
|
9226
|
-
if (H(e,
|
|
9586
|
+
function D(e, n3, a2, t, r, o2 = {}) {
|
|
9587
|
+
let { downsample: s = 0, c: c3 = 170 } = o2;
|
|
9588
|
+
if (H(e, n3)) {
|
|
9227
9589
|
if (a2) for (let y = 0; y < t * r * 4; y += 4) a2[y] = 255, a2[y + 1] = 255, a2[y + 2] = 255, a2[y + 3] = 255;
|
|
9228
9590
|
return 0;
|
|
9229
9591
|
}
|
|
9230
|
-
let f2 = e.length / (t * r) === 4,
|
|
9231
|
-
if (f2)
|
|
9592
|
+
let f2 = e.length / (t * r) === 4, l2, u, b = t, x = r;
|
|
9593
|
+
if (f2) l2 = new Float32Array(t * r), u = new Float32Array(t * r), q2(e, l2, t, r), q2(n3, u, t, r);
|
|
9232
9594
|
else {
|
|
9233
|
-
|
|
9234
|
-
for (let y = 0; y < t * r; y++)
|
|
9595
|
+
l2 = new Float32Array(t * r), u = new Float32Array(t * r);
|
|
9596
|
+
for (let y = 0; y < t * r; y++) l2[y] = e[y], u[y] = n3[y];
|
|
9235
9597
|
}
|
|
9236
|
-
if (
|
|
9237
|
-
let y = P(
|
|
9238
|
-
for (let
|
|
9239
|
-
let G =
|
|
9240
|
-
M[
|
|
9598
|
+
if (s === 1) {
|
|
9599
|
+
let y = P(l2, t, r), B = P(u, t, r), d2 = Math.floor(t / 2), I2 = Math.floor(r / 2), M = new Float32Array(d2 * I2), v = new Float32Array(d2 * I2);
|
|
9600
|
+
for (let i3 = 0; i3 < I2; i3++) for (let p3 = 0; p3 < d2; p3++) {
|
|
9601
|
+
let G = i3 * 2 * t + p3 * 2;
|
|
9602
|
+
M[i3 * d2 + p3] = y[G], v[i3 * d2 + p3] = B[G];
|
|
9241
9603
|
}
|
|
9242
|
-
|
|
9604
|
+
l2 = M, u = v, b = d2, x = I2;
|
|
9243
9605
|
}
|
|
9244
|
-
let F2 = S(
|
|
9245
|
-
return a2 && O(a2, F2, A,
|
|
9606
|
+
let F2 = S(l2, b, x), A = S(u, b, x), g2 = U(F2, A, c3, b, x), k = W(g2);
|
|
9607
|
+
return a2 && O(a2, F2, A, c3, b, x), k;
|
|
9246
9608
|
}
|
|
9247
|
-
function H(e,
|
|
9248
|
-
if (e.length !==
|
|
9249
|
-
for (let a2 = 0; a2 < e.length; a2++) if (e[a2] !==
|
|
9609
|
+
function H(e, n3) {
|
|
9610
|
+
if (e.length !== n3.length) return false;
|
|
9611
|
+
for (let a2 = 0; a2 < e.length; a2++) if (e[a2] !== n3[a2]) return false;
|
|
9250
9612
|
return true;
|
|
9251
9613
|
}
|
|
9252
|
-
function P(e,
|
|
9253
|
-
let t = new Float32Array(
|
|
9254
|
-
for (let r = 0; r < a2; r++) for (let o2 = 0; o2 <
|
|
9255
|
-
let
|
|
9256
|
-
for (let
|
|
9257
|
-
let f2 = r +
|
|
9258
|
-
f2 < a2 &&
|
|
9614
|
+
function P(e, n3, a2) {
|
|
9615
|
+
let t = new Float32Array(n3 * a2);
|
|
9616
|
+
for (let r = 0; r < a2; r++) for (let o2 = 0; o2 < n3; o2++) {
|
|
9617
|
+
let s = 0;
|
|
9618
|
+
for (let c3 = 0; c3 < 2; c3++) for (let m3 = 0; m3 < 2; m3++) {
|
|
9619
|
+
let f2 = r + c3, l2 = o2 + m3;
|
|
9620
|
+
f2 < a2 && l2 < n3 && (s += e[f2 * n3 + l2]);
|
|
9259
9621
|
}
|
|
9260
|
-
t[r *
|
|
9622
|
+
t[r * n3 + o2] = s / 4;
|
|
9261
9623
|
}
|
|
9262
9624
|
return t;
|
|
9263
9625
|
}
|
|
9264
|
-
function O(e,
|
|
9626
|
+
function O(e, n3, a2, t, r, o2) {
|
|
9265
9627
|
e.fill(0);
|
|
9266
|
-
for (let
|
|
9267
|
-
let
|
|
9628
|
+
for (let s = 1; s < o2 - 1; s++) for (let c3 = 1; c3 < r - 1; c3++) {
|
|
9629
|
+
let m3 = s * r + c3, f2 = n3[m3], l2 = a2[m3], u = 2 * f2 * l2 + t, b = f2 * f2 + l2 * l2 + t, x = u / b, F2 = Math.floor(x * 255), A = m3 * 4;
|
|
9268
9630
|
e[A] = F2, e[A + 1] = F2, e[A + 2] = F2, e[A + 3] = 255;
|
|
9269
9631
|
}
|
|
9270
9632
|
}
|
|
9271
|
-
function q2(e,
|
|
9633
|
+
function q2(e, n3, a2, t) {
|
|
9272
9634
|
let r = a2 * t;
|
|
9273
9635
|
for (let o2 = 0; o2 < r; o2++) {
|
|
9274
|
-
let
|
|
9275
|
-
|
|
9636
|
+
let s = o2 * 4, c3 = e[s], m3 = e[s + 1], f2 = e[s + 2];
|
|
9637
|
+
n3[o2] = 0.298936 * c3 + 0.587043 * m3 + 0.114021 * f2;
|
|
9276
9638
|
}
|
|
9277
9639
|
}
|
|
9278
|
-
function S(e,
|
|
9279
|
-
let t = new Float32Array(
|
|
9280
|
-
for (let r = 1; r < a2 - 1; r++) for (let o2 = 1; o2 <
|
|
9281
|
-
let
|
|
9282
|
-
t[
|
|
9640
|
+
function S(e, n3, a2) {
|
|
9641
|
+
let t = new Float32Array(n3 * a2);
|
|
9642
|
+
for (let r = 1; r < a2 - 1; r++) for (let o2 = 1; o2 < n3 - 1; o2++) {
|
|
9643
|
+
let s = r * n3 + o2, c3 = e[(r - 1) * n3 + (o2 - 1)], m3 = e[(r - 1) * n3 + o2], f2 = e[(r - 1) * n3 + (o2 + 1)], l2 = e[r * n3 + (o2 - 1)], u = e[r * n3 + (o2 + 1)], b = e[(r + 1) * n3 + (o2 - 1)], x = e[(r + 1) * n3 + o2], F2 = e[(r + 1) * n3 + (o2 + 1)], A = (c3 + l2 + b - f2 - u - F2) / 3, g2 = (c3 + m3 + f2 - b - x - F2) / 3;
|
|
9644
|
+
t[s] = Math.sqrt(A * A + g2 * g2);
|
|
9283
9645
|
}
|
|
9284
9646
|
return t;
|
|
9285
9647
|
}
|
|
9286
|
-
function U(e,
|
|
9648
|
+
function U(e, n3, a2, t, r) {
|
|
9287
9649
|
let o2 = [];
|
|
9288
|
-
for (let
|
|
9289
|
-
let
|
|
9650
|
+
for (let s = 1; s < r - 1; s++) for (let c3 = 1; c3 < t - 1; c3++) {
|
|
9651
|
+
let m3 = s * t + c3, f2 = e[m3], l2 = n3[m3], u = 2 * f2 * l2 + a2, b = f2 * f2 + l2 * l2 + a2;
|
|
9290
9652
|
o2.push(u / b);
|
|
9291
9653
|
}
|
|
9292
9654
|
return new Float32Array(o2);
|
|
9293
9655
|
}
|
|
9294
9656
|
function W(e) {
|
|
9295
|
-
let
|
|
9296
|
-
if (
|
|
9657
|
+
let n3 = e.length;
|
|
9658
|
+
if (n3 === 0) return 0;
|
|
9297
9659
|
let a2 = 0;
|
|
9298
|
-
for (let o2 = 0; o2 <
|
|
9299
|
-
let t = a2 /
|
|
9300
|
-
for (let o2 = 0; o2 <
|
|
9301
|
-
let
|
|
9302
|
-
r +=
|
|
9660
|
+
for (let o2 = 0; o2 < n3; o2++) a2 += e[o2];
|
|
9661
|
+
let t = a2 / n3, r = 0;
|
|
9662
|
+
for (let o2 = 0; o2 < n3; o2++) {
|
|
9663
|
+
let s = e[o2] - t;
|
|
9664
|
+
r += s * s;
|
|
9303
9665
|
}
|
|
9304
|
-
return r /=
|
|
9666
|
+
return r /= n3, Math.sqrt(r);
|
|
9305
9667
|
}
|
|
9306
9668
|
var C;
|
|
9307
|
-
var
|
|
9669
|
+
var init_dist5 = __esm({
|
|
9308
9670
|
"../gmsd/dist/index.mjs"() {
|
|
9309
9671
|
"use strict";
|
|
9310
9672
|
C = D;
|
|
@@ -9328,7 +9690,7 @@ Options:
|
|
|
9328
9690
|
-o, --output <path> Output path for GMS similarity map (grayscale visualization)
|
|
9329
9691
|
--downsample <0|1> Downsample factor: 0=full-res, 1=2x downsample (default: 0)
|
|
9330
9692
|
--gmsd-c <num> Stability constant for GMSD (default: 170)
|
|
9331
|
-
--
|
|
9693
|
+
--codec <name> Specify codec to use (pngjs, sharp, jsquash-png)
|
|
9332
9694
|
-h, --help Show this help message
|
|
9333
9695
|
|
|
9334
9696
|
Examples:
|
|
@@ -9352,15 +9714,15 @@ async function main3() {
|
|
|
9352
9714
|
const image1 = args[0];
|
|
9353
9715
|
const image2 = args[1];
|
|
9354
9716
|
const options = {};
|
|
9355
|
-
for (let
|
|
9356
|
-
const arg = args[
|
|
9357
|
-
const nextArg = args[
|
|
9717
|
+
for (let i3 = 2; i3 < args.length; i3++) {
|
|
9718
|
+
const arg = args[i3];
|
|
9719
|
+
const nextArg = args[i3 + 1];
|
|
9358
9720
|
switch (arg) {
|
|
9359
9721
|
case "-o":
|
|
9360
9722
|
case "--output":
|
|
9361
9723
|
if (nextArg) {
|
|
9362
9724
|
options.outputPath = nextArg;
|
|
9363
|
-
|
|
9725
|
+
i3++;
|
|
9364
9726
|
}
|
|
9365
9727
|
break;
|
|
9366
9728
|
case "--downsample":
|
|
@@ -9370,7 +9732,7 @@ async function main3() {
|
|
|
9370
9732
|
throw new Error(`Invalid downsample: ${nextArg}. Must be 0 or 1`);
|
|
9371
9733
|
}
|
|
9372
9734
|
options.downsample = downsample;
|
|
9373
|
-
|
|
9735
|
+
i3++;
|
|
9374
9736
|
}
|
|
9375
9737
|
break;
|
|
9376
9738
|
case "--gmsd-c":
|
|
@@ -9382,13 +9744,13 @@ async function main3() {
|
|
|
9382
9744
|
);
|
|
9383
9745
|
}
|
|
9384
9746
|
options.gmsdC = gmsdC;
|
|
9385
|
-
|
|
9747
|
+
i3++;
|
|
9386
9748
|
}
|
|
9387
9749
|
break;
|
|
9388
|
-
case "--
|
|
9750
|
+
case "--codec":
|
|
9389
9751
|
if (nextArg) {
|
|
9390
|
-
options.
|
|
9391
|
-
|
|
9752
|
+
options.codec = nextArg;
|
|
9753
|
+
i3++;
|
|
9392
9754
|
}
|
|
9393
9755
|
break;
|
|
9394
9756
|
default:
|
|
@@ -9397,12 +9759,10 @@ async function main3() {
|
|
|
9397
9759
|
process.exit(1);
|
|
9398
9760
|
}
|
|
9399
9761
|
}
|
|
9400
|
-
const
|
|
9401
|
-
options.transformer
|
|
9402
|
-
);
|
|
9762
|
+
const codec = await getCodec2(options.codec);
|
|
9403
9763
|
const [img1, img2] = await Promise.all([
|
|
9404
|
-
|
|
9405
|
-
|
|
9764
|
+
codec.read(image1),
|
|
9765
|
+
codec.read(image2)
|
|
9406
9766
|
]);
|
|
9407
9767
|
if (img1.width !== img2.width || img1.height !== img2.height) {
|
|
9408
9768
|
throw new Error(
|
|
@@ -9428,7 +9788,7 @@ async function main3() {
|
|
|
9428
9788
|
);
|
|
9429
9789
|
const duration = performance.now() - startTime;
|
|
9430
9790
|
if (options.outputPath && outputData) {
|
|
9431
|
-
await
|
|
9791
|
+
await codec.write(
|
|
9432
9792
|
{
|
|
9433
9793
|
data: outputData,
|
|
9434
9794
|
width: img1.width,
|
|
@@ -9466,21 +9826,25 @@ async function main3() {
|
|
|
9466
9826
|
process.exit(1);
|
|
9467
9827
|
}
|
|
9468
9828
|
}
|
|
9469
|
-
var
|
|
9829
|
+
var getCodec2;
|
|
9470
9830
|
var init_gmsd = __esm({
|
|
9471
9831
|
"src/commands/gmsd.ts"() {
|
|
9472
9832
|
"use strict";
|
|
9473
|
-
|
|
9474
|
-
|
|
9475
|
-
if (!
|
|
9476
|
-
const { default:
|
|
9477
|
-
return
|
|
9833
|
+
init_dist5();
|
|
9834
|
+
getCodec2 = async (codec) => {
|
|
9835
|
+
if (!codec || codec === "pngjs") {
|
|
9836
|
+
const { default: c3 } = await Promise.resolve().then(() => (init_dist2(), dist_exports));
|
|
9837
|
+
return c3;
|
|
9478
9838
|
}
|
|
9479
|
-
if (
|
|
9480
|
-
const { default:
|
|
9481
|
-
return
|
|
9839
|
+
if (codec === "sharp") {
|
|
9840
|
+
const { default: c3 } = await Promise.resolve().then(() => (init_dist3(), dist_exports2));
|
|
9841
|
+
return c3;
|
|
9482
9842
|
}
|
|
9483
|
-
|
|
9843
|
+
if (codec === "jsquash-png") {
|
|
9844
|
+
const { default: c3 } = await Promise.resolve().then(() => (init_dist4(), dist_exports3));
|
|
9845
|
+
return c3;
|
|
9846
|
+
}
|
|
9847
|
+
throw new Error(`Unknown codec: ${codec}`);
|
|
9484
9848
|
};
|
|
9485
9849
|
if (typeof require !== "undefined" && require.main === module) {
|
|
9486
9850
|
main3();
|
|
@@ -9489,130 +9853,130 @@ var init_gmsd = __esm({
|
|
|
9489
9853
|
});
|
|
9490
9854
|
|
|
9491
9855
|
// ../ssim/dist/ssim.mjs
|
|
9492
|
-
function C2(f2, M,
|
|
9493
|
-
let r = new Float32Array(M *
|
|
9856
|
+
function C2(f2, M, l2) {
|
|
9857
|
+
let r = new Float32Array(M * l2), n3 = 0;
|
|
9494
9858
|
for (let u = 0; u < f2.length; u += 4) {
|
|
9495
9859
|
let e = f2[u], A = f2[u + 1], a2 = f2[u + 2];
|
|
9496
|
-
r[
|
|
9860
|
+
r[n3++] = 0.298936 * e + 0.587043 * A + 0.114021 * a2;
|
|
9497
9861
|
}
|
|
9498
9862
|
return r;
|
|
9499
9863
|
}
|
|
9500
|
-
function N2(f2, M,
|
|
9501
|
-
let { windowSize: e = 11, k1: A = 0.01, k2: a2 = 0.03, L:
|
|
9502
|
-
if (
|
|
9503
|
-
let y = Q(
|
|
9504
|
-
|
|
9505
|
-
}
|
|
9506
|
-
let x = P2(e, 1.5), b = (A *
|
|
9507
|
-
S2(
|
|
9508
|
-
let V3 =
|
|
9864
|
+
function N2(f2, M, l2, r, n3, u = {}) {
|
|
9865
|
+
let { windowSize: e = 11, k1: A = 0.01, k2: a2 = 0.03, L: i3 = 255 } = u, c3 = C2(f2, r, n3), s = C2(M, r, n3), o2 = r, t = n3, m3 = Math.max(1, Math.round(Math.min(r, n3) / 256));
|
|
9866
|
+
if (m3 > 1) {
|
|
9867
|
+
let y = Q(c3, s, o2, t, m3);
|
|
9868
|
+
c3 = y.img1, s = y.img2, o2 = y.width, t = y.height;
|
|
9869
|
+
}
|
|
9870
|
+
let x = P2(e, 1.5), b = (A * i3) ** 2, B = (a2 * i3) ** 2, R = o2 - e + 1, T = t - e + 1, g2 = R * T, v = new Float32Array(g2), O2 = new Float32Array(g2), G = new Float32Array(g2), H3 = new Float32Array(g2), I2 = new Float32Array(g2), U3 = new Float32Array(o2 * t);
|
|
9871
|
+
S2(c3, v, U3, o2, t, x, e), S2(s, O2, U3, o2, t, x, e);
|
|
9872
|
+
let V3 = c3.length;
|
|
9509
9873
|
for (let y = 0; y < V3; y++) {
|
|
9510
|
-
let
|
|
9511
|
-
U3[y] =
|
|
9874
|
+
let p3 = c3[y], d2 = s[y];
|
|
9875
|
+
U3[y] = p3 * d2, c3[y] = p3 * p3, s[y] = d2 * d2;
|
|
9512
9876
|
}
|
|
9513
9877
|
let q4 = new Float32Array(o2 * t);
|
|
9514
|
-
S2(
|
|
9878
|
+
S2(c3, G, q4, o2, t, x, e), S2(s, H3, q4, o2, t, x, e), S2(U3, I2, q4, o2, t, x, e);
|
|
9515
9879
|
let w = new Float32Array(v.length);
|
|
9516
9880
|
for (let y = 0; y < v.length; y++) {
|
|
9517
|
-
let
|
|
9881
|
+
let p3 = v[y], d2 = O2[y], W2 = p3 * p3, X2 = d2 * d2, Y = p3 * d2, $ = G[y] - W2, K2 = H3[y] - X2, _2 = I2[y] - Y, j3 = (2 * Y + b) * (2 * _2 + B), J = (W2 + X2 + b) * ($ + K2 + B);
|
|
9518
9882
|
w[y] = j3 / J;
|
|
9519
9883
|
}
|
|
9520
|
-
if (
|
|
9521
|
-
let y = o2 - e + 1,
|
|
9522
|
-
Z(
|
|
9884
|
+
if (l2) {
|
|
9885
|
+
let y = o2 - e + 1, p3 = t - e + 1;
|
|
9886
|
+
Z(l2, w, y, p3, r, n3);
|
|
9523
9887
|
}
|
|
9524
9888
|
let L3 = 0;
|
|
9525
9889
|
for (let y = 0; y < w.length; y++) L3 += w[y];
|
|
9526
9890
|
return L3 / w.length;
|
|
9527
9891
|
}
|
|
9528
9892
|
function P2(f2, M) {
|
|
9529
|
-
let
|
|
9893
|
+
let l2 = `${f2}_${M}`, r = D2.get(l2);
|
|
9530
9894
|
if (r) return r;
|
|
9531
|
-
let
|
|
9895
|
+
let n3 = new Float32Array(f2), u = (f2 - 1) / 2, e = 2 * M * M, A = 0;
|
|
9532
9896
|
for (let a2 = 0; a2 < f2; a2++) {
|
|
9533
|
-
let
|
|
9534
|
-
|
|
9897
|
+
let i3 = a2 - u, c3 = Math.exp(-(i3 * i3) / e);
|
|
9898
|
+
n3[a2] = c3, A += c3;
|
|
9535
9899
|
}
|
|
9536
|
-
for (let a2 = 0; a2 < f2; a2++)
|
|
9537
|
-
return D2.set(
|
|
9900
|
+
for (let a2 = 0; a2 < f2; a2++) n3[a2] /= A;
|
|
9901
|
+
return D2.set(l2, n3), n3;
|
|
9538
9902
|
}
|
|
9539
|
-
function S2(f2, M,
|
|
9903
|
+
function S2(f2, M, l2, r, n3, u, e) {
|
|
9540
9904
|
let A = Math.floor(e / 2);
|
|
9541
|
-
for (let
|
|
9542
|
-
let o2 =
|
|
9905
|
+
for (let s = 0; s < n3; s++) {
|
|
9906
|
+
let o2 = s * r;
|
|
9543
9907
|
for (let t = 0; t < A; t++) {
|
|
9544
|
-
let
|
|
9908
|
+
let m3 = 0;
|
|
9545
9909
|
for (let F2 = 0; F2 < e; F2++) {
|
|
9546
9910
|
let x = t + F2 - A, b = Math.max(0, Math.min(r - 1, x));
|
|
9547
|
-
|
|
9911
|
+
m3 += f2[o2 + b] * u[F2];
|
|
9548
9912
|
}
|
|
9549
|
-
|
|
9913
|
+
l2[o2 + t] = m3;
|
|
9550
9914
|
}
|
|
9551
9915
|
for (let t = A; t < r - A; t++) {
|
|
9552
|
-
let
|
|
9553
|
-
for (let x = 0; x < e; x++)
|
|
9554
|
-
|
|
9916
|
+
let m3 = 0, F2 = o2 + t - A;
|
|
9917
|
+
for (let x = 0; x < e; x++) m3 += f2[F2 + x] * u[x];
|
|
9918
|
+
l2[o2 + t] = m3;
|
|
9555
9919
|
}
|
|
9556
9920
|
for (let t = r - A; t < r; t++) {
|
|
9557
|
-
let
|
|
9921
|
+
let m3 = 0;
|
|
9558
9922
|
for (let F2 = 0; F2 < e; F2++) {
|
|
9559
9923
|
let x = t + F2 - A, b = Math.max(0, Math.min(r - 1, x));
|
|
9560
|
-
|
|
9924
|
+
m3 += f2[o2 + b] * u[F2];
|
|
9561
9925
|
}
|
|
9562
|
-
|
|
9926
|
+
l2[o2 + t] = m3;
|
|
9563
9927
|
}
|
|
9564
9928
|
}
|
|
9565
|
-
let a2 = r - e + 1,
|
|
9566
|
-
for (let
|
|
9567
|
-
let t = 0,
|
|
9929
|
+
let a2 = r - e + 1, i3 = n3 - e + 1, c3 = 0;
|
|
9930
|
+
for (let s = 0; s < i3; s++) for (let o2 = 0; o2 < a2; o2++) {
|
|
9931
|
+
let t = 0, m3 = o2 + A;
|
|
9568
9932
|
for (let F2 = 0; F2 < e; F2++) {
|
|
9569
|
-
let x =
|
|
9570
|
-
t +=
|
|
9933
|
+
let x = s + F2;
|
|
9934
|
+
t += l2[x * r + m3] * u[F2];
|
|
9571
9935
|
}
|
|
9572
|
-
M[
|
|
9936
|
+
M[c3++] = t;
|
|
9573
9937
|
}
|
|
9574
9938
|
}
|
|
9575
|
-
function Q(f2, M,
|
|
9576
|
-
let u = new Float32Array(
|
|
9577
|
-
for (let
|
|
9578
|
-
let A = new Float32Array(
|
|
9579
|
-
E(f2, a2, A,
|
|
9580
|
-
let
|
|
9581
|
-
E(M,
|
|
9582
|
-
let
|
|
9583
|
-
for (let
|
|
9584
|
-
let F2 =
|
|
9585
|
-
for (let b = 0; b <
|
|
9586
|
-
}
|
|
9587
|
-
return { img1: o2, img2: t, width:
|
|
9939
|
+
function Q(f2, M, l2, r, n3) {
|
|
9940
|
+
let u = new Float32Array(n3), e = 1 / n3;
|
|
9941
|
+
for (let m3 = 0; m3 < n3; m3++) u[m3] = e;
|
|
9942
|
+
let A = new Float32Array(l2 * r), a2 = new Float32Array(l2 * r);
|
|
9943
|
+
E(f2, a2, A, l2, r, u, n3);
|
|
9944
|
+
let i3 = new Float32Array(l2 * r);
|
|
9945
|
+
E(M, i3, A, l2, r, u, n3);
|
|
9946
|
+
let c3 = Math.floor(l2 / n3), s = Math.floor(r / n3), o2 = new Float32Array(c3 * s), t = new Float32Array(c3 * s);
|
|
9947
|
+
for (let m3 = 0; m3 < s; m3++) {
|
|
9948
|
+
let F2 = m3 * n3 * l2, x = m3 * c3;
|
|
9949
|
+
for (let b = 0; b < c3; b++) o2[x + b] = a2[F2 + b * n3], t[x + b] = i3[F2 + b * n3];
|
|
9950
|
+
}
|
|
9951
|
+
return { img1: o2, img2: t, width: c3, height: s };
|
|
9588
9952
|
}
|
|
9589
|
-
function E(f2, M,
|
|
9953
|
+
function E(f2, M, l2, r, n3, u, e) {
|
|
9590
9954
|
let A = Math.floor(e / 2);
|
|
9591
|
-
for (let a2 = 0; a2 <
|
|
9592
|
-
let
|
|
9593
|
-
for (let
|
|
9594
|
-
let
|
|
9955
|
+
for (let a2 = 0; a2 < n3; a2++) {
|
|
9956
|
+
let i3 = a2 * r;
|
|
9957
|
+
for (let c3 = 0; c3 < r; c3++) {
|
|
9958
|
+
let s = 0;
|
|
9595
9959
|
for (let o2 = 0; o2 < e; o2++) {
|
|
9596
|
-
let t =
|
|
9597
|
-
t < 0 ? t = -t : t >= r && (t = 2 * r - t - 2), t = Math.max(0, Math.min(r - 1, t)),
|
|
9960
|
+
let t = c3 + o2 - A;
|
|
9961
|
+
t < 0 ? t = -t : t >= r && (t = 2 * r - t - 2), t = Math.max(0, Math.min(r - 1, t)), s += f2[i3 + t] * u[o2];
|
|
9598
9962
|
}
|
|
9599
|
-
|
|
9963
|
+
l2[i3 + c3] = s;
|
|
9600
9964
|
}
|
|
9601
9965
|
}
|
|
9602
|
-
for (let a2 = 0; a2 <
|
|
9603
|
-
let
|
|
9604
|
-
for (let
|
|
9605
|
-
let o2 = a2 +
|
|
9606
|
-
o2 < 0 ? o2 = -o2 : o2 >=
|
|
9966
|
+
for (let a2 = 0; a2 < n3; a2++) for (let i3 = 0; i3 < r; i3++) {
|
|
9967
|
+
let c3 = 0;
|
|
9968
|
+
for (let s = 0; s < e; s++) {
|
|
9969
|
+
let o2 = a2 + s - A;
|
|
9970
|
+
o2 < 0 ? o2 = -o2 : o2 >= n3 && (o2 = 2 * n3 - o2 - 2), o2 = Math.max(0, Math.min(n3 - 1, o2)), c3 += l2[o2 * r + i3] * u[s];
|
|
9607
9971
|
}
|
|
9608
|
-
M[a2 * r +
|
|
9972
|
+
M[a2 * r + i3] = c3;
|
|
9609
9973
|
}
|
|
9610
9974
|
}
|
|
9611
|
-
function Z(f2, M,
|
|
9612
|
-
let e =
|
|
9613
|
-
for (let a2 = 0; a2 < u; a2++) for (let
|
|
9614
|
-
let
|
|
9615
|
-
f2[
|
|
9975
|
+
function Z(f2, M, l2, r, n3, u) {
|
|
9976
|
+
let e = n3 / l2, A = u / r;
|
|
9977
|
+
for (let a2 = 0; a2 < u; a2++) for (let i3 = 0; i3 < n3; i3++) {
|
|
9978
|
+
let c3 = Math.min(Math.floor(i3 / e), l2 - 1), s = Math.min(Math.floor(a2 / A), r - 1), o2 = M[s * l2 + c3], t = Math.floor(Math.max(0, Math.min(1, o2)) * 255), m3 = (a2 * n3 + i3) * 4;
|
|
9979
|
+
f2[m3] = t, f2[m3 + 1] = t, f2[m3 + 2] = t, f2[m3 + 3] = 255;
|
|
9616
9980
|
}
|
|
9617
9981
|
}
|
|
9618
9982
|
var D2, z;
|
|
@@ -9639,7 +10003,7 @@ Arguments:
|
|
|
9639
10003
|
|
|
9640
10004
|
Options:
|
|
9641
10005
|
-o, --output <path> Output path for SSIM map visualization
|
|
9642
|
-
--
|
|
10006
|
+
--codec <name> Specify codec to use (pngjs, sharp, jsquash-png)
|
|
9643
10007
|
-h, --help Show this help message
|
|
9644
10008
|
|
|
9645
10009
|
Examples:
|
|
@@ -9662,21 +10026,21 @@ async function main4() {
|
|
|
9662
10026
|
const image1 = args[0];
|
|
9663
10027
|
const image2 = args[1];
|
|
9664
10028
|
const options = {};
|
|
9665
|
-
for (let
|
|
9666
|
-
const arg = args[
|
|
9667
|
-
const nextArg = args[
|
|
10029
|
+
for (let i3 = 2; i3 < args.length; i3++) {
|
|
10030
|
+
const arg = args[i3];
|
|
10031
|
+
const nextArg = args[i3 + 1];
|
|
9668
10032
|
switch (arg) {
|
|
9669
10033
|
case "-o":
|
|
9670
10034
|
case "--output":
|
|
9671
10035
|
if (nextArg) {
|
|
9672
10036
|
options.outputPath = nextArg;
|
|
9673
|
-
|
|
10037
|
+
i3++;
|
|
9674
10038
|
}
|
|
9675
10039
|
break;
|
|
9676
|
-
case "--
|
|
10040
|
+
case "--codec":
|
|
9677
10041
|
if (nextArg) {
|
|
9678
|
-
options.
|
|
9679
|
-
|
|
10042
|
+
options.codec = nextArg;
|
|
10043
|
+
i3++;
|
|
9680
10044
|
}
|
|
9681
10045
|
break;
|
|
9682
10046
|
default:
|
|
@@ -9685,10 +10049,10 @@ async function main4() {
|
|
|
9685
10049
|
process.exit(1);
|
|
9686
10050
|
}
|
|
9687
10051
|
}
|
|
9688
|
-
const
|
|
10052
|
+
const codec = await getCodec3(options.codec);
|
|
9689
10053
|
const [img1, img2] = await Promise.all([
|
|
9690
|
-
|
|
9691
|
-
|
|
10054
|
+
codec.read(image1),
|
|
10055
|
+
codec.read(image2)
|
|
9692
10056
|
]);
|
|
9693
10057
|
if (img1.width !== img2.width || img1.height !== img2.height) {
|
|
9694
10058
|
throw new Error(
|
|
@@ -9710,7 +10074,7 @@ async function main4() {
|
|
|
9710
10074
|
);
|
|
9711
10075
|
const duration = performance.now() - startTime;
|
|
9712
10076
|
if (options.outputPath && outputData) {
|
|
9713
|
-
await
|
|
10077
|
+
await codec.write(
|
|
9714
10078
|
{
|
|
9715
10079
|
data: outputData,
|
|
9716
10080
|
width: img1.width,
|
|
@@ -9748,21 +10112,25 @@ async function main4() {
|
|
|
9748
10112
|
process.exit(1);
|
|
9749
10113
|
}
|
|
9750
10114
|
}
|
|
9751
|
-
var
|
|
10115
|
+
var getCodec3;
|
|
9752
10116
|
var init_ssim2 = __esm({
|
|
9753
10117
|
"src/commands/ssim.ts"() {
|
|
9754
10118
|
"use strict";
|
|
9755
10119
|
init_ssim();
|
|
9756
|
-
|
|
9757
|
-
if (!
|
|
9758
|
-
const { default:
|
|
9759
|
-
return
|
|
10120
|
+
getCodec3 = async (codec) => {
|
|
10121
|
+
if (!codec || codec === "pngjs") {
|
|
10122
|
+
const { default: c3 } = await Promise.resolve().then(() => (init_dist2(), dist_exports));
|
|
10123
|
+
return c3;
|
|
10124
|
+
}
|
|
10125
|
+
if (codec === "sharp") {
|
|
10126
|
+
const { default: c3 } = await Promise.resolve().then(() => (init_dist3(), dist_exports2));
|
|
10127
|
+
return c3;
|
|
9760
10128
|
}
|
|
9761
|
-
if (
|
|
9762
|
-
const { default:
|
|
9763
|
-
return
|
|
10129
|
+
if (codec === "jsquash-png") {
|
|
10130
|
+
const { default: c3 } = await Promise.resolve().then(() => (init_dist4(), dist_exports3));
|
|
10131
|
+
return c3;
|
|
9764
10132
|
}
|
|
9765
|
-
throw new Error(`Unknown
|
|
10133
|
+
throw new Error(`Unknown codec: ${codec}`);
|
|
9766
10134
|
};
|
|
9767
10135
|
if (typeof require !== "undefined" && require.main === module) {
|
|
9768
10136
|
main4();
|
|
@@ -9771,99 +10139,99 @@ var init_ssim2 = __esm({
|
|
|
9771
10139
|
});
|
|
9772
10140
|
|
|
9773
10141
|
// ../ssim/dist/msssim.mjs
|
|
9774
|
-
function I(a2, f2,
|
|
9775
|
-
let r = new Float32Array(f2 *
|
|
10142
|
+
function I(a2, f2, n3) {
|
|
10143
|
+
let r = new Float32Array(f2 * n3), t = 0;
|
|
9776
10144
|
for (let y = 0; y < a2.length; y += 4) {
|
|
9777
|
-
let
|
|
9778
|
-
r[t++] = 0.298936 *
|
|
10145
|
+
let m3 = a2[y], p3 = a2[y + 1], s = a2[y + 2];
|
|
10146
|
+
r[t++] = 0.298936 * m3 + 0.587043 * p3 + 0.114021 * s;
|
|
9779
10147
|
}
|
|
9780
10148
|
return r;
|
|
9781
10149
|
}
|
|
9782
|
-
function K(a2, f2,
|
|
9783
|
-
let { windowSize:
|
|
9784
|
-
for (let
|
|
9785
|
-
let b = L2(
|
|
9786
|
-
if (d2.push(b.mssim), B.push(b.mcs),
|
|
9787
|
-
let M = E2(
|
|
9788
|
-
|
|
9789
|
-
}
|
|
9790
|
-
}
|
|
9791
|
-
if (
|
|
9792
|
-
let
|
|
9793
|
-
for (let b = 0; b < e - 1; b++)
|
|
9794
|
-
return
|
|
10150
|
+
function K(a2, f2, n3, r, t, y = {}) {
|
|
10151
|
+
let { windowSize: m3 = 11, k1: p3 = 0.01, k2: s = 0.03, bitDepth: c3 = 8, level: e = 5, weight: u = [0.0448, 0.2856, 0.3001, 0.2363, 0.1333], method: o2 = "product" } = y, l2 = I(a2, r, t), A = I(f2, r, t), x = r, S3 = t, d2 = [], B = [], C3;
|
|
10152
|
+
for (let i3 = 0; i3 < e; i3++) {
|
|
10153
|
+
let b = L2(l2, A, x, S3, m3, p3, s, c3);
|
|
10154
|
+
if (d2.push(b.mssim), B.push(b.mcs), i3 === e - 1 && n3 && (C3 = b.ssimMap), i3 < e - 1) {
|
|
10155
|
+
let M = E2(l2, A, x, S3);
|
|
10156
|
+
l2 = M.img1, A = M.img2, x = M.width, S3 = M.height;
|
|
10157
|
+
}
|
|
10158
|
+
}
|
|
10159
|
+
if (n3 && C3 && H2(n3, C3, x, S3, r, t), o2 === "product") {
|
|
10160
|
+
let i3 = 1;
|
|
10161
|
+
for (let b = 0; b < e - 1; b++) i3 *= B[b] ** u[b];
|
|
10162
|
+
return i3 *= d2[e - 1] ** u[e - 1], i3;
|
|
9795
10163
|
} else {
|
|
9796
|
-
let
|
|
9797
|
-
for (let M = 0; M < e - 1; M++) b += B[M] *
|
|
9798
|
-
return b += d2[e - 1] *
|
|
10164
|
+
let i3 = u.map((M) => M / u.reduce((D3, G) => D3 + G, 0)), b = 0;
|
|
10165
|
+
for (let M = 0; M < e - 1; M++) b += B[M] * i3[M];
|
|
10166
|
+
return b += d2[e - 1] * i3[e - 1], b;
|
|
9799
10167
|
}
|
|
9800
10168
|
}
|
|
9801
|
-
function L2(a2, f2,
|
|
9802
|
-
let
|
|
9803
|
-
q3(a2, o2, d2,
|
|
9804
|
-
let C3 = new Float32Array(
|
|
10169
|
+
function L2(a2, f2, n3, r, t, y, m3, p3) {
|
|
10170
|
+
let s = 2 ** p3 - 1, c3 = (y * s) ** 2, e = (m3 * s) ** 2, u = V2(t, 1.5), o2 = new Float32Array(n3 * r), l2 = new Float32Array(n3 * r), A = new Float32Array(n3 * r), x = new Float32Array(n3 * r), S3 = new Float32Array(n3 * r), d2 = new Float32Array(n3 * r), B = new Float32Array(n3 * r);
|
|
10171
|
+
q3(a2, o2, d2, n3, r, u, t), q3(f2, l2, d2, n3, r, u, t);
|
|
10172
|
+
let C3 = new Float32Array(n3 * r), i3 = new Float32Array(n3 * r), b = new Float32Array(n3 * r), M = a2.length;
|
|
9805
10173
|
for (let F2 = 0; F2 < M; F2++) {
|
|
9806
10174
|
let v = a2[F2], U3 = f2[F2];
|
|
9807
|
-
C3[F2] = v * v,
|
|
10175
|
+
C3[F2] = v * v, i3[F2] = U3 * U3, b[F2] = v * U3;
|
|
9808
10176
|
}
|
|
9809
|
-
q3(C3, A, d2,
|
|
10177
|
+
q3(C3, A, d2, n3, r, u, t), q3(i3, x, d2, n3, r, u, t), q3(b, S3, B, n3, r, u, t);
|
|
9810
10178
|
let D3 = 0, G = 0, O2 = new Float32Array(o2.length);
|
|
9811
10179
|
for (let F2 = 0; F2 < o2.length; F2++) {
|
|
9812
|
-
let v = o2[F2], U3 =
|
|
10180
|
+
let v = o2[F2], U3 = l2[F2], g2 = v * v, w = U3 * U3, R = v * U3, Y = A[F2] - g2, _2 = x[F2] - w, $ = S3[F2] - R, k = (2 * R + c3) / (g2 + w + c3), T = (2 * $ + e) / (Y + _2 + e), W2 = k * T;
|
|
9813
10181
|
O2[F2] = W2, D3 += W2, G += T;
|
|
9814
10182
|
}
|
|
9815
10183
|
return { mssim: D3 / o2.length, mcs: G / o2.length, ssimMap: O2 };
|
|
9816
10184
|
}
|
|
9817
10185
|
function V2(a2, f2) {
|
|
9818
|
-
let
|
|
9819
|
-
return r || (r = j2(a2, f2), X.set(
|
|
10186
|
+
let n3 = `${a2}_${f2}`, r = X.get(n3);
|
|
10187
|
+
return r || (r = j2(a2, f2), X.set(n3, r)), r;
|
|
9820
10188
|
}
|
|
9821
10189
|
function j2(a2, f2) {
|
|
9822
|
-
let
|
|
9823
|
-
for (let
|
|
9824
|
-
let
|
|
9825
|
-
|
|
10190
|
+
let n3 = new Float32Array(a2), r = (a2 - 1) / 2, t = 2 * f2 * f2, y = 0;
|
|
10191
|
+
for (let m3 = 0; m3 < a2; m3++) {
|
|
10192
|
+
let p3 = m3 - r, s = Math.exp(-(p3 * p3) / t);
|
|
10193
|
+
n3[m3] = s, y += s;
|
|
9826
10194
|
}
|
|
9827
|
-
for (let
|
|
9828
|
-
return
|
|
10195
|
+
for (let m3 = 0; m3 < a2; m3++) n3[m3] /= y;
|
|
10196
|
+
return n3;
|
|
9829
10197
|
}
|
|
9830
|
-
function q3(a2, f2,
|
|
9831
|
-
let
|
|
9832
|
-
for (let
|
|
9833
|
-
let
|
|
10198
|
+
function q3(a2, f2, n3, r, t, y, m3) {
|
|
10199
|
+
let p3 = Math.floor(m3 / 2);
|
|
10200
|
+
for (let s = 0; s < t; s++) {
|
|
10201
|
+
let c3 = s * r;
|
|
9834
10202
|
for (let e = 0; e < r; e++) {
|
|
9835
10203
|
let u = 0;
|
|
9836
|
-
for (let o2 = 0; o2 <
|
|
9837
|
-
let
|
|
9838
|
-
|
|
10204
|
+
for (let o2 = 0; o2 < m3; o2++) {
|
|
10205
|
+
let l2 = e + o2 - p3;
|
|
10206
|
+
l2 < 0 ? l2 = -l2 : l2 >= r && (l2 = 2 * r - l2 - 2), l2 = Math.max(0, Math.min(r - 1, l2)), u += a2[c3 + l2] * y[o2];
|
|
9839
10207
|
}
|
|
9840
|
-
|
|
10208
|
+
n3[c3 + e] = u;
|
|
9841
10209
|
}
|
|
9842
10210
|
}
|
|
9843
|
-
for (let
|
|
10211
|
+
for (let s = 0; s < t; s++) for (let c3 = 0; c3 < r; c3++) {
|
|
9844
10212
|
let e = 0;
|
|
9845
|
-
for (let u = 0; u <
|
|
9846
|
-
let o2 =
|
|
9847
|
-
o2 < 0 ? o2 = -o2 : o2 >= t && (o2 = 2 * t - o2 - 2), o2 = Math.max(0, Math.min(t - 1, o2)), e +=
|
|
10213
|
+
for (let u = 0; u < m3; u++) {
|
|
10214
|
+
let o2 = s + u - p3;
|
|
10215
|
+
o2 < 0 ? o2 = -o2 : o2 >= t && (o2 = 2 * t - o2 - 2), o2 = Math.max(0, Math.min(t - 1, o2)), e += n3[o2 * r + c3] * y[u];
|
|
9848
10216
|
}
|
|
9849
|
-
f2[
|
|
10217
|
+
f2[s * r + c3] = e;
|
|
9850
10218
|
}
|
|
9851
10219
|
}
|
|
9852
|
-
function E2(a2, f2,
|
|
9853
|
-
let t = new Float32Array([0.5, 0.5]), y = new Float32Array(
|
|
9854
|
-
q3(a2, y,
|
|
9855
|
-
let
|
|
9856
|
-
for (let
|
|
9857
|
-
let x =
|
|
9858
|
-
u[S3] = y[x], o2[S3] =
|
|
9859
|
-
}
|
|
9860
|
-
return { img1: u, img2: o2, width:
|
|
10220
|
+
function E2(a2, f2, n3, r) {
|
|
10221
|
+
let t = new Float32Array([0.5, 0.5]), y = new Float32Array(n3 * r), m3 = new Float32Array(n3 * r), p3 = new Float32Array(n3 * r), s = new Float32Array(n3 * r);
|
|
10222
|
+
q3(a2, y, p3, n3, r, t, 2), q3(f2, m3, s, n3, r, t, 2);
|
|
10223
|
+
let c3 = Math.floor(n3 / 2), e = Math.floor(r / 2), u = new Float32Array(c3 * e), o2 = new Float32Array(c3 * e);
|
|
10224
|
+
for (let l2 = 0; l2 < e; l2++) for (let A = 0; A < c3; A++) {
|
|
10225
|
+
let x = l2 * 2 * n3 + A * 2, S3 = l2 * c3 + A;
|
|
10226
|
+
u[S3] = y[x], o2[S3] = m3[x];
|
|
10227
|
+
}
|
|
10228
|
+
return { img1: u, img2: o2, width: c3, height: e };
|
|
9861
10229
|
}
|
|
9862
|
-
function H2(a2, f2,
|
|
9863
|
-
let
|
|
9864
|
-
for (let
|
|
9865
|
-
let e = Math.min(Math.floor(
|
|
9866
|
-
a2[A] =
|
|
10230
|
+
function H2(a2, f2, n3, r, t, y) {
|
|
10231
|
+
let m3 = t / n3, p3 = y / r;
|
|
10232
|
+
for (let s = 0; s < y; s++) for (let c3 = 0; c3 < t; c3++) {
|
|
10233
|
+
let e = Math.min(Math.floor(c3 / m3), n3 - 1), u = Math.min(Math.floor(s / p3), r - 1), o2 = f2[u * n3 + e], l2 = Math.floor(Math.max(0, Math.min(1, o2)) * 255), A = (s * t + c3) * 4;
|
|
10234
|
+
a2[A] = l2, a2[A + 1] = l2, a2[A + 2] = l2, a2[A + 3] = 255;
|
|
9867
10235
|
}
|
|
9868
10236
|
}
|
|
9869
10237
|
var X, P3;
|
|
@@ -9890,7 +10258,7 @@ Arguments:
|
|
|
9890
10258
|
|
|
9891
10259
|
Options:
|
|
9892
10260
|
-o, --output <path> Output path for MS-SSIM map visualization
|
|
9893
|
-
--
|
|
10261
|
+
--codec <name> Specify codec to use (pngjs, sharp, jsquash-png)
|
|
9894
10262
|
-h, --help Show this help message
|
|
9895
10263
|
|
|
9896
10264
|
Examples:
|
|
@@ -9913,21 +10281,21 @@ async function main5() {
|
|
|
9913
10281
|
const image1 = args[0];
|
|
9914
10282
|
const image2 = args[1];
|
|
9915
10283
|
const options = {};
|
|
9916
|
-
for (let
|
|
9917
|
-
const arg = args[
|
|
9918
|
-
const nextArg = args[
|
|
10284
|
+
for (let i3 = 2; i3 < args.length; i3++) {
|
|
10285
|
+
const arg = args[i3];
|
|
10286
|
+
const nextArg = args[i3 + 1];
|
|
9919
10287
|
switch (arg) {
|
|
9920
10288
|
case "-o":
|
|
9921
10289
|
case "--output":
|
|
9922
10290
|
if (nextArg) {
|
|
9923
10291
|
options.outputPath = nextArg;
|
|
9924
|
-
|
|
10292
|
+
i3++;
|
|
9925
10293
|
}
|
|
9926
10294
|
break;
|
|
9927
|
-
case "--
|
|
10295
|
+
case "--codec":
|
|
9928
10296
|
if (nextArg) {
|
|
9929
|
-
options.
|
|
9930
|
-
|
|
10297
|
+
options.codec = nextArg;
|
|
10298
|
+
i3++;
|
|
9931
10299
|
}
|
|
9932
10300
|
break;
|
|
9933
10301
|
default:
|
|
@@ -9936,10 +10304,10 @@ async function main5() {
|
|
|
9936
10304
|
process.exit(1);
|
|
9937
10305
|
}
|
|
9938
10306
|
}
|
|
9939
|
-
const
|
|
10307
|
+
const codec = await getCodec4(options.codec);
|
|
9940
10308
|
const [img1, img2] = await Promise.all([
|
|
9941
|
-
|
|
9942
|
-
|
|
10309
|
+
codec.read(image1),
|
|
10310
|
+
codec.read(image2)
|
|
9943
10311
|
]);
|
|
9944
10312
|
if (img1.width !== img2.width || img1.height !== img2.height) {
|
|
9945
10313
|
throw new Error(
|
|
@@ -9961,7 +10329,7 @@ async function main5() {
|
|
|
9961
10329
|
);
|
|
9962
10330
|
const duration = performance.now() - startTime;
|
|
9963
10331
|
if (options.outputPath && outputData) {
|
|
9964
|
-
await
|
|
10332
|
+
await codec.write(
|
|
9965
10333
|
{
|
|
9966
10334
|
data: outputData,
|
|
9967
10335
|
width: img1.width,
|
|
@@ -9999,21 +10367,25 @@ async function main5() {
|
|
|
9999
10367
|
process.exit(1);
|
|
10000
10368
|
}
|
|
10001
10369
|
}
|
|
10002
|
-
var
|
|
10370
|
+
var getCodec4;
|
|
10003
10371
|
var init_msssim2 = __esm({
|
|
10004
10372
|
"src/commands/msssim.ts"() {
|
|
10005
10373
|
"use strict";
|
|
10006
10374
|
init_msssim();
|
|
10007
|
-
|
|
10008
|
-
if (!
|
|
10009
|
-
const { default:
|
|
10010
|
-
return
|
|
10375
|
+
getCodec4 = async (codec) => {
|
|
10376
|
+
if (!codec || codec === "pngjs") {
|
|
10377
|
+
const { default: c3 } = await Promise.resolve().then(() => (init_dist2(), dist_exports));
|
|
10378
|
+
return c3;
|
|
10379
|
+
}
|
|
10380
|
+
if (codec === "sharp") {
|
|
10381
|
+
const { default: c3 } = await Promise.resolve().then(() => (init_dist3(), dist_exports2));
|
|
10382
|
+
return c3;
|
|
10011
10383
|
}
|
|
10012
|
-
if (
|
|
10013
|
-
const { default:
|
|
10014
|
-
return
|
|
10384
|
+
if (codec === "jsquash-png") {
|
|
10385
|
+
const { default: c3 } = await Promise.resolve().then(() => (init_dist4(), dist_exports3));
|
|
10386
|
+
return c3;
|
|
10015
10387
|
}
|
|
10016
|
-
throw new Error(`Unknown
|
|
10388
|
+
throw new Error(`Unknown codec: ${codec}`);
|
|
10017
10389
|
};
|
|
10018
10390
|
if (typeof require !== "undefined" && require.main === module) {
|
|
10019
10391
|
main5();
|
|
@@ -10022,62 +10394,62 @@ var init_msssim2 = __esm({
|
|
|
10022
10394
|
});
|
|
10023
10395
|
|
|
10024
10396
|
// ../ssim/dist/hitchhikers-ssim.mjs
|
|
10025
|
-
function
|
|
10026
|
-
let
|
|
10027
|
-
for (let
|
|
10028
|
-
let t = o2[
|
|
10029
|
-
|
|
10397
|
+
function p2(o2, a2, c3) {
|
|
10398
|
+
let n3 = new Float32Array(a2 * c3), r = 0;
|
|
10399
|
+
for (let s = 0; s < o2.length; s += 4) {
|
|
10400
|
+
let t = o2[s], e = o2[s + 1], u = o2[s + 2];
|
|
10401
|
+
n3[r++] = 0.298936 * t + 0.587043 * e + 0.114021 * u;
|
|
10030
10402
|
}
|
|
10031
|
-
return
|
|
10403
|
+
return n3;
|
|
10032
10404
|
}
|
|
10033
|
-
function
|
|
10034
|
-
let { windowSize: t = 11, windowStride: e = t, k1: u = 0.01, k2:
|
|
10035
|
-
for (let
|
|
10036
|
-
let
|
|
10037
|
-
P4[
|
|
10038
|
-
}
|
|
10039
|
-
let D3 = F(P4,
|
|
10040
|
-
for (let
|
|
10041
|
-
let
|
|
10405
|
+
function h3(o2, a2, c3, n3, r, s = {}) {
|
|
10406
|
+
let { windowSize: t = 11, windowStride: e = t, k1: u = 0.01, k2: i3 = 0.03, L: d2 = 255, covPooling: v = true } = s, g2 = p2(o2, n3, r), A = p2(a2, n3, r), y = (u * d2) ** 2, O2 = (i3 * d2) ** 2, Y = F(g2, n3, r), z2 = F(A, n3, r), P4 = new Float32Array(n3 * r), G = new Float32Array(n3 * r), H3 = new Float32Array(n3 * r);
|
|
10407
|
+
for (let l2 = 0; l2 < g2.length; l2++) {
|
|
10408
|
+
let m3 = g2[l2], f2 = A[l2];
|
|
10409
|
+
P4[l2] = m3 * m3, G[l2] = f2 * f2, H3[l2] = m3 * f2;
|
|
10410
|
+
}
|
|
10411
|
+
let D3 = F(P4, n3, r), V3 = F(G, n3, r), j3 = F(H3, n3, r), M = Math.floor((n3 - t) / e) + 1, I2 = Math.floor((r - t) / e) + 1, S3 = new Float32Array(M * I2), x = t * t, E3 = 0;
|
|
10412
|
+
for (let l2 = 0; l2 < I2; l2++) {
|
|
10413
|
+
let m3 = l2 * e, f2 = m3 + t;
|
|
10042
10414
|
for (let k = 0; k < M; k++) {
|
|
10043
|
-
let b = k * e, q4 = b + t, J = U2(Y, b,
|
|
10415
|
+
let b = k * e, q4 = b + t, J = U2(Y, b, m3, q4, f2, n3), K2 = U2(z2, b, m3, q4, f2, n3), N3 = U2(D3, b, m3, q4, f2, n3), Q2 = U2(V3, b, m3, q4, f2, n3), R = U2(j3, b, m3, q4, f2, n3), C3 = J / x, B = K2 / x, L3 = C3 * C3, T = B * B, X2 = C3 * B, W2 = N3 / x - L3, Z2 = Q2 / x - T, _2 = R / x - X2, $ = (2 * X2 + y) * (2 * _2 + O2), w = (L3 + T + y) * (W2 + Z2 + O2);
|
|
10044
10416
|
S3[E3++] = $ / w;
|
|
10045
10417
|
}
|
|
10046
10418
|
}
|
|
10047
|
-
if (
|
|
10419
|
+
if (c3 && on2(c3, S3, M, I2, n3, r), v) return nn2(S3);
|
|
10048
10420
|
{
|
|
10049
|
-
let
|
|
10050
|
-
for (let
|
|
10051
|
-
return
|
|
10421
|
+
let l2 = 0;
|
|
10422
|
+
for (let m3 = 0; m3 < S3.length; m3++) l2 += S3[m3];
|
|
10423
|
+
return l2 / S3.length;
|
|
10052
10424
|
}
|
|
10053
10425
|
}
|
|
10054
|
-
function F(o2, a2,
|
|
10055
|
-
let
|
|
10056
|
-
for (let t = 1; t <=
|
|
10057
|
-
let u = (t - 1) * a2 + (e - 1),
|
|
10058
|
-
|
|
10426
|
+
function F(o2, a2, c3) {
|
|
10427
|
+
let n3 = a2 + 1, r = c3 + 1, s = new Float64Array(n3 * r);
|
|
10428
|
+
for (let t = 1; t <= c3; t++) for (let e = 1; e <= a2; e++) {
|
|
10429
|
+
let u = (t - 1) * a2 + (e - 1), i3 = t * n3 + e;
|
|
10430
|
+
s[i3] = o2[u] + s[(t - 1) * n3 + e] + s[t * n3 + (e - 1)] - s[(t - 1) * n3 + (e - 1)];
|
|
10059
10431
|
}
|
|
10060
|
-
return
|
|
10432
|
+
return s;
|
|
10061
10433
|
}
|
|
10062
|
-
function U2(o2, a2,
|
|
10063
|
-
let t =
|
|
10064
|
-
return o2[r * t +
|
|
10434
|
+
function U2(o2, a2, c3, n3, r, s) {
|
|
10435
|
+
let t = s + 1;
|
|
10436
|
+
return o2[r * t + n3] - o2[c3 * t + n3] - o2[r * t + a2] + o2[c3 * t + a2];
|
|
10065
10437
|
}
|
|
10066
10438
|
function nn2(o2) {
|
|
10067
10439
|
let a2 = 0;
|
|
10068
10440
|
for (let e = 0; e < o2.length; e++) a2 += o2[e];
|
|
10069
|
-
let
|
|
10441
|
+
let c3 = a2 / o2.length, n3 = 0;
|
|
10070
10442
|
for (let e = 0; e < o2.length; e++) {
|
|
10071
|
-
let u = o2[e] -
|
|
10072
|
-
|
|
10443
|
+
let u = o2[e] - c3;
|
|
10444
|
+
n3 += u * u;
|
|
10073
10445
|
}
|
|
10074
|
-
let r =
|
|
10075
|
-
return 1 - (
|
|
10446
|
+
let r = n3 / o2.length, s = Math.sqrt(r);
|
|
10447
|
+
return 1 - (c3 > 0 ? s / c3 : 0);
|
|
10076
10448
|
}
|
|
10077
|
-
function on2(o2, a2,
|
|
10078
|
-
let t = r /
|
|
10079
|
-
for (let u = 0; u <
|
|
10080
|
-
let d2 = Math.min(Math.floor(
|
|
10449
|
+
function on2(o2, a2, c3, n3, r, s) {
|
|
10450
|
+
let t = r / c3, e = s / n3;
|
|
10451
|
+
for (let u = 0; u < s; u++) for (let i3 = 0; i3 < r; i3++) {
|
|
10452
|
+
let d2 = Math.min(Math.floor(i3 / t), c3 - 1), v = Math.min(Math.floor(u / e), n3 - 1), g2 = a2[v * c3 + d2], A = Math.floor(Math.max(0, Math.min(1, g2)) * 255), y = (u * r + i3) * 4;
|
|
10081
10453
|
o2[y] = A, o2[y + 1] = A, o2[y + 2] = A, o2[y + 3] = 255;
|
|
10082
10454
|
}
|
|
10083
10455
|
}
|
|
@@ -10085,7 +10457,7 @@ var en;
|
|
|
10085
10457
|
var init_hitchhikers_ssim = __esm({
|
|
10086
10458
|
"../ssim/dist/hitchhikers-ssim.mjs"() {
|
|
10087
10459
|
"use strict";
|
|
10088
|
-
en =
|
|
10460
|
+
en = h3;
|
|
10089
10461
|
}
|
|
10090
10462
|
});
|
|
10091
10463
|
|
|
@@ -10104,7 +10476,7 @@ Arguments:
|
|
|
10104
10476
|
|
|
10105
10477
|
Options:
|
|
10106
10478
|
-o, --output <path> Output path for SSIM map visualization
|
|
10107
|
-
--
|
|
10479
|
+
--codec <name> Specify codec to use (pngjs, sharp, jsquash-png)
|
|
10108
10480
|
--window-size <size> Window size (default: 11)
|
|
10109
10481
|
--window-stride <size> Window stride (default: windowSize for non-overlapping)
|
|
10110
10482
|
--no-cov-pooling Use mean pooling instead of CoV pooling
|
|
@@ -10143,21 +10515,21 @@ async function main6() {
|
|
|
10143
10515
|
const options = {
|
|
10144
10516
|
covPooling: true
|
|
10145
10517
|
};
|
|
10146
|
-
for (let
|
|
10147
|
-
const arg = args[
|
|
10148
|
-
const nextArg = args[
|
|
10518
|
+
for (let i3 = 2; i3 < args.length; i3++) {
|
|
10519
|
+
const arg = args[i3];
|
|
10520
|
+
const nextArg = args[i3 + 1];
|
|
10149
10521
|
switch (arg) {
|
|
10150
10522
|
case "-o":
|
|
10151
10523
|
case "--output":
|
|
10152
10524
|
if (nextArg) {
|
|
10153
10525
|
options.outputPath = nextArg;
|
|
10154
|
-
|
|
10526
|
+
i3++;
|
|
10155
10527
|
}
|
|
10156
10528
|
break;
|
|
10157
|
-
case "--
|
|
10529
|
+
case "--codec":
|
|
10158
10530
|
if (nextArg) {
|
|
10159
|
-
options.
|
|
10160
|
-
|
|
10531
|
+
options.codec = nextArg;
|
|
10532
|
+
i3++;
|
|
10161
10533
|
}
|
|
10162
10534
|
break;
|
|
10163
10535
|
case "--window-size":
|
|
@@ -10167,7 +10539,7 @@ async function main6() {
|
|
|
10167
10539
|
throw new Error(`Invalid window size: ${nextArg}`);
|
|
10168
10540
|
}
|
|
10169
10541
|
options.windowSize = size;
|
|
10170
|
-
|
|
10542
|
+
i3++;
|
|
10171
10543
|
}
|
|
10172
10544
|
break;
|
|
10173
10545
|
case "--window-stride":
|
|
@@ -10177,7 +10549,7 @@ async function main6() {
|
|
|
10177
10549
|
throw new Error(`Invalid window stride: ${nextArg}`);
|
|
10178
10550
|
}
|
|
10179
10551
|
options.windowStride = stride;
|
|
10180
|
-
|
|
10552
|
+
i3++;
|
|
10181
10553
|
}
|
|
10182
10554
|
break;
|
|
10183
10555
|
case "--no-cov-pooling":
|
|
@@ -10189,12 +10561,10 @@ async function main6() {
|
|
|
10189
10561
|
process.exit(1);
|
|
10190
10562
|
}
|
|
10191
10563
|
}
|
|
10192
|
-
const
|
|
10193
|
-
options.transformer
|
|
10194
|
-
);
|
|
10564
|
+
const codec = await getCodec5(options.codec);
|
|
10195
10565
|
const [img1, img2] = await Promise.all([
|
|
10196
|
-
|
|
10197
|
-
|
|
10566
|
+
codec.read(image1),
|
|
10567
|
+
codec.read(image2)
|
|
10198
10568
|
]);
|
|
10199
10569
|
if (img1.width !== img2.width || img1.height !== img2.height) {
|
|
10200
10570
|
throw new Error(
|
|
@@ -10226,7 +10596,7 @@ async function main6() {
|
|
|
10226
10596
|
);
|
|
10227
10597
|
const duration = performance.now() - startTime;
|
|
10228
10598
|
if (options.outputPath && outputData) {
|
|
10229
|
-
await
|
|
10599
|
+
await codec.write(
|
|
10230
10600
|
{
|
|
10231
10601
|
data: outputData,
|
|
10232
10602
|
width: img1.width,
|
|
@@ -10271,21 +10641,25 @@ async function main6() {
|
|
|
10271
10641
|
process.exit(1);
|
|
10272
10642
|
}
|
|
10273
10643
|
}
|
|
10274
|
-
var
|
|
10644
|
+
var getCodec5;
|
|
10275
10645
|
var init_hitchhikers_ssim2 = __esm({
|
|
10276
10646
|
"src/commands/hitchhikers-ssim.ts"() {
|
|
10277
10647
|
"use strict";
|
|
10278
10648
|
init_hitchhikers_ssim();
|
|
10279
|
-
|
|
10280
|
-
if (!
|
|
10281
|
-
const { default:
|
|
10282
|
-
return
|
|
10649
|
+
getCodec5 = async (codec) => {
|
|
10650
|
+
if (!codec || codec === "pngjs") {
|
|
10651
|
+
const { default: c3 } = await Promise.resolve().then(() => (init_dist2(), dist_exports));
|
|
10652
|
+
return c3;
|
|
10653
|
+
}
|
|
10654
|
+
if (codec === "sharp") {
|
|
10655
|
+
const { default: c3 } = await Promise.resolve().then(() => (init_dist3(), dist_exports2));
|
|
10656
|
+
return c3;
|
|
10283
10657
|
}
|
|
10284
|
-
if (
|
|
10285
|
-
const { default:
|
|
10286
|
-
return
|
|
10658
|
+
if (codec === "jsquash-png") {
|
|
10659
|
+
const { default: c3 } = await Promise.resolve().then(() => (init_dist4(), dist_exports3));
|
|
10660
|
+
return c3;
|
|
10287
10661
|
}
|
|
10288
|
-
throw new Error(`Unknown
|
|
10662
|
+
throw new Error(`Unknown codec: ${codec}`);
|
|
10289
10663
|
};
|
|
10290
10664
|
if (typeof require !== "undefined" && require.main === module) {
|
|
10291
10665
|
main6();
|