From: Mischa POSLAWSKY Date: Sun, 1 Nov 2015 03:29:16 +0000 (+0100) Subject: termcol: define palette label in rgb value subroutine X-Git-Tag: v1.9~87 X-Git-Url: http://git.shiar.nl/sheet.git/commitdiff_plain/278de4c46a99f7ebc9fdbf8354283cdef6a31c88 termcol: define palette label in rgb value subroutine Prepare for palette numbering/naming different from 16+bgr offset. --- diff --git a/termcol.plp b/termcol.plp index ead8cb5..04b6e6e 100644 --- a/termcol.plp +++ b/termcol.plp @@ -233,7 +233,7 @@ sub coltable_hsv { my $hmax = 2 * $dim * 3; # each face of the rgb cube my $vmax = $dim - 1; my $smax = $dim - 1; - $rgbval ||= sub { int $_[0] * 255 / $vmax }; + $rgbval ||= sub { join('', @_), map { int $_ * 255 / $vmax } @_ }; $greyramp ||= []; my %greymap; # name => value @@ -243,7 +243,6 @@ sub coltable_hsv { for my $r (0 .. $dim - 1) { for my $g (0 .. $dim - 1) { for my $b (0 .. $dim - 1) { - my $index = $r*$dim*$dim + $g*$dim + $b + $offset; my @rgb = ($r, $g, $b); my $h = Shiar_Sheet::Colour->new(@rgb)->hue * $hmax; @@ -251,14 +250,15 @@ sub coltable_hsv { my $s = abs(min(@rgb) - max(@rgb)); if (!$s) { - $greymap{$index} = $rgbval->($r); + my ($index, $l) = $rgbval->(@rgb); + $greymap{$index} = $l; next; } $v = $vmax - $v; $s = $smax - $s - $v; - $colmap[$s][$v][$h] = [$index, map { $rgbval->($_) } @rgb]; + $colmap[$s][$v][$h] = [ $rgbval->(@rgb) ]; } } } @@ -289,7 +289,10 @@ sub coltable_hsv { print "

88-colour space

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

256-colour space

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