]> git.mxchange.org Git - flightgear.git/blobdiff - src/Instrumentation/HUD/HUD_instrument.cxx
Win32 fix
[flightgear.git] / src / Instrumentation / HUD / HUD_instrument.cxx
index 9f3628b053a70da5a66c5e10587fc354eccedc27..e68781f7630232f5d084841404ef38655a1006c4 100644 (file)
@@ -39,10 +39,10 @@ HUD::Item::Item(HUD *hud, const SGPropertyNode *n, float x, float y) :
     if (node)
         _condition = sgReadCondition(globals->get_props(), node);
 
-    _scrn_pos.left = n->getIntValue("x") + x;
-    _scrn_pos.top = n->getIntValue("y") + y;
-    _scrn_pos.right = n->getIntValue("width");
-    _scrn_pos.bottom = n->getIntValue("height");
+    _x = n->getIntValue("x") + x;
+    _y = n->getIntValue("y") + y;
+    _w = n->getIntValue("width");
+    _h = n->getIntValue("height");
 
     vector<SGPropertyNode_ptr> opt = n->getChildren("option");
     for (unsigned int i = 0; i < opt.size(); i++) {
@@ -79,13 +79,13 @@ HUD::Item::Item(HUD *hud, const SGPropertyNode *n, float x, float y) :
     // the span values according to orientation
 
     if (_options & VERT) {
-        _scr_span = _scrn_pos.bottom;
+        _scr_span = _h;
     } else {
-        _scr_span = _scrn_pos.right;
+        _scr_span = _w;
     }
 
-    _mid_span.x = _scrn_pos.left + _scrn_pos.right / 2.0;
-    _mid_span.y = _scrn_pos.top + _scrn_pos.bottom / 2.0;
+    _mid_span.x = _x + _w / 2.0;
+    _mid_span.y = _y + _h / 2.0;
 }
 
 
@@ -95,31 +95,32 @@ bool HUD::Item::isEnabled()
 }
 
 
-void HUD::Item::draw_line( float x1, float y1, float x2, float y2)
+void HUD::Item::draw_line(float x1, float y1, float x2, float y2)
 {
     _hud->_line_list.add(LineSegment(x1, y1, x2, y2));
 }
 
 
-void HUD::Item::draw_stipple_line( float x1, float y1, float x2, float y2)
+void HUD::Item::draw_stipple_line(float x1, float y1, float x2, float y2)
 {
     _hud->_stipple_line_list.add(LineSegment(x1, y1, x2, y2));
 }
 
 
-void HUD::Item::draw_text( float x, float y, char *msg, int digit)
+void HUD::Item::draw_text(float x, float y, char *msg, int digit)
 {
     _hud->_text_list.add(HUDText(x, y, msg, digit));
 }
 
 
-void HUD::Item::draw_circle(float x1, float y1, float r) const
+void HUD::Item::draw_circle(float xoffs, float yoffs, float r) const
 {
     glBegin(GL_LINE_LOOP);
-    for (int count = 0; count < 25; count++) {
-        float cosine = r * cos(count * 2 * SG_PI / 10.0);
-        float sine =   r * sin(count * 2 * SG_PI / 10.0);
-        glVertex2f(cosine + x1, sine + y1);
+    float step = SG_PI / r;
+    for (float alpha = 0; alpha < SG_PI * 2.0; alpha += step) {
+        float x = r * cos(alpha);
+        float y = r * sin(alpha);
+        glVertex2f(x + xoffs, y + yoffs);
     }
     glEnd();
 }
@@ -144,7 +145,7 @@ float HUD::Item::text_width(char *str) const
     assert(_hud->_font_renderer);
     float r, l;
     _hud->_font->getBBox(str, _hud->_font_size, 0, &l, &r, 0, 0);
-    return r - l;
+    return r + l;
 }