Diff for /gobook.perl between versions 3.4 and 3.0

version 3.4, 2017/07/15 00:04:02 version 3.0, 2013/12/31 03:47:23
Line 1 Line 1
 #! /usr/bin/perl -w  #! /usr/bin/perl -w
 # $Id$  
 use XML::Simple;  use XML::Simple;
 use strict;  use strict;
 use PostScript::Simple;  use PostScript::Simple;
 use Text::Wrap;  use Text::Wrap;
   
 $Text::Wrap::columns = 30;  $Text::Wrap::columns = 30;
 #my $strips;  my $strips;
   
 #my $xml = "OmLand.xml";  my $xml = "OmLand.xml";
 #if ( defined $xml ){  if ( defined $xml ){
 #    $strips = XMLin($xml, KeyAttr => {strip => 'id'});      $strips = XMLin($xml, KeyAttr => {strip => 'id'});
 #}  }
   
 my $strips = XMLin('OmLand.gpx');  
   
 # create a new PostScript object;  
   
 my $p = new PostScript::Simple(papersize => "A5",   # create a new PostScript object
                                   colour => 1,  my $p = new PostScript::Simple(papersize => "A5",
                                      eps => 0,                            colour => 1,
                                    units => "mm");                            eps => 0,
                             units => "mm",);
   
 # co-ords are horizontal, vertical. from bottom left corner. 148 x 210  # co-ords are horizontal, vertical. from bottom left corner. 148 x 210
   
Line 57  $p->setcolour(60,28,0); Line 53  $p->setcolour(60,28,0);
 $p->text(35,175, "Land-Out Guide");  $p->text(35,175, "Land-Out Guide");
 $p->setfont("Helvetica", 17);  $p->setfont("Helvetica", 17);
 $p->setcolour("white");  $p->setcolour("white");
 $p->text(12,52, "5th Edition 2017");  $p->text(12,52, "3rd Edition 2013");
   
 $p->newpage;  $p->newpage;
 # Contents  # Contents
Line 100  $p->text($t1,$v, "Text by Phil Plane and Line 96  $p->text($t1,$v, "Text by Phil Plane and
 $v -= $ls;  $v -= $ls;
 $p->text($t1,$v, "Copyright GlideOmarama.com 2013.");  $p->text($t1,$v, "Copyright GlideOmarama.com 2013.");
 $v -= $ls;  $v -= $ls;
 $p->text($t1,$v, "First Edition published November 2007.");  $p->text($t1,$v, "First Edition published November 2007. ");
 $v -= $ls;  $v -= $ls;
 $p->text($t1,$v, "Fifth Edition published February 2017.");  $p->text($t1,$v, "Second Edition published November 2008. ");
   $v -= $ls;
   $p->text($t1,$v, "Third Edition published November 2013. ");
 $p->text(70,5, "(" . $pn++ . ")");  $p->text(70,5, "(" . $pn++ . ")");
   
 my $welcome = q{Produced for Omarama based glider pilots to assist safe emergency landings and satisfactory retrieves, this Guide and the associated South Island Gliding Maps (SIGMap) have been nearly 4 years in the making.  Special thanks to Phil Plane, Chris Streat, Chris Rudge, Malcolm Walls and posthumously to Richard Halstead who started it all.  my $welcome = q{Produced for Omarama based glider pilots to assist safe emergency landings and satisfactory retrieves, this Guide and the associated South Island Gliding Maps (SIGMap) have been nearly 4 years in the making.  Special thanks to Phil Plane, Chris Streat, Chris Rudge, Malcolm Walls and posthumously to Richard Halstead who started it all.
Line 446  $p->text(70,5, "(" . $pn++ . ")"); Line 444  $p->text(70,5, "(" . $pn++ . ")");
   
 # Start the strip pages with pictures:  # Start the strip pages with pictures:
   
 foreach my $stripnum ( sort keys %{$strips->{'wpt'}} ){  foreach my $stripnum ( sort keys %{$strips->{strip}} ){
  if ( $strips->{'wpt'}->{$stripnum}->{'extensions'}->{gobook} eq "yes" ){   if ( $strips->{strip}->{$stripnum}->{gobook} eq "yes" ){
  $strips{$strips->{'wpt'}->{$stripnum}->{'desc'}} = $stripnum;   $strips{$strips->{strip}->{$stripnum}->{name}} = $stripnum;
   
  # create a new page for the pic and data   # create a new page for the pic and data
  $p->newpage;   $p->newpage;
  $p->setcolour("blue");   $p->setcolour("blue");
  $p->setfont("Helvetica", 20);   $p->setfont("Helvetica", 20);
  $p->text($t1,195, $strips->{'wpt'}->{$stripnum}->{'desc'});   $p->text($t1,195, $strips->{strip}->{$stripnum}->{name});
  $p->text($t1+115,195, $stripnum);   $p->text($t1+115,195, $stripnum);
  $p->setcolour("black");   $p->setcolour("black");
  $p->setfont("Helvetica", 14);   $p->setfont("Helvetica", 14);
  if ( defined $strips->{'wpt'}->{$stripnum}->{'ele'} ){   if ( defined $strips->{strip}->{$stripnum}->{elev} ){
   $p->text($t5,195, printfeet($strips->{'wpt'}->{$stripnum}->{'ele'}));    $p->text($t5,195, $strips->{strip}->{$stripnum}->{elev} . 'ft');
  }   }
  if ( defined $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'length'} ){   if ( defined $strips->{strip}->{$stripnum}->{length} ){
   $p->text($t6,195, $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'length'} . 'm');    $p->text($t6,195, $strips->{strip}->{$stripnum}->{length} . 'm');
  }   }
  $p->setfont("Helvetica", 10);   $p->setfont("Helvetica", 10);
  my $latlng = printlat($strips->{'wpt'}->{$stripnum}->{'lat'}) . " " .    my $latlng = $strips->{strip}->{$stripnum}->{lat} . " " . 
               printlon($strips->{'wpt'}->{$stripnum}->{'lon'});                $strips->{strip}->{$stripnum}->{lng};
  $p->text($t1,190, $latlng);   $p->text($t1,190, $latlng);
  if ( defined $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'slope'} ){   if ( defined $strips->{strip}->{$stripnum}->{slope} ){
   $p->text($t1 + 45,190, 'Slope: ' . $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'slope'});    $p->text($t1 + 45,190, 'Slope: ' . $strips->{strip}->{$stripnum}->{slope});
  }   }
  if ( defined $strips->{'wpt'}->{$stripnum}->{'extensions'}->{surface} ){   if ( defined $strips->{strip}->{$stripnum}->{surface} ){
   $p->text($t5 ,190, 'Sfc: ' . $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'surface'});    $p->text($t5 ,190, 'Sfc: ' . $strips->{strip}->{$stripnum}->{surface});
  }   }
  if ( defined $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'width'} ){   if ( defined $strips->{strip}->{$stripnum}->{width} ){
   $p->text($t6 ,190, 'Width: ' . $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'width'});    $p->text($t6 ,190, 'Width: ' . $strips->{strip}->{$stripnum}->{width});
  }   }
   
  my $eps = "M" . $stripnum . ".ps";   my $eps = "M" . $stripnum . ".ps";
Line 489  foreach my $stripnum ( sort keys %{$stri Line 487  foreach my $stripnum ( sort keys %{$stri
  else {   else {
   $p->setcolour(255,54,0); # Glide Omarama Orange    $p->setcolour(255,54,0); # Glide Omarama Orange
   $p->setfont("Helvetica", 32);    $p->setfont("Helvetica", 32);
   $p->text({rotate => 45}, $t2 ,20, 'No picture yet' );    $p->text({rotate => 45}, $t2 ,20, 'Details in next edition' );
   $p->setcolour("black");    $p->setcolour("black");
  }   }
  my $v = 185;   my $v = 185;
  $p->setfont("Helvetica", 12);   $p->setfont("Helvetica", 12);
   
  $p->text($t5,$v,"Location:");   $p->text($t5,$v,"Location:");
  if ( defined $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'location'} ){   if ( defined $strips->{strip}->{$stripnum}->{location} ){
   $v -= 5;    $v -= 5;
   $Text::Wrap::columns = 30;    $Text::Wrap::columns = 30;
   my @para = split (/\n/,wrap('', '', $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'location'}));    my @para = split (/\n/,wrap('', '', $strips->{strip}->{$stripnum}->{location}));
   while (my $ln = shift @para){    while (my $ln = shift @para){
    $p->text($t5,$v, $ln);     $p->text($t5,$v, $ln);
    $v -= 5;     $v -= 5;
Line 509  foreach my $stripnum ( sort keys %{$stri Line 507  foreach my $stripnum ( sort keys %{$stri
  $v -= 10;   $v -= 10;
   
  $p->text($t5,$v,"Comment:");   $p->text($t5,$v,"Comment:");
  if ( defined $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'comment'} ){   if ( defined $strips->{strip}->{$stripnum}->{comment} ){
   $v -= 5;    $v -= 5;
   $Text::Wrap::columns = 30;    $Text::Wrap::columns = 30;
   if ( $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'comment'} =~ /Danger/ ){    if ( $strips->{strip}->{$stripnum}->{comment} =~ /Danger/ ){
    $p->setcolour("red");     $p->setcolour("red");
    # Draw over image ...     # Draw over image ...
    $p->setlinewidth(4);     $p->setlinewidth(4);
    $p->arc( 70, 60, 20, 0, 360);     $p->arc( 70, 60, 20, 0, 360);
    $p->line(50,40, 90,80);     $p->line(50,40, 90,80);
   }    }
   my @para = split (/\n/,wrap('', '', $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'comment'}));    my @para = split (/\n/,wrap('', '', $strips->{strip}->{$stripnum}->{comment}));
   while (my $ln = shift @para){    while (my $ln = shift @para){
    $p->text($t5,$v, $ln);     $p->text($t5,$v, $ln);
    $v -= 5;     $v -= 5;
Line 530  foreach my $stripnum ( sort keys %{$stri Line 528  foreach my $stripnum ( sort keys %{$stri
  $v -= 10;   $v -= 10;
   
  $p->text($t5,$v,"Alternate:");   $p->text($t5,$v,"Alternate:");
  if ( defined $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'alternate'} ){   if ( defined $strips->{strip}->{$stripnum}->{alternate} ){
   $v -= 5;    $v -= 5;
   $Text::Wrap::columns = 30;    $Text::Wrap::columns = 30;
   my @para = split (/\n/,wrap('', '', $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'alternate'}));    my @para = split (/\n/,wrap('', '', $strips->{strip}->{$stripnum}->{alternate}));
   while (my $ln = shift @para){    while (my $ln = shift @para){
    $p->text($t5,$v, $ln);     $p->text($t5,$v, $ln);
    $v -= 5;     $v -= 5;
Line 547  foreach my $stripnum ( sort keys %{$stri Line 545  foreach my $stripnum ( sort keys %{$stri
 startpage();  startpage();
 $v = 185;  $v = 185;
   
 foreach my $stripnum ( sort keys %{$strips->{'wpt'}} ){  foreach my $stripnum ( sort keys %{$strips->{strip}} ){
  if ( $strips->{'wpt'}->{$stripnum}->{'extensions'}->{gobook} eq "yes" ){   if ( $strips->{strip}->{$stripnum}->{gobook} eq "yes" ){
   $strips{$strips->{'wpt'}->{$stripnum}->{'desc'}} = $stripnum;    $strips{$strips->{strip}->{$stripnum}->{name}} = $stripnum;
   $p->setfont("Helvetica-Bold", 12);    $p->setfont("Helvetica-Bold", 12);
   $p->text($t1,$v, $stripnum);    $p->text($t1,$v, $stripnum);
   $p->text($t2,$v, $strips->{'wpt'}->{$stripnum}->{'desc'});    $p->text($t2,$v, $strips->{strip}->{$stripnum}->{name});
   $p->setfont("Helvetica", 12);    $p->setfont("Helvetica", 12);
   $v -= 8;    $v -= 8;
   
   $p->text($t1,$v,"Station:");    $p->text($t1,$v,"Station:");
   if ( defined $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'station'} ){    if ( defined $strips->{strip}->{$stripnum}->{station} ){
    $p->text($t2,$v, $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'station'});     $p->text($t2,$v, $strips->{strip}->{$stripnum}->{station});
   }    }
   $v -= 6;    $v -= 6;
   
   $p->text($t1,$v,"Contact:");    $p->text($t1,$v,"Contact:");
   if ( defined $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'contact'} ){    if ( defined $strips->{strip}->{$stripnum}->{contact} ){
    $Text::Wrap::columns = 50;     $Text::Wrap::columns = 50;
    my @para = split (/\n/,wrap('', '', $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'contact'}));     my @para = split (/\n/,wrap('', '', $strips->{strip}->{$stripnum}->{contact}));
    while (my $ln = shift @para){     while (my $ln = shift @para){
     $p->text($t2,$v, $ln);      $p->text($t2,$v, $ln);
     $v -= 6;      $v -= 6;
Line 574  foreach my $stripnum ( sort keys %{$stri Line 572  foreach my $stripnum ( sort keys %{$stri
   }    }
   $v -= 6;    $v -= 6;
   $p->text($t1,$v,"Retrieve:");    $p->text($t1,$v,"Retrieve:");
   if ( defined $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'retrieve'} ){    if ( defined $strips->{strip}->{$stripnum}->{retrieve} ){
    $p->text($t2,$v, $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'retrieve'});     $p->text($t2,$v, $strips->{strip}->{$stripnum}->{retrieve});
   }    }
   $v -= 8;    $v -= 8;
   
Line 627  sub newindex { Line 625  sub newindex {
  $p->setfont("Helvetica", 12);   $p->setfont("Helvetica", 12);
 }  }
   
 sub printlat {  
  my $latitude = shift(@_);  
  my $minutes = 0;  
  my $degrees = 0;  
  my $northing = "";  
   
  if ($latitude < 0) {  
   $northing = "S";  
   $latitude = 0 - $latitude;  
  }  
  else{  
   $northing = "N";  
  }  
  $degrees = int($latitude);  
  $minutes = ($latitude - $degrees) * 60;  
  return sprintf("%d:%06.3f%s",$degrees,$minutes,$northing);  
 }  
   
 sub printlon {  
  my $longitude = shift(@_);  
  my $minutes = 0;  
  my $degrees = 0;  
  my $westing = "";  
  if ($longitude < 0) {  
   $westing = "W";  
   $longitude = 0 - $longitude;  
  }  
  else{  
   $westing = "E";  
  }  
  $degrees = int($longitude);  
  $minutes = ($longitude - $degrees) * 60;  
  return sprintf("%d:%06.3f%s",$degrees,$minutes,$westing);  
 }  
   
 sub printfeet {  
  my $meters = shift(@_);  
  return sprintf("%d ft", int($meters * 3.2808399));  
 }  

Removed from v.3.4  
changed lines
  Added in v.3.0


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>