diff options
author | dakkar <dakkar@thenautilus.net> | 2010-11-23 23:08:26 +0000 |
---|---|---|
committer | dakkar <dakkar@thenautilus.net> | 2010-11-23 23:08:26 +0000 |
commit | 242ab2d212b23121ba99f0d5b75eb7b3d25656c3 (patch) | |
tree | 6556756d46723e3486a21d3ee647940060e1a53c /lib/GridFiller.pm | |
parent | more colours! (diff) | |
download | qr-builder-242ab2d212b23121ba99f0d5b75eb7b3d25656c3.tar.gz qr-builder-242ab2d212b23121ba99f0d5b75eb7b3d25656c3.tar.bz2 qr-builder-242ab2d212b23121ba99f0d5b75eb7b3d25656c3.zip |
avoid colour runs
Diffstat (limited to 'lib/GridFiller.pm')
-rw-r--r-- | lib/GridFiller.pm | 15 |
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; } } |