yuyeon 0.3.5 → 0.3.6-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/style.css +1 -1
- package/dist/yuyeon.js +2394 -2332
- package/dist/yuyeon.umd.cjs +3 -3
- package/lib/abstract/items.js.map +1 -1
- package/lib/components/alert/YAlert.js +2 -2
- package/lib/components/alert/YAlert.js.map +1 -1
- package/lib/components/badge/YBadge.js.map +1 -1
- package/lib/components/badge/YBadge.scss +87 -87
- package/lib/components/card/YCard.js.map +1 -1
- package/lib/components/checkbox/YCheckbox.js.map +1 -1
- package/lib/components/date-picker/YDateCalendar.js.map +1 -1
- package/lib/components/date-picker/YDatePicker.js.map +1 -1
- package/lib/components/date-picker/YDatePickerControl.js.map +1 -1
- package/lib/components/date-picker/YMonthPicker.js.map +1 -1
- package/lib/components/date-picker/YYearPicker.js.map +1 -1
- package/lib/components/dialog/YDialog.js.map +1 -1
- package/lib/components/divider/YDivider.js.map +1 -1
- package/lib/components/draggable/YDraggable.js.map +1 -1
- package/lib/components/draggable/index.js.map +1 -1
- package/lib/components/dropdown/YDropdown.js.map +1 -1
- package/lib/components/field-input/YFieldInput.js.map +1 -1
- package/lib/components/form/YForm.js.map +1 -1
- package/lib/components/hover/YHover.js.map +1 -1
- package/lib/components/icon/YIcon.js.map +1 -1
- package/lib/components/icons/YIconCheckbox.js.map +1 -1
- package/lib/components/icons/YIconCheckbox.scss +4 -5
- package/lib/components/icons/YIconClear.js.map +1 -1
- package/lib/components/icons/YIconDropdown.js.map +1 -1
- package/lib/components/icons/YIconExpand.js.map +1 -1
- package/lib/components/icons/YIconPageControl.js.map +1 -1
- package/lib/components/icons/YIconSort.js.map +1 -1
- package/lib/components/img/YImg.js +4 -4
- package/lib/components/img/YImg.js.map +1 -1
- package/lib/components/img/index.js.map +1 -1
- package/lib/components/index.js.map +1 -1
- package/lib/components/input/YInput.js.map +1 -1
- package/lib/components/layer/YLayer.js.map +1 -1
- package/lib/components/layer/base.js +2 -2
- package/lib/components/layer/base.js.map +1 -1
- package/lib/components/layer/content.js.map +1 -1
- package/lib/components/list/YListItem.js.map +1 -1
- package/lib/components/menu/YMenu.js +2 -2
- package/lib/components/menu/YMenu.js.map +1 -1
- package/lib/components/panel/YDividePanel.js.map +1 -1
- package/lib/components/panel/YDividePanel.scss +44 -44
- package/lib/components/plate/YPlate.js +2 -2
- package/lib/components/plate/YPlate.js.map +1 -1
- package/lib/components/radio/YRadio.js.map +1 -1
- package/lib/components/radio/YRadioIcon.js.map +1 -1
- package/lib/components/radio/index.js.map +1 -1
- package/lib/components/select/YSelect.js.map +1 -1
- package/lib/components/slider/YSlider.js.map +1 -1
- package/lib/components/slider/index.js.map +1 -1
- package/lib/components/switch/YSwitch.js.map +1 -1
- package/lib/components/tab/YTab.js.map +1 -1
- package/lib/components/tab/YTabs.js.map +1 -1
- package/lib/components/table/YDataTable.js.map +1 -1
- package/lib/components/table/YDataTableBody.js.map +1 -1
- package/lib/components/table/YDataTableControl.js.map +1 -1
- package/lib/components/table/YDataTableControl.scss +17 -17
- package/lib/components/table/YDataTableLayerRows.js.map +1 -1
- package/lib/components/table/YDataTableServer.js.map +1 -1
- package/lib/components/table/YTable.js.map +1 -1
- package/lib/components/table/composables/expand.js.map +1 -1
- package/lib/components/table/composables/header.js.map +1 -1
- package/lib/components/table/composables/items.js.map +1 -1
- package/lib/components/table/composables/measure.js.map +1 -1
- package/lib/components/table/composables/provides.js.map +1 -1
- package/lib/components/table/types/item.js.map +1 -1
- package/lib/components/text-ellipsis/YTextEllipsis.js.map +1 -1
- package/lib/components/text-highlighter/YTextHighlighter.js.map +1 -1
- package/lib/components/text-interpolation/YTi.js.map +1 -1
- package/lib/components/tooltip/YTooltip.js +2 -2
- package/lib/components/tooltip/YTooltip.js.map +1 -1
- package/lib/components/tree-view/YTreeView.js +23 -28
- package/lib/components/tree-view/YTreeView.js.map +1 -1
- package/lib/components/tree-view/YTreeViewNode.js +58 -20
- package/lib/components/tree-view/YTreeViewNode.js.map +1 -1
- package/lib/components/tree-view/tree-view.js +61 -8
- package/lib/components/tree-view/tree-view.js.map +1 -1
- package/lib/components/tree-view/types.js.map +1 -1
- package/lib/composables/choice.js.map +1 -1
- package/lib/composables/coordinate/index.js.map +1 -1
- package/lib/composables/coordinate/levitation.js +2 -2
- package/lib/composables/coordinate/levitation.js.map +1 -1
- package/lib/composables/coordinate/types.js.map +1 -1
- package/lib/composables/defaults/types.js.map +1 -1
- package/lib/composables/form.js.map +1 -1
- package/lib/composables/style-color.js.map +1 -1
- package/lib/composables/theme/index.js.map +1 -1
- package/lib/composables/theme/types.js.map +1 -1
- package/lib/composables/timing.js.map +1 -1
- package/lib/composables/validation.js.map +1 -1
- package/lib/directives/index.js.map +1 -1
- package/lib/directives/plate-wave/index.js +2 -2
- package/lib/directives/plate-wave/index.js.map +1 -1
- package/lib/directives/plate-wave/plate-wave.scss +44 -44
- package/lib/directives/theme-class/index.js.map +1 -1
- package/lib/etc/index.js.map +1 -1
- package/lib/i18n/built-in.js.map +1 -1
- package/lib/i18n/config.js.map +1 -1
- package/lib/i18n/types.js.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/locales/en.js.map +1 -1
- package/lib/locales/ko.js.map +1 -1
- package/lib/styles/settings/_provided.scss +33 -33
- package/lib/styles/theme/index.scss +4 -4
- package/lib/types/index.js.map +1 -1
- package/lib/util/color/apca.js +30 -30
- package/lib/util/color/apca.js.map +1 -1
- package/lib/util/color/const.js.map +1 -1
- package/lib/util/color/hct/cam16.js +95 -95
- package/lib/util/color/hct/cam16.js.map +1 -1
- package/lib/util/color/hct/hct-solver.js +107 -107
- package/lib/util/color/hct/hct-solver.js.map +1 -1
- package/lib/util/color/hct/hct.js +71 -71
- package/lib/util/color/hct/hct.js.map +1 -1
- package/lib/util/color/index.js +12 -12
- package/lib/util/color/index.js.map +1 -1
- package/lib/util/common.js.map +1 -1
- package/lib/util/component/component.js.map +1 -1
- package/lib/util/component/inject-self.js.map +1 -1
- package/lib/util/component/props.js.map +1 -1
- package/lib/util/component/types.js.map +1 -1
- package/lib/util/date/built-in.js.map +1 -1
- package/lib/util/date/index.js.map +1 -1
- package/lib/util/date/types.js.map +1 -1
- package/lib/util/debounce.js.map +1 -1
- package/lib/util/dom.js.map +1 -1
- package/lib/util/index.js.map +1 -1
- package/lib/util/string.js.map +1 -1
- package/lib/util/ui.js.map +1 -1
- package/package.json +132 -132
- package/types/components/tree-view/YTreeView.d.ts +18 -26
- package/types/components/tree-view/YTreeViewNode.d.ts +71 -1
- package/types/components/tree-view/tree-view.d.ts +17 -1
- package/types/declares.d.ts +1 -1
- package/types/globals.d.ts +19 -19
- package/types/shims.d.ts +64 -64
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
2
2
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
3
3
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
4
|
-
/**
|
|
5
|
-
* @license
|
|
6
|
-
* Copyright 2021 Google LLC
|
|
7
|
-
*
|
|
8
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
9
|
-
* you may not use this file except in compliance with the License.
|
|
10
|
-
* You may obtain a copy of the License at
|
|
11
|
-
*
|
|
12
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
13
|
-
*
|
|
14
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
15
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
16
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
17
|
-
* See the License for the specific language governing permissions and
|
|
18
|
-
* limitations under the License.
|
|
4
|
+
/**
|
|
5
|
+
* @license
|
|
6
|
+
* Copyright 2021 Google LLC
|
|
7
|
+
*
|
|
8
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
9
|
+
* you may not use this file except in compliance with the License.
|
|
10
|
+
* You may obtain a copy of the License at
|
|
11
|
+
*
|
|
12
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
13
|
+
*
|
|
14
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
15
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
16
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
17
|
+
* See the License for the specific language governing permissions and
|
|
18
|
+
* limitations under the License.
|
|
19
19
|
*/
|
|
20
20
|
// This file is automatically generated. Do not modify it.
|
|
21
21
|
import { argbFromLinrgb, argbFromLstar, yFromLstar } from "../conversion.js";
|
|
@@ -26,29 +26,29 @@ import { ViewingConditions } from "./viewing-conditions.js"; // material_color_u
|
|
|
26
26
|
// class as a namespace facilitates this.
|
|
27
27
|
//
|
|
28
28
|
// tslint:disable:class-as-namespace
|
|
29
|
-
/**
|
|
30
|
-
* A class that solves the HCT equation.
|
|
29
|
+
/**
|
|
30
|
+
* A class that solves the HCT equation.
|
|
31
31
|
*/
|
|
32
32
|
export class HctSolver {
|
|
33
|
-
/**
|
|
34
|
-
* Sanitizes a small enough angle in radians.
|
|
35
|
-
*
|
|
36
|
-
* @param angle An angle in radians; must not deviate too much
|
|
37
|
-
* from 0.
|
|
38
|
-
* @return A coterminal angle between 0 and 2pi.
|
|
33
|
+
/**
|
|
34
|
+
* Sanitizes a small enough angle in radians.
|
|
35
|
+
*
|
|
36
|
+
* @param angle An angle in radians; must not deviate too much
|
|
37
|
+
* from 0.
|
|
38
|
+
* @return A coterminal angle between 0 and 2pi.
|
|
39
39
|
*/
|
|
40
40
|
static sanitizeRadians(angle) {
|
|
41
41
|
return (angle + Math.PI * 8) % (Math.PI * 2);
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
/**
|
|
45
|
-
* Delinearizes an RGB component, returning a floating-point
|
|
46
|
-
* number.
|
|
47
|
-
*
|
|
48
|
-
* @param rgbComponent 0.0 <= rgb_component <= 100.0, represents
|
|
49
|
-
* linear R/G/B channel
|
|
50
|
-
* @return 0.0 <= output <= 255.0, color channel converted to
|
|
51
|
-
* regular RGB space
|
|
44
|
+
/**
|
|
45
|
+
* Delinearizes an RGB component, returning a floating-point
|
|
46
|
+
* number.
|
|
47
|
+
*
|
|
48
|
+
* @param rgbComponent 0.0 <= rgb_component <= 100.0, represents
|
|
49
|
+
* linear R/G/B channel
|
|
50
|
+
* @return 0.0 <= output <= 255.0, color channel converted to
|
|
51
|
+
* regular RGB space
|
|
52
52
|
*/
|
|
53
53
|
static trueDelinearized(rgbComponent) {
|
|
54
54
|
const normalized = rgbComponent / 100.0;
|
|
@@ -65,11 +65,11 @@ export class HctSolver {
|
|
|
65
65
|
return mathUtils.signum(component) * 400.0 * af / (af + 27.13);
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
/**
|
|
69
|
-
* Returns the hue of a linear RGB color in CAM16.
|
|
70
|
-
*
|
|
71
|
-
* @param linrgb The linear RGB coordinates of a color.
|
|
72
|
-
* @return The hue of the color in CAM16, in radians.
|
|
68
|
+
/**
|
|
69
|
+
* Returns the hue of a linear RGB color in CAM16.
|
|
70
|
+
*
|
|
71
|
+
* @param linrgb The linear RGB coordinates of a color.
|
|
72
|
+
* @return The hue of the color in CAM16, in radians.
|
|
73
73
|
*/
|
|
74
74
|
static hueOf(linrgb) {
|
|
75
75
|
const scaledDiscount = mathUtils.matrixMultiply(linrgb, HctSolver.SCALED_DISCOUNT_FROM_LINRGB);
|
|
@@ -88,13 +88,13 @@ export class HctSolver {
|
|
|
88
88
|
return deltaAB < deltaAC;
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
-
/**
|
|
92
|
-
* Solves the lerp equation.
|
|
93
|
-
*
|
|
94
|
-
* @param source The starting number.
|
|
95
|
-
* @param mid The number in the middle.
|
|
96
|
-
* @param target The ending number.
|
|
97
|
-
* @return A number t such that lerp(source, target, t) = mid.
|
|
91
|
+
/**
|
|
92
|
+
* Solves the lerp equation.
|
|
93
|
+
*
|
|
94
|
+
* @param source The starting number.
|
|
95
|
+
* @param mid The number in the middle.
|
|
96
|
+
* @param target The ending number.
|
|
97
|
+
* @return A number t such that lerp(source, target, t) = mid.
|
|
98
98
|
*/
|
|
99
99
|
static intercept(source, mid, target) {
|
|
100
100
|
return (mid - source) / (target - source);
|
|
@@ -103,16 +103,16 @@ export class HctSolver {
|
|
|
103
103
|
return [source[0] + (target[0] - source[0]) * t, source[1] + (target[1] - source[1]) * t, source[2] + (target[2] - source[2]) * t];
|
|
104
104
|
}
|
|
105
105
|
|
|
106
|
-
/**
|
|
107
|
-
* Intersects a segment with a plane.
|
|
108
|
-
*
|
|
109
|
-
* @param source The coordinates of point A.
|
|
110
|
-
* @param coordinate The R-, G-, or B-coordinate of the plane.
|
|
111
|
-
* @param target The coordinates of point B.
|
|
112
|
-
* @param axis The axis the plane is perpendicular with. (0: R, 1:
|
|
113
|
-
* G, 2: B)
|
|
114
|
-
* @return The intersection point of the segment AB with the plane
|
|
115
|
-
* R=coordinate, G=coordinate, or B=coordinate
|
|
106
|
+
/**
|
|
107
|
+
* Intersects a segment with a plane.
|
|
108
|
+
*
|
|
109
|
+
* @param source The coordinates of point A.
|
|
110
|
+
* @param coordinate The R-, G-, or B-coordinate of the plane.
|
|
111
|
+
* @param target The coordinates of point B.
|
|
112
|
+
* @param axis The axis the plane is perpendicular with. (0: R, 1:
|
|
113
|
+
* G, 2: B)
|
|
114
|
+
* @return The intersection point of the segment AB with the plane
|
|
115
|
+
* R=coordinate, G=coordinate, or B=coordinate
|
|
116
116
|
*/
|
|
117
117
|
static setCoordinate(source, coordinate, target, axis) {
|
|
118
118
|
const t = HctSolver.intercept(source[axis], coordinate, target[axis]);
|
|
@@ -122,15 +122,15 @@ export class HctSolver {
|
|
|
122
122
|
return 0.0 <= x && x <= 100.0;
|
|
123
123
|
}
|
|
124
124
|
|
|
125
|
-
/**
|
|
126
|
-
* Returns the nth possible vertex of the polygonal intersection.
|
|
127
|
-
*
|
|
128
|
-
* @param y The Y value of the plane.
|
|
129
|
-
* @param n The zero-based index of the point. 0 <= n <= 11.
|
|
130
|
-
* @return The nth possible vertex of the polygonal intersection
|
|
131
|
-
* of the y plane and the RGB cube, in linear RGB coordinates, if
|
|
132
|
-
* it exists. If this possible vertex lies outside of the cube,
|
|
133
|
-
* [-1.0, -1.0, -1.0] is returned.
|
|
125
|
+
/**
|
|
126
|
+
* Returns the nth possible vertex of the polygonal intersection.
|
|
127
|
+
*
|
|
128
|
+
* @param y The Y value of the plane.
|
|
129
|
+
* @param n The zero-based index of the point. 0 <= n <= 11.
|
|
130
|
+
* @return The nth possible vertex of the polygonal intersection
|
|
131
|
+
* of the y plane and the RGB cube, in linear RGB coordinates, if
|
|
132
|
+
* it exists. If this possible vertex lies outside of the cube,
|
|
133
|
+
* [-1.0, -1.0, -1.0] is returned.
|
|
134
134
|
*/
|
|
135
135
|
static nthVertex(y, n) {
|
|
136
136
|
const kR = HctSolver.Y_FROM_LINRGB[0];
|
|
@@ -168,14 +168,14 @@ export class HctSolver {
|
|
|
168
168
|
}
|
|
169
169
|
}
|
|
170
170
|
|
|
171
|
-
/**
|
|
172
|
-
* Finds the segment containing the desired color.
|
|
173
|
-
*
|
|
174
|
-
* @param y The Y value of the color.
|
|
175
|
-
* @param targetHue The hue of the color.
|
|
176
|
-
* @return A list of two sets of linear RGB coordinates, each
|
|
177
|
-
* corresponding to an endpoint of the segment containing the
|
|
178
|
-
* desired color.
|
|
171
|
+
/**
|
|
172
|
+
* Finds the segment containing the desired color.
|
|
173
|
+
*
|
|
174
|
+
* @param y The Y value of the color.
|
|
175
|
+
* @param targetHue The hue of the color.
|
|
176
|
+
* @return A list of two sets of linear RGB coordinates, each
|
|
177
|
+
* corresponding to an endpoint of the segment containing the
|
|
178
|
+
* desired color.
|
|
179
179
|
*/
|
|
180
180
|
static bisectToSegment(y, targetHue) {
|
|
181
181
|
let left = [-1.0, -1.0, -1.0];
|
|
@@ -221,13 +221,13 @@ export class HctSolver {
|
|
|
221
221
|
return Math.ceil(x - 0.5);
|
|
222
222
|
}
|
|
223
223
|
|
|
224
|
-
/**
|
|
225
|
-
* Finds a color with the given Y and hue on the boundary of the
|
|
226
|
-
* cube.
|
|
227
|
-
*
|
|
228
|
-
* @param y The Y value of the color.
|
|
229
|
-
* @param targetHue The hue of the color.
|
|
230
|
-
* @return The desired color, in linear RGB coordinates.
|
|
224
|
+
/**
|
|
225
|
+
* Finds a color with the given Y and hue on the boundary of the
|
|
226
|
+
* cube.
|
|
227
|
+
*
|
|
228
|
+
* @param y The Y value of the color.
|
|
229
|
+
* @param targetHue The hue of the color.
|
|
230
|
+
* @return The desired color, in linear RGB coordinates.
|
|
231
231
|
*/
|
|
232
232
|
static bisectToLimit(y, targetHue) {
|
|
233
233
|
const segment = HctSolver.bisectToSegment(y, targetHue);
|
|
@@ -273,14 +273,14 @@ export class HctSolver {
|
|
|
273
273
|
return mathUtils.signum(adapted) * Math.pow(base, 1.0 / 0.42);
|
|
274
274
|
}
|
|
275
275
|
|
|
276
|
-
/**
|
|
277
|
-
* Finds a color with the given hue, chroma, and Y.
|
|
278
|
-
*
|
|
279
|
-
* @param hueRadians The desired hue in radians.
|
|
280
|
-
* @param chroma The desired chroma.
|
|
281
|
-
* @param y The desired Y.
|
|
282
|
-
* @return The desired color as a hexadecimal integer, if found; 0
|
|
283
|
-
* otherwise.
|
|
276
|
+
/**
|
|
277
|
+
* Finds a color with the given hue, chroma, and Y.
|
|
278
|
+
*
|
|
279
|
+
* @param hueRadians The desired hue in radians.
|
|
280
|
+
* @param chroma The desired chroma.
|
|
281
|
+
* @param y The desired Y.
|
|
282
|
+
* @return The desired color as a hexadecimal integer, if found; 0
|
|
283
|
+
* otherwise.
|
|
284
284
|
*/
|
|
285
285
|
static findResultByJ(hueRadians, chroma, y) {
|
|
286
286
|
// Initial estimate of j.
|
|
@@ -339,17 +339,17 @@ export class HctSolver {
|
|
|
339
339
|
return 0;
|
|
340
340
|
}
|
|
341
341
|
|
|
342
|
-
/**
|
|
343
|
-
* Finds an sRGB color with the given hue, chroma, and L*, if
|
|
344
|
-
* possible.
|
|
345
|
-
*
|
|
346
|
-
* @param hueDegrees The desired hue, in degrees.
|
|
347
|
-
* @param chroma The desired chroma.
|
|
348
|
-
* @param lstar The desired L*.
|
|
349
|
-
* @return A hexadecimal representing the sRGB color. The color
|
|
350
|
-
* has sufficiently close hue, chroma, and L* to the desired
|
|
351
|
-
* values, if possible; otherwise, the hue and L* will be
|
|
352
|
-
* sufficiently close, and chroma will be maximized.
|
|
342
|
+
/**
|
|
343
|
+
* Finds an sRGB color with the given hue, chroma, and L*, if
|
|
344
|
+
* possible.
|
|
345
|
+
*
|
|
346
|
+
* @param hueDegrees The desired hue, in degrees.
|
|
347
|
+
* @param chroma The desired chroma.
|
|
348
|
+
* @param lstar The desired L*.
|
|
349
|
+
* @return A hexadecimal representing the sRGB color. The color
|
|
350
|
+
* has sufficiently close hue, chroma, and L* to the desired
|
|
351
|
+
* values, if possible; otherwise, the hue and L* will be
|
|
352
|
+
* sufficiently close, and chroma will be maximized.
|
|
353
353
|
*/
|
|
354
354
|
static solveToInt(hueDegrees, chroma, lstar) {
|
|
355
355
|
if (chroma < 0.0001 || lstar < 0.0001 || lstar > 99.9999) {
|
|
@@ -366,17 +366,17 @@ export class HctSolver {
|
|
|
366
366
|
return argbFromLinrgb(linrgb);
|
|
367
367
|
}
|
|
368
368
|
|
|
369
|
-
/**
|
|
370
|
-
* Finds an sRGB color with the given hue, chroma, and L*, if
|
|
371
|
-
* possible.
|
|
372
|
-
*
|
|
373
|
-
* @param hueDegrees The desired hue, in degrees.
|
|
374
|
-
* @param chroma The desired chroma.
|
|
375
|
-
* @param lstar The desired L*.
|
|
376
|
-
* @return An CAM16 object representing the sRGB color. The color
|
|
377
|
-
* has sufficiently close hue, chroma, and L* to the desired
|
|
378
|
-
* values, if possible; otherwise, the hue and L* will be
|
|
379
|
-
* sufficiently close, and chroma will be maximized.
|
|
369
|
+
/**
|
|
370
|
+
* Finds an sRGB color with the given hue, chroma, and L*, if
|
|
371
|
+
* possible.
|
|
372
|
+
*
|
|
373
|
+
* @param hueDegrees The desired hue, in degrees.
|
|
374
|
+
* @param chroma The desired chroma.
|
|
375
|
+
* @param lstar The desired L*.
|
|
376
|
+
* @return An CAM16 object representing the sRGB color. The color
|
|
377
|
+
* has sufficiently close hue, chroma, and L* to the desired
|
|
378
|
+
* values, if possible; otherwise, the hue and L* will be
|
|
379
|
+
* sufficiently close, and chroma will be maximized.
|
|
380
380
|
*/
|
|
381
381
|
static solveToCam(hueDegrees, chroma, lstar) {
|
|
382
382
|
return Cam16.fromInt(HctSolver.solveToInt(hueDegrees, chroma, lstar));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hct-solver.js","names":["argbFromLinrgb","argbFromLstar","yFromLstar","mathUtils","Cam16","ViewingConditions","HctSolver","sanitizeRadians","angle","Math","PI","trueDelinearized","rgbComponent","normalized","delinearized","pow","chromaticAdaptation","component","af","abs","signum","hueOf","linrgb","scaledDiscount","matrixMultiply","SCALED_DISCOUNT_FROM_LINRGB","rA","gA","bA","a","b","atan2","areInCyclicOrder","c","deltaAB","deltaAC","intercept","source","mid","target","lerpPoint","t","setCoordinate","coordinate","axis","isBounded","x","nthVertex","y","n","kR","Y_FROM_LINRGB","kG","kB","coordA","coordB","g","r","bisectToSegment","targetHue","left","right","leftHue","rightHue","initialized","uncut","midHue","midpoint","criticalPlaneBelow","floor","criticalPlaneAbove","ceil","bisectToLimit","segment","lPlane","rPlane","i","mPlane","midPlaneCoordinate","CRITICAL_PLANES","inverseChromaticAdaptation","adapted","adaptedAbs","base","max","findResultByJ","hueRadians","chroma","j","sqrt","viewingConditions","DEFAULT","tInnerCoeff","eHue","cos","p1","nc","ncb","hSin","sin","hCos","iterationRound","jNormalized","alpha","ac","aw","z","p2","nbb","gamma","rCScaled","gCScaled","bCScaled","LINRGB_FROM_SCALED_DISCOUNT","fnj","solveToInt","hueDegrees","lstar","sanitizeDegreesDouble","exactAnswer","solveToCam","fromInt","_defineProperty"],"sources":["../../../../src/util/color/hct/hct-solver.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// This file is automatically generated. Do not modify it.\n\nimport { argbFromLinrgb, argbFromLstar, yFromLstar } from '../conversion';\nimport * as mathUtils from '../utils/math-utils';\nimport { Cam16 } from './cam16';\nimport { ViewingConditions } from './viewing-conditions';\n\n// material_color_utilities is designed to have a consistent API across\n// platforms and modular components that can be moved around easily. Using a\n// class as a namespace facilitates this.\n//\n// tslint:disable:class-as-namespace\n/**\n * A class that solves the HCT equation.\n */\nexport class HctSolver {\n static SCALED_DISCOUNT_FROM_LINRGB = [\n [0.001200833568784504, 0.002389694492170889, 0.0002795742885861124],\n [0.0005891086651375999, 0.0029785502573438758, 0.0003270666104008398],\n [0.00010146692491640572, 0.0005364214359186694, 0.0032979401770712076],\n ];\n\n static LINRGB_FROM_SCALED_DISCOUNT = [\n [1373.2198709594231, -1100.4251190754821, -7.278681089101213],\n [-271.815969077903, 559.6580465940733, -32.46047482791194],\n [1.9622899599665666, -57.173814538844006, 308.7233197812385],\n ];\n\n static Y_FROM_LINRGB = [0.2126, 0.7152, 0.0722];\n\n static CRITICAL_PLANES = [\n 0.015176349177441876, 0.045529047532325624, 0.07588174588720938,\n 0.10623444424209313, 0.13658714259697685, 0.16693984095186062,\n 0.19729253930674434, 0.2276452376616281, 0.2579979360165119,\n 0.28835063437139563, 0.3188300904430532, 0.350925934958123,\n 0.3848314933096426, 0.42057480301049466, 0.458183274052838,\n 0.4976837250274023, 0.5391024159806381, 0.5824650784040898,\n 0.6277969426914107, 0.6751227633498623, 0.7244668422128921,\n 0.775853049866786, 0.829304845476233, 0.8848452951698498, 0.942497089126609,\n 1.0022825574869039, 1.0642236851973577, 1.1283421258858297,\n 1.1946592148522128, 1.2631959812511864, 1.3339731595349034,\n 1.407011200216447, 1.4823302800086415, 1.5599503113873272,\n 1.6398909516233677, 1.7221716113234105, 1.8068114625156377,\n 1.8938294463134073, 1.9832442801866852, 2.075074464868551,\n 2.1693382909216234, 2.2660538449872063, 2.36523901573795,\n 2.4669114995532007, 2.5710888059345764, 2.6777882626779785,\n 2.7870270208169257, 2.898822059350997, 3.0131901897720907,\n 3.1301480604002863, 3.2497121605402226, 3.3718988244681087,\n 3.4967242352587946, 3.624204428461639, 3.754355295633311, 3.887192587735158,\n 4.022731918402185, 4.160988767090289, 4.301978482107941, 4.445716283538092,\n 4.592217266055746, 4.741496401646282, 4.893568542229298, 5.048448422192488,\n 5.20615066083972, 5.3666897647573375, 5.5300801301023865, 5.696336044816294,\n 5.865471690767354, 6.037501145825082, 6.212438385869475, 6.390297286737924,\n 6.571091626112461, 6.7548350853498045, 6.941541251256611, 7.131223617812143,\n 7.323895587840543, 7.5195704746346665, 7.7182615035334345,\n 7.919981813454504, 8.124744458384042, 8.332562408825165, 8.543448553206703,\n 8.757415699253682, 8.974476575321063, 9.194643831691977, 9.417930041841839,\n 9.644347703669503, 9.873909240696694, 10.106627003236781,\n 10.342513269534024, 10.58158024687427, 10.8238400726681, 11.069304815507364,\n 11.317986476196008, 11.569896988756009, 11.825048221409341,\n 12.083451977536606, 12.345119996613247, 12.610063955123938,\n 12.878295467455942, 13.149826086772048, 13.42466730586372,\n 13.702830557985108, 13.984327217668513, 14.269168601521828,\n 14.55736596900856, 14.848930523210871, 15.143873411576273,\n 15.44220572664832, 15.743938506781891, 16.04908273684337, 16.35764934889634,\n 16.66964922287304, 16.985093187232053, 17.30399201960269, 17.62635644741625,\n 17.95219714852476, 18.281524751807332, 18.614349837764564,\n 18.95068293910138, 19.290534541298456, 19.633915083172692,\n 19.98083495742689, 20.331304511189067, 20.685334046541502,\n 21.042933821039977, 21.404114048223256, 21.76888489811322,\n 22.137256497705877, 22.50923893145328, 22.884842241736916,\n 23.264076429332462, 23.6469514538663, 24.033477234264016, 24.42366364919083,\n 24.817520537484558, 25.21505769858089, 25.61628489293138,\n 26.021211842414342, 26.429848230738664, 26.842203703840827,\n 27.258287870275353, 27.678110301598522, 28.10168053274597,\n 28.529008062403893, 28.96010235337422, 29.39497283293396, 29.83362889318845,\n 30.276079891419332, 30.722335150426627, 31.172403958865512,\n 31.62629557157785, 32.08401920991837, 32.54558406207592, 33.010999283389665,\n 33.4802739966603, 33.953417292456834, 34.430438229418264,\n 34.911345834551085, 35.39614910352207, 35.88485700094671, 36.37747846067349,\n 36.87402238606382, 37.37449765026789, 37.87891309649659, 38.38727753828926,\n 38.89959975977785, 39.41588851594697, 39.93615253289054, 40.460400508064545,\n 40.98864111053629, 41.520882981230194, 42.05713473317016,\n 42.597404951718396, 43.141702194811224, 43.6900349931913, 44.24241185063697,\n 44.798841244188324, 45.35933162437017, 45.92389141541209, 46.49252901546552,\n 47.065252796817916, 47.64207110610409, 48.22299226451468,\n 48.808024568002054, 49.3971762874833, 49.9904556690408, 50.587870934119984,\n 51.189430279724725, 51.79514187861014, 52.40501387947288, 53.0190544071392,\n 53.637271562750364, 54.259673423945976, 54.88626804504493,\n 55.517063457223934, 56.15206766869424, 56.79128866487574, 57.43473440856916,\n 58.08241284012621, 58.734331877617365, 59.39049941699807, 60.05092333227251,\n 60.715611475655585, 61.38457167773311, 62.057811747619894, 62.7353394731159,\n 63.417162620860914, 64.10328893648692, 64.79372614476921, 65.48848194977529,\n 66.18756403501224, 66.89098006357258, 67.59873767827808, 68.31084450182222,\n 69.02730813691093, 69.74813616640164, 70.47333615344107, 71.20291564160104,\n 71.93688215501312, 72.67524319850172, 73.41800625771542, 74.16517879925733,\n 74.9167682708136, 75.67278210128072, 76.43322770089146, 77.1981124613393,\n 77.96744375590167, 78.74122893956174, 79.51947534912904, 80.30219030335869,\n 81.08938110306934, 81.88105503125999, 82.67721935322541, 83.4778813166706,\n 84.28304815182372, 85.09272707154808, 85.90692527145302, 86.72564993000343,\n 87.54890820862819, 88.3767072518277, 89.2090541872801, 90.04595612594655,\n 90.88742016217518, 91.73345337380438, 92.58406282226491, 93.43925555268066,\n 94.29903859396902, 95.16341895893969, 96.03240364439274, 96.9059996312159,\n 97.78421388448044, 98.6670533535366, 99.55452497210776,\n ];\n\n /**\n * Sanitizes a small enough angle in radians.\n *\n * @param angle An angle in radians; must not deviate too much\n * from 0.\n * @return A coterminal angle between 0 and 2pi.\n */\n private static sanitizeRadians(angle: number): number {\n return (angle + Math.PI * 8) % (Math.PI * 2);\n }\n\n /**\n * Delinearizes an RGB component, returning a floating-point\n * number.\n *\n * @param rgbComponent 0.0 <= rgb_component <= 100.0, represents\n * linear R/G/B channel\n * @return 0.0 <= output <= 255.0, color channel converted to\n * regular RGB space\n */\n private static trueDelinearized(rgbComponent: number): number {\n const normalized = rgbComponent / 100.0;\n let delinearized = 0.0;\n if (normalized <= 0.0031308) {\n delinearized = normalized * 12.92;\n } else {\n delinearized = 1.055 * Math.pow(normalized, 1.0 / 2.4) - 0.055;\n }\n return delinearized * 255.0;\n }\n\n private static chromaticAdaptation(component: number): number {\n const af = Math.pow(Math.abs(component), 0.42);\n return (mathUtils.signum(component) * 400.0 * af) / (af + 27.13);\n }\n\n /**\n * Returns the hue of a linear RGB color in CAM16.\n *\n * @param linrgb The linear RGB coordinates of a color.\n * @return The hue of the color in CAM16, in radians.\n */\n private static hueOf(linrgb: number[]): number {\n const scaledDiscount = mathUtils.matrixMultiply(\n linrgb,\n HctSolver.SCALED_DISCOUNT_FROM_LINRGB,\n );\n const rA = HctSolver.chromaticAdaptation(scaledDiscount[0]);\n const gA = HctSolver.chromaticAdaptation(scaledDiscount[1]);\n const bA = HctSolver.chromaticAdaptation(scaledDiscount[2]);\n // redness-greenness\n const a = (11.0 * rA + -12.0 * gA + bA) / 11.0;\n // yellowness-blueness\n const b = (rA + gA - 2.0 * bA) / 9.0;\n return Math.atan2(b, a);\n }\n\n private static areInCyclicOrder(a: number, b: number, c: number): boolean {\n const deltaAB = HctSolver.sanitizeRadians(b - a);\n const deltaAC = HctSolver.sanitizeRadians(c - a);\n return deltaAB < deltaAC;\n }\n\n /**\n * Solves the lerp equation.\n *\n * @param source The starting number.\n * @param mid The number in the middle.\n * @param target The ending number.\n * @return A number t such that lerp(source, target, t) = mid.\n */\n private static intercept(\n source: number,\n mid: number,\n target: number,\n ): number {\n return (mid - source) / (target - source);\n }\n\n private static lerpPoint(\n source: number[],\n t: number,\n target: number[],\n ): number[] {\n return [\n source[0] + (target[0] - source[0]) * t,\n source[1] + (target[1] - source[1]) * t,\n source[2] + (target[2] - source[2]) * t,\n ];\n }\n\n /**\n * Intersects a segment with a plane.\n *\n * @param source The coordinates of point A.\n * @param coordinate The R-, G-, or B-coordinate of the plane.\n * @param target The coordinates of point B.\n * @param axis The axis the plane is perpendicular with. (0: R, 1:\n * G, 2: B)\n * @return The intersection point of the segment AB with the plane\n * R=coordinate, G=coordinate, or B=coordinate\n */\n private static setCoordinate(\n source: number[],\n coordinate: number,\n target: number[],\n axis: number,\n ): number[] {\n const t = HctSolver.intercept(source[axis], coordinate, target[axis]);\n return HctSolver.lerpPoint(source, t, target);\n }\n\n private static isBounded(x: number): boolean {\n return 0.0 <= x && x <= 100.0;\n }\n\n /**\n * Returns the nth possible vertex of the polygonal intersection.\n *\n * @param y The Y value of the plane.\n * @param n The zero-based index of the point. 0 <= n <= 11.\n * @return The nth possible vertex of the polygonal intersection\n * of the y plane and the RGB cube, in linear RGB coordinates, if\n * it exists. If this possible vertex lies outside of the cube,\n * [-1.0, -1.0, -1.0] is returned.\n */\n private static nthVertex(y: number, n: number): number[] {\n const kR = HctSolver.Y_FROM_LINRGB[0];\n const kG = HctSolver.Y_FROM_LINRGB[1];\n const kB = HctSolver.Y_FROM_LINRGB[2];\n const coordA = n % 4 <= 1 ? 0.0 : 100.0;\n const coordB = n % 2 === 0 ? 0.0 : 100.0;\n if (n < 4) {\n const g = coordA;\n const b = coordB;\n const r = (y - g * kG - b * kB) / kR;\n if (HctSolver.isBounded(r)) {\n return [r, g, b];\n } else {\n return [-1.0, -1.0, -1.0];\n }\n } else if (n < 8) {\n const b = coordA;\n const r = coordB;\n const g = (y - r * kR - b * kB) / kG;\n if (HctSolver.isBounded(g)) {\n return [r, g, b];\n } else {\n return [-1.0, -1.0, -1.0];\n }\n } else {\n const r = coordA;\n const g = coordB;\n const b = (y - r * kR - g * kG) / kB;\n if (HctSolver.isBounded(b)) {\n return [r, g, b];\n } else {\n return [-1.0, -1.0, -1.0];\n }\n }\n }\n\n /**\n * Finds the segment containing the desired color.\n *\n * @param y The Y value of the color.\n * @param targetHue The hue of the color.\n * @return A list of two sets of linear RGB coordinates, each\n * corresponding to an endpoint of the segment containing the\n * desired color.\n */\n private static bisectToSegment(y: number, targetHue: number): number[][] {\n let left = [-1.0, -1.0, -1.0];\n let right = left;\n let leftHue = 0.0;\n let rightHue = 0.0;\n let initialized = false;\n let uncut = true;\n for (let n = 0; n < 12; n++) {\n const mid = HctSolver.nthVertex(y, n);\n if (mid[0] < 0) {\n continue;\n }\n const midHue = HctSolver.hueOf(mid);\n if (!initialized) {\n left = mid;\n right = mid;\n leftHue = midHue;\n rightHue = midHue;\n initialized = true;\n continue;\n }\n if (uncut || HctSolver.areInCyclicOrder(leftHue, midHue, rightHue)) {\n uncut = false;\n if (HctSolver.areInCyclicOrder(leftHue, targetHue, midHue)) {\n right = mid;\n rightHue = midHue;\n } else {\n left = mid;\n leftHue = midHue;\n }\n }\n }\n return [left, right];\n }\n\n private static midpoint(a: number[], b: number[]): number[] {\n return [(a[0] + b[0]) / 2, (a[1] + b[1]) / 2, (a[2] + b[2]) / 2];\n }\n\n private static criticalPlaneBelow(x: number): number {\n return Math.floor(x - 0.5);\n }\n\n private static criticalPlaneAbove(x: number): number {\n return Math.ceil(x - 0.5);\n }\n\n /**\n * Finds a color with the given Y and hue on the boundary of the\n * cube.\n *\n * @param y The Y value of the color.\n * @param targetHue The hue of the color.\n * @return The desired color, in linear RGB coordinates.\n */\n private static bisectToLimit(y: number, targetHue: number): number[] {\n const segment = HctSolver.bisectToSegment(y, targetHue);\n let left = segment[0];\n let leftHue = HctSolver.hueOf(left);\n let right = segment[1];\n for (let axis = 0; axis < 3; axis++) {\n if (left[axis] !== right[axis]) {\n let lPlane = -1;\n let rPlane = 255;\n if (left[axis] < right[axis]) {\n lPlane = HctSolver.criticalPlaneBelow(\n HctSolver.trueDelinearized(left[axis]),\n );\n rPlane = HctSolver.criticalPlaneAbove(\n HctSolver.trueDelinearized(right[axis]),\n );\n } else {\n lPlane = HctSolver.criticalPlaneAbove(\n HctSolver.trueDelinearized(left[axis]),\n );\n rPlane = HctSolver.criticalPlaneBelow(\n HctSolver.trueDelinearized(right[axis]),\n );\n }\n for (let i = 0; i < 8; i++) {\n if (Math.abs(rPlane - lPlane) <= 1) {\n break;\n } else {\n const mPlane = Math.floor((lPlane + rPlane) / 2.0);\n const midPlaneCoordinate = HctSolver.CRITICAL_PLANES[mPlane];\n const mid = HctSolver.setCoordinate(\n left,\n midPlaneCoordinate,\n right,\n axis,\n );\n const midHue = HctSolver.hueOf(mid);\n if (HctSolver.areInCyclicOrder(leftHue, targetHue, midHue)) {\n right = mid;\n rPlane = mPlane;\n } else {\n left = mid;\n leftHue = midHue;\n lPlane = mPlane;\n }\n }\n }\n }\n }\n return HctSolver.midpoint(left, right);\n }\n\n private static inverseChromaticAdaptation(adapted: number): number {\n const adaptedAbs = Math.abs(adapted);\n const base = Math.max(0, (27.13 * adaptedAbs) / (400.0 - adaptedAbs));\n return mathUtils.signum(adapted) * Math.pow(base, 1.0 / 0.42);\n }\n\n /**\n * Finds a color with the given hue, chroma, and Y.\n *\n * @param hueRadians The desired hue in radians.\n * @param chroma The desired chroma.\n * @param y The desired Y.\n * @return The desired color as a hexadecimal integer, if found; 0\n * otherwise.\n */\n private static findResultByJ(\n hueRadians: number,\n chroma: number,\n y: number,\n ): number {\n // Initial estimate of j.\n let j = Math.sqrt(y) * 11.0;\n // ===========================================================\n // Operations inlined from Cam16 to avoid repeated calculation\n // ===========================================================\n const viewingConditions = ViewingConditions.DEFAULT;\n const tInnerCoeff =\n 1 / Math.pow(1.64 - Math.pow(0.29, viewingConditions.n), 0.73);\n const eHue = 0.25 * (Math.cos(hueRadians + 2.0) + 3.8);\n const p1 =\n eHue * (50000.0 / 13.0) * viewingConditions.nc * viewingConditions.ncb;\n const hSin = Math.sin(hueRadians);\n const hCos = Math.cos(hueRadians);\n for (let iterationRound = 0; iterationRound < 5; iterationRound++) {\n // ===========================================================\n // Operations inlined from Cam16 to avoid repeated calculation\n // ===========================================================\n const jNormalized = j / 100.0;\n const alpha =\n chroma === 0.0 || j === 0.0 ? 0.0 : chroma / Math.sqrt(jNormalized);\n const t = Math.pow(alpha * tInnerCoeff, 1.0 / 0.9);\n const ac =\n viewingConditions.aw *\n Math.pow(jNormalized, 1.0 / viewingConditions.c / viewingConditions.z);\n const p2 = ac / viewingConditions.nbb;\n const gamma =\n (23.0 * (p2 + 0.305) * t) /\n (23.0 * p1 + 11 * t * hCos + 108.0 * t * hSin);\n const a = gamma * hCos;\n const b = gamma * hSin;\n const rA = (460.0 * p2 + 451.0 * a + 288.0 * b) / 1403.0;\n const gA = (460.0 * p2 - 891.0 * a - 261.0 * b) / 1403.0;\n const bA = (460.0 * p2 - 220.0 * a - 6300.0 * b) / 1403.0;\n const rCScaled = HctSolver.inverseChromaticAdaptation(rA);\n const gCScaled = HctSolver.inverseChromaticAdaptation(gA);\n const bCScaled = HctSolver.inverseChromaticAdaptation(bA);\n const linrgb = mathUtils.matrixMultiply(\n [rCScaled, gCScaled, bCScaled],\n HctSolver.LINRGB_FROM_SCALED_DISCOUNT,\n );\n // ===========================================================\n // Operations inlined from Cam16 to avoid repeated calculation\n // ===========================================================\n if (linrgb[0] < 0 || linrgb[1] < 0 || linrgb[2] < 0) {\n return 0;\n }\n const kR = HctSolver.Y_FROM_LINRGB[0];\n const kG = HctSolver.Y_FROM_LINRGB[1];\n const kB = HctSolver.Y_FROM_LINRGB[2];\n const fnj = kR * linrgb[0] + kG * linrgb[1] + kB * linrgb[2];\n if (fnj <= 0) {\n return 0;\n }\n if (iterationRound === 4 || Math.abs(fnj - y) < 0.002) {\n if (linrgb[0] > 100.01 || linrgb[1] > 100.01 || linrgb[2] > 100.01) {\n return 0;\n }\n return argbFromLinrgb(linrgb);\n }\n // Iterates with Newton method,\n // Using 2 * fn(j) / j as the approximation of fn'(j)\n j = j - ((fnj - y) * j) / (2 * fnj);\n }\n return 0;\n }\n\n /**\n * Finds an sRGB color with the given hue, chroma, and L*, if\n * possible.\n *\n * @param hueDegrees The desired hue, in degrees.\n * @param chroma The desired chroma.\n * @param lstar The desired L*.\n * @return A hexadecimal representing the sRGB color. The color\n * has sufficiently close hue, chroma, and L* to the desired\n * values, if possible; otherwise, the hue and L* will be\n * sufficiently close, and chroma will be maximized.\n */\n static solveToInt(hueDegrees: number, chroma: number, lstar: number): number {\n if (chroma < 0.0001 || lstar < 0.0001 || lstar > 99.9999) {\n return argbFromLstar(lstar);\n }\n hueDegrees = mathUtils.sanitizeDegreesDouble(hueDegrees);\n const hueRadians = (hueDegrees / 180) * Math.PI;\n const y = yFromLstar(lstar);\n const exactAnswer = HctSolver.findResultByJ(hueRadians, chroma, y);\n if (exactAnswer !== 0) {\n return exactAnswer;\n }\n const linrgb = HctSolver.bisectToLimit(y, hueRadians);\n return argbFromLinrgb(linrgb);\n }\n\n /**\n * Finds an sRGB color with the given hue, chroma, and L*, if\n * possible.\n *\n * @param hueDegrees The desired hue, in degrees.\n * @param chroma The desired chroma.\n * @param lstar The desired L*.\n * @return An CAM16 object representing the sRGB color. The color\n * has sufficiently close hue, chroma, and L* to the desired\n * values, if possible; otherwise, the hue and L* will be\n * sufficiently close, and chroma will be maximized.\n */\n static solveToCam(hueDegrees: number, chroma: number, lstar: number): Cam16 {\n return Cam16.fromInt(HctSolver.solveToInt(hueDegrees, chroma, lstar));\n }\n}\n"],"mappings":"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AiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAC1E,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,EACxD,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,kBAAkB,EAC3E,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAC1D,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAC1D,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EACzD,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAC1D,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EACzD,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAC3E,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAC3E,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EACzD,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EACzD,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EACzD,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EACzD,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EACzD,kBAAkB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAC3E,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EACxD,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAC1D,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EACzD,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAC3E,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAC1D,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,EAC3E,gBAAgB,EAAE,kBAAkB,EAAE,kBAAkB,EACxD,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAC3E,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAC1E,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,EAC3E,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EACxD,kBAAkB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAC3E,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAC3E,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EACxD,kBAAkB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAC1E,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAC1E,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EACzD,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAC3E,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAC3E,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAC3E,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAC3E,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAC1E,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAC1E,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAC1E,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EACxE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAC1E,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EACzE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAC1E,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EACxE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAC1E,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EACzE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,CACvD","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"hct-solver.js","names":["argbFromLinrgb","argbFromLstar","yFromLstar","mathUtils","Cam16","ViewingConditions","HctSolver","sanitizeRadians","angle","Math","PI","trueDelinearized","rgbComponent","normalized","delinearized","pow","chromaticAdaptation","component","af","abs","signum","hueOf","linrgb","scaledDiscount","matrixMultiply","SCALED_DISCOUNT_FROM_LINRGB","rA","gA","bA","a","b","atan2","areInCyclicOrder","c","deltaAB","deltaAC","intercept","source","mid","target","lerpPoint","t","setCoordinate","coordinate","axis","isBounded","x","nthVertex","y","n","kR","Y_FROM_LINRGB","kG","kB","coordA","coordB","g","r","bisectToSegment","targetHue","left","right","leftHue","rightHue","initialized","uncut","midHue","midpoint","criticalPlaneBelow","floor","criticalPlaneAbove","ceil","bisectToLimit","segment","lPlane","rPlane","i","mPlane","midPlaneCoordinate","CRITICAL_PLANES","inverseChromaticAdaptation","adapted","adaptedAbs","base","max","findResultByJ","hueRadians","chroma","j","sqrt","viewingConditions","DEFAULT","tInnerCoeff","eHue","cos","p1","nc","ncb","hSin","sin","hCos","iterationRound","jNormalized","alpha","ac","aw","z","p2","nbb","gamma","rCScaled","gCScaled","bCScaled","LINRGB_FROM_SCALED_DISCOUNT","fnj","solveToInt","hueDegrees","lstar","sanitizeDegreesDouble","exactAnswer","solveToCam","fromInt","_defineProperty"],"sources":["../../../../src/util/color/hct/hct-solver.ts"],"sourcesContent":["/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// This file is automatically generated. Do not modify it.\r\n\r\nimport { argbFromLinrgb, argbFromLstar, yFromLstar } from '../conversion';\r\nimport * as mathUtils from '../utils/math-utils';\r\nimport { Cam16 } from './cam16';\r\nimport { ViewingConditions } from './viewing-conditions';\r\n\r\n// material_color_utilities is designed to have a consistent API across\r\n// platforms and modular components that can be moved around easily. Using a\r\n// class as a namespace facilitates this.\r\n//\r\n// tslint:disable:class-as-namespace\r\n/**\r\n * A class that solves the HCT equation.\r\n */\r\nexport class HctSolver {\r\n static SCALED_DISCOUNT_FROM_LINRGB = [\r\n [0.001200833568784504, 0.002389694492170889, 0.0002795742885861124],\r\n [0.0005891086651375999, 0.0029785502573438758, 0.0003270666104008398],\r\n [0.00010146692491640572, 0.0005364214359186694, 0.0032979401770712076],\r\n ];\r\n\r\n static LINRGB_FROM_SCALED_DISCOUNT = [\r\n [1373.2198709594231, -1100.4251190754821, -7.278681089101213],\r\n [-271.815969077903, 559.6580465940733, -32.46047482791194],\r\n [1.9622899599665666, -57.173814538844006, 308.7233197812385],\r\n ];\r\n\r\n static Y_FROM_LINRGB = [0.2126, 0.7152, 0.0722];\r\n\r\n static CRITICAL_PLANES = [\r\n 0.015176349177441876, 0.045529047532325624, 0.07588174588720938,\r\n 0.10623444424209313, 0.13658714259697685, 0.16693984095186062,\r\n 0.19729253930674434, 0.2276452376616281, 0.2579979360165119,\r\n 0.28835063437139563, 0.3188300904430532, 0.350925934958123,\r\n 0.3848314933096426, 0.42057480301049466, 0.458183274052838,\r\n 0.4976837250274023, 0.5391024159806381, 0.5824650784040898,\r\n 0.6277969426914107, 0.6751227633498623, 0.7244668422128921,\r\n 0.775853049866786, 0.829304845476233, 0.8848452951698498, 0.942497089126609,\r\n 1.0022825574869039, 1.0642236851973577, 1.1283421258858297,\r\n 1.1946592148522128, 1.2631959812511864, 1.3339731595349034,\r\n 1.407011200216447, 1.4823302800086415, 1.5599503113873272,\r\n 1.6398909516233677, 1.7221716113234105, 1.8068114625156377,\r\n 1.8938294463134073, 1.9832442801866852, 2.075074464868551,\r\n 2.1693382909216234, 2.2660538449872063, 2.36523901573795,\r\n 2.4669114995532007, 2.5710888059345764, 2.6777882626779785,\r\n 2.7870270208169257, 2.898822059350997, 3.0131901897720907,\r\n 3.1301480604002863, 3.2497121605402226, 3.3718988244681087,\r\n 3.4967242352587946, 3.624204428461639, 3.754355295633311, 3.887192587735158,\r\n 4.022731918402185, 4.160988767090289, 4.301978482107941, 4.445716283538092,\r\n 4.592217266055746, 4.741496401646282, 4.893568542229298, 5.048448422192488,\r\n 5.20615066083972, 5.3666897647573375, 5.5300801301023865, 5.696336044816294,\r\n 5.865471690767354, 6.037501145825082, 6.212438385869475, 6.390297286737924,\r\n 6.571091626112461, 6.7548350853498045, 6.941541251256611, 7.131223617812143,\r\n 7.323895587840543, 7.5195704746346665, 7.7182615035334345,\r\n 7.919981813454504, 8.124744458384042, 8.332562408825165, 8.543448553206703,\r\n 8.757415699253682, 8.974476575321063, 9.194643831691977, 9.417930041841839,\r\n 9.644347703669503, 9.873909240696694, 10.106627003236781,\r\n 10.342513269534024, 10.58158024687427, 10.8238400726681, 11.069304815507364,\r\n 11.317986476196008, 11.569896988756009, 11.825048221409341,\r\n 12.083451977536606, 12.345119996613247, 12.610063955123938,\r\n 12.878295467455942, 13.149826086772048, 13.42466730586372,\r\n 13.702830557985108, 13.984327217668513, 14.269168601521828,\r\n 14.55736596900856, 14.848930523210871, 15.143873411576273,\r\n 15.44220572664832, 15.743938506781891, 16.04908273684337, 16.35764934889634,\r\n 16.66964922287304, 16.985093187232053, 17.30399201960269, 17.62635644741625,\r\n 17.95219714852476, 18.281524751807332, 18.614349837764564,\r\n 18.95068293910138, 19.290534541298456, 19.633915083172692,\r\n 19.98083495742689, 20.331304511189067, 20.685334046541502,\r\n 21.042933821039977, 21.404114048223256, 21.76888489811322,\r\n 22.137256497705877, 22.50923893145328, 22.884842241736916,\r\n 23.264076429332462, 23.6469514538663, 24.033477234264016, 24.42366364919083,\r\n 24.817520537484558, 25.21505769858089, 25.61628489293138,\r\n 26.021211842414342, 26.429848230738664, 26.842203703840827,\r\n 27.258287870275353, 27.678110301598522, 28.10168053274597,\r\n 28.529008062403893, 28.96010235337422, 29.39497283293396, 29.83362889318845,\r\n 30.276079891419332, 30.722335150426627, 31.172403958865512,\r\n 31.62629557157785, 32.08401920991837, 32.54558406207592, 33.010999283389665,\r\n 33.4802739966603, 33.953417292456834, 34.430438229418264,\r\n 34.911345834551085, 35.39614910352207, 35.88485700094671, 36.37747846067349,\r\n 36.87402238606382, 37.37449765026789, 37.87891309649659, 38.38727753828926,\r\n 38.89959975977785, 39.41588851594697, 39.93615253289054, 40.460400508064545,\r\n 40.98864111053629, 41.520882981230194, 42.05713473317016,\r\n 42.597404951718396, 43.141702194811224, 43.6900349931913, 44.24241185063697,\r\n 44.798841244188324, 45.35933162437017, 45.92389141541209, 46.49252901546552,\r\n 47.065252796817916, 47.64207110610409, 48.22299226451468,\r\n 48.808024568002054, 49.3971762874833, 49.9904556690408, 50.587870934119984,\r\n 51.189430279724725, 51.79514187861014, 52.40501387947288, 53.0190544071392,\r\n 53.637271562750364, 54.259673423945976, 54.88626804504493,\r\n 55.517063457223934, 56.15206766869424, 56.79128866487574, 57.43473440856916,\r\n 58.08241284012621, 58.734331877617365, 59.39049941699807, 60.05092333227251,\r\n 60.715611475655585, 61.38457167773311, 62.057811747619894, 62.7353394731159,\r\n 63.417162620860914, 64.10328893648692, 64.79372614476921, 65.48848194977529,\r\n 66.18756403501224, 66.89098006357258, 67.59873767827808, 68.31084450182222,\r\n 69.02730813691093, 69.74813616640164, 70.47333615344107, 71.20291564160104,\r\n 71.93688215501312, 72.67524319850172, 73.41800625771542, 74.16517879925733,\r\n 74.9167682708136, 75.67278210128072, 76.43322770089146, 77.1981124613393,\r\n 77.96744375590167, 78.74122893956174, 79.51947534912904, 80.30219030335869,\r\n 81.08938110306934, 81.88105503125999, 82.67721935322541, 83.4778813166706,\r\n 84.28304815182372, 85.09272707154808, 85.90692527145302, 86.72564993000343,\r\n 87.54890820862819, 88.3767072518277, 89.2090541872801, 90.04595612594655,\r\n 90.88742016217518, 91.73345337380438, 92.58406282226491, 93.43925555268066,\r\n 94.29903859396902, 95.16341895893969, 96.03240364439274, 96.9059996312159,\r\n 97.78421388448044, 98.6670533535366, 99.55452497210776,\r\n ];\r\n\r\n /**\r\n * Sanitizes a small enough angle in radians.\r\n *\r\n * @param angle An angle in radians; must not deviate too much\r\n * from 0.\r\n * @return A coterminal angle between 0 and 2pi.\r\n */\r\n private static sanitizeRadians(angle: number): number {\r\n return (angle + Math.PI * 8) % (Math.PI * 2);\r\n }\r\n\r\n /**\r\n * Delinearizes an RGB component, returning a floating-point\r\n * number.\r\n *\r\n * @param rgbComponent 0.0 <= rgb_component <= 100.0, represents\r\n * linear R/G/B channel\r\n * @return 0.0 <= output <= 255.0, color channel converted to\r\n * regular RGB space\r\n */\r\n private static trueDelinearized(rgbComponent: number): number {\r\n const normalized = rgbComponent / 100.0;\r\n let delinearized = 0.0;\r\n if (normalized <= 0.0031308) {\r\n delinearized = normalized * 12.92;\r\n } else {\r\n delinearized = 1.055 * Math.pow(normalized, 1.0 / 2.4) - 0.055;\r\n }\r\n return delinearized * 255.0;\r\n }\r\n\r\n private static chromaticAdaptation(component: number): number {\r\n const af = Math.pow(Math.abs(component), 0.42);\r\n return (mathUtils.signum(component) * 400.0 * af) / (af + 27.13);\r\n }\r\n\r\n /**\r\n * Returns the hue of a linear RGB color in CAM16.\r\n *\r\n * @param linrgb The linear RGB coordinates of a color.\r\n * @return The hue of the color in CAM16, in radians.\r\n */\r\n private static hueOf(linrgb: number[]): number {\r\n const scaledDiscount = mathUtils.matrixMultiply(\r\n linrgb,\r\n HctSolver.SCALED_DISCOUNT_FROM_LINRGB,\r\n );\r\n const rA = HctSolver.chromaticAdaptation(scaledDiscount[0]);\r\n const gA = HctSolver.chromaticAdaptation(scaledDiscount[1]);\r\n const bA = HctSolver.chromaticAdaptation(scaledDiscount[2]);\r\n // redness-greenness\r\n const a = (11.0 * rA + -12.0 * gA + bA) / 11.0;\r\n // yellowness-blueness\r\n const b = (rA + gA - 2.0 * bA) / 9.0;\r\n return Math.atan2(b, a);\r\n }\r\n\r\n private static areInCyclicOrder(a: number, b: number, c: number): boolean {\r\n const deltaAB = HctSolver.sanitizeRadians(b - a);\r\n const deltaAC = HctSolver.sanitizeRadians(c - a);\r\n return deltaAB < deltaAC;\r\n }\r\n\r\n /**\r\n * Solves the lerp equation.\r\n *\r\n * @param source The starting number.\r\n * @param mid The number in the middle.\r\n * @param target The ending number.\r\n * @return A number t such that lerp(source, target, t) = mid.\r\n */\r\n private static intercept(\r\n source: number,\r\n mid: number,\r\n target: number,\r\n ): number {\r\n return (mid - source) / (target - source);\r\n }\r\n\r\n private static lerpPoint(\r\n source: number[],\r\n t: number,\r\n target: number[],\r\n ): number[] {\r\n return [\r\n source[0] + (target[0] - source[0]) * t,\r\n source[1] + (target[1] - source[1]) * t,\r\n source[2] + (target[2] - source[2]) * t,\r\n ];\r\n }\r\n\r\n /**\r\n * Intersects a segment with a plane.\r\n *\r\n * @param source The coordinates of point A.\r\n * @param coordinate The R-, G-, or B-coordinate of the plane.\r\n * @param target The coordinates of point B.\r\n * @param axis The axis the plane is perpendicular with. (0: R, 1:\r\n * G, 2: B)\r\n * @return The intersection point of the segment AB with the plane\r\n * R=coordinate, G=coordinate, or B=coordinate\r\n */\r\n private static setCoordinate(\r\n source: number[],\r\n coordinate: number,\r\n target: number[],\r\n axis: number,\r\n ): number[] {\r\n const t = HctSolver.intercept(source[axis], coordinate, target[axis]);\r\n return HctSolver.lerpPoint(source, t, target);\r\n }\r\n\r\n private static isBounded(x: number): boolean {\r\n return 0.0 <= x && x <= 100.0;\r\n }\r\n\r\n /**\r\n * Returns the nth possible vertex of the polygonal intersection.\r\n *\r\n * @param y The Y value of the plane.\r\n * @param n The zero-based index of the point. 0 <= n <= 11.\r\n * @return The nth possible vertex of the polygonal intersection\r\n * of the y plane and the RGB cube, in linear RGB coordinates, if\r\n * it exists. If this possible vertex lies outside of the cube,\r\n * [-1.0, -1.0, -1.0] is returned.\r\n */\r\n private static nthVertex(y: number, n: number): number[] {\r\n const kR = HctSolver.Y_FROM_LINRGB[0];\r\n const kG = HctSolver.Y_FROM_LINRGB[1];\r\n const kB = HctSolver.Y_FROM_LINRGB[2];\r\n const coordA = n % 4 <= 1 ? 0.0 : 100.0;\r\n const coordB = n % 2 === 0 ? 0.0 : 100.0;\r\n if (n < 4) {\r\n const g = coordA;\r\n const b = coordB;\r\n const r = (y - g * kG - b * kB) / kR;\r\n if (HctSolver.isBounded(r)) {\r\n return [r, g, b];\r\n } else {\r\n return [-1.0, -1.0, -1.0];\r\n }\r\n } else if (n < 8) {\r\n const b = coordA;\r\n const r = coordB;\r\n const g = (y - r * kR - b * kB) / kG;\r\n if (HctSolver.isBounded(g)) {\r\n return [r, g, b];\r\n } else {\r\n return [-1.0, -1.0, -1.0];\r\n }\r\n } else {\r\n const r = coordA;\r\n const g = coordB;\r\n const b = (y - r * kR - g * kG) / kB;\r\n if (HctSolver.isBounded(b)) {\r\n return [r, g, b];\r\n } else {\r\n return [-1.0, -1.0, -1.0];\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Finds the segment containing the desired color.\r\n *\r\n * @param y The Y value of the color.\r\n * @param targetHue The hue of the color.\r\n * @return A list of two sets of linear RGB coordinates, each\r\n * corresponding to an endpoint of the segment containing the\r\n * desired color.\r\n */\r\n private static bisectToSegment(y: number, targetHue: number): number[][] {\r\n let left = [-1.0, -1.0, -1.0];\r\n let right = left;\r\n let leftHue = 0.0;\r\n let rightHue = 0.0;\r\n let initialized = false;\r\n let uncut = true;\r\n for (let n = 0; n < 12; n++) {\r\n const mid = HctSolver.nthVertex(y, n);\r\n if (mid[0] < 0) {\r\n continue;\r\n }\r\n const midHue = HctSolver.hueOf(mid);\r\n if (!initialized) {\r\n left = mid;\r\n right = mid;\r\n leftHue = midHue;\r\n rightHue = midHue;\r\n initialized = true;\r\n continue;\r\n }\r\n if (uncut || HctSolver.areInCyclicOrder(leftHue, midHue, rightHue)) {\r\n uncut = false;\r\n if (HctSolver.areInCyclicOrder(leftHue, targetHue, midHue)) {\r\n right = mid;\r\n rightHue = midHue;\r\n } else {\r\n left = mid;\r\n leftHue = midHue;\r\n }\r\n }\r\n }\r\n return [left, right];\r\n }\r\n\r\n private static midpoint(a: number[], b: number[]): number[] {\r\n return [(a[0] + b[0]) / 2, (a[1] + b[1]) / 2, (a[2] + b[2]) / 2];\r\n }\r\n\r\n private static criticalPlaneBelow(x: number): number {\r\n return Math.floor(x - 0.5);\r\n }\r\n\r\n private static criticalPlaneAbove(x: number): number {\r\n return Math.ceil(x - 0.5);\r\n }\r\n\r\n /**\r\n * Finds a color with the given Y and hue on the boundary of the\r\n * cube.\r\n *\r\n * @param y The Y value of the color.\r\n * @param targetHue The hue of the color.\r\n * @return The desired color, in linear RGB coordinates.\r\n */\r\n private static bisectToLimit(y: number, targetHue: number): number[] {\r\n const segment = HctSolver.bisectToSegment(y, targetHue);\r\n let left = segment[0];\r\n let leftHue = HctSolver.hueOf(left);\r\n let right = segment[1];\r\n for (let axis = 0; axis < 3; axis++) {\r\n if (left[axis] !== right[axis]) {\r\n let lPlane = -1;\r\n let rPlane = 255;\r\n if (left[axis] < right[axis]) {\r\n lPlane = HctSolver.criticalPlaneBelow(\r\n HctSolver.trueDelinearized(left[axis]),\r\n );\r\n rPlane = HctSolver.criticalPlaneAbove(\r\n HctSolver.trueDelinearized(right[axis]),\r\n );\r\n } else {\r\n lPlane = HctSolver.criticalPlaneAbove(\r\n HctSolver.trueDelinearized(left[axis]),\r\n );\r\n rPlane = HctSolver.criticalPlaneBelow(\r\n HctSolver.trueDelinearized(right[axis]),\r\n );\r\n }\r\n for (let i = 0; i < 8; i++) {\r\n if (Math.abs(rPlane - lPlane) <= 1) {\r\n break;\r\n } else {\r\n const mPlane = Math.floor((lPlane + rPlane) / 2.0);\r\n const midPlaneCoordinate = HctSolver.CRITICAL_PLANES[mPlane];\r\n const mid = HctSolver.setCoordinate(\r\n left,\r\n midPlaneCoordinate,\r\n right,\r\n axis,\r\n );\r\n const midHue = HctSolver.hueOf(mid);\r\n if (HctSolver.areInCyclicOrder(leftHue, targetHue, midHue)) {\r\n right = mid;\r\n rPlane = mPlane;\r\n } else {\r\n left = mid;\r\n leftHue = midHue;\r\n lPlane = mPlane;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return HctSolver.midpoint(left, right);\r\n }\r\n\r\n private static inverseChromaticAdaptation(adapted: number): number {\r\n const adaptedAbs = Math.abs(adapted);\r\n const base = Math.max(0, (27.13 * adaptedAbs) / (400.0 - adaptedAbs));\r\n return mathUtils.signum(adapted) * Math.pow(base, 1.0 / 0.42);\r\n }\r\n\r\n /**\r\n * Finds a color with the given hue, chroma, and Y.\r\n *\r\n * @param hueRadians The desired hue in radians.\r\n * @param chroma The desired chroma.\r\n * @param y The desired Y.\r\n * @return The desired color as a hexadecimal integer, if found; 0\r\n * otherwise.\r\n */\r\n private static findResultByJ(\r\n hueRadians: number,\r\n chroma: number,\r\n y: number,\r\n ): number {\r\n // Initial estimate of j.\r\n let j = Math.sqrt(y) * 11.0;\r\n // ===========================================================\r\n // Operations inlined from Cam16 to avoid repeated calculation\r\n // ===========================================================\r\n const viewingConditions = ViewingConditions.DEFAULT;\r\n const tInnerCoeff =\r\n 1 / Math.pow(1.64 - Math.pow(0.29, viewingConditions.n), 0.73);\r\n const eHue = 0.25 * (Math.cos(hueRadians + 2.0) + 3.8);\r\n const p1 =\r\n eHue * (50000.0 / 13.0) * viewingConditions.nc * viewingConditions.ncb;\r\n const hSin = Math.sin(hueRadians);\r\n const hCos = Math.cos(hueRadians);\r\n for (let iterationRound = 0; iterationRound < 5; iterationRound++) {\r\n // ===========================================================\r\n // Operations inlined from Cam16 to avoid repeated calculation\r\n // ===========================================================\r\n const jNormalized = j / 100.0;\r\n const alpha =\r\n chroma === 0.0 || j === 0.0 ? 0.0 : chroma / Math.sqrt(jNormalized);\r\n const t = Math.pow(alpha * tInnerCoeff, 1.0 / 0.9);\r\n const ac =\r\n viewingConditions.aw *\r\n Math.pow(jNormalized, 1.0 / viewingConditions.c / viewingConditions.z);\r\n const p2 = ac / viewingConditions.nbb;\r\n const gamma =\r\n (23.0 * (p2 + 0.305) * t) /\r\n (23.0 * p1 + 11 * t * hCos + 108.0 * t * hSin);\r\n const a = gamma * hCos;\r\n const b = gamma * hSin;\r\n const rA = (460.0 * p2 + 451.0 * a + 288.0 * b) / 1403.0;\r\n const gA = (460.0 * p2 - 891.0 * a - 261.0 * b) / 1403.0;\r\n const bA = (460.0 * p2 - 220.0 * a - 6300.0 * b) / 1403.0;\r\n const rCScaled = HctSolver.inverseChromaticAdaptation(rA);\r\n const gCScaled = HctSolver.inverseChromaticAdaptation(gA);\r\n const bCScaled = HctSolver.inverseChromaticAdaptation(bA);\r\n const linrgb = mathUtils.matrixMultiply(\r\n [rCScaled, gCScaled, bCScaled],\r\n HctSolver.LINRGB_FROM_SCALED_DISCOUNT,\r\n );\r\n // ===========================================================\r\n // Operations inlined from Cam16 to avoid repeated calculation\r\n // ===========================================================\r\n if (linrgb[0] < 0 || linrgb[1] < 0 || linrgb[2] < 0) {\r\n return 0;\r\n }\r\n const kR = HctSolver.Y_FROM_LINRGB[0];\r\n const kG = HctSolver.Y_FROM_LINRGB[1];\r\n const kB = HctSolver.Y_FROM_LINRGB[2];\r\n const fnj = kR * linrgb[0] + kG * linrgb[1] + kB * linrgb[2];\r\n if (fnj <= 0) {\r\n return 0;\r\n }\r\n if (iterationRound === 4 || Math.abs(fnj - y) < 0.002) {\r\n if (linrgb[0] > 100.01 || linrgb[1] > 100.01 || linrgb[2] > 100.01) {\r\n return 0;\r\n }\r\n return argbFromLinrgb(linrgb);\r\n }\r\n // Iterates with Newton method,\r\n // Using 2 * fn(j) / j as the approximation of fn'(j)\r\n j = j - ((fnj - y) * j) / (2 * fnj);\r\n }\r\n return 0;\r\n }\r\n\r\n /**\r\n * Finds an sRGB color with the given hue, chroma, and L*, if\r\n * possible.\r\n *\r\n * @param hueDegrees The desired hue, in degrees.\r\n * @param chroma The desired chroma.\r\n * @param lstar The desired L*.\r\n * @return A hexadecimal representing the sRGB color. The color\r\n * has sufficiently close hue, chroma, and L* to the desired\r\n * values, if possible; otherwise, the hue and L* will be\r\n * sufficiently close, and chroma will be maximized.\r\n */\r\n static solveToInt(hueDegrees: number, chroma: number, lstar: number): number {\r\n if (chroma < 0.0001 || lstar < 0.0001 || lstar > 99.9999) {\r\n return argbFromLstar(lstar);\r\n }\r\n hueDegrees = mathUtils.sanitizeDegreesDouble(hueDegrees);\r\n const hueRadians = (hueDegrees / 180) * Math.PI;\r\n const y = yFromLstar(lstar);\r\n const exactAnswer = HctSolver.findResultByJ(hueRadians, chroma, y);\r\n if (exactAnswer !== 0) {\r\n return exactAnswer;\r\n }\r\n const linrgb = HctSolver.bisectToLimit(y, hueRadians);\r\n return argbFromLinrgb(linrgb);\r\n }\r\n\r\n /**\r\n * Finds an sRGB color with the given hue, chroma, and L*, if\r\n * possible.\r\n *\r\n * @param hueDegrees The desired hue, in degrees.\r\n * @param chroma The desired chroma.\r\n * @param lstar The desired L*.\r\n * @return An CAM16 object representing the sRGB color. The color\r\n * has sufficiently close hue, chroma, and L* to the desired\r\n * values, if possible; otherwise, the hue and L* will be\r\n * sufficiently close, and chroma will be maximized.\r\n */\r\n static solveToCam(hueDegrees: number, chroma: number, lstar: number): Cam16 {\r\n return Cam16.fromInt(HctSolver.solveToInt(hueDegrees, chroma, lstar));\r\n }\r\n}\r\n"],"mappings":"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AiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAC1E,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,EACxD,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,kBAAkB,EAC3E,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAC1D,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAC1D,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EACzD,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAC1D,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EACzD,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAC3E,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAC3E,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EACzD,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EACzD,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EACzD,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EACzD,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EACzD,kBAAkB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAC3E,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EACxD,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAC1D,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EACzD,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAC3E,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAC1D,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,EAC3E,gBAAgB,EAAE,kBAAkB,EAAE,kBAAkB,EACxD,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAC3E,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAC1E,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,EAC3E,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EACxD,kBAAkB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAC3E,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAC3E,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EACxD,kBAAkB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAC1E,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAC1E,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EACzD,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAC3E,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAC3E,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAC3E,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAC3E,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAC1E,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAC1E,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAC1E,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EACxE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAC1E,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EACzE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAC1E,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EACxE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAC1E,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EACzE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,CACvD","ignoreList":[]}
|