]> git.mxchange.org Git - flightgear.git/blobdiff - src/Instrumentation/HUD/HUD_tape.cxx
Remove remaining use of fabsf() from the code, avoid an OSG header issue on OS-X.
[flightgear.git] / src / Instrumentation / HUD / HUD_tape.cxx
index 89c4ceae93423dd3baea2c4e6ed7b030e981edbd..6820e8880f479a67032413e4319915e9c34167d8 100644 (file)
@@ -21,6 +21,8 @@
 
 #include "HUD.hxx"
 
+static const float TICK_OFFSET = 2.f;
+
 
 HUD::Tape::Tape(HUD *hud, const SGPropertyNode *n, float x, float y) :
     Scale(hud, n, x, y),
@@ -33,6 +35,7 @@ HUD::Tape::Tape(HUD *hud, const SGPropertyNode *n, float x, float y) :
     _draw_cap_right(n->getBoolValue("cap-right", false)),
     _draw_cap_left(n->getBoolValue("cap-left", false)),
     _marker_offset(n->getFloatValue("marker-offset")),
+    _label_offset(n->getFloatValue("label-offset", 3.0)),
     _label_gap(n->getFloatValue("label-gap-width") / 2.0),
     _pointer(n->getBoolValue("enable-pointer", true)),
     _format(n->getStringValue("format", "%d"))
@@ -240,17 +243,18 @@ void HUD::Tape::draw_vertical(float value)
     for (int i = 0; ; i++) {
         float v = vstart + i * _minor_divs;
 
-        if (!_modulo)
+        if (!_modulo) {
             if (v < _input.min())
                 continue;
             else if (v > _input.max())
                 break;
+        }
 
         float y = _y + (v - vmin) * factor();
 
-        if (y < _y + 0)
+        if (y < _y + TICK_OFFSET)
             continue;
-        if (y > top - 0)
+        if (y > top - TICK_OFFSET)
             break;
 
         if (_div_ratio && i % _div_ratio) { // minor div
@@ -317,9 +321,9 @@ void HUD::Tape::draw_vertical(float value)
                     draw_bullet(marker_xs + 4, y, 5.0);
 
                 if (option_left())
-                    x = marker_xs, align = RIGHT|VCENTER;
+                    x = marker_xs - _label_offset, align = RIGHT|VCENTER;
                 else
-                    x = marker_xe, align = LEFT|VCENTER;
+                    x = marker_xe + _label_offset, align = LEFT|VCENTER;
             }
 
             if (!option_notext()) {
@@ -332,8 +336,8 @@ void HUD::Tape::draw_vertical(float value)
                     continue;
 
                 if (_label_gap == 0.0
-                        || b < _center_y - _label_gap && t < _center_y - _label_gap
-                        || b > _center_y + _label_gap && t > _center_y + _label_gap) {
+                        || (b < _center_y - _label_gap && t < _center_y - _label_gap)
+                        || (b > _center_y + _label_gap && t > _center_y + _label_gap)) {
                     draw_text(x, y, s);
                 }
             }
@@ -448,17 +452,18 @@ void HUD::Tape::draw_horizontal(float value)
     for (int i = 0; ; i++) {
         float v = vstart + i * _minor_divs;
 
-        if (!_modulo)
+        if (!_modulo) {
             if (v < _input.min())
                 continue;
             else if (v > _input.max())
                 break;
+        }
 
         float x = _x + (v - vmin) * factor();
 
-        if (x < _x + 0)
+        if (x < _x + TICK_OFFSET)
             continue;
-        if (x > right - 0)
+        if (x > right - TICK_OFFSET)
             break;
 
         if (_div_ratio && i % _div_ratio) { // minor div
@@ -502,9 +507,9 @@ void HUD::Tape::draw_horizontal(float value)
                 draw_line(x, marker_ys, x, marker_ye);
 
                 if (option_top())
-                    y = top, align = TOP|HCENTER;
+                    y = top - _label_offset, align = TOP|HCENTER;
                 else
-                    y = _y, align = BOTTOM|HCENTER;
+                    y = _y + _label_offset, align = BOTTOM|HCENTER;
             }
 
             if (!option_notext()) {
@@ -517,8 +522,8 @@ void HUD::Tape::draw_horizontal(float value)
                     continue;
 
                 if (_label_gap == 0.0
-                        || l < _center_x - _label_gap && r < _center_x - _label_gap
-                        || l > _center_x + _label_gap && r > _center_x + _label_gap) {
+                        || (l < _center_x - _label_gap && r < _center_x - _label_gap)
+                        || (l > _center_x + _label_gap && r > _center_x + _label_gap)) {
                     draw_text(x, y, s);
                 }
             }
@@ -529,7 +534,7 @@ void HUD::Tape::draw_horizontal(float value)
 
 char *HUD::Tape::format_value(float v)
 {
-    if (fabsf(v) < 1e-8)   // avoid -0.0
+    if (fabs(v) < 1e-8)   // avoid -0.0
         v = 0.0f;
 
     if (_label_fmt == INT)