diff options
author | Volpeon <git@volpeon.ink> | 2024-06-24 09:14:43 +0200 |
---|---|---|
committer | Volpeon <git@volpeon.ink> | 2024-06-24 09:14:43 +0200 |
commit | 029fb64837173b70b31ac579cb005c2995806c49 (patch) | |
tree | f6244dea821118a39c8e81dc80acc6343ef39971 /src/functions | |
parent | WIP: New color calculations (diff) | |
download | iro-design-029fb64837173b70b31ac579cb005c2995806c49.tar.gz iro-design-029fb64837173b70b31ac579cb005c2995806c49.tar.bz2 iro-design-029fb64837173b70b31ac579cb005c2995806c49.zip |
Update
Diffstat (limited to 'src/functions')
-rw-r--r-- | src/functions/_colors.scss | 35 |
1 files changed, 28 insertions, 7 deletions
diff --git a/src/functions/_colors.scss b/src/functions/_colors.scss index 265c09a..d3c0035 100644 --- a/src/functions/_colors.scss +++ b/src/functions/_colors.scss | |||
@@ -6,6 +6,7 @@ | |||
6 | @use 'sass:map'; | 6 | @use 'sass:map'; |
7 | @use 'sass:math'; | 7 | @use 'sass:math'; |
8 | @use 'sass:meta'; | 8 | @use 'sass:meta'; |
9 | @use '@oddbird/blend/sass/convert' as blend-convert; | ||
9 | @use '@oddbird/blend/sass/utils/pow'; | 10 | @use '@oddbird/blend/sass/utils/pow'; |
10 | 11 | ||
11 | $SA98G: ( | 12 | $SA98G: ( |
@@ -56,18 +57,32 @@ $SA98G: ( | |||
56 | $a_: list.nth($color, 2); | 57 | $a_: list.nth($color, 2); |
57 | $b_: list.nth($color, 3); | 58 | $b_: list.nth($color, 3); |
58 | 59 | ||
59 | $l: $l_ + 0.3963377774 * $a_ + 0.2158037573 * $b-; | 60 | $l: $l_ + 0.3963377774 * $a_ + 0.2158037573 * $b_; |
60 | $m: $l_ - 0.1055613458 * $a_ - 0.0638541728 * $b-; | 61 | $m: $l_ - 0.1055613458 * $a_ - 0.0638541728 * $b_; |
61 | $s: $l_ - 0.0894841775 * $a_ - 1.2914855480 * $b-; | 62 | $s: $l_ - 0.0894841775 * $a_ - 1.2914855480 * $b_; |
62 | 63 | ||
63 | $l: $l * $l * $l; | 64 | $l: $l * $l * $l; |
64 | $m: $m * $m * $m; | 65 | $m: $m * $m * $m; |
65 | $s: $s * $s * $s; | 66 | $s: $s * $s * $s; |
66 | 67 | ||
67 | @return ( | 68 | @return ( |
68 | 4.0767416621 * $l - 3.3077115913 * $m + 0.2309699292 * 4s, | 69 | 4.0767416621 * $l - 3.3077115913 * $m + 0.2309699292 * $s, |
69 | -1.2684380046 * $l + 2.6097574011 * $m - 0.3413193965 * 4s, | 70 | -1.2684380046 * $l + 2.6097574011 * $m - 0.3413193965 * $s, |
70 | -0.0041960863 * $l - 0.7034186147 * $m + 1.7076147010 * 4s, | 71 | -0.0041960863 * $l - 0.7034186147 * $m + 1.7076147010 * $s, |
72 | ); | ||
73 | } | ||
74 | |||
75 | @function oklch($arg) { | ||
76 | $l: math.div(list.nth($arg, 1), 100%); | ||
77 | $c: list.nth($arg, 2); | ||
78 | $h: list.nth($arg, 3); | ||
79 | |||
80 | @return blend-convert.rgbToSass( | ||
81 | blend-convert.gam_sRGB( | ||
82 | Oklab_to_lin_sRGB( | ||
83 | blend-convert.LCH_to_Lab($l $c $h) | ||
84 | ) | ||
85 | ) | ||
71 | ); | 86 | ); |
72 | } | 87 | } |
73 | 88 | ||
@@ -83,6 +98,12 @@ $SA98G: ( | |||
83 | } | 98 | } |
84 | 99 | ||
85 | @function apcaContrast($txtY, $bgY) { | 100 | @function apcaContrast($txtY, $bgY) { |
101 | $icp: 0.0 1.1; | ||
102 | |||
103 | @if math.min($txtY, $bgY) < list.nth($icp, 1) or math.max($txtY, $bgY) > list.nth($icp, 2) { | ||
104 | @return 0; | ||
105 | } | ||
106 | |||
86 | @if $txtY <= map.get($SA98G, blkThrs) { | 107 | @if $txtY <= map.get($SA98G, blkThrs) { |
87 | $txtY: $txtY + math.pow(map.get($SA98G, blkThrs) - $txtY, map.get($SA98G, blkClmp)); | 108 | $txtY: $txtY + math.pow(map.get($SA98G, blkThrs) - $txtY, map.get($SA98G, blkClmp)); |
88 | } | 109 | } |
@@ -110,7 +131,7 @@ $SA98G: ( | |||
110 | } | 131 | } |
111 | } | 132 | } |
112 | 133 | ||
113 | @return outputContrast * 100.0; | 134 | @return $outputContrast * 100.0; |
114 | } | 135 | } |
115 | 136 | ||
116 | @function apcaReverse($contrast, $knownY, $knownType: 'bg') { | 137 | @function apcaReverse($contrast, $knownY, $knownType: 'bg') { |