X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/d7efdac99433a38f91de80792fc037351798b267..0f1f7a00062360f4b373f027a2a3fa8d43cacd06:/termcol.plp diff --git a/termcol.plp b/termcol.plp index 9411ba4..c58670c 100644 --- a/termcol.plp +++ b/termcol.plp @@ -55,55 +55,49 @@ sub colcell { 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}; +push @termlist, qw( c64 msx2 mac2 risc arnegame cpc ) if exists $get{v}; +push @termlist, qw( ansi88 ); +push @termlist, qw( ansi256 ) if $ENV{PATH_INFO} =~ /256/; + for my $term (@termlist) { - my ($name, @index) = @{ $palettes->{$term} }; - my $caption = $name // $term; - - print '', "\n"; - printf "\n", $caption; - for my $num (0 .. $#index) { - my ($rgb, $name) = split /:/, $index[$num], 3; - $name ||= $num; - $name = [ $name, ['#333'] ] if $term eq 'xkcd'; - print '', colcell($name, $rgb); + my $info = $palettes->{$term}; + ref $info eq 'HASH' or next; + my $caption = $info->{name} // $term; + $caption = sprintf('<%s %s>%s', + $info->{href} ? 'a' : 'span', + join(' ', + map { sprintf '%s="%s"', $_, $info->{$_} } + grep { defined $info->{$_} } + qw( href title ) + ), + $caption, + ) if $info->{href} or $info->{title}; + + if (my $mapinfo = $info->{rgbmap}) { + print '
%s
'."\n"; + printf "\n", $caption; + print coltable_hsv(@{$mapinfo}); + print "
%s
\n\n"; } - print "\n\n"; -} -if (exists $get{v}) { - print "\n"; - print "\n"; - print coltable_hsv(3, sub { - $_[2] + 3 * ($_[0] + 3 * $_[1]), - map { $_ && $_ * 127 + 1 } @_ - }); - print "
Amstrad CPC
\n\n"; -} -:> + if (my $colours = $info->{list}) { + if (my $reorder = $info->{ansiorder} and $get{v}) { + $colours = [ map { $colours->[$_] =~ s/:|$/:$_/r } @{$reorder} ]; + } -
+ print '', "\n"; + printf "\n", $caption; + for my $num (0 .. $#{$colours}) { + my ($rgb, $name) = split /:/, $colours->[$num], 3; + $name ||= $num; + $name = [ $name, ['#333'] ] if $term eq 'xkcd'; + print '', colcell($name, $rgb); + } + print "
%s
\n\n"; + } +} -
-<: sub coltable_hsv { my ($dim, $rgbval, $greyramp) = @_; @@ -162,31 +156,6 @@ sub coltable_hsv { return $out; } -{ - print "

88-colour space

\n"; - print "\n"; - print coltable_hsv(4, - sub { - $_[2] + 4 * ($_[1] + 4 * $_[0]) + 16, - map { (0, 139, 205, 255)[$_] } @_ - }, - [map { ($_ + 2 + ($_>0)) * 255/11 } 0 .. 7], - ); - print "
\n"; -} - -if ($ENV{PATH_INFO} =~ /256/) { - print "

256-colour space

\n"; - print "\n"; - print coltable_hsv(6, - sub { - $_[2] + 6 * ($_[1] + 6 * $_[0]) + 16, - map { $_ && $_*40 + 55 } @_ - }, - [ map { $_ * 10 + 8 } 0 .. 23 ], - ); - print "
\n"; -} :>