]> git.mxchange.org Git - flightgear.git/commitdiff
- add direction letter to numeric mode, too
authormfranz <mfranz>
Sat, 17 Jun 2006 18:08:53 +0000 (18:08 +0000)
committermfranz <mfranz>
Sat, 17 Jun 2006 18:08:53 +0000 (18:08 +0000)
- avoid negative sign on 0.00

src/Main/fg_props.cxx

index 1ab498b29f53a22c896d159f4ca2edf39e936faa..dbe4e537dfb57da6c335d6aad45071a795ab09b2 100644 (file)
@@ -441,9 +441,10 @@ getLongitudeString ()
   static char buf[32];
   double d = n->getDoubleValue();
   int format = f->getIntValue();
+  char c = d < 0.0 ? 'W' : 'E';
 
   if (format == 0) {
-    snprintf(buf, 32, "%3.6f", d);
+    snprintf(buf, 32, "%3.6f%c", d, c);
 
   } else if (format == 1) {
     // dd mm.mmm' (DMM-Format) -- uses a round-off factor tailored to the
@@ -451,8 +452,7 @@ getLongitudeString ()
     // preventing minute values of 60.
     double deg = fabs(d) + 5.0E-4 / 60.0;
     double min = fabs(deg - int(deg)) * 60.0 - 4.999E-4;
-    snprintf(buf, 32, "%d*%06.3f%c", int(d < 0.0 ? -deg : deg), min,
-        d < 0.0 ? 'W' : 'E');
+    snprintf(buf, 32, "%d*%06.3f%c", int(d < 0.0 ? -deg : deg), min, c);
 
   } else {
     // mm'ss.s'' (DMS-Format) -- uses a round-off factor tailored to the
@@ -462,7 +462,7 @@ getLongitudeString ()
     double min = (deg - int(deg)) * 60.0;
     double sec = (min - int(min)) * 60.0 - 0.049;
     snprintf(buf, 32, "%d*%02d %04.1f%c", int(d < 0.0 ? -deg : deg),
-      int(min), sec, d < 0.0 ? 'W' : 'E');
+        int(min), fabs(sec), c);
   }
   return buf;
 }
@@ -475,22 +475,22 @@ getLatitudeString ()
   static char buf[32];
   double d = n->getDoubleValue();
   int format = f->getIntValue();
+  char c = d < 0.0 ? 'S' : 'N';
 
   if (format == 0) {
-    snprintf(buf, 32, "%3.6f", d);
+    snprintf(buf, 32, "%3.6f%c", d, c);
 
   } else if (format == 1) {
     double deg = fabs(d) + 5.0E-4 / 60.0;
     double min = fabs(deg - int(deg)) * 60.0 - 4.999E-4;
-    snprintf(buf, 32, "%d*%06.3f%c", int(d < 0.0 ? -deg : deg), min,
-        d < 0.0 ? 'S' : 'N');
+    snprintf(buf, 32, "%d*%06.3f%c", int(d < 0.0 ? -deg : deg), min, c);
 
   } else {
     double deg = fabs(d) + 0.05 / 3600.0;
     double min = (deg - int(deg)) * 60.0;
     double sec = (min - int(min)) * 60.0 - 0.049;
     snprintf(buf, 32, "%d*%02d %04.1f%c", int(d < 0.0 ? -deg : deg),
-      int(min), sec, d < 0.0 ? 'S' : 'N');
+        int(min), fabs(sec), c);
   }
   return buf;
 }