summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2010-11-23 23:08:26 +0000
committerdakkar <dakkar@thenautilus.net>2010-11-23 23:08:26 +0000
commit242ab2d212b23121ba99f0d5b75eb7b3d25656c3 (patch)
tree6556756d46723e3486a21d3ee647940060e1a53c
parentmore colours! (diff)
downloadqr-builder-242ab2d212b23121ba99f0d5b75eb7b3d25656c3.tar.gz
qr-builder-242ab2d212b23121ba99f0d5b75eb7b3d25656c3.tar.bz2
qr-builder-242ab2d212b23121ba99f0d5b75eb7b3d25656c3.zip
avoid colour runs
-rw-r--r--lib/GridFiller.pm15
1 files changed, 12 insertions, 3 deletions
diff --git a/lib/GridFiller.pm b/lib/GridFiller.pm
index 4ab25ac..38bf7f6 100644
--- a/lib/GridFiller.pm
+++ b/lib/GridFiller.pm
@@ -217,9 +217,18 @@ sub _build_result {
sub _find_colour_for {
my ($self,$x,$y,$dir) = @_;
- return $colourmap{$self->grid->[$y][$x]}->{$dir}->{
- ($dir == $HORIZONTAL) ? ($y % 2) : ($x % 2)
- };
+ my $parity = ($dir == $HORIZONTAL) ? ($y % 2) : ($x % 2);
+
+ my $chosen = $colourmap{$self->grid->[$y][$x]}->{$dir}->{$parity};
+
+ # avoid colour runs
+ if ( ( $x>0 && $dir == $HORIZONTAL && $self->result->[$y][$x-1][0] == $chosen )
+ or
+ ( $y>0 && $dir == $VERTICAL && $self->result->[$y-1][$x][0] == $chosen )
+ ) {
+ $chosen = $colourmap{$self->grid->[$y][$x]}->{$dir}->{1-$parity};
+ }
+ return $chosen;
}
}