/
hsv.ts
66 lines (57 loc) · 1.7 KB
/
hsv.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import type { IRandom } from "@thi.ng/random";
import type { Vec } from "@thi.ng/vectors";
import type { Color, ColorFactory, ReadonlyColor, TypedColor } from "../api";
import { defColor } from "../defcolor";
import { hslHsv } from "../hsl/hsl-hsv";
import { rgbHsv } from "../rgb/rgb-hsv";
// export function hsv(col: Color, offset?: number, stride?: number): HSV;
// export function hsv(h?: number, s?: number, v?: number, a?: number): HSV;
// export function hsv(...args: any[]) {
// return new HSV(...ensureArgs(args));
// }
// export class HSV extends AColor<HSV> implements IVector<HSV> {
// h!: number;
// s!: number;
// v!: number;
// alpha!: number;
// get mode(): ColorMode {
// return "hsv";
// }
// copy() {
// return new HSV(this.deref());
// }
// copyView() {
// return new HSV(this.buf, this.offset, this.stride);
// }
// empty() {
// return new HSV();
// }
// }
// declareIndices(HSV.prototype, ["h", "s", "v", "alpha"]);
export declare class HSV implements TypedColor<HSV> {
buf: Vec;
offset: number;
stride: number;
h: number;
s: number;
v: number;
alpha: number;
[id: number]: number;
readonly mode: "hsv";
readonly length: 4;
[Symbol.iterator](): Iterator<number, any, undefined>;
clamp(): this;
copy(): HSV;
copyView(): HSV;
deref(): Color;
empty(): HSV;
eqDelta(o: HSV, eps?: number): boolean;
randomize(rnd?: IRandom): this;
set(src: ReadonlyColor): this;
toJSON(): number[];
}
export const hsv = <ColorFactory<HSV>>defColor({
mode: "hsv",
order: <const>["h", "s", "v", "alpha"],
from: { rgb: rgbHsv, srgb: rgbHsv, hsl: hslHsv },
});