]> git.mxchange.org Git - flightgear.git/commitdiff
Make it possible to truncate the result of a number-value text chunk calculation...
authorehofman <ehofman>
Thu, 22 Jan 2004 18:42:42 +0000 (18:42 +0000)
committerehofman <ehofman>
Thu, 22 Jan 2004 18:42:42 +0000 (18:42 +0000)
src/Cockpit/panel.cxx
src/Cockpit/panel.hxx
src/Cockpit/panel_io.cxx

index de9a7877866653942f97814f17346401ac0caf95..25d6066cab59e60c4a3e8a16b82e2ed5d1520cc8 100644 (file)
@@ -1092,8 +1092,9 @@ FGTextLayer::Chunk::Chunk (const string &text, const string &fmt)
 }
 
 FGTextLayer::Chunk::Chunk (ChunkType type, const SGPropertyNode * node,
-                          const string &fmt, float mult, float offs)
-  : _type(type), _fmt(fmt), _mult(mult), _offs(offs)
+                          const string &fmt, float mult, float offs,
+                           bool truncation)
+  : _type(type), _fmt(fmt), _mult(mult), _offs(offs), _trunc(truncation)
 {
   if (_fmt.empty()) {
     if (type == TEXT_VALUE)
@@ -1117,7 +1118,9 @@ FGTextLayer::Chunk::getValue () const
       sprintf(_buf, _fmt.c_str(), _node->getStringValue());
       break;
     case DOUBLE_VALUE:
-      sprintf(_buf, _fmt.c_str(), _offs + _node->getFloatValue() * _mult);
+      double d = _offs + _node->getFloatValue() * _mult;
+      if (_trunc)  d = truncf(d);
+      sprintf(_buf, _fmt.c_str(), d);
       break;
     }
     return _buf;
index 01ccc469db7562c1e0e50d9d774f95acdd266d22..b99889ce1628f26788f8ffb033bc1a3480998e4b 100644 (file)
@@ -492,7 +492,8 @@ public:
   public:
     Chunk (const string &text, const string &fmt = "%s");
     Chunk (ChunkType type, const SGPropertyNode * node,
-          const string &fmt = "", float mult = 1.0, float offs = 0.0);
+          const string &fmt = "", float mult = 1.0, float offs = 0.0,
+           bool truncation = false);
 
     const char * getValue () const;
   private:
@@ -502,6 +503,7 @@ public:
     string _fmt;
     float _mult;
     float _offs;
+    bool _trunc;
     mutable char _buf[1024];
   };
 
index 55dcb52ac85ffb03596c7fa9b1783b6917f1cdd3..86e01b758c88b56f4dc9433b62861273b305a4dc 100644 (file)
@@ -366,9 +366,10 @@ readTextChunk (const SGPropertyNode * node)
     string propName = node->getStringValue("property");
     float scale = node->getFloatValue("scale", 1.0);
     float offset = node->getFloatValue("offset", 0.0);
+    bool truncation = node->getFloatValue("truncate", false);
     SGPropertyNode * target = fgGetNode(propName.c_str(), true);
     chunk = new FGTextLayer::Chunk(FGTextLayer::DOUBLE_VALUE, target,
-                                  format, scale, offset);
+                                  format, scale, offset, truncation);
   }
 
                                // Unknown type.