f1ec224b73
when building with the c++ compiler.
250 lines
6 KiB
C
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.
|
|
*
|
|
*/
|