termcol: divide list rows over columns with 8 rows each
authorMischa POSLAWSKY <perl@shiar.org>
Fri, 6 Nov 2015 19:21:12 +0000 (20:21 +0100)
committerMischa POSLAWSKY <perl@shiar.org>
Tue, 5 Jan 2016 00:05:07 +0000 (01:05 +0100)
Put dark and light colours of cga next to each other for better comparison.
Still more space efficient for others.

termcol.plp

index 51efa0a233223940a92794089e4591df3aac1a72..8d707ecdf700bf727ee3c9f27630904a3310c9f1 100644 (file)
@@ -48,6 +48,7 @@ print
 use 5.010;
 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 $@ || $! || ();
@@ -131,17 +132,24 @@ for my $term (@termlist) {
                        $colours = [ map { $colours->[$_] =~ s/:|$/:$_/r } @{$reorder} ];
                }
 
+               my $rows = 8;
+               my $columns = ceil(@{$colours} / $rows);
+
                print '<table class=color>', "\n";
                printf "<caption>%s</caption>\n", $caption;
-               for my $num (0 .. $#{$colours}) {
-                       my ($rgb, $name) = split /:/, $colours->[$num], 3;
-                       $name //= $num;
-                       $name = [ $name, [] ] if $term =~ /^msx/ and !$num;
-                       $name = [ $name, ['#333'] ] if $term eq 'xkcd';
-                       print '<tr>', colcell($name, $rgb);
+               for my $row (0 .. $rows - 1) {
+                       print '<tr>';
+                       for my $col (0 .. $columns - 1) {
+                               my $num = $row + $col * $rows;
+                               my ($rgb, $name) = split /:/, $colours->[$num], 3;
+                               $name //= $rgb && $num;
+                               $name = [ $name, [] ] if $term =~ /^msx/ and !$num;
+                               $name = [ $name, ['#333'] ] if $term eq 'xkcd';
+                               print colcell($name, $rgb);
+                       }
                }
 
-               print '<tr><td>', img_egapal(\@{$colours}, @{$_}) for @draw;
+               print "<tr><td colspan=$columns>", img_egapal(\@{$colours}, @{$_}) for @draw;
                print "</table>\n\n";
        }
 }