4 use Shiar_Sheet::Colour 1.05;
11 for my $path (@ARGV) {
12 open my $theme, '<', $path or do {
13 warn "could not open $path: $!\n";
16 (my $name = $path) =~ s{.*/}{}; # basename
19 while (readline $theme) {
21 (?: (foreground | background) | color(\d+) ) \h* : \h*
22 (?: \#(\S+) | rgb:(\S+) )
24 my ($name, $idx, $val) = ($1, $2, uc $+);
25 $name or $idx < 16 or next;
26 $val =~ s/[^0-9A-F]//g;
27 ($name ? $pal{$name} : $pal[$idx]) = $val;
33 grep { ($_->hsv)[1] > 32 } # ignore unsaturated
34 map { Shiar_Sheet::Colour->new($_) }
38 $huesum += abs($lasthue - $hue) > .02 if defined $lasthue;
41 $huesum > 3 or next; # require number of significant hue changes
42 #TODO tweak to include good-pants, exclude cheesecake-*
44 if ($seen{"@pal"}++) {
45 warn "ignore duplicate palette $name\n";
50 say qq(\ttitle => '$name',);
51 say qq(\tparent => 'cga',);
52 say qq(\tlist => [qw(@pal)],);
53 say qq(\t$_ => '$pal{$_}',) for keys %pal;
58 say 'xcolor => [', join(', ', map {"'$_'"} @names), '],';