]> git.mxchange.org Git - flightgear.git/commitdiff
Port more HUD code to use line-segment list.
authorJames Turner <zakalawe@mac.com>
Sun, 31 Jul 2016 21:12:26 +0000 (22:12 +0100)
committerRoland Haeder <roland@mxchange.org>
Thu, 22 Sep 2016 21:27:48 +0000 (23:27 +0200)
src/Instrumentation/HUD/HUD_gauge.cxx
src/Instrumentation/HUD/HUD_instrument.cxx

index b1fe5362f0ef86d99de28193721294b6c820e49e..d9e49e011edb4e54cb3e07b152ec0de8e404ad51 100644 (file)
@@ -147,18 +147,12 @@ void HUD::Gauge::draw(void)
         text_y = _y + ((cur_value - vmin) * factor() /*+.5f*/);
 
         if (option_right()) {
-            glBegin(GL_LINE_STRIP);
-            glVertex2f(_x, text_y + 5);
-            glVertex2f(marker_xe, text_y);
-            glVertex2f(_x, text_y - 5);
-            glEnd();
+            _hud->_line_list.add(LineSegment(_x, text_y + 5, marker_xe, text_y));
+            _hud->_line_list.add(LineSegment(marker_xe, text_y, _x, text_y - 5));
         }
         if (option_left()) {
-            glBegin(GL_LINE_STRIP);
-            glVertex2f(right, text_y + 5);
-            glVertex2f(marker_xs, text_y);
-            glVertex2f(right, text_y - 5);
-            glEnd();
+            _hud->_line_list.add(LineSegment(right, text_y + 5, marker_xs, text_y));
+            _hud->_line_list.add(LineSegment(marker_xs, text_y, right, text_y - 5));
         }
         // End if VERTICAL SCALE TYPE
 
@@ -179,11 +173,8 @@ void HUD::Gauge::draw(void)
 
             marker_ye = _y + _h / 2.0;   // Tick point adjust
             // Bottom arrow
-            glBegin(GL_LINE_STRIP);
-            glVertex2f(marker_xs - bottom_4, _y);
-            glVertex2f(marker_xs, marker_ye);
-            glVertex2f(marker_xs + bottom_4, _y);
-            glEnd();
+            _hud->_line_list.add(LineSegment(marker_xs - bottom_4, _y, marker_xs, marker_ye));
+            _hud->_line_list.add(LineSegment(marker_xs, marker_ye, marker_xs + bottom_4, _y));
         }
 
         if (option_bottom()) {
@@ -193,11 +184,8 @@ void HUD::Gauge::draw(void)
             marker_ys = top - _h / 2.0;
 
             // Top arrow
-            glBegin(GL_LINE_STRIP);
-            glVertex2f(marker_xs + bottom_4, top);
-            glVertex2f(marker_xs, marker_ys );
-            glVertex2f(marker_xs - bottom_4, top);
-            glEnd();
+            _hud->_line_list.add(LineSegment(marker_xs + bottom_4, top, marker_xs, marker_ys));
+            _hud->_line_list.add(LineSegment(marker_xs, marker_ys, marker_xs - bottom_4, top));
         }
 
 
index 69fb3309cbf817b97ddd8b8e5d6a3a33f65fe994..ae0e30e5cd2d80dc8b7876f7287b649b47750d8a 100644 (file)
@@ -114,29 +114,35 @@ void HUD::Item::draw_text(float x, float y, const char *msg, int align, int digi
 
 void HUD::Item::draw_circle(float xoffs, float yoffs, float r) const
 {
-    glBegin(GL_LINE_LOOP);
     float step = SG_PI / r;
-    for (float alpha = 0; alpha < SG_PI * 2.0; alpha += step) {
+    double prevX = r;
+    double prevY = 0.0;
+    for (float alpha = step; alpha < SG_PI * 2.0; alpha += step) {
         float x = r * cos(alpha);
         float y = r * sin(alpha);
-        glVertex2f(x + xoffs, y + yoffs);
+        _hud->_line_list.add(LineSegment(prevX + xoffs, prevY + yoffs,
+                                        x + xoffs, y + yoffs));
+        prevX = x;
+        prevY = y;
     }
-    glEnd();
 }
 
 void HUD::Item::draw_arc(float xoffs, float yoffs, float t0, float t1, float r) const
 {
-    glBegin(GL_LINE_STRIP);
     float step = SG_PI / r;
     t0 = t0 * SG_DEGREES_TO_RADIANS;
     t1 = t1 * SG_DEGREES_TO_RADIANS;
 
-    for (float alpha = t0; alpha < t1; alpha += step) {
+    double prevX = r * cos(t0);
+    double prevY = r * sin(t0);
+    for (float alpha = t0 + step; alpha < t1; alpha += step) {
         float x = r * cos(alpha);
         float y = r * sin(alpha);
-        glVertex2f(x + xoffs, y + yoffs);
+        _hud->_line_list.add(LineSegment(prevX + xoffs, prevY + yoffs,
+                                         x + xoffs, y + yoffs));
+        prevX = x;
+        prevY = y;
     }
-    glEnd();
 }
 
 void HUD::Item::draw_bullet(float x, float y, float size)