1
0
Fork 0
flightgear/Cockpit/hud.h
1998-01-19 18:40:15 +00:00

250 lines
6 KiB
C

/**************************************************************************
* hud.h -- hud defines and prototypes (initial draft)
*
* Written by Michele America, started September 1997.
*
* Copyright (C) 1997 Michele F. America - nomimarketing@mail.telepac.pt
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Id$
* (Log is kept at end of this file)
**************************************************************************/
#ifndef HUD_H
#define HUD_H
#include "../Aircraft/aircraft.h"
#include "../Flight/flight.h"
#include "../Controls/controls.h"
/* Instrument types */
#define ARTIFICIAL_HORIZON 1
#define SCALE 2
#define LADDER 3
#define LABEL 4
/* Scale constants */
#define HORIZONTAL 1
#define TOP 2
#define BOTTOM 3
#define VERTICAL 4
#define LEFT 5
#define RIGHT 6
#define LIMIT 7
#define NOLIMIT 8
/* Label constants */
#define SMALL 1
#define LARGE 2
#define BLINK 3
#define NOBLINK 4
#define LEFT_JUST 5
#define CENTER_JUST 6
#define RIGHT_JUST 7
/* 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
/* Ladder orientaion */
// #define HUD_VERTICAL 1
// #define HUD_HORIZONTAL 2
// #define HUD_FREEFLOAT 3
/* Ladder orientation modes */
// #define HUD_LEFT 1
// #define HUD_RIGHT 2
// #define HUD_TOP 1
// #define HUD_BOTTOM 2
// #define HUD_V_LEFT 1
// #define HUD_V_RIGHT 2
// #define HUD_H_TOP 1
// #define HUD_H_BOTTOM 2
/* Ladder sub-types */
// #define HUD_LIM 1
// #define HUD_NOLIM 2
// #define HUD_CIRC 3
// #define HUD_INSTR_LADDER 1
// #define HUD_INSTR_CLADDER 2
// #define HUD_INSTR_HORIZON 3
// #define HUD_INSTR_LABEL 4
struct HUD_scale {
int type;
int scr_pos;
int scr_min;
int scr_max;
int div_min;
int div_max;
int orientation;
int with_minimum;
int minimum_value;
int width_units;
double (*load_value)( void );
};
struct HUD_circular_scale {
int type;
int scr_pos;
int scr_min;
int scr_max;
int div_min;
int div_max;
int orientation;
int label_position;
int width_units;
double (*load_value)( void );
};
struct HUD_ladder {
int type;
int x_pos;
int y_pos;
int scr_width;
int scr_height;
int scr_hole;
int div_units;
int label_position;
int width_units;
double (*load_roll)( void );
double (*load_pitch)( void );
};
struct HUD_circular_ladder {
int scr_min;
int scr_max;
int div_min;
int div_max;
int orientation;
int label_position;
int width_units;
double (*load_value)( void );
};
#define HORIZON_FIXED 1
#define HORIZON_MOVING 2
struct HUD_horizon {
int type;
int x_pos;
int y_pos;
int scr_width;
int scr_hole;
double (*load_value)( void );
};
#define LABEL_COUNTER 1
#define LABEL_WARNING 2
struct HUD_label {
int type;
int x_pos;
int y_pos;
int size;
int blink;
int justify;
char *pre_str;
char *post_str;
char *format;
double (*load_value)( void );
};
union HUD_instr_data {
struct HUD_scale scale;
struct HUD_circular_scale circ_scale;
struct HUD_ladder ladder;
struct HUD_circular_ladder circ_ladder;
struct HUD_horizon horizon;
struct HUD_label label;
};
typedef struct HUD_instr *HIptr;
struct HUD_instr {
int type;
int sub_type;
int orientation;
union HUD_instr_data instr;
int color;
HIptr next;
};
struct HUD {
int code;
// struct HUD_instr *instruments;
HIptr instruments;
int status;
};
typedef struct HUD *Hptr;
Hptr fgHUDInit( struct fgAIRCRAFT cur_aircraft, int color );
Hptr fgHUDAddHorizon( Hptr hud, int x_pos, int y_pos, int length, int hole_len, double (*load_value)( void ) );
Hptr fgHUDAddScale( Hptr hud, int type, int scr_pos, int scr_min, int scr_max, int div_min, int div_max, \
int orientation, int with_min, int min_value, int width_units, double (*load_value)( void ) );
Hptr fgHUDAddLabel( Hptr hud, int x_pos, int y_pos, int size, int blink, int justify, \
char *pre_str, char *post_str, char *format, double (*load_value)( void ) );
Hptr fgHUDAddLadder( Hptr hud, int x_pos, int y_pos, int scr_width, int scr_height, \
int hole_len, int div_units, int label_pos, int max_value, \
double (*load_roll)( void ), double (*load_pitch)( void ) );
/* struct HUD *fgHUDAddLadder( Hptr hud, int scr_min, int scr_max, int div_min, int div_max, \
int orientation, int max_value, double *(load_value);
struct HUD *fgHUDAddCircularLadder( Hptr hud, int scr_min, int scr_max, int div_min, int div_max, \
int max_value, double *(load_value) );
struct HUD *fgHUDAddNumDisp( Hptr hud, int x_pos, int y_pos, int size, int blink, \
char *pre_str, char *post_str, double *(load_value) ); */
void fgUpdateHUD( Hptr hud );
void fgUpdateHUD2( struct HUD *hud );
#endif /* HUD_H */
/* $Log$
/* Revision 1.4 1998/01/19 18:40:21 curt
/* Tons of little changes to clean up the code and to remove fatal errors
/* when building with the c++ compiler.
/*
* Revision 1.3 1997/12/30 16:36:41 curt
* Merged in Durk's changes ...
*
* Revision 1.2 1997/12/10 22:37:40 curt
* Prepended "fg" on the name of all global structures that didn't have it yet.
* i.e. "struct WEATHER {}" became "struct fgWEATHER {}"
*
* Revision 1.1 1997/08/29 18:03:22 curt
* Initial revision.
*
*/