]> git.mxchange.org Git - flightgear.git/blob - src/Cockpit/hud_inst.cxx
remove the rest of the static variables (except one); cleanup
[flightgear.git] / src / Cockpit / hud_inst.cxx
1
2 #include "hud.hxx"
3
4
5 UINT instr_item :: instances = 0;  // Initial value of zero
6 int  instr_item :: brightness = 5;/*HUD_BRT_MEDIUM*/
7 //glRGBTRIPLE instr_item :: color = {0.1, 0.7, 0.0};
8 glRGBTRIPLE instr_item :: color = {0.0, 1.0, 0.0};
9
10 // constructor    ( No default provided )
11 instr_item::instr_item(
12         int       x,
13         int       y,
14         UINT      width,
15         UINT      height,
16         FLTFNPTR  data_source,
17         float     data_scaling,
18         UINT      options,
19         bool      working,
20         int       digit) :
21     handle         ( ++instances  ),
22     load_value_fn  ( data_source  ),
23     disp_factor    ( data_scaling ),
24     opts           ( options      ),
25     is_enabled     ( working      ),
26     broken         ( FALSE        ),
27     digits         ( digit        )
28 {
29     scrn_pos.left   = x;
30     scrn_pos.top    = y;
31     scrn_pos.right  = width;
32     scrn_pos.bottom = height;
33
34     // Set up convenience values for centroid of the box and
35     // the span values according to orientation
36
37     if (opts & HUDS_VERT) { // Vertical style
38         // Insure that the midpoint marker will fall exactly at the
39         // middle of the bar.
40         if (!(scrn_pos.bottom % 2))
41             scrn_pos.bottom++;
42
43         scr_span = scrn_pos.bottom;
44
45     } else {
46         // Insure that the midpoint marker will fall exactly at the
47         // middle of the bar.
48         if (!(scrn_pos.right % 2))
49             scrn_pos.right++;
50
51         scr_span = scrn_pos.right;
52     }
53
54     // Here we work out the centroid for the corrected box.
55     mid_span.x = scrn_pos.left   + (scrn_pos.right  >> 1);
56     mid_span.y = scrn_pos.top + (scrn_pos.bottom >> 1);
57 }
58
59
60 // copy constructor
61 instr_item::instr_item( const instr_item & image ) :
62     handle       ( ++instances        ),
63     scrn_pos     ( image.scrn_pos     ),
64     load_value_fn( image.load_value_fn),
65     disp_factor  ( image.disp_factor  ),
66     opts         ( image.opts         ),
67     is_enabled   ( image.is_enabled   ),
68     broken       ( image.broken       ),
69     scr_span     ( image.scr_span     ),
70     mid_span     ( image.mid_span     )
71 {
72 }
73
74
75 instr_item::~instr_item ()
76 {
77     if (instances)
78         instances--;
79 }
80
81
82 void instr_item::update( void )
83 {
84 }
85
86 // break_display       This is emplaced to provide hooks for making
87 //                     instruments unreliable. The default behavior is
88 // to simply not display, but more sophisticated behavior is available
89 // by over riding the function which is virtual in this class.
90
91 void instr_item::break_display ( bool bad )
92 {
93     broken = !!bad;
94     is_enabled = FALSE;
95 }
96
97
98 void instr_item::SetBrightness ( int level  )
99 {
100     brightness = level;   // This is all we will do for now. Later the
101                           // brightness levels will be sensitive both to
102                           // the control knob and the outside light levels
103                           // to emulated night vision effects.
104 }
105
106
107 UINT instr_item::get_Handle( void )
108 {
109     return handle;
110 }
111
112