);
}
+sub disprgb {
+ my ($index) = @_;
+ my $circle = '<circle cx="%s" cy="%s" r="8" fill="#%X%X%X"/>';
+ return sprintf(
+ '<svg width="16" height="16" viewBox="0 0 22 22">%s</svg>',
+ join '',
+ sprintf($circle, 10, 10, [0, 8, 15]->[$index % 3], 0, 0),
+ sprintf($circle, 11, 12, 0, [0, 8, 15]->[$index / 3 % 3], 0),
+ sprintf($circle, 12, 10, 0, 0, [0, 8, 15]->[$index / 9]),
+ );
+}
+
(
uppercase => {
list => [qw{ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z }],
'', 1, 3 # start/end
],
},
+rgbmap => {
+ title => 'RGBmap',
+ style => [
+ 'svg { isolation: isolate }',
+ 'svg circle { mix-blend-mode: screen }',
+ ],
+ list => [ map { disprgb($_) } 0 .. 3*3*3 ],
+},
dni => {
title => "D'ni",
list => [