From 33eab21aedb69309006789d84741b33a9ef8f7cf Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Sat, 29 Oct 2011 20:52:45 +0200 Subject: Proper destination shortening, add ?line= and ?platform= (the latter sucks) --- cgi/index.pl | 38 ++++++++++++++++++++++++++++++++++++-- lib/App/VRR/Fakedisplay.pm | 5 +++-- share/font.png | Bin 627 -> 636 bytes 3 files changed, 39 insertions(+), 4 deletions(-) diff --git a/cgi/index.pl b/cgi/index.pl index fdf900b..1f3d61a 100644 --- a/cgi/index.pl +++ b/cgi/index.pl @@ -51,6 +51,25 @@ sub handle_request { ); } +sub shorten_destination { + my ($dest, $city) = @_; + + $dest =~ s{ ^ $city \s }{}x; + + if (length($dest) > 20) { + $dest =~ s{^Dortmund}{DO} or + $dest =~ s{^Duisburg}{DU} or + $dest =~ s{^Düsseldorf}{D} or + $dest =~ s{^Essen}{E} or + $dest =~ s{^Gelsenkirchen}{GE} or + $dest =~ s{^Mülheim}{MH}; + } + + $dest = substr($dest, 0, 20); + + return $dest; +} + sub render_image { my $self = shift; my $city = $self->stash('city'); @@ -62,11 +81,21 @@ sub render_image { my $width = $self->param('width') || 180; my $height = $self->param('height') || 50; - $self->res->headers->content_type('image/png'); + my (@grep_line, @grep_platform); + my ($results, $errstr) = get_results_for($city, $stop); my $png = App::VRR::Fakedisplay->new(width => 180, height => 50, color => [split(qr{,}, $color)]); + + if ($self->param('line')) { + @grep_line = split(qr{,}, $self->param('line')); + } + if ($self->param('platform')) { + @grep_platform = split(qr{,}, $self->param('platform')); + } + + $self->res->headers->content_type('image/png'); for my $d (@{$results}) { my $line = $d->line; @@ -78,6 +107,11 @@ sub render_image { my $dt_dep = DateTime::Format::DateParse->parse_datetime($time, 'floating'); my $dt; + if ((@grep_line and not ($line ~~ \@grep_line)) or + (@grep_platform and not ($platform ~~ \@grep_platform))) { + next; + } + if ($time =~ m{ ^ \d\d? : \d\d $ }x) { $dt = DateTime->new( year => $dt_now->year, @@ -111,7 +145,7 @@ sub render_image { last; } - $destination =~ s{ $city \s }{}ix; + $destination = shorten_destination($destination, $city); $png->draw_at(0, $line); $png->draw_at(25, $destination); diff --git a/lib/App/VRR/Fakedisplay.pm b/lib/App/VRR/Fakedisplay.pm index b380382..2546248 100644 --- a/lib/App/VRR/Fakedisplay.pm +++ b/lib/App/VRR/Fakedisplay.pm @@ -53,12 +53,13 @@ sub locate_char { when (q{:}) { $y = 30; $x = 0 } when (q{-}) { $y = 30; $x = 10 } when (q{.}) { $y = 30; $x = 20 } - when (q{,}) { $y = 30, $x = 30 } + when (q{,}) { $y = 30; $x = 30 } + when (q{/}) { $y = 30; $x = 40 } } given ($char) { when (/[WwMm]/) { $w = 8 } - when (/[BDErt ]/) { $w = 5 } + when (/[BDEFrt ]/) { $w = 5 } when (/[il1:]/) { $w = 4 } when (/[.,]/) { $w = 3 } } diff --git a/share/font.png b/share/font.png index fee6637..893b2e4 100644 Binary files a/share/font.png and b/share/font.png differ -- cgit v1.2.3