+ my $out = sprintf('<td title="%s" style="%s">%s',
+ join(',', map { int } @$col),
+ "background:$css; color:$inverse; padding:0 1ex",
+ $name,
+ );
+ $out .= sprintf '<td style="%s"><code>%s</code>', "background:$_; color:$css", $minhex
+ for @$sample;
+ return "$out\n";
+}
+
+if ($get{v}) {
+ my %reorder = (
+ arnegame => [ 0,5,9,12 , 3,6,10,13,1 , 4,7,8,11,14,15,2 ],
+ arnegame => [ 0,3,10,6,12,9,13,1 , 5,7,11,8,14,4,15,2 ],
+ c64 => [ 0,2,5,9,6,4,3,15 , 11,10,13,7,14,8,12,1 ],
+ msx2 => [ 0,6,2,10,4,13,7,14 , 1,8,3,11,5,9,12,15 ],
+ risc => [ 7,11,13,14,8,12,15,1, 6,5,10,9,4,3,2,0],
+ mac2 => [ 15,3,9,11,6,5,7,12 , 14,2,8,1,13,4,10,0 ],
+ );
+ $reorder{$_} = $reorder{msx2} for qw( msx1 arnejmp );
+ while (my ($name, $order) = each %reorder) {
+ for my $pal ( $palettes->{$name}) {
+ $pal = [ map { $pal->[$_ + 1] =~ s/:|$/:$_/r } -1, @{$order} ];
+ }
+ }
+}
+
+my @termlist = qw( cga xterm tango app html xkcd );
+push @termlist, qw( c64 msx2 mac2 risc arnegame ) if exists $get{v};
+for my $term (@termlist) {
+ my ($name, @index) = @{ $palettes->{$term} };
+ my $caption = $name // $term;
+
+ print '<table>', "\n";
+ printf "<caption>%s</caption>\n", $caption;
+ for my $num (0 .. $#index) {
+ my ($rgb, $name) = split /:/, $index[$num], 3;
+ $name ||= $num;
+ $name = [ $name, ['#333'] ] if $term eq 'xkcd';
+ print '<tr>', colcell($name, $rgb);
+ }
+ print "</table>\n\n";
+}
+
+if (exists $get{v}) {
+ print "<table class=mapped>\n";
+ print "<caption>Amstrad CPC</caption>\n";
+ print coltable_hsv(3, sub {
+ $_[2] + 3 * ($_[0] + 3 * $_[1]),
+ map { $_ && $_ * 127 + 1 } @_
+ });
+ print "</table>\n\n";
+}
+:></div>
+
+<hr>