+void fgUpdateHUD( GLfloat x_start, GLfloat y_start,
+ GLfloat x_end, GLfloat y_end )
+{
+ glMatrixMode(GL_PROJECTION);
+ glPushMatrix();
+ glLoadIdentity();
+ gluOrtho2D(x_start, x_end, y_start, y_end);
+
+ glMatrixMode(GL_MODELVIEW);
+ glPushMatrix();
+ glLoadIdentity();
+
+ drawHUD();
+
+ glMatrixMode(GL_PROJECTION);
+ glPopMatrix();
+ glMatrixMode(GL_MODELVIEW);
+ glPopMatrix();
+}
+
+void drawHUD()
+{
+ if( !HUD_deque.size() ) { // Trust everyone, but ALWAYS cut the cards!
+ return;
+ }
+
+ HUD_TextList.erase();
+ HUD_LineList.erase();
+ // HUD_StippleLineList.erase();
+
+ glDisable(GL_DEPTH_TEST);
+ glDisable(GL_LIGHTING);
+
+ static const SGPropertyNode *antialiased_node
+ = fgGetNode("/sim/hud/antialiased", true);
+ static const SGPropertyNode *heading_enabled
+ = fgGetNode("/autopilot/locks/heading", true);
+ static const SGPropertyNode *altitude_enabled
+ = fgGetNode("/autopilot/locks/altitude", true);
+
+ static char hud_hdg_text[256];
+ static char hud_wp0_text[256];
+ static char hud_wp1_text[256];
+ static char hud_wp2_text[256];
+ static char hud_alt_text[256];
+
+ if( antialiased_node->getBoolValue() ) {
+ glEnable(GL_LINE_SMOOTH);
+ // glEnable(GL_BLEND);
+ glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
+ glHint(GL_LINE_SMOOTH_HINT,GL_DONT_CARE);
+ glLineWidth(2.0);
+ } else {
+ glLineWidth(1.0);
+ }
+
+ if( global_day_night_switch == HUD_DAY) {
+ switch (HUD_deque[0]->get_brightness())
+ {
+ case HUD_BRT_LIGHT:
+ set_hud_color (0.1f, 0.9f, 0.1f);
+ break;
+
+ case HUD_BRT_MEDIUM:
+ set_hud_color (0.1f, 0.7f, 0.0f);
+ break;
+
+ case HUD_BRT_DARK:
+ set_hud_color (0.0f, 0.6f, 0.0f);
+ break;
+
+ case HUD_BRT_BLACK:
+ set_hud_color( 0.0f, 0.0f, 0.0f);
+ break;
+
+ default:
+ set_hud_color (0.1f, 0.9f, 0.1f);
+ }
+ } else {
+ if( global_day_night_switch == HUD_NIGHT) {
+ switch (HUD_deque[0]->get_brightness())
+ {
+ case HUD_BRT_LIGHT:
+ set_hud_color (0.9f, 0.1f, 0.1f);
+ break;
+
+ case HUD_BRT_MEDIUM:
+ set_hud_color (0.7f, 0.0f, 0.1f);
+ break;
+
+ case HUD_BRT_DARK:
+ set_hud_color (0.6f, 0.0f, 0.0f);
+ break;
+
+ case HUD_BRT_BLACK:
+ set_hud_color( 0.0f, 0.0f, 0.0f);
+ break;
+
+ default:
+ set_hud_color (0.6f, 0.0f, 0.0f);
+ }
+ } else { // Just in case default
+ set_hud_color (0.1f, 0.9f, 0.1f);
+ }
+ }
+
+ for_each(HUD_deque.begin(), HUD_deque.end(), HUDdraw());