public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] dev/xmw:master commit in: games-util/atlas/, games-util/atlas/files/
@ 2014-07-15 12:13 Michael Weber
  0 siblings, 0 replies; 2+ messages in thread
From: Michael Weber @ 2014-07-15 12:13 UTC (permalink / raw
  To: gentoo-commits

commit:     a083db964ee10d0981656e099285c6688fd14de7
Author:     Michael Weber <michael <AT> xmw <DOT> de>
AuthorDate: Tue Jul 15 12:12:45 2014 +0000
Commit:     Michael Weber <xmw <AT> gentoo <DOT> org>
CommitDate: Tue Jul 15 12:12:45 2014 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=dev/xmw.git;a=commit;h=a083db96

Add patches for version 3 scenery (version 1000)

Package-Manager: portage-2.2.10
Manifest-Sign-Key:

---
 games-util/atlas/ChangeLog                         |   4 +
 games-util/atlas/atlas-0.4_p20140519.ebuild        |   1 +
 .../atlas/files/atlas-0.4_p20140519-fg3.patch      | 319 +++++++++++++++++++++
 3 files changed, 324 insertions(+)

diff --git a/games-util/atlas/ChangeLog b/games-util/atlas/ChangeLog
index 10e28a5..4b0b033 100644
--- a/games-util/atlas/ChangeLog
+++ b/games-util/atlas/ChangeLog
@@ -1,3 +1,7 @@
+  15 Jul 2014; Michael Weber <xmw@gentoo.org>
+  +files/atlas-0.4_p20140519-fg3.patch, atlas-0.4_p20140519.ebuild:
+  Add patches for version 3 scenery (version 1000)
+
 *atlas-0.4_p20140519 (12 Jul 2014)
 *atlas-9999 (12 Jul 2014)
 

diff --git a/games-util/atlas/atlas-0.4_p20140519.ebuild b/games-util/atlas/atlas-0.4_p20140519.ebuild
index e432a68..13b656e 100644
--- a/games-util/atlas/atlas-0.4_p20140519.ebuild
+++ b/games-util/atlas/atlas-0.4_p20140519.ebuild
@@ -33,6 +33,7 @@ RDEPEND="${COMMON_DEPEND}
 "
 
 src_prepare() {
+	epatch "${FILESDIR}"/${P}-fg3.patch
 	eautoreconf
 }
 

diff --git a/games-util/atlas/files/atlas-0.4_p20140519-fg3.patch b/games-util/atlas/files/atlas-0.4_p20140519-fg3.patch
new file mode 100644
index 0000000..5aa6665
--- /dev/null
+++ b/games-util/atlas/files/atlas-0.4_p20140519-fg3.patch
@@ -0,0 +1,319 @@
+Based on a patch by Frederik Tilmann, posted at http://forum.flightgear.org/viewtopic.php?f=31&t=21972#p202275
+
+--- atlas-0.4_p20140519/src/NavData.hxx
++++ atlas-0.4_p20140519/src/NavData.hxx
+@@ -219,6 +219,7 @@
+     void _loadAirways640(const gzFile& arp);
+     void _checkEnd(AwyLabel &end, bool isLow);
+     void _loadAirports810(const gzFile& arp);
++    void _loadAirports1000(const gzFile& arp);
+ 
+     Searcher *_searcher;
+ 
+--- atlas-0.4_p20140519/src/NavData.cxx
++++ atlas-0.4_p20140519/src/NavData.cxx
+@@ -1397,3 +1397,304 @@
+ 	_frustumCullers[AIRPORTS]->culler().addObject(ap);
+     }
+ }
++
++
++void NavData::_loadAirports1000(const gzFile& arp)
++{
++    char *line;
++    ARP *ap = NULL;
++
++    while (gzGetLine(arp, &line)) {
++	int lineCode, offset;
++
++	if (strcmp(line, "") == 0) {
++	    // Blank line.
++	    continue;
++	} 
++
++	if (strcmp(line, "99") == 0) {
++	    // Last line.
++	    break;
++	}
++
++	sscanf(line, "%d%n", &lineCode, &offset);
++	line += offset;
++	switch (lineCode) {
++	  case 1:
++	  case 16:
++	  case 17:
++	    {
++		// The presence of a 1/16/17 means that we're starting a
++		// new airport/seaport/heliport, and therefore ending an
++		// old one.  Deal with the old airport first.
++		if (ap != NULL) {
++		    // Calculate the airport's center in lat, lon.
++		    __airportLatLon(ap);
++		    // Add it to our airports vector.
++		    _airports.push_back(ap);
++		    // Add our airport text to the searcher object.
++		    _searcher->add(ap);
++		    // Add to our culler.
++		    _frustumCullers[AIRPORTS]->culler().addObject(ap);
++
++		    ap = NULL;
++		}
++
++		// EYE - add seaports and heliports!  (Note: the
++		// classification of seaports is iffy - Pearl Harbor
++		// is called an airport, even though it's in the
++		// ocean, and Courchevel is called a seaport, even
++		// though it's on top of a mountain).
++		if (lineCode != 1) {
++		    // We only handle airports (16 = seaport, 17 = heliport)
++		    break;
++		}
++
++		// Create a new airport record.
++		ap = new ARP;
++
++		float elevation;
++		int controlled;
++		char code[5];	// EYE - safe?
++
++		sscanf(line, "%f %d %*d %s %n", 
++		       &elevation, &controlled, code, &offset);
++		line += offset;
++
++		ap->elev = elevation * SG_FEET_TO_METER;
++		// FJT: according to 1000 spec this parameter is deprecated - still leave it in
++		ap->controlled = (controlled == 1);
++		ap->id = code;
++		ap->name = line;
++		// This will be set to true if we find a runway with
++		// any kind of runway lighting.
++		ap->lighting = false;
++		// If set to true, then beaconLat and beaconLon
++		// contain the location of the beacon.
++		ap->beacon = false;
++	    }
++
++	    break;
++	  case 100:
++	    // 100: runway (i.e. ignore water runway 101, helipad 102)
++	    {
++		if (ap == NULL) {
++		    // If we're not working on an airport (ie, if this is
++		    // a heliport), just continue.
++		    break;
++		}
++
++		double lat1, lon1,lat2,lon2,latdif,londif;
++		char rwyid1[4],rwyid2[4];	// EYE - safe?
++		float heading, length, width;
++		int centre_light,edge_light,reil_light,tdz_light;
++		// char *lighting;
++
++		//		sscanf(line, "%lf %lf %s %n", &lat, &lon, rwyid, &offset);
++		// skipped parameters: surface type, runway should surface type, smoothness, auto-generate distance signs
++		sscanf(line,"%f %*d %*d %*f %d %d %*d %n",&width,&centre_light,&edge_light,&offset);
++		line += offset;
++		if ( edge_light || centre_light) 
++		  ap->lighting=true;
++
++		// skipped values: displaced threshold, overrun, runway markings, approach lighting, runway touchdown lighting, runway end identifier light
++		sscanf(line,"%4s %lf %lf %*f %*f %*d %*d %d %d %n",rwyid1,&lat1,&lon1,&tdz_light,&reil_light,&offset);
++		line += offset;
++		if ( tdz_light || reil_light) 
++		  ap->lighting=true;
++		// skipped values: displaced threshold, overrun, runway markings, approach lighting, runway touchdown lighting, runway end identifier light
++		sscanf(line,"%4s %lf %lf %*f %*f %*d %*d %d %d %n",rwyid2,&lat2,&lon2,&tdz_light,&reil_light,&offset);
++		line += offset;
++		if ( tdz_light || reil_light) 
++		  ap->lighting=true;
++		// We ignore taxiways and helipads.
++		//		if (strcmp(rwyid, "xxx") == 0) {
++		//    break;
++		//}
++		//if (strncmp(rwyid, "H", 1) == 0) {
++		//    break;
++		//}
++
++		// Strip off trailing x's.
++		int firstX = strcspn(rwyid1, "x");
++		if (firstX > 0) {
++		    rwyid1[firstX] = '\0';
++		}
++		assert(strlen(rwyid1) <= 3);
++
++		// Runway!
++		RWY *rwy = new RWY;
++
++		//		sscanf(line, "%f %f %*f %*f %f %n", 
++		//      &heading, &length, &width, &offset);
++		// lighting = line + offset;
++
++		rwy->lat = (lat1+lat2)/2.0;
++		rwy->lon = (lon1+lon2)/2.0;
++		latdif=(lat2-lat1)*SGD_DEGREES_TO_RADIANS*SG_EQUATORIAL_RADIUS_M;
++		londif=(lon2-lon1)*SGD_DEGREES_TO_RADIANS*cos(SGD_DEGREES_TO_RADIANS*rwy->lat)*SG_EQUATORIAL_RADIUS_M;
++                rwy->hdg = float(atan2(londif,latdif)*SGD_RADIANS_TO_DEGREES);
++		//fprintf(stderr,"DEBUG: airport: %lf %lf %lf %lf latdif %lf, londif %lf head %f\n",lat1,lon1,lat2,lon2,latdif,londif,rwy->hdg);
++		rwy->length = sqrt(latdif*latdif+londif*londif);
++		// rwy->length = length * SG_FEET_TO_METER;
++		// 	rwy->width  = width * SG_FEET_TO_METER;
++		rwy->width  = width; 
++		rwy->id = rwyid1;
++		ap->rwys.push_back(rwy);
++
++		__runwayExtents(rwy, ap->elev);
++		ap->_bounds.extend(&(rwy->_bounds));
++
++		// According to the FAA's "VFR Aeronautical Chart
++		// Symbols", lighting codes on VFR maps refer to
++		// runway lights (not approach lights).
++		//
++		// In apt.dat, visual approach, runway, and approach
++		// lighting is given by a six-digit "number" (which we
++		// treat as a string).  We're concerned with digits 2
++		// and 5, which concern the runway itself.  If the
++		// value is '1', there is no runway lighting.
++		//
++		// Note that the apt.dat database does not tell us
++		// about lighting limitations, nor whether the
++		// lighting is pilot-controlled.
++		//		if ((lighting[1] != '1') || (lighting[4] != '1')) {
++		//		    ap->lighting = true;
++		//		}
++	    }
++
++	    break;
++	  case 18: 
++	    if (ap != NULL) {
++		// Beacon
++		double lat, lon;
++		int beaconType;
++
++		sscanf(line, "%lf %lf %d", &lat, &lon, &beaconType);
++		if (beaconType != 0) {
++		    ap->beacon = true;
++		    ap->beaconLat = lat;
++		    ap->beaconLon = lon;
++		}
++	    }
++	    break;
++	  case WEATHER:		// AWOS, ASOS, ATIS
++	  case UNICOM:		// Unicom/CTAF (US), radio (UK)
++	  case DEL:		// Clearance delivery
++	  case GND:		// Ground
++	  case TWR:		// Tower
++	  case APP:		// Approach
++	  case DEP:		// Departure
++	      {
++		  // ATC frequencies.
++		  //
++		  // Here's a sample, from LFPG (Paris Charles De
++		  // Gaulle), which is a rather extreme case:
++		  //
++		  // 50 12712 DE GAULLE ATIS
++		  // 53 11810 DE GAULLE TRAFFIC
++		  // 53 11955 DE GAULLE TRAFFIC
++		  // 53 12160 DE GAULLE GND
++		  // 53 12167 DE GAULLE TRAFFIC
++		  // 53 12177 DE GAULLE GND
++		  // 53 12177 DE GAULLE GND
++		  // 53 12180 DE GAULLE GND
++		  // 53 12192 DE GAULLE TRAFFIC
++		  // 53 12192 DE GAULLE TRAFFIC
++		  // 53 12197 DE GAULLE GND
++		  // 53 12197 DE GAULLE GND
++		  // 54 11865 DE GAULLE TWR
++		  // 54 11925 DE GAULLE TWR
++		  // 54 12090 DE GAULLE TWR
++		  // 54 12360 DE GAULLE TWR
++		  // 54 12532 DE GAULLE TWR
++		  //
++		  // [...]
++		  //
++		  // There are several important things to note:
++		  //
++		  // (1) There many be several entries for a given
++		  //     type.  For example, there is only one WEATHER
++		  //     entry (type code 50), but 10 GND entries
++		  //     (type code 53).
++		  //
++		  // (2) There may be several frequencies with the
++		  //     same name in a given type.  For example,
++		  //     there are 4 GND entries labelled "DE GAULLE
++		  //     TRAFFIC", and 6 labelled "DE GAULLE GND".
++		  //     They are not guaranteed to be grouped
++		  //     together.  
++		  //
++		  //     When rendering these, we only print the label
++		  //     once, and all frequencies with that label are
++		  //     printed after the label.  This makes for a
++		  //     less cluttered display:
++		  //
++		  //     DE GAULLE TRAFFIC 118.1 119.55 121.675 121.925
++		  //
++		  // (3) There may be duplicates.  For example, '53
++		  //     12192 DE GAULLE TRAFFIC' is given twice.  The
++		  //     duplicates should presumably be ignored.
++		  //
++		  // (4) Frequencies are given as integers, and should
++		  //     be divided by 100.0 to give the true
++		  //     frequency in MHz.  That is, 11810 is 118.1
++		  //     MHz.  In addition, they are missing a
++		  //     significant digit: 12192 really means 121.925
++		  //     MHz, not 121.92 MHz (communications
++		  //     frequencies have a 25 kHz spacing).  So, we
++		  //     need to correct frequencies with end in the
++		  //     digits '2' and '7'.
++		  //
++		  //     Internally, we also store the frequencies as
++		  //     integers, but multiplied by 1000.0, not
++		  //     100.0.  And we add a final '5' when
++		  //     necessary.  So, we store 12192 as 121925, and
++		  //     11810 as 118100.
++
++	          // EYE - what should I do about multiple frequencies
++	          // of one type?  A: Check San Jose (KSJC) - it has 2
++	          // CT frequencies, and just lists them.  However,
++	          // the VFR_Chart_Symbols.pdf file says that it lists
++	          // the "primary frequency."
++
++	          // Note: Unicom frequencies are written in bold
++	          // italics, others in bold.  CT seems to be written
++	          // slightly larger than the others.
++
++	          // Note: Some airports, like Reid-Hillview, have
++	          // CTAF and UNICOM.  CTAF is written with a circled
++	          // C in front, the frequency bold and slightly
++	          // enlarged (like CT), UNICOM in bold italics.
++
++		  if (ap != NULL) {
++		      int freq;
++
++		      sscanf(line, "%d %n", &freq, &offset);
++		      line += offset;
++
++		      FrequencyMap& f = ap->freqs[(ATCCodeType)lineCode];
++		      set<int>& freqs = f[line];
++		      if ((freq % 10 == 2) || (freq % 10 == 7)) {
++			  freqs.insert(freq * 10 + 5);
++		      } else {
++			  freqs.insert(freq * 10);
++		      }
++		  }
++	      }
++	    break;
++	}
++    }
++
++    if (ap != NULL) {
++	// Calculate the airport's center in lat, lon.
++	__airportLatLon(ap);
++	// Add it to our airports vector.
++	_airports.push_back(ap);
++	// Add our airport text to the searcher object.
++	_searcher->add(ap);
++	// Add to our culler.
++	_frustumCullers[AIRPORTS]->culler().addObject(ap);
++    }
++}
++


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* [gentoo-commits] dev/xmw:master commit in: games-util/atlas/, games-util/atlas/files/
@ 2014-07-15 12:22 Michael Weber
  0 siblings, 0 replies; 2+ messages in thread
From: Michael Weber @ 2014-07-15 12:22 UTC (permalink / raw
  To: gentoo-commits

commit:     92f7812c9a0e422206b98aaf9a5a71d1e0f1c966
Author:     Michael Weber <michael <AT> xmw <DOT> de>
AuthorDate: Tue Jul 15 12:22:04 2014 +0000
Commit:     Michael Weber <xmw <AT> gentoo <DOT> org>
CommitDate: Tue Jul 15 12:22:04 2014 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=dev/xmw.git;a=commit;h=92f7812c

Include complete patch.

Package-Manager: portage-2.2.10
Manifest-Sign-Key:

---
 games-util/atlas/ChangeLog                           |  4 ++++
 games-util/atlas/files/atlas-0.4_p20140519-fg3.patch | 11 ++++++++++-
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/games-util/atlas/ChangeLog b/games-util/atlas/ChangeLog
index 4b0b033..11763ac 100644
--- a/games-util/atlas/ChangeLog
+++ b/games-util/atlas/ChangeLog
@@ -1,4 +1,8 @@
   15 Jul 2014; Michael Weber <xmw@gentoo.org>
+  files/atlas-0.4_p20140519-fg3.patch:
+  Include complete patch.
+
+  15 Jul 2014; Michael Weber <xmw@gentoo.org>
   +files/atlas-0.4_p20140519-fg3.patch, atlas-0.4_p20140519.ebuild:
   Add patches for version 3 scenery (version 1000)
 

diff --git a/games-util/atlas/files/atlas-0.4_p20140519-fg3.patch b/games-util/atlas/files/atlas-0.4_p20140519-fg3.patch
index 5aa6665..e367e22 100644
--- a/games-util/atlas/files/atlas-0.4_p20140519-fg3.patch
+++ b/games-util/atlas/files/atlas-0.4_p20140519-fg3.patch
@@ -12,7 +12,16 @@ Based on a patch by Frederik Tilmann, posted at http://forum.flightgear.org/view
  
 --- atlas-0.4_p20140519/src/NavData.cxx
 +++ atlas-0.4_p20140519/src/NavData.cxx
-@@ -1397,3 +1397,304 @@
+@@ -1016,6 +1016,8 @@
+     if (version == 810) {
+ 	// It looks like we have a valid file.
+ 	_loadAirports810(arp);
++    } else if ( version == 1000 ) {
++	_loadAirports1000(arp);
+     } else {
+ 	// EYE - throw an error?
+ 	fprintf(stderr, "AirportsOverlay::load: \"%s\": unknown version %d.\n", 
+@@ -1397,3 +1399,304 @@
  	_frustumCullers[AIRPORTS]->culler().addObject(ap);
      }
  }


^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2014-07-15 12:22 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-07-15 12:22 [gentoo-commits] dev/xmw:master commit in: games-util/atlas/, games-util/atlas/files/ Michael Weber
  -- strict thread matches above, loose matches on Subject: below --
2014-07-15 12:13 Michael Weber

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox