X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/cf4725793daaff890b295b5269d224dfd33b52c0..ebcb46b18968910f150d7c54de8e472dffd923c7:/termcol.plp diff --git a/termcol.plp b/termcol.plp index 3f8befc..26a5c70 100644 --- a/termcol.plp +++ b/termcol.plp @@ -1,14 +1,15 @@ <(common.inc.plp)><: Html({ - title => 'terminal colour cheat sheet', - version => '1.0', - description => [ + title => ($Request ? 'terminal colour' : 'colour palettes') . ' cheat sheet', + version => '1.1', + description => [!$Request ? "Comparison of various colour palettes." : ( "Index of all terminal/console colour codes,", "with an example result of various environments.", - ], + )], keywords => [qw' - color code terminal console escape table xterm rxvt + color colour code terminal console escape table xterm rxvt + ansi vt100 8bit 4bit cga ega vga rgb hsv game emulator display '], data => ['termcol.inc.pl'], stylesheet => [qw'light dark'], @@ -18,32 +19,33 @@ my @draw = map { [$_, s/\W+\z//] } grep { $_ } split m(/), $get{img} // exists $get{img} && 'indi.png'; my @termlist; -push @termlist, split /\W+/, $ENV{PATH_INFO} || 'default'; +push @termlist, split /\W+/, $Request || 'default'; -:> -

Terminal colours

+say "

$_

\n" for $Request ? 'Colour palettes' : 'Terminal colours'; -

-ANSI (VT100, ISO-6429) 16-colour text palette -as implemented by various systems and programs. -<: -print - "@termlist" ne 'default' ? 'Additional palettes are included as specified.' : - 'Also see 8-bit legacy hardware palettes.'; +say '

'; +if ("@termlist" eq 'default') { + say 'ANSI (VT100, ISO-6429) 16-colour text palette'; + say 'as implemented by various systems and programs.'; + say 'Also see 8-bit legacy hardware palettes.'; +} +elsif ("@termlist" eq 'legacy') { + say 'Colour palettes of various 8-bit legacy systems and retro games.'; + say 'Also see ANSI console palettes.'; +} +else { + say 'Comparison of requested colour palettes.'; +} :> -

<: -use 5.010; -use Shiar_Sheet::Colour '1.04'; +use Shiar_Sheet::Colour 1.04; use List::Util qw( min max ); use POSIX qw( ceil ); my $palettes = do 'termcol.inc.pl'; die "Cannot open palette data: $_\n" for $@ || $! || (); -my $more = do 'termcol-xcolor.inc.pl'; -$palettes = {%$palettes, %$more}; sub colcell { my $name = shift // return "\n"; @@ -104,9 +106,15 @@ sub coltable { if (ref $info eq 'ARRAY') { coltable($_) for @{$info}; + return; + } + + if (ref $info eq 'CODE') { + coltable($_) for $info->($palettes); + return; } - ref $info eq 'HASH' or next; + ref $info eq 'HASH' or return; my $caption = $info->{name} // $term; $caption = sprintf('<%s %s>%s', @@ -120,16 +128,20 @@ sub coltable { ) if $info->{href} or $info->{title}; if (my $mapinfo = $info->{rgbmap}) { - print ''."\n"; - printf "\n", $caption; + say '
%s
'; + say sprintf '', $caption; print coltable_hsv(@{$mapinfo}); - print "
%s
\n\n"; + say "\n"; } if (my $table = $info->{table}) { - print ''."\n"; - printf "\n", $caption; + say '
%s
'; + say sprintf '', $caption; for my $row (@$table) { + if (!$row) { + say ''; + next; + } print ''; print colcell(ref $_ ? @$_ : $_ ? reverse split /:/ : undef) for @$row; } @@ -143,7 +155,7 @@ sub coltable { print "
%s
", img_egapal(\@imgpal, @{$_}); } } - print "
\n\n"; + say "\n"; } if (my $palette = $info->{list}) { @@ -155,8 +167,8 @@ sub coltable { my $rows = 8; my $columns = ceil(@{$palette} / $rows); - print '', "\n"; - printf "\n", $caption; + say '
%s
'; + say sprintf '', $caption; for my $row (0 .. $rows - 1) { print ''; for my $col (0 .. $columns - 1) { @@ -175,7 +187,7 @@ sub coltable { ); print "
%s
", img_egapal($imgpal, @{$_}); } - print "
\n\n"; + say "\n"; } }