]> gitweb.factorcode.org Git - factor.git/blob - extra/colors/contrast/contrast.factor
colors.contrast: implement WCAG color contrast ratio
[factor.git] / extra / colors / contrast / contrast.factor
1 ! Copyright (C) 2022 John Benediktsson
2 ! See http://factorcode.org/license.txt for BSD license
3 USING: colors kernel math math.functions ;
4 IN: colors.contrast
5
6 <PRIVATE
7
8 : adjust-color ( u -- v )
9     dup 0.03928 <= [ 12.92 / ] [ 0.055 + 1.055 / 2.4 ^ ] if ;
10
11 PRIVATE>
12
13 : relative-luminance ( color -- n )
14     >rgba-components drop [ adjust-color ] tri@
15     [ 0.2126 * ] [ 0.7152 * ] [ 0.0722 * ] tri* + + ;
16
17 : contrast-ratio ( color1 color2 -- n )
18     [ relative-luminance ] bi@
19     2dup < [ swap ] when [ 0.05 + ] bi@ / ;
20
21 : passes-AA? ( contrast large? -- ? )
22     3.0 4.5 ? >= ;
23
24 : passes-AAA? ( contrast large? -- ? )
25     4.5 7.0 ? >= ;