Diff for /gobook.perl between versions 3.2 and 3.4

version 3.2, 2017/01/22 03:24:07 version 3.4, 2017/07/15 00:04:02
Line 6  use PostScript::Simple; Line 6  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;  # create a new PostScript object;
   
Line 98  $p->text($t1,$v, "Text by Phil Plane and Line 100  $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 October 2017. ");  $p->text($t1,$v, "Fifth Edition published February 2017.");
 $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 444  $p->text(70,5, "(" . $pn++ . ")"); Line 446  $p->text(70,5, "(" . $pn++ . ")");
   
 # Start the strip pages with pictures:  # Start the strip pages with pictures:
   
 foreach my $stripnum ( sort keys %{$strips->{strip}} ){  foreach my $stripnum ( sort keys %{$strips->{'wpt'}} ){
  if ( $strips->{strip}->{$stripnum}->{gobook} eq "yes" ){   if ( $strips->{'wpt'}->{$stripnum}->{'extensions'}->{gobook} eq "yes" ){
  $strips{$strips->{strip}->{$stripnum}->{name}} = $stripnum;   $strips{$strips->{'wpt'}->{$stripnum}->{'desc'}} = $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->{strip}->{$stripnum}->{name});   $p->text($t1,195, $strips->{'wpt'}->{$stripnum}->{'desc'});
  $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->{strip}->{$stripnum}->{elev} ){   if ( defined $strips->{'wpt'}->{$stripnum}->{'ele'} ){
   $p->text($t5,195, $strips->{strip}->{$stripnum}->{elev} . 'ft');    $p->text($t5,195, printfeet($strips->{'wpt'}->{$stripnum}->{'ele'}));
  }   }
  if ( defined $strips->{strip}->{$stripnum}->{length} ){   if ( defined $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'length'} ){
   $p->text($t6,195, $strips->{strip}->{$stripnum}->{length} . 'm');    $p->text($t6,195, $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'length'} . 'm');
  }   }
  $p->setfont("Helvetica", 10);   $p->setfont("Helvetica", 10);
  my $latlng = $strips->{strip}->{$stripnum}->{lat} . " " .    my $latlng = printlat($strips->{'wpt'}->{$stripnum}->{'lat'}) . " " . 
               $strips->{strip}->{$stripnum}->{lng};                printlon($strips->{'wpt'}->{$stripnum}->{'lon'});
  $p->text($t1,190, $latlng);   $p->text($t1,190, $latlng);
  if ( defined $strips->{strip}->{$stripnum}->{slope} ){   if ( defined $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'slope'} ){
   $p->text($t1 + 45,190, 'Slope: ' . $strips->{strip}->{$stripnum}->{slope});    $p->text($t1 + 45,190, 'Slope: ' . $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'slope'});
  }   }
  if ( defined $strips->{strip}->{$stripnum}->{surface} ){   if ( defined $strips->{'wpt'}->{$stripnum}->{'extensions'}->{surface} ){
   $p->text($t5 ,190, 'Sfc: ' . $strips->{strip}->{$stripnum}->{surface});    $p->text($t5 ,190, 'Sfc: ' . $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'surface'});
  }   }
  if ( defined $strips->{strip}->{$stripnum}->{width} ){   if ( defined $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'width'} ){
   $p->text($t6 ,190, 'Width: ' . $strips->{strip}->{$stripnum}->{width});    $p->text($t6 ,190, 'Width: ' . $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'width'});
  }   }
   
  my $eps = "M" . $stripnum . ".ps";   my $eps = "M" . $stripnum . ".ps";
Line 494  foreach my $stripnum ( sort keys %{$stri Line 496  foreach my $stripnum ( sort keys %{$stri
  $p->setfont("Helvetica", 12);   $p->setfont("Helvetica", 12);
   
  $p->text($t5,$v,"Location:");   $p->text($t5,$v,"Location:");
  if ( defined $strips->{strip}->{$stripnum}->{location} ){   if ( defined $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'location'} ){
   $v -= 5;    $v -= 5;
   $Text::Wrap::columns = 30;    $Text::Wrap::columns = 30;
   my @para = split (/\n/,wrap('', '', $strips->{strip}->{$stripnum}->{location}));    my @para = split (/\n/,wrap('', '', $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'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 507  foreach my $stripnum ( sort keys %{$stri Line 509  foreach my $stripnum ( sort keys %{$stri
  $v -= 10;   $v -= 10;
   
  $p->text($t5,$v,"Comment:");   $p->text($t5,$v,"Comment:");
  if ( defined $strips->{strip}->{$stripnum}->{comment} ){   if ( defined $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'comment'} ){
   $v -= 5;    $v -= 5;
   $Text::Wrap::columns = 30;    $Text::Wrap::columns = 30;
   if ( $strips->{strip}->{$stripnum}->{comment} =~ /Danger/ ){    if ( $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'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->{strip}->{$stripnum}->{comment}));    my @para = split (/\n/,wrap('', '', $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'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 528  foreach my $stripnum ( sort keys %{$stri Line 530  foreach my $stripnum ( sort keys %{$stri
  $v -= 10;   $v -= 10;
   
  $p->text($t5,$v,"Alternate:");   $p->text($t5,$v,"Alternate:");
  if ( defined $strips->{strip}->{$stripnum}->{alternate} ){   if ( defined $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'alternate'} ){
   $v -= 5;    $v -= 5;
   $Text::Wrap::columns = 30;    $Text::Wrap::columns = 30;
   my @para = split (/\n/,wrap('', '', $strips->{strip}->{$stripnum}->{alternate}));    my @para = split (/\n/,wrap('', '', $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'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 545  foreach my $stripnum ( sort keys %{$stri Line 547  foreach my $stripnum ( sort keys %{$stri
 startpage();  startpage();
 $v = 185;  $v = 185;
   
 foreach my $stripnum ( sort keys %{$strips->{strip}} ){  foreach my $stripnum ( sort keys %{$strips->{'wpt'}} ){
  if ( $strips->{strip}->{$stripnum}->{gobook} eq "yes" ){   if ( $strips->{'wpt'}->{$stripnum}->{'extensions'}->{gobook} eq "yes" ){
   $strips{$strips->{strip}->{$stripnum}->{name}} = $stripnum;    $strips{$strips->{'wpt'}->{$stripnum}->{'desc'}} = $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->{strip}->{$stripnum}->{name});    $p->text($t2,$v, $strips->{'wpt'}->{$stripnum}->{'desc'});
   $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->{strip}->{$stripnum}->{station} ){    if ( defined $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'station'} ){
    $p->text($t2,$v, $strips->{strip}->{$stripnum}->{station});     $p->text($t2,$v, $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'station'});
   }    }
   $v -= 6;    $v -= 6;
   
   $p->text($t1,$v,"Contact:");    $p->text($t1,$v,"Contact:");
   if ( defined $strips->{strip}->{$stripnum}->{contact} ){    if ( defined $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'contact'} ){
    $Text::Wrap::columns = 50;     $Text::Wrap::columns = 50;
    my @para = split (/\n/,wrap('', '', $strips->{strip}->{$stripnum}->{contact}));     my @para = split (/\n/,wrap('', '', $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'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 572  foreach my $stripnum ( sort keys %{$stri Line 574  foreach my $stripnum ( sort keys %{$stri
   }    }
   $v -= 6;    $v -= 6;
   $p->text($t1,$v,"Retrieve:");    $p->text($t1,$v,"Retrieve:");
   if ( defined $strips->{strip}->{$stripnum}->{retrieve} ){    if ( defined $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'retrieve'} ){
    $p->text($t2,$v, $strips->{strip}->{$stripnum}->{retrieve});     $p->text($t2,$v, $strips->{'wpt'}->{$stripnum}->{'extensions'}->{'retrieve'});
   }    }
   $v -= 8;    $v -= 8;
   
Line 625  sub newindex { Line 627  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.2  
changed lines
  Added in v.3.4


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