git.shiar.nl
/
sheet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
termcol: use rgb index instead of value for hsv calculation
[sheet.git]
/
termcol.plp
diff --git
a/termcol.plp
b/termcol.plp
index a93069853979c9c22a12e91969f72d2802cc78c2..fd2bc9bf0107d36fd2f5c3ff21ef6c3a967c39b3 100644
(file)
--- a/
termcol.plp
+++ b/
termcol.plp
@@
-243,7
+243,7
@@
print coltable_hsv(4,
sub coltable_hsv {
my ($dim, $rgbval, $greyramp) = @_;
sub coltable_hsv {
my ($dim, $rgbval, $greyramp) = @_;
- my $hmax =
($dim + $dim - 1) * 2 + ($dim - 2) * 2 + 3;
+ my $hmax =
2 * $dim * 3; # each face of the rgb cube
my $vmax = $dim - 1;
my $smax = $dim - 1;
my $vmax = $dim - 1;
my $smax = $dim - 1;
@@
-255,21
+255,21
@@
sub coltable_hsv {
for my $g (0 .. $dim - 1) {
for my $b (0 .. $dim - 1) {
my $index = $r*$dim*$dim + $g*$dim + $b + $offset;
for my $g (0 .. $dim - 1) {
for my $b (0 .. $dim - 1) {
my $index = $r*$dim*$dim + $g*$dim + $b + $offset;
- my @rgb =
map { $rgbval->($_) } $r, $g, $b
;
+ my @rgb =
($r, $g, $b)
;
my $h = Shiar_Sheet::Colour->new(@rgb)->hue * $hmax;
my $h = Shiar_Sheet::Colour->new(@rgb)->hue * $hmax;
- my $v =
int(max(@rgb) / 255 * $vmax
);
- my $s = abs(min(@rgb) - max(@rgb))
/ 255 * $smax
;
+ my $v =
max(@rgb
);
+ my $s = abs(min(@rgb) - max(@rgb));
if (!$s) {
if (!$s) {
- $greymap{$index} = $rgb
[0]
;
+ $greymap{$index} = $rgb
val->($r)
;
next;
}
$v = $vmax - $v;
$s = $smax - $s - $v;
next;
}
$v = $vmax - $v;
$s = $smax - $s - $v;
- $colmap[$s][$v][$h] = [$index, @rgb];
+ $colmap[$s][$v][$h] = [$index,
map { $rgbval->($_) }
@rgb];
}
}
}
}
}
}