@flighthq/effects 0.2.0 → 0.2.1-next.423.3350e53
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/dist/bevelEffect.js +1 -1
- package/dist/bevelEffect.js.map +1 -1
- package/dist/blendEffect.d.ts +3 -0
- package/dist/blendEffect.d.ts.map +1 -0
- package/dist/blendEffect.js +10 -0
- package/dist/blendEffect.js.map +1 -0
- package/dist/blendModeMath.d.ts +6 -0
- package/dist/blendModeMath.d.ts.map +1 -0
- package/dist/blendModeMath.js +172 -0
- package/dist/blendModeMath.js.map +1 -0
- package/dist/compositeEffect.d.ts +3 -0
- package/dist/compositeEffect.d.ts.map +1 -0
- package/dist/compositeEffect.js +10 -0
- package/dist/compositeEffect.js.map +1 -0
- package/dist/compositeOperatorMath.d.ts +3 -0
- package/dist/compositeOperatorMath.d.ts.map +1 -0
- package/dist/compositeOperatorMath.js +65 -0
- package/dist/compositeOperatorMath.js.map +1 -0
- package/dist/dropShadowEffect.js +1 -1
- package/dist/dropShadowEffect.js.map +1 -1
- package/dist/gradientBevelEffect.js +1 -1
- package/dist/gradientBevelEffect.js.map +1 -1
- package/dist/gradientGlowEffect.js +1 -1
- package/dist/gradientGlowEffect.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/innerGlowEffect.js +1 -1
- package/dist/innerGlowEffect.js.map +1 -1
- package/dist/innerShadowEffect.js +1 -1
- package/dist/innerShadowEffect.js.map +1 -1
- package/dist/outerGlowEffect.js +1 -1
- package/dist/outerGlowEffect.js.map +1 -1
- package/dist/renderEffectDefaults.js +35 -6
- package/dist/renderEffectDefaults.js.map +1 -1
- package/dist/renderEffectInputs.d.ts.map +1 -1
- package/dist/renderEffectInputs.js +1 -0
- package/dist/renderEffectInputs.js.map +1 -1
- package/package.json +2 -2
- package/src/bevelEffect.test.ts +4 -1
- package/src/blendEffect.test.ts +23 -0
- package/src/blendModeMath.test.ts +160 -0
- package/src/compositeEffect.test.ts +21 -0
- package/src/compositeOperatorMath.test.ts +45 -0
- package/src/dropShadowEffect.test.ts +4 -1
- package/src/gradientBevelEffect.test.ts +8 -2
- package/src/gradientGlowEffect.test.ts +8 -2
- package/src/innerGlowEffect.test.ts +4 -0
- package/src/innerShadowEffect.test.ts +4 -0
- package/src/outerGlowEffect.test.ts +4 -1
- package/src/renderEffectDefaults.test.ts +9 -0
- package/dist/colorScienceMath.d.ts +0 -9
- package/dist/colorScienceMath.d.ts.map +0 -1
- package/dist/colorScienceMath.js +0 -135
- package/dist/colorScienceMath.js.map +0 -1
- package/src/colorScienceMath.test.ts +0 -160
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
computeHslToRgb,
|
|
3
|
-
computeLinearToSrgb,
|
|
4
|
-
computeOklabToRgb,
|
|
5
|
-
computeRgbToHsl,
|
|
6
|
-
computeRgbToOklab,
|
|
7
|
-
computeSrgbToLinear,
|
|
8
|
-
getRec709LuminanceWeights,
|
|
9
|
-
getRec2020LuminanceWeights,
|
|
10
|
-
} from './colorScienceMath';
|
|
11
|
-
|
|
12
|
-
describe('computeHslToRgb', () => {
|
|
13
|
-
it('hue=0, full saturation, mid lightness → red', () => {
|
|
14
|
-
const out: [number, number, number] = [0, 0, 0];
|
|
15
|
-
computeHslToRgb(0, 1, 0.5, out);
|
|
16
|
-
expect(out[0]).toBeCloseTo(1, 4);
|
|
17
|
-
expect(out[1]).toBeCloseTo(0, 4);
|
|
18
|
-
expect(out[2]).toBeCloseTo(0, 4);
|
|
19
|
-
});
|
|
20
|
-
it('round-trips with computeRgbToHsl', () => {
|
|
21
|
-
const r = 0.3;
|
|
22
|
-
const g = 0.7;
|
|
23
|
-
const b = 0.1;
|
|
24
|
-
const hsl: [number, number, number] = [0, 0, 0];
|
|
25
|
-
computeRgbToHsl(r, g, b, hsl);
|
|
26
|
-
const rgb: [number, number, number] = [0, 0, 0];
|
|
27
|
-
computeHslToRgb(hsl[0], hsl[1], hsl[2], rgb);
|
|
28
|
-
expect(rgb[0]).toBeCloseTo(r, 4);
|
|
29
|
-
expect(rgb[1]).toBeCloseTo(g, 4);
|
|
30
|
-
expect(rgb[2]).toBeCloseTo(b, 4);
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
describe('computeLinearToSrgb', () => {
|
|
35
|
-
it('0 maps to 0', () => {
|
|
36
|
-
expect(computeLinearToSrgb(0)).toBeCloseTo(0, 5);
|
|
37
|
-
});
|
|
38
|
-
it('1 maps to 1', () => {
|
|
39
|
-
expect(computeLinearToSrgb(1)).toBeCloseTo(1, 5);
|
|
40
|
-
});
|
|
41
|
-
it('round-trips with computeSrgbToLinear', () => {
|
|
42
|
-
const linear = 0.5;
|
|
43
|
-
expect(computeSrgbToLinear(computeLinearToSrgb(linear))).toBeCloseTo(linear, 4);
|
|
44
|
-
});
|
|
45
|
-
it('clamps negative values to 0', () => {
|
|
46
|
-
expect(computeLinearToSrgb(-1)).toBeCloseTo(0, 5);
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
describe('computeOklabToRgb', () => {
|
|
51
|
-
it('round-trips with computeRgbToOklab for a mid-gray', () => {
|
|
52
|
-
const r = 0.5;
|
|
53
|
-
const g = 0.5;
|
|
54
|
-
const b = 0.5;
|
|
55
|
-
const lab: [number, number, number] = [0, 0, 0];
|
|
56
|
-
computeRgbToOklab(r, g, b, lab);
|
|
57
|
-
const rgb: [number, number, number] = [0, 0, 0];
|
|
58
|
-
computeOklabToRgb(lab[0], lab[1], lab[2], rgb);
|
|
59
|
-
expect(rgb[0]).toBeCloseTo(r, 3);
|
|
60
|
-
expect(rgb[1]).toBeCloseTo(g, 3);
|
|
61
|
-
expect(rgb[2]).toBeCloseTo(b, 3);
|
|
62
|
-
});
|
|
63
|
-
it('round-trips with computeRgbToOklab for a saturated color', () => {
|
|
64
|
-
const r = 0.8;
|
|
65
|
-
const g = 0.2;
|
|
66
|
-
const b = 0.1;
|
|
67
|
-
const lab: [number, number, number] = [0, 0, 0];
|
|
68
|
-
computeRgbToOklab(r, g, b, lab);
|
|
69
|
-
const rgb: [number, number, number] = [0, 0, 0];
|
|
70
|
-
computeOklabToRgb(lab[0], lab[1], lab[2], rgb);
|
|
71
|
-
expect(rgb[0]).toBeCloseTo(r, 3);
|
|
72
|
-
expect(rgb[1]).toBeCloseTo(g, 3);
|
|
73
|
-
expect(rgb[2]).toBeCloseTo(b, 3);
|
|
74
|
-
});
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
describe('computeRgbToHsl', () => {
|
|
78
|
-
it('red (1,0,0) has hue 0°', () => {
|
|
79
|
-
const out: [number, number, number] = [0, 0, 0];
|
|
80
|
-
computeRgbToHsl(1, 0, 0, out);
|
|
81
|
-
expect(out[0]).toBeCloseTo(0, 2);
|
|
82
|
-
expect(out[1]).toBeCloseTo(1, 2);
|
|
83
|
-
expect(out[2]).toBeCloseTo(0.5, 2);
|
|
84
|
-
});
|
|
85
|
-
it('green (0,1,0) has hue 120°', () => {
|
|
86
|
-
const out: [number, number, number] = [0, 0, 0];
|
|
87
|
-
computeRgbToHsl(0, 1, 0, out);
|
|
88
|
-
expect(out[0]).toBeCloseTo(120, 2);
|
|
89
|
-
});
|
|
90
|
-
it('white (1,1,1) has lightness 1 and saturation 0', () => {
|
|
91
|
-
const out: [number, number, number] = [0, 0, 0];
|
|
92
|
-
computeRgbToHsl(1, 1, 1, out);
|
|
93
|
-
expect(out[1]).toBeCloseTo(0, 4);
|
|
94
|
-
expect(out[2]).toBeCloseTo(1, 5);
|
|
95
|
-
});
|
|
96
|
-
it('black (0,0,0) has lightness 0 and saturation 0', () => {
|
|
97
|
-
const out: [number, number, number] = [0, 0, 0];
|
|
98
|
-
computeRgbToHsl(0, 0, 0, out);
|
|
99
|
-
expect(out[1]).toBeCloseTo(0, 4);
|
|
100
|
-
expect(out[2]).toBeCloseTo(0, 5);
|
|
101
|
-
});
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
describe('computeRgbToOklab', () => {
|
|
105
|
-
it('black (0,0,0) maps to L=0', () => {
|
|
106
|
-
const out: [number, number, number] = [0, 0, 0];
|
|
107
|
-
computeRgbToOklab(0, 0, 0, out);
|
|
108
|
-
expect(out[0]).toBeCloseTo(0, 4);
|
|
109
|
-
});
|
|
110
|
-
it('white (1,1,1) maps to L~1, a~0, b~0', () => {
|
|
111
|
-
const out: [number, number, number] = [0, 0, 0];
|
|
112
|
-
computeRgbToOklab(1, 1, 1, out);
|
|
113
|
-
expect(out[0]).toBeCloseTo(1, 2);
|
|
114
|
-
expect(out[1]).toBeCloseTo(0, 3);
|
|
115
|
-
expect(out[2]).toBeCloseTo(0, 3);
|
|
116
|
-
});
|
|
117
|
-
});
|
|
118
|
-
|
|
119
|
-
describe('computeSrgbToLinear', () => {
|
|
120
|
-
it('0 maps to 0', () => {
|
|
121
|
-
expect(computeSrgbToLinear(0)).toBeCloseTo(0, 5);
|
|
122
|
-
});
|
|
123
|
-
it('1 maps to 1', () => {
|
|
124
|
-
expect(computeSrgbToLinear(1)).toBeCloseTo(1, 5);
|
|
125
|
-
});
|
|
126
|
-
it('round-trips with computeLinearToSrgb', () => {
|
|
127
|
-
const srgb = 0.5;
|
|
128
|
-
expect(computeLinearToSrgb(computeSrgbToLinear(srgb))).toBeCloseTo(srgb, 4);
|
|
129
|
-
});
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
describe('getRec2020LuminanceWeights', () => {
|
|
133
|
-
it('weights sum to 1', () => {
|
|
134
|
-
const out: [number, number, number] = [0, 0, 0];
|
|
135
|
-
getRec2020LuminanceWeights(out);
|
|
136
|
-
expect(out[0] + out[1] + out[2]).toBeCloseTo(1, 5);
|
|
137
|
-
});
|
|
138
|
-
it('returns canonical Rec.2020 values', () => {
|
|
139
|
-
const out: [number, number, number] = [0, 0, 0];
|
|
140
|
-
getRec2020LuminanceWeights(out);
|
|
141
|
-
expect(out[0]).toBeCloseTo(0.2627, 4);
|
|
142
|
-
expect(out[1]).toBeCloseTo(0.678, 4);
|
|
143
|
-
expect(out[2]).toBeCloseTo(0.0593, 4);
|
|
144
|
-
});
|
|
145
|
-
});
|
|
146
|
-
|
|
147
|
-
describe('getRec709LuminanceWeights', () => {
|
|
148
|
-
it('weights sum to 1', () => {
|
|
149
|
-
const out: [number, number, number] = [0, 0, 0];
|
|
150
|
-
getRec709LuminanceWeights(out);
|
|
151
|
-
expect(out[0] + out[1] + out[2]).toBeCloseTo(1, 5);
|
|
152
|
-
});
|
|
153
|
-
it('returns canonical Rec.709 values', () => {
|
|
154
|
-
const out: [number, number, number] = [0, 0, 0];
|
|
155
|
-
getRec709LuminanceWeights(out);
|
|
156
|
-
expect(out[0]).toBeCloseTo(0.2126, 4);
|
|
157
|
-
expect(out[1]).toBeCloseTo(0.7152, 4);
|
|
158
|
-
expect(out[2]).toBeCloseTo(0.0722, 4);
|
|
159
|
-
});
|
|
160
|
-
});
|