# include <windows.h>
#endif
-#include <GL/glut.h>
#include <stdlib.h>
#include <string.h>
//# include <values.h> // for MAXINT
//#endif
+#include <algorithm> // for_each()
#include <vector> // STL vector
#include <deque> // STL double ended queue
#include STL_FSTREAM
// controls can be used to set intensity and appropriate color. This will
// be moved.
// Hud general constants
-#define DAY 1
-#define NIGHT 2
-#define BRT_BLACK 3
-#define BRT_DARK 4
-#define BRT_MEDIUM 5
-#define BRT_LIGHT 6
-#define SIZE_SMALL 7
-#define SIZE_LARGE 8
+#define HUD_DAY 1
+#define HUD_NIGHT 2
+#define HUD_BRT_BLACK 3
+#define HUD_BRT_DARK 4
+#define HUD_BRT_MEDIUM 5
+#define HUD_BRT_LIGHT 6
// Label constants
-#define SMALL 1
-#define LARGE 2
-
-#define BLINK 3
-#define NOBLINK 4
+#define HUD_FONT_SMALL 1
+#define HUD_FONT_LARGE 2
enum fgLabelJust{ LEFT_JUST, CENTER_JUST, RIGHT_JUST } ;
-// Ladder constants
-#define NONE 1
-#define UPPER_LEFT 2
-#define UPPER_CENTER 3
-#define UPPER_RIGHT 4
-#define CENTER_RIGHT 5
-#define LOWER_RIGHT 6
-#define LOWER_CENTER 7
-#define LOWER_LEFT 8
-#define CENTER_LEFT 9
-#define SOLID_LINES 10
-#define DASHED_LINES 11
-#define DASHED_NEG_LINES 12
-
-
-#define HORIZON_FIXED 1
-#define HORIZON_MOVING 2
-#define LABEL_COUNTER 1
-#define LABEL_WARNING 2
-
#define HUDS_AUTOTICKS 0x0001
#define HUDS_VERT 0x0002
#define HUDS_HORZ 0x0000
extern float get_rudderval ( void );
extern float get_speed ( void );
extern float get_aoa ( void );
+extern float get_nlf ( void );
extern float get_roll ( void );
extern float get_pitch ( void );
extern float get_heading ( void );
}
};
+class DrawLineSeg2D {
+ public:
+ void operator() (fgLineSeg2D elem) const {
+ elem.draw();
+ }
+};
+
+
#define USE_HUD_TextList
extern float HUD_TextSize;
extern fntRenderer *HUDtext;
void add( fgLineSeg2D seg ) { List.push_back(seg); }
void erase( void ) { List.erase( List.begin(), List.end() ); }
void draw( void ) {
- vector < fgLineSeg2D > :: iterator curSeg;
- vector < fgLineSeg2D > :: iterator lastSeg;
- curSeg = List.begin();
- lastSeg = List.end();
glBegin(GL_LINES);
- for ( ; curSeg != lastSeg; curSeg++ ) {
- curSeg->draw();
- }
+ for_each( List.begin(), List.end(), DrawLineSeg2D());
glEnd();
}
- /* void draw( void ) {
- vector < fgLineSeg2D > :: iterator curSeg;
- vector < fgLineSeg2D > :: iterator lastSeg;
- curSeg = List.begin();
- lastSeg = List.end();
- glBegin(GL_LINES);
- for ( ; curSeg != lastSeg; curSeg++ ) {
- curSeg->draw();
- }
- glEnd();
- } */
};
class fgTextList {
void erase( void ) { List.erase( List.begin(), List.end() ); }
void draw( void ) {
- vector < fgText > :: iterator curString;
- vector < fgText > :: iterator lastString;
- if( Font == 0 ) return;
- curString = List.begin();
- lastString = List.end();
+ if( Font == 0 )
+ return;
+ vector < fgText > :: iterator curString = List.begin();
+ vector < fgText > :: iterator lastString = List.end();
+
glPushAttrib( GL_COLOR_BUFFER_BIT );
glEnable ( GL_ALPHA_TEST ) ;
glEnable ( GL_BLEND ) ;
bool working = true,
int digit = 0); //suma
-
instr_item( const instr_item & image );
instr_item & operator = ( const instr_item & rhs );
};
typedef instr_item *HIptr;
+
+class HUDdraw {
+ public:
+ void operator() (HIptr elem) const {
+ if( elem->enabled())
+ elem->draw();
+ }
+};
+
//typedef deque < instr_item * > hud_deque_type;
//typedef hud_deque_type::iterator hud_deque_iterator;
//typedef hud_deque_type::const_iterator hud_deque_const_iterator;
bool working,
float radius, //suma
int divisions, //suma
- int zoom); //suma
+ int zoom //suma
+ );
~hud_card();
int hat; //suma
+ // The Ladder has it's own temporary display lists
fgTextList TextList;
fgLineList LineList;
fgLineList StippleLineList;
bool working,
int zenith, //suma
int nadir, //suma
- int hat); //suma
+ int hat
+ ); //suma
~HudLadder();
extern void fgUpdateHUD( GLfloat x_start, GLfloat y_start,
GLfloat x_end, GLfloat y_end );
-extern void drawOneLine ( UINT x1, UINT y1, UINT x2, UINT y2);
-extern void drawOneLine ( RECT &rect);
-extern void textString ( int x,
- int y,
- char *msg,
- void *font = GLUT_BITMAP_9_BY_15,int digit=0); //suma
-extern void strokeString( int x,
- int y,
- char *msg,
- void *font = GLUT_STROKE_ROMAN,
- float theta = 0);
-
-//extern void strokeString(float xx,
-// float yy,
-// char *msg,
-// void *font = GLUT_STROKE_ROMAN)
-
/*
bool AddHUDInstrument( instr_item *pBlackBox );
void DrawHUD ( void );