From 9b6efb5f25ff032a46a2f6bc9b4f3501c9d7b47c Mon Sep 17 00:00:00 2001 From: Shiar Date: Wed, 6 Feb 2008 22:39:30 +0100 Subject: [PATCH] simplify paths produced by graphplay Only keep first and last entries for identical values. In other words, horizontal lines will not have each pixel specified, but only the two corners. This already results in significantly smaller files (test case went from 1.8MB to 1.5MB, and to just 130kB for unit graphs!). The same thing should be done for sloped lines, but this is not as obviously simple. --- graphplay | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/graphplay b/graphplay index d6baebf..9956168 100755 --- a/graphplay +++ b/graphplay @@ -54,6 +54,22 @@ for my $input (@ARGV) { } } + for (0 .. 2) { + my $line = $lines[$_][$player]; + my $start; + my $lasty; + for (my $i = 1; $i <= $#$line; $i++) { + defined $line->[$i] or next; + if ($line->[$i][1] == $line->[$i - 1][1]) { + $start = $i unless defined $start; + } elsif (defined $start) { + delete @$line[$start .. $i-2]; + undef $start; + } + } + delete @$line[$start .. $#$line-2] if defined $start; # or -1 + } + $player++; } -- 2.30.0