@livechart/sharp-vibrant 0.2.1 → 0.3.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/lib/builder.js +10 -5
- package/lib/builder.js.map +1 -1
- package/lib/color.js +8 -4
- package/lib/color.js.map +1 -1
- package/lib/filter/default.js +4 -1
- package/lib/filter/default.js.map +1 -1
- package/lib/filter/index.js +10 -2
- package/lib/filter/index.js.map +1 -1
- package/lib/generator/default.js +15 -13
- package/lib/generator/default.js.map +1 -1
- package/lib/generator/index.js +8 -2
- package/lib/generator/index.js.map +1 -1
- package/lib/image/base.js +3 -1
- package/lib/image/base.js.map +1 -1
- package/lib/image/sharp.js +35 -41
- package/lib/image/sharp.js.map +1 -1
- package/lib/index.js +9 -4
- package/lib/index.js.map +1 -1
- package/lib/quantizer/index.js +7 -2
- package/lib/quantizer/index.js.map +1 -1
- package/lib/quantizer/mmcq.js +13 -8
- package/lib/quantizer/mmcq.js.map +1 -1
- package/lib/quantizer/pqueue.js +3 -1
- package/lib/quantizer/pqueue.js.map +1 -1
- package/lib/quantizer/vbox.js +18 -16
- package/lib/quantizer/vbox.js.map +1 -1
- package/lib/typing.js +2 -1
- package/lib/util.js +44 -28
- package/lib/util.js.map +1 -1
- package/lib/vibrant.js +54 -16
- package/lib/vibrant.js.map +1 -1
- package/package.json +17 -18
- package/tsconfig.json +5 -15
- package/lib/src/builder.d.ts +0 -17
- package/lib/src/builder.js +0 -80
- package/lib/src/builder.js.map +0 -1
- package/lib/src/color.d.ts +0 -30
- package/lib/src/color.js +0 -81
- package/lib/src/color.js.map +0 -1
- package/lib/src/filter/default.d.ts +0 -1
- package/lib/src/filter/default.js +0 -7
- package/lib/src/filter/default.js.map +0 -1
- package/lib/src/filter/index.d.ts +0 -3
- package/lib/src/filter/index.js +0 -24
- package/lib/src/filter/index.js.map +0 -1
- package/lib/src/generator/default.d.ts +0 -20
- package/lib/src/generator/default.js +0 -143
- package/lib/src/generator/default.js.map +0 -1
- package/lib/src/generator/index.d.ts +0 -3
- package/lib/src/generator/index.js +0 -9
- package/lib/src/generator/index.js.map +0 -1
- package/lib/src/image/base.d.ts +0 -11
- package/lib/src/image/base.js +0 -29
- package/lib/src/image/base.js.map +0 -1
- package/lib/src/image/sharp.d.ts +0 -11
- package/lib/src/image/sharp.js +0 -81
- package/lib/src/image/sharp.js.map +0 -1
- package/lib/src/index.d.ts +0 -2
- package/lib/src/index.js +0 -9
- package/lib/src/index.js.map +0 -1
- package/lib/src/quantizer/index.d.ts +0 -2
- package/lib/src/quantizer/index.js +0 -8
- package/lib/src/quantizer/index.js.map +0 -1
- package/lib/src/quantizer/mmcq.d.ts +0 -3
- package/lib/src/quantizer/mmcq.js +0 -57
- package/lib/src/quantizer/mmcq.js.map +0 -1
- package/lib/src/quantizer/pqueue.d.ts +0 -14
- package/lib/src/quantizer/pqueue.js +0 -51
- package/lib/src/quantizer/pqueue.js.map +0 -1
- package/lib/src/quantizer/vbox.d.ts +0 -26
- package/lib/src/quantizer/vbox.js +0 -253
- package/lib/src/quantizer/vbox.js.map +0 -1
- package/lib/src/typing.d.ts +0 -57
- package/lib/src/typing.js +0 -3
- package/lib/src/typing.js.map +0 -1
- package/lib/src/util.d.ts +0 -31
- package/lib/src/util.js +0 -201
- package/lib/src/util.js.map +0 -1
- package/lib/src/vibrant.d.ts +0 -21
- package/lib/src/vibrant.js +0 -117
- package/lib/src/vibrant.js.map +0 -1
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const color_1 = require("../color");
|
|
7
|
-
const vbox_1 = __importDefault(require("./vbox"));
|
|
8
|
-
const pqueue_1 = __importDefault(require("./pqueue"));
|
|
9
|
-
const fractByPopulations = 0.75;
|
|
10
|
-
function splitBoxes(pq, target) {
|
|
11
|
-
let lastSize = pq.size;
|
|
12
|
-
while (pq.size < target) {
|
|
13
|
-
const vbox = pq.pop();
|
|
14
|
-
if (!vbox || vbox.count < 1) {
|
|
15
|
-
break;
|
|
16
|
-
}
|
|
17
|
-
const [vbox1, vbox2] = vbox.split();
|
|
18
|
-
pq.push(vbox1);
|
|
19
|
-
if (vbox2 && vbox2.count > 0)
|
|
20
|
-
pq.push(vbox2);
|
|
21
|
-
// No more new boxes, converged
|
|
22
|
-
if (pq.size === lastSize) {
|
|
23
|
-
break;
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
lastSize = pq.size;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
function generateSwatches(pq) {
|
|
31
|
-
const swatches = [];
|
|
32
|
-
while (pq.size) {
|
|
33
|
-
const v = pq.pop();
|
|
34
|
-
const color = v.avg;
|
|
35
|
-
swatches.push(new color_1.Swatch(color, v.count));
|
|
36
|
-
}
|
|
37
|
-
return swatches;
|
|
38
|
-
}
|
|
39
|
-
const MMCQ = (pixels, opts) => {
|
|
40
|
-
if (pixels.length === 0 || opts.colorCount < 2 || opts.colorCount > 256) {
|
|
41
|
-
throw new Error('Wrong MMCQ parameters');
|
|
42
|
-
}
|
|
43
|
-
const vbox = vbox_1.default.build(pixels);
|
|
44
|
-
const pq = new pqueue_1.default((a, b) => a.count - b.count);
|
|
45
|
-
pq.push(vbox);
|
|
46
|
-
// first set of colors, sorted by population
|
|
47
|
-
splitBoxes(pq, fractByPopulations * opts.colorCount);
|
|
48
|
-
// Re-order
|
|
49
|
-
const pq2 = new pqueue_1.default((a, b) => a.count * a.volume - b.count * b.volume);
|
|
50
|
-
pq2.contents = pq.contents;
|
|
51
|
-
// next set - generate the median cuts using the (npix * vol) sorting.
|
|
52
|
-
splitBoxes(pq2, opts.colorCount - pq2.size);
|
|
53
|
-
// calculate the actual colors
|
|
54
|
-
return generateSwatches(pq2);
|
|
55
|
-
};
|
|
56
|
-
exports.default = MMCQ;
|
|
57
|
-
//# sourceMappingURL=mmcq.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mmcq.js","sourceRoot":"","sources":["../../../src/quantizer/mmcq.ts"],"names":[],"mappings":";;;;;AAKA,oCAAkC;AAClC,kDAA0B;AAC1B,sDAA8B;AAE9B,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEhC,SAAS,UAAU,CAAC,EAAgB,EAAE,MAAc;IAClD,IAAI,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC;IAEvB,OAAO,EAAE,CAAC,IAAI,GAAG,MAAM,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QAEtB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM;QACR,CAAC;QAED,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAEpC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACf,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC;YAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE7C,+BAA+B;QAC/B,IAAI,EAAE,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzB,MAAM;QACR,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,EAAgB;IACxC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC;QACf,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;QACpB,QAAQ,CAAC,IAAI,CAAC,IAAI,cAAM,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,IAAI,GAAc,CAAC,MAAc,EAAE,IAAqB,EAAiB,EAAE;IAC/E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,IAAI,GAAG,cAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,EAAE,GAAG,IAAI,gBAAM,CAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAEzD,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,4CAA4C;IAC5C,UAAU,CAAC,EAAE,EAAE,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IAErD,WAAW;IACX,MAAM,GAAG,GAAG,IAAI,gBAAM,CAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAChF,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;IAE3B,sEAAsE;IACtE,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;IAE5C,8BAA8B;IAC9B,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEF,kBAAe,IAAI,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export interface PQueueComparator<T> {
|
|
2
|
-
(a: T, b: T): number;
|
|
3
|
-
}
|
|
4
|
-
export default class PQueue<T> {
|
|
5
|
-
#private;
|
|
6
|
-
contents: T[];
|
|
7
|
-
private sort;
|
|
8
|
-
constructor(comparator: PQueueComparator<T>);
|
|
9
|
-
push(item: T): void;
|
|
10
|
-
peek(index?: number): T;
|
|
11
|
-
pop(): T;
|
|
12
|
-
get size(): number;
|
|
13
|
-
map<U>(mapper: (item: T, index: number) => any): U[];
|
|
14
|
-
}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
3
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
4
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
5
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
6
|
-
};
|
|
7
|
-
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
8
|
-
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
9
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
10
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
11
|
-
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
12
|
-
};
|
|
13
|
-
var _PQueue_sorted, _PQueue_comparator;
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
class PQueue {
|
|
16
|
-
sort() {
|
|
17
|
-
if (!__classPrivateFieldGet(this, _PQueue_sorted, "f")) {
|
|
18
|
-
this.contents.sort(__classPrivateFieldGet(this, _PQueue_comparator, "f"));
|
|
19
|
-
__classPrivateFieldSet(this, _PQueue_sorted, true, "f");
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
constructor(comparator) {
|
|
23
|
-
_PQueue_sorted.set(this, void 0);
|
|
24
|
-
_PQueue_comparator.set(this, void 0);
|
|
25
|
-
__classPrivateFieldSet(this, _PQueue_comparator, comparator, "f");
|
|
26
|
-
this.contents = [];
|
|
27
|
-
__classPrivateFieldSet(this, _PQueue_sorted, false, "f");
|
|
28
|
-
}
|
|
29
|
-
push(item) {
|
|
30
|
-
this.contents.push(item);
|
|
31
|
-
__classPrivateFieldSet(this, _PQueue_sorted, false, "f");
|
|
32
|
-
}
|
|
33
|
-
peek(index) {
|
|
34
|
-
this.sort();
|
|
35
|
-
return this.contents[typeof index === 'number' ? index : this.contents.length - 1];
|
|
36
|
-
}
|
|
37
|
-
pop() {
|
|
38
|
-
this.sort();
|
|
39
|
-
return this.contents.pop();
|
|
40
|
-
}
|
|
41
|
-
get size() {
|
|
42
|
-
return this.contents.length;
|
|
43
|
-
}
|
|
44
|
-
map(mapper) {
|
|
45
|
-
this.sort();
|
|
46
|
-
return this.contents.map(mapper);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
_PQueue_sorted = new WeakMap(), _PQueue_comparator = new WeakMap();
|
|
50
|
-
exports.default = PQueue;
|
|
51
|
-
//# sourceMappingURL=pqueue.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pqueue.js","sourceRoot":"","sources":["../../../src/quantizer/pqueue.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAIA,MAAqB,MAAM;IAOjB,IAAI;QACV,IAAI,CAAC,uBAAA,IAAI,sBAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,uBAAA,IAAI,0BAAY,CAAC,CAAC;YACrC,uBAAA,IAAI,kBAAW,IAAI,MAAA,CAAC;QACtB,CAAC;IACH,CAAC;IAED,YAAY,UAA+B;QAX3C,iCAAiB;QAEjB,qCAAiC;QAU/B,uBAAA,IAAI,sBAAe,UAAU,MAAA,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,uBAAA,IAAI,kBAAW,KAAK,MAAA,CAAC;IACvB,CAAC;IAED,IAAI,CAAC,IAAO;QACV,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,uBAAA,IAAI,kBAAW,KAAK,MAAA,CAAC;IACvB,CAAC;IAED,IAAI,CAAC,KAAc;QACjB,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrF,CAAC;IAED,GAAG;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAG,CAAC;IAC9B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,GAAG,CAAI,MAAuC;QAC5C,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;CACF;;kBA3CoB,MAAM"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import type { Vec3 } from '../color';
|
|
2
|
-
import type { Pixels } from '../typing';
|
|
3
|
-
export interface Dimension {
|
|
4
|
-
r1: number;
|
|
5
|
-
r2: number;
|
|
6
|
-
g1: number;
|
|
7
|
-
g2: number;
|
|
8
|
-
b1: number;
|
|
9
|
-
b2: number;
|
|
10
|
-
[d: string]: number;
|
|
11
|
-
}
|
|
12
|
-
export default class VBox {
|
|
13
|
-
#private;
|
|
14
|
-
static build(pixels: Pixels): VBox;
|
|
15
|
-
dimension: Dimension;
|
|
16
|
-
hist: Uint32Array;
|
|
17
|
-
constructor(r1: number, r2: number, g1: number, g2: number, b1: number, b2: number, hist: Uint32Array);
|
|
18
|
-
invalidate(): void;
|
|
19
|
-
get volume(): number;
|
|
20
|
-
get count(): number;
|
|
21
|
-
clone(): VBox;
|
|
22
|
-
get avg(): Vec3;
|
|
23
|
-
contains(rgb: Vec3): boolean;
|
|
24
|
-
split(): VBox[];
|
|
25
|
-
private doCut;
|
|
26
|
-
}
|
|
@@ -1,253 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
3
|
-
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
4
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
5
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
6
|
-
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
7
|
-
};
|
|
8
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
9
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
10
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
|
-
};
|
|
13
|
-
var _VBox_volume, _VBox_avg, _VBox_count;
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
const util_1 = require("../util");
|
|
16
|
-
class VBox {
|
|
17
|
-
static build(pixels) {
|
|
18
|
-
const hn = 1 << (3 * util_1.SIGBITS);
|
|
19
|
-
const hist = new Uint32Array(hn);
|
|
20
|
-
let rmax = 0;
|
|
21
|
-
let rmin = Number.MAX_VALUE;
|
|
22
|
-
let gmax = 0;
|
|
23
|
-
let gmin = Number.MAX_VALUE;
|
|
24
|
-
let bmax = 0;
|
|
25
|
-
let bmin = Number.MAX_VALUE;
|
|
26
|
-
let r;
|
|
27
|
-
let g;
|
|
28
|
-
let b;
|
|
29
|
-
let a;
|
|
30
|
-
const n = pixels.length / 4;
|
|
31
|
-
let i = 0;
|
|
32
|
-
while (i < n) {
|
|
33
|
-
const offset = i * 4;
|
|
34
|
-
i += 1;
|
|
35
|
-
r = pixels[offset + 0];
|
|
36
|
-
g = pixels[offset + 1];
|
|
37
|
-
b = pixels[offset + 2];
|
|
38
|
-
a = pixels[offset + 3];
|
|
39
|
-
// Ignored pixels' alpha is marked as 0 in filtering stage
|
|
40
|
-
if (a === 0)
|
|
41
|
-
continue;
|
|
42
|
-
r >>= util_1.RSHIFT;
|
|
43
|
-
g >>= util_1.RSHIFT;
|
|
44
|
-
b >>= util_1.RSHIFT;
|
|
45
|
-
const index = (0, util_1.getColorIndex)(r, g, b);
|
|
46
|
-
hist[index] += 1;
|
|
47
|
-
if (r > rmax)
|
|
48
|
-
rmax = r;
|
|
49
|
-
if (r < rmin)
|
|
50
|
-
rmin = r;
|
|
51
|
-
if (g > gmax)
|
|
52
|
-
gmax = g;
|
|
53
|
-
if (g < gmin)
|
|
54
|
-
gmin = g;
|
|
55
|
-
if (b > bmax)
|
|
56
|
-
bmax = b;
|
|
57
|
-
if (b < bmin)
|
|
58
|
-
bmin = b;
|
|
59
|
-
}
|
|
60
|
-
return new VBox(rmin, rmax, gmin, gmax, bmin, bmax, hist);
|
|
61
|
-
}
|
|
62
|
-
constructor(r1, r2, g1, g2, b1, b2, hist) {
|
|
63
|
-
_VBox_volume.set(this, -1);
|
|
64
|
-
_VBox_avg.set(this, null);
|
|
65
|
-
_VBox_count.set(this, -1);
|
|
66
|
-
this.dimension = {
|
|
67
|
-
r1, r2, g1, g2, b1, b2,
|
|
68
|
-
};
|
|
69
|
-
this.hist = hist;
|
|
70
|
-
}
|
|
71
|
-
invalidate() {
|
|
72
|
-
__classPrivateFieldSet(this, _VBox_volume, -1, "f");
|
|
73
|
-
__classPrivateFieldSet(this, _VBox_count, -1, "f");
|
|
74
|
-
__classPrivateFieldSet(this, _VBox_avg, null, "f");
|
|
75
|
-
}
|
|
76
|
-
get volume() {
|
|
77
|
-
if (__classPrivateFieldGet(this, _VBox_volume, "f") < 0) {
|
|
78
|
-
const { r1, r2, g1, g2, b1, b2, } = this.dimension;
|
|
79
|
-
__classPrivateFieldSet(this, _VBox_volume, (r2 - r1 + 1) * (g2 - g1 + 1) * (b2 - b1 + 1), "f");
|
|
80
|
-
}
|
|
81
|
-
return __classPrivateFieldGet(this, _VBox_volume, "f");
|
|
82
|
-
}
|
|
83
|
-
get count() {
|
|
84
|
-
if (__classPrivateFieldGet(this, _VBox_count, "f") < 0) {
|
|
85
|
-
const { hist } = this;
|
|
86
|
-
const { r1, r2, g1, g2, b1, b2, } = this.dimension;
|
|
87
|
-
let c = 0;
|
|
88
|
-
for (let r = r1; r <= r2; r += 1) {
|
|
89
|
-
for (let g = g1; g <= g2; g += 1) {
|
|
90
|
-
for (let b = b1; b <= b2; b += 1) {
|
|
91
|
-
const index = (0, util_1.getColorIndex)(r, g, b);
|
|
92
|
-
c += hist[index];
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
__classPrivateFieldSet(this, _VBox_count, c, "f");
|
|
97
|
-
}
|
|
98
|
-
return __classPrivateFieldGet(this, _VBox_count, "f");
|
|
99
|
-
}
|
|
100
|
-
clone() {
|
|
101
|
-
const { hist } = this;
|
|
102
|
-
const { r1, r2, g1, g2, b1, b2, } = this.dimension;
|
|
103
|
-
return new VBox(r1, r2, g1, g2, b1, b2, hist);
|
|
104
|
-
}
|
|
105
|
-
get avg() {
|
|
106
|
-
if (!__classPrivateFieldGet(this, _VBox_avg, "f")) {
|
|
107
|
-
const { hist } = this;
|
|
108
|
-
const { r1, r2, g1, g2, b1, b2, } = this.dimension;
|
|
109
|
-
let ntot = 0;
|
|
110
|
-
const mult = 1 << (8 - util_1.SIGBITS);
|
|
111
|
-
let rsum = 0;
|
|
112
|
-
let gsum = 0;
|
|
113
|
-
let bsum = 0;
|
|
114
|
-
for (let r = r1; r <= r2; r += 1) {
|
|
115
|
-
for (let g = g1; g <= g2; g += 1) {
|
|
116
|
-
for (let b = b1; b <= b2; b += 1) {
|
|
117
|
-
const index = (0, util_1.getColorIndex)(r, g, b);
|
|
118
|
-
const h = hist[index];
|
|
119
|
-
ntot += h;
|
|
120
|
-
rsum += (h * (r + 0.5) * mult);
|
|
121
|
-
gsum += (h * (g + 0.5) * mult);
|
|
122
|
-
bsum += (h * (b + 0.5) * mult);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
if (ntot) {
|
|
127
|
-
__classPrivateFieldSet(this, _VBox_avg, [
|
|
128
|
-
~~(rsum / ntot),
|
|
129
|
-
~~(gsum / ntot),
|
|
130
|
-
~~(bsum / ntot),
|
|
131
|
-
], "f");
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
__classPrivateFieldSet(this, _VBox_avg, [
|
|
135
|
-
~~((mult * (r1 + r2 + 1)) / 2),
|
|
136
|
-
~~((mult * (g1 + g2 + 1)) / 2),
|
|
137
|
-
~~((mult * (b1 + b2 + 1)) / 2),
|
|
138
|
-
], "f");
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
return __classPrivateFieldGet(this, _VBox_avg, "f");
|
|
142
|
-
}
|
|
143
|
-
contains(rgb) {
|
|
144
|
-
let [r, g, b] = rgb;
|
|
145
|
-
const { r1, r2, g1, g2, b1, b2, } = this.dimension;
|
|
146
|
-
r >>= util_1.RSHIFT;
|
|
147
|
-
g >>= util_1.RSHIFT;
|
|
148
|
-
b >>= util_1.RSHIFT;
|
|
149
|
-
return r >= r1 && r <= r2
|
|
150
|
-
&& g >= g1 && g <= g2
|
|
151
|
-
&& b >= b1 && b <= b2;
|
|
152
|
-
}
|
|
153
|
-
split() {
|
|
154
|
-
const { hist } = this;
|
|
155
|
-
const { r1, r2, g1, g2, b1, b2, } = this.dimension;
|
|
156
|
-
const { count } = this;
|
|
157
|
-
if (!count)
|
|
158
|
-
return [];
|
|
159
|
-
if (count === 1)
|
|
160
|
-
return [this.clone()];
|
|
161
|
-
const rw = r2 - r1 + 1;
|
|
162
|
-
const gw = g2 - g1 + 1;
|
|
163
|
-
const bw = b2 - b1 + 1;
|
|
164
|
-
const maxw = Math.max(rw, gw, bw);
|
|
165
|
-
let accSum = null;
|
|
166
|
-
let sum = 0;
|
|
167
|
-
let total = 0;
|
|
168
|
-
let maxd = null;
|
|
169
|
-
if (maxw === rw) {
|
|
170
|
-
maxd = 'r';
|
|
171
|
-
accSum = new Uint32Array(r2 + 1);
|
|
172
|
-
for (let r = r1; r <= r2; r += 1) {
|
|
173
|
-
sum = 0;
|
|
174
|
-
for (let g = g1; g <= g2; g += 1) {
|
|
175
|
-
for (let b = b1; b <= b2; b += 1) {
|
|
176
|
-
const index = (0, util_1.getColorIndex)(r, g, b);
|
|
177
|
-
sum += hist[index];
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
total += sum;
|
|
181
|
-
accSum[r] = total;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
else if (maxw === gw) {
|
|
185
|
-
maxd = 'g';
|
|
186
|
-
accSum = new Uint32Array(g2 + 1);
|
|
187
|
-
for (let g = g1; g <= g2; g += 1) {
|
|
188
|
-
sum = 0;
|
|
189
|
-
for (let r = r1; r <= r2; r += 1) {
|
|
190
|
-
for (let b = b1; b <= b2; b += 1) {
|
|
191
|
-
const index = (0, util_1.getColorIndex)(r, g, b);
|
|
192
|
-
sum += hist[index];
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
total += sum;
|
|
196
|
-
accSum[g] = total;
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
else {
|
|
200
|
-
maxd = 'b';
|
|
201
|
-
accSum = new Uint32Array(b2 + 1);
|
|
202
|
-
for (let b = b1; b <= b2; b += 1) {
|
|
203
|
-
sum = 0;
|
|
204
|
-
for (let r = r1; r <= r2; r += 1) {
|
|
205
|
-
for (let g = g1; g <= g2; g += 1) {
|
|
206
|
-
const index = (0, util_1.getColorIndex)(r, g, b);
|
|
207
|
-
sum += hist[index];
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
total += sum;
|
|
211
|
-
accSum[b] = total;
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
let splitPoint = -1;
|
|
215
|
-
const reverseSum = new Uint32Array(accSum.length);
|
|
216
|
-
for (let i = 0; i < accSum.length; i += 1) {
|
|
217
|
-
const d = accSum[i];
|
|
218
|
-
if (splitPoint < 0 && d > total / 2)
|
|
219
|
-
splitPoint = i;
|
|
220
|
-
reverseSum[i] = total - d;
|
|
221
|
-
}
|
|
222
|
-
return this.doCut(maxd, splitPoint, accSum, reverseSum);
|
|
223
|
-
}
|
|
224
|
-
doCut(d, splitPoint, accSum, reverseSum) {
|
|
225
|
-
const dim1 = `${d}1`;
|
|
226
|
-
const dim2 = `${d}2`;
|
|
227
|
-
const d1 = this.dimension[dim1];
|
|
228
|
-
let d2 = this.dimension[dim2];
|
|
229
|
-
const vbox1 = this.clone();
|
|
230
|
-
const vbox2 = this.clone();
|
|
231
|
-
const left = splitPoint - d1;
|
|
232
|
-
const right = d2 - splitPoint;
|
|
233
|
-
if (left <= right) {
|
|
234
|
-
d2 = Math.min(d2 - 1, ~~(splitPoint + right / 2));
|
|
235
|
-
d2 = Math.max(0, d2);
|
|
236
|
-
}
|
|
237
|
-
else {
|
|
238
|
-
d2 = Math.max(d1, ~~(splitPoint - 1 - left / 2));
|
|
239
|
-
d2 = Math.min(this.dimension[dim2], d2);
|
|
240
|
-
}
|
|
241
|
-
while (!accSum[d2])
|
|
242
|
-
d2 += 1;
|
|
243
|
-
let c2 = reverseSum[d2];
|
|
244
|
-
while (!c2 && accSum[d2 - 1])
|
|
245
|
-
c2 = reverseSum[d2 -= 1];
|
|
246
|
-
vbox1.dimension[dim2] = d2;
|
|
247
|
-
vbox2.dimension[dim1] = d2 + 1;
|
|
248
|
-
return [vbox1, vbox2];
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
_VBox_volume = new WeakMap(), _VBox_avg = new WeakMap(), _VBox_count = new WeakMap();
|
|
252
|
-
exports.default = VBox;
|
|
253
|
-
//# sourceMappingURL=vbox.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vbox.js","sourceRoot":"","sources":["../../../src/quantizer/vbox.ts"],"names":[],"mappings":"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"}
|
package/lib/src/typing.d.ts
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import type { Palette, Swatch } from './color';
|
|
2
|
-
import type Builder from './builder';
|
|
3
|
-
import { type Sharp } from 'sharp';
|
|
4
|
-
export interface VibrantStatic {
|
|
5
|
-
from(src: ImageSource): Builder;
|
|
6
|
-
}
|
|
7
|
-
export interface Callback<T> {
|
|
8
|
-
(err?: Error, result?: T): void;
|
|
9
|
-
}
|
|
10
|
-
export type ImageCallback = Callback<Image>;
|
|
11
|
-
export type ImageSource = string | Buffer | Sharp;
|
|
12
|
-
export interface ImageDimensions {
|
|
13
|
-
readonly width: number;
|
|
14
|
-
readonly height: number;
|
|
15
|
-
}
|
|
16
|
-
export interface ImagePixelInfo {
|
|
17
|
-
readonly pixelCount: number;
|
|
18
|
-
}
|
|
19
|
-
export type Pixels = Uint8ClampedArray | Buffer;
|
|
20
|
-
export interface ImageData extends ImageDimensions {
|
|
21
|
-
data: Pixels;
|
|
22
|
-
}
|
|
23
|
-
export interface PaletteResult extends ImagePixelInfo {
|
|
24
|
-
readonly imageDimensions: ImageDimensions;
|
|
25
|
-
readonly palette: Palette;
|
|
26
|
-
}
|
|
27
|
-
export interface Image extends ImageDimensions, ImagePixelInfo {
|
|
28
|
-
readonly imageData: ImageData;
|
|
29
|
-
load(image: ImageSource, opts: ComputedOptions): Promise<Image>;
|
|
30
|
-
applyFilter(filter: Filter): Promise<ImageData>;
|
|
31
|
-
cleanup(): void;
|
|
32
|
-
}
|
|
33
|
-
export type Resolvable<T> = T | Promise<T>;
|
|
34
|
-
export interface ImageClass {
|
|
35
|
-
new (): Image;
|
|
36
|
-
}
|
|
37
|
-
export interface Filter {
|
|
38
|
-
(red: number, green: number, blue: number, alpha: number): boolean;
|
|
39
|
-
}
|
|
40
|
-
export interface Quantizer {
|
|
41
|
-
(pixels: Pixels, opts: ComputedOptions): Resolvable<Array<Swatch>>;
|
|
42
|
-
}
|
|
43
|
-
export interface Generator<T> {
|
|
44
|
-
(swatches: Array<Swatch>, opts?: T): Resolvable<Palette>;
|
|
45
|
-
}
|
|
46
|
-
export interface Options {
|
|
47
|
-
colorCount: number;
|
|
48
|
-
quality: number;
|
|
49
|
-
maxDimension: number;
|
|
50
|
-
filters: Array<Filter>;
|
|
51
|
-
ImageClass: ImageClass;
|
|
52
|
-
quantizer: Quantizer;
|
|
53
|
-
generator?: Generator<any>;
|
|
54
|
-
}
|
|
55
|
-
export interface ComputedOptions extends Options {
|
|
56
|
-
combinedFilter: Filter;
|
|
57
|
-
}
|
package/lib/src/typing.js
DELETED
package/lib/src/typing.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"typing.js","sourceRoot":"","sources":["../../src/typing.ts"],"names":[],"mappings":""}
|
package/lib/src/util.d.ts
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import type { Vec3 } from './color';
|
|
2
|
-
export declare const DELTAE94_DIFF_STATUS: {
|
|
3
|
-
NA: number;
|
|
4
|
-
PERFECT: number;
|
|
5
|
-
CLOSE: number;
|
|
6
|
-
GOOD: number;
|
|
7
|
-
SIMILAR: number;
|
|
8
|
-
};
|
|
9
|
-
export declare const SIGBITS = 5;
|
|
10
|
-
export declare const RSHIFT: number;
|
|
11
|
-
export interface IndexedObject {
|
|
12
|
-
[key: string]: any;
|
|
13
|
-
}
|
|
14
|
-
export interface DeferredPromise<R> {
|
|
15
|
-
resolve: (thenableOrResult: R | PromiseLike<R>) => void;
|
|
16
|
-
reject: (error: any) => void;
|
|
17
|
-
promise: Promise<R>;
|
|
18
|
-
}
|
|
19
|
-
export declare function defer<R>(): DeferredPromise<R>;
|
|
20
|
-
export declare function hexToRgb(hex: string): Vec3 | null;
|
|
21
|
-
export declare function rgbToHex(r: number, g: number, b: number): string;
|
|
22
|
-
export declare function rgbToHsl(ir: number, ig: number, ib: number): Vec3;
|
|
23
|
-
export declare function hslToRgb(h: number, s: number, l: number): Vec3;
|
|
24
|
-
export declare function rgbToXyz(ir: number, ig: number, ib: number): Vec3;
|
|
25
|
-
export declare function xyzToCIELab(ix: number, iy: number, iz: number): Vec3;
|
|
26
|
-
export declare function rgbToCIELab(r: number, g: number, b: number): Vec3;
|
|
27
|
-
export declare function deltaE94(lab1: Vec3, lab2: Vec3): number;
|
|
28
|
-
export declare function rgbDiff(rgb1: Vec3, rgb2: Vec3): number;
|
|
29
|
-
export declare function hexDiff(hex1: string, hex2: string): number;
|
|
30
|
-
export declare function getColorDiffStatus(d: number): string;
|
|
31
|
-
export declare function getColorIndex(r: number, g: number, b: number): number;
|