Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members | Related Pages

Gauges.h

Go to the documentation of this file.
00001 /*
00002  * Gauges.h
00003  *
00004  * Part of Fly! Legacy project
00005  *
00006  * Copyright 2003 Chris Wallace
00007  *
00008  * Fly! Legacy is free software; you can redistribute it and/or modify
00009  *   it under the terms of the GNU General Public License as published by
00010  *   the Free Software Foundation; either version 2 of the License, or
00011  *   (at your option) any later version.
00012  *
00013  * Fly! Legacy is distributed in the hope that it will be useful,
00014  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
00015  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016  *   GNU General Public License for more details.
00017  *
00018  * You should have received a copy of the GNU General Public License
00019  *   along with Fly! Legacy; if not, write to the Free Software
00020  *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00021  *
00022  */
00023 
00029 #ifndef GAUGES_H
00030 #define GAUGES_H
00031 
00032 
00033 #include "FlyLegacy.h"
00034 #include "Utility.h"
00035 
00036 
00037 //
00038 // Macro definitions for all valid gauge types.  These correspond to the gauge
00039 //   type in each <gage> object within a PNL file.
00040 //
00041 
00042 #define GAUGE_BASE            'gage'
00043 #define GAUGE_BITMAP          'bgge'
00044 #define GAUGE_NEEDLE          'need'
00045 #define GAUGE_NEEDLE_DUAL       '2ned'
00046 #define GAUGE_NEEDLE_TRIPLE       '3ned'
00047 #define GAUGE_DIGITAL_NEEDLE      'dned'
00048 #define GAUGE_ALTIMETER         'alti'
00049 #define GAUGE_ALTIMETER_ROLLING     'altr'
00050 #define GAUGE_HORIZON         'hori'
00051 #define GAUGE_HORIZON_FD        'fdhz'
00052 #define GAUGE_HORIZONTAL_BALL     'hbal'
00053 #define GAUGE_AIRSPEED          'aspd'
00054 #define GAUGE_VERTICAL_SPEED      'vspd'
00055 #define GAUGE_DIRECTIONAL_GYRO      'gyro'
00056 #define GAUGE_VACUUM          'vacu'
00057 #define GAUGE_SUCTION         'suct'
00058 #define GAUGE_FUEL            'fuel'
00059 #define GAUGE_FUEL_FLOW         'fflw'
00060 #define GAUGE_OIL_PRESSURE        'oilp'
00061 #define GAUGE_OIL_TEMPERATURE     'oilt'
00062 #define GAUGE_TACHOMETER        'tach'
00063 #define GAUGE_TACHOMETER_DUAL     'dtch'
00064 #define GAUGE_N1_TACHOMETER       'n1ng'
00065 #define GAUGE_EXHAUST_GAS_TEMP      'egtg'
00066 #define GAUGE_BASIC_COMPASS       'comp'
00067 #define GAUGE_AMMETER         'amms'
00068 #define GAUGE_ANALOG_CLOCK        'aclk'
00069 #define GAUGE_DIGITAL_CLOCK_FLYHAWK   'cdcg'
00070 #define GAUGE_DIGITAL_CLOCK_BASIC   'bdcg'
00071 #define GAUGE_ADF_BASIC         'adfg'
00072 #define GAUGE_DIGITAL_READOUT     'dgrg'
00073 #define GAUGE_DIGITS_READOUT      'drog'
00074 #define GAUGE_CABIN_PRESSURE_RATE   'cprk'
00075 #define GAUGE_CABIN_PRESSURE      'cprs'
00076 #define GAUGE_BRAKE_PRESSURE      'brpg'
00077 #define GAUGE_AOA           'aoan'
00078 #define GAUGE_TURN_COORDINATOR      'turn'
00079 #define GAUGE_SLIP_INDICATOR      'slip'
00080 #define GAUGE_HOBBS_METER       'hobb'
00081 #define GAUGE_NAVIGATION        'navg'
00082 #define GAUGE_AUTOPILOT         'atop'
00083 #define GAUGE_NAV_COMM_KX155      'k155'
00084 #define GAUGE_GPS_KLN89         'kl89'
00085 #define GAUGE_XPDR_KT76         'kt76'
00086 #define GAUGE_ADF_KR87          'kr87'
00087 #define GAUGE_AUTOPILOT_KAP140      'ka14'
00088 #define GAUGE_AUTOPILOT_KFC200      'kf20'
00089 #define GAUGE_AUTOPILOT_KFC150      'kf15'
00090 #define GAUGE_AUDIO_KMA26       'kma2'
00091 #define GAUGE_HSI           'hsi_'
00092 #define GAUGE_FLYHAWK_ELT       'selt'
00093 #define GAUGE_NAV_RADIO_GENERIC     'navr'
00094 #define GAUGE_COMM_RADIO_GENERIC    'comr'
00095 #define GAUGE_TRANSPONDER_GENERIC   'xpdr'
00096 #define GAUGE_ADF_GENERIC       'adf_'
00097 #define GAUGE_RMI_NEEDLE        'rmig'
00098 #define GAUGE_NAV_RADIO_GROUP     'ngrp'
00099 #define GAUGE_COM_RADIO_GROUP     'cgrp'
00100 #define GAUGE_NAV_GAUGE_GROUP     'ogrp'
00101 #define GAUGE_TRANSPONDER_RADIO_GROUP 'tgrp'
00102 #define GAUGE_ADF_RADIO_GROUP     'agrp'
00103 #define GAUGE_RADIO_GAUGE_GROUP     'radg'
00104 #define GAUGE_ANNUNCIATOR       'annc'
00105 #define GAUGE_FLYHAWK_ANNUNCIATOR   'shan'
00106 #define GAUGE_FLYHAWK_ANNUNCIATOR_TEST  'shts'
00107 #define GAUGE_FLYHAWK_NAV_GPS_PANEL   'sngp'
00108 #define GAUGE_FLYHAWK_FUEL_SELECTOR   'shfs'
00109 #define GAUGE_FLYHAWK_ELEVATOR_TRIM   'shet'
00110 #define GAUGE_MALIBU_CHT_INDICATOR    'mcht'
00111 #define GAUGE_MALIBU_CHT_BUTTON     'mchb'
00112 #define GAUGE_MALIBU_NAV_GPS_PANEL    'mngp'
00113 #define GAUGE_MALIBU_DIGITAL_CLOCK    'mdcg'
00114 #define GAUGE_MALIBU_FUEL_SELECT    'mfss'
00115 #define GAUGE_MALIBU_ENGINE_MONITOR   'pmem'
00116 #define GAUGE_NAVAJO_FUEL_SELECTOR    'njfs'
00117 #define GAUGE_NAVAJO_AMMETER      'namp'
00118 #define GAUGE_NAVAJO_RADAR_ALTIMETER  'nral'
00119 #define GAUGE_COLLINS_EFIS_SELECTION  'cesp'
00120 #define GAUGE_COLLINS_VSPEED_PANEL    'cvsp'
00121 #define GAUGE_COLLINS_HF_RADIO      'khfr'
00122 #define GAUGE_COLLINS_PFD       'cpfd'
00123 #define GAUGE_COLLINS_ND        'cnvd'
00124 #define GAUGE_COLLINS_RTU       'crtu'
00125 #define GAUGE_COLLINS_AD        'cadd'
00126 #define GAUGE_COLLINS_MND       'cmnd'
00127 #define GAUGE_UNIVERSAL_FMS       'ufms'
00128 #define GAUGE_PILATUS_EFIS_PANEL    'pefs'
00129 #define GAUGE_WALKER_TEMP_AIRSPEED    'hsat'
00130 #define GAUGE_GYRO_SLAVING        'gslv'
00131 #define GAUGE_VERTICAL_RATE       'vert'
00132 #define GAUGE_PROP_SYNC         'sync'
00133 #define GAUGE_DME           'dmei'
00134 #define GAUGE_DME_2           'dme2'
00135 #define GAUGE_WEATHER_RADAR       'wrad'
00136 #define GAUGE_ANALOG_ALT_PRESELECT    'apre'
00137 #define GAUGE_TCAS            'tcas'
00138 
00139 #define GAUGE_HOTSPOT         'hspt'
00140 #define GAUGE_SIMPLE_IN_OUT       'sios'
00141 #define GAUGE_LIT_IN_OUT        'lios'
00142 #define GAUGE_SIMPLE_SWITCH       'swit'
00143 #define GAUGE_BATTERY_SWITCH      'batt'
00144 #define GAUGE_TWO_STATE_ELT       'elt_'
00145 #define GAUGE_SWITCH_PAIR       'pair'
00146 #define GAUGE_SIMPLE_FLOAT_SWITCH   'fswi'
00147 #define GAUGE_DUAL_SWITCH       'dswi'
00148 #define GAUGE_PUSH_PULL_KNOB      'knob'
00149 #define GAUGE_PRIMER_KNOB       'prim'
00150 #define GAUGE_FLAP            'flap'
00151 #define GAUGE_LIT_LANDING_GEAR_KNOB   'llgr'
00152 #define GAUGE_MIXTURE_KNOB        'mixt'
00153 #define GAUGE_REVERSIBLE_THROTTLE_KNOB  'revt'
00154 #define GAUGE_DUAL_KNOB         'dual'
00155 #define GAUGE_FLYHAWK_LIGHT_KNOB    'shlk'
00156 #define GAUGE_TURN_KNOB         'tknb'
00157 #define GAUGE_MAGNETO_SWITCH      'magn'
00158 #define GAUGE_COVERED_SWITCH      'cswi'
00159 #define GAUGE_COVERED_LIGHT_BUTTON    'cbtn'
00160 #define GAUGE_VERTICAL_SLIDER     'vsld'
00161 #define GAUGE_TRIM_WHEEL        'twhl'
00162 #define GAUGE_TRIM_WHEEL_INDICATOR    'twhi'
00163 #define GAUGE_INDICATOR         'indi'
00164 #define GAUGE_FLAPS_INDICATOR     'find'
00165 #define GAUGE_PUSHBUTTON        'push'
00166 #define GAUGE_LIGHT_BUTTON        'lbut'
00167 #define GAUGE_TURN_SWITCH       'tswi'
00168 #define GAUGE_MASTER_CAUTION_BUTTON   'mcwb'
00169 #define GAUGE_KINGAIR_FIRE_EXT      'kafe'
00170 #define GAUGE_WALKER_AP_PANEL     'happ'
00171 #define GAUGE_WALKER_FIRE_PANEL     'rhfp'
00172 #define GAUGE_LIGHT_SWITCH_SET      'lssg'
00173 #define GAUGE_ROCKER_SWITCH       'rock'
00174 
00175 //
00176 // Attic.  The following gauge identifiers are listed in the Fly! II class
00177 //   list documentation, but no known examples exist.  They are unimplemented
00178 //   at the present time.
00179 //
00180 #define GAUGE_ATTITUDE_INDICATOR    'atti'
00181 #define GAUGE_GHOST           'ghst'
00182 #define GAUGE_NAV_RADIO         'nrdg'
00183 #define GAUGE_NAV_RADIO_KN53      'kn53'
00184 #define GAUGE_NAV_RADIO_KN80      'kn80'
00185 #define GAUGE_COMM_RADIO        'comm'
00186 #define GAUGE_COMM_RADIO_KY96     'ky96'
00187 #define GAUGE_TRANSPONDER_KT79      'kt79'
00188 #define GAUGE_AUTOPILOT         'atop'
00189 
00190 
00191 // For convenience in some gauge definitions, this struct represents
00192 //   an art (PBG or PBM) filename plus an x,y offset for the top-left
00193 //   corner of the artwork relative to the top-left of the gauge
00194 typedef struct {
00195   char    art[64];
00196   int     x, y;
00197 } SArtOffset;
00198 
00199 
00200 // For convenience in some gauge definitions, this struct represents
00201 //   an art (PBG or PBM) filename plus an x1,y1 and x2,y2 boundaries
00202 //   of the artwork relative to the top-left corner of the gauge.
00203 typedef struct {
00204   char    art[64];
00205   int     x1, y1, x2, y2;
00206 } SArtRectangle;
00207 
00208 
00209 // For convenience in some gauge definitions, this struct represents
00210 //   a click area within a knob.  The ytop and ybtm are the upper and
00211 //   lower pixel row offsets within the gauge corresponding to the click
00212 //   area.  The help value is the popup help string, and the value field
00213 //   indicates the knob value when this click area is activated.
00214 typedef struct {
00215   int     ytop;
00216   int     ybtm;
00217   float   valu;
00218   char    help[64];
00219 } SKnobArea;
00220 
00221 //
00222 // CGaugeNeedle
00223 //
00224 // Helper class for many types of gauges which use analog needles for data display
00225 //
00226 class CGaugeNeedle : public CStreamObject {
00227 public:
00228   CGaugeNeedle (void);
00229   virtual ~CGaugeNeedle (void);
00230 
00231   // CStream methods
00232   virtual int   Read (SStream *stream, Tag tag);
00233   virtual void  ReadFinished (void);
00234 
00235   // CGaugeNeedle methods
00236   virtual void  Draw (SSurface *surface, float degrees, int cx, int cy);
00237 
00238 public:
00239   Tag   tag;
00240 
00241 protected:
00242   bool  shar;   // Shared across multiple aircraft; currently ignored
00243   int   sizx;   // X size
00244   int   sizy;   // Y size
00245   int   offx;   // X offset
00246   int   offy;   // Y offset
00247   int   mind;   // Minimum degrees
00248   int   maxd;   // Maximum degrees
00249   char  base[64]; // Base filename of PBG bitmap
00250 
00251   SBitmap *bmap;    // Needle animation bitmap
00252   int   nFrames;  // Number of frames in the bitmap
00253 
00254   // Temporary kluge to prevent ReadFinished() from being called twice
00255   bool readFinished;
00256 };
00257 
00258 
00259 //
00260 // CGaugeRectangle
00261 //
00262 class CGaugeRectangle : public CStreamObject {
00263 public:
00264   CGaugeRectangle (void);
00265   virtual ~CGaugeRectangle (void) {}
00266 
00267   // CStreamObject methods
00268   virtual int   Read (SStream *stream, Tag tag);
00269 
00270 public:
00271   int   x1, y1, x2, y2;   // (x1, y1) top-left, (x2, y2) bottom-right
00272 };
00273 
00274 
00275 //
00276 // CGaugeClickArea
00277 //
00278 class CGaugeClickArea : public CGaugeRectangle {
00279 public:
00280   CGaugeClickArea (void);
00281   virtual ~CGaugeClickArea (void);
00282 
00283   // CStreamObject methods
00284   virtual int   Read (SStream *stream, Tag tag);
00285   virtual void  ReadFinished (void);
00286 
00287   // CGaugeClickArea methods
00288   virtual bool          IsHit (int x, int y);
00289   virtual void          Draw (SSurface *surface, int frame);
00290   virtual ECursorResult MouseMoved (int x, int y);
00291 
00292 protected:
00293   char  bmap[64];     // Optional bitmap overlay
00294   char  curs[64];     // Custom cursor when mouse is over click area
00295   Tag   cursTag;      // Unique tag for custom cursor
00296   char  help[64];     // Custom popup help
00297 
00298   SBitmap   *bm;      // Optional bitmap
00299 };
00300 
00301 
00302 //
00303 // CGaugeKnob
00304 //
00305 class CGaugeKnob : public CGaugeClickArea {
00306 public:
00307   CGaugeKnob (void);
00308   virtual ~CGaugeKnob (void);
00309 
00310   // CStreamObject methods
00311   int   Read (SStream *stream, Tag tag);
00312   void  ReadFinished (void);
00313 
00314   // CGaugeKnob methods
00315   virtual void  Draw (float rotation);
00316   virtual void  SetOffset (int offset_x, int offset_y);
00317 
00318 public:
00319   char  bmap[64];     // Filename of knob artwork
00320   SBitmap *bmKnob;
00321 
00322   int offset_x, offset_y;   // Offset within owner gauge
00323   SSurface *surf;
00324 };
00325 
00326 
00327 //
00328 // CGaugeAnnunciator
00329 //
00330 class CGaugeAnnunciator : public CGaugeClickArea {
00331 public:
00332   CGaugeAnnunciator (void);
00333 
00334   // CStreamObject methods
00335   int   Read (SStream *stream, Tag tag);
00336 
00337 protected:
00338 };
00339 
00340 
00341 
00342 //
00343 // CGauge is the abstract parent class for all gauges.
00344 //
00345 
00351 class CGauge : public CStreamObject {
00352 public:
00353   CGauge (void);
00354 
00355   // CStreamObject methods
00356   virtual int   Read (SStream *stream, Tag tag);
00357   virtual void  ReadFinished (void);
00358 
00359   // CGauge methods
00360   virtual void        GetSize (int* x1, int* y1, int*x2, int* y2);
00361   virtual void        Update (void);
00362   virtual void        Draw (void);
00363   virtual void        Blit (int xOffset, int yOffset, int y_isiz);
00364   virtual SSurface*   GetSurface (void);
00365   void                ClearSurface (void);
00366 
00367   virtual EClickResult  MouseClick (int x, int y, int buttons);
00368   virtual EClickResult  TrackClick (int x, int y, int buttons);
00369   virtual EClickResult  StopClick (int x, int y, int buttons);
00370   virtual ECursorResult MouseMoved (int x, int y);
00371 
00372 protected:
00373   Tag       type;       // Gauge type
00374   Tag       unid;       // Unique gauge ID within panel
00375   char      unid_s[8];  // String version of unique ID tag
00376   int       x, y, w, h; // (x,y) top-left and (w,h) width, height
00377   int       cx, cy;     // Center offset
00378   SMessage  mesg;       // Message for indication value
00379   float     gmin, gmax; // Minimum and maximum gauge value
00380   CDataMap  gtbl;       // Mapping table of indication to gauge value
00381   Tag       lite;       // ID of light that illuminates this gauge
00382   char      mask[64];   // Light mask filename (.RAW)
00383   bool      fore;       // Draw gauge in foreground
00384   char      curs[64];   // Custom cursor (.csr filename)
00385   Tag       cursTag;    // Unique tag for custom cursor
00386   char      help[64];   // Help popup
00387   char      dtyp[64];   // Data type
00388   char      dfmt[64];   // Display format
00389   bool      nomc;       // No mouse clicks
00390   bool      igno;       // Ignore match?
00391 
00392   SSurface* surf;       // Drawing surface for the gauge
00393 
00394   int     last_state;   // State value at last update
00395   float   value;        // Gauge value
00396 
00397 public:
00398   static  int sfx_source;   // Audio manager source to play gauge sound effects
00399 };
00400 
00401 
00402 //
00403 // CBitmapGauge
00404 //
00405 class CBitmapGauge : public CGauge {
00406 public:
00407   CBitmapGauge (void);
00408   virtual ~CBitmapGauge (void);
00409 
00410   // CStreamObject methods
00411   virtual int   Read (SStream *stream, Tag tag);
00412   virtual void  ReadFinished (void);
00413 
00414   // CGauge methods
00415   virtual void  Draw (void);
00416 
00417   // CBitmapGauge methods
00418   virtual void  DrawUnderlay (void);
00419   virtual void  DrawOverlay (void);
00420 
00421 
00422 protected:
00423   SArtOffset  bmap;       // Underlay bitmap and offset
00424   SArtOffset  over;       // Overlay bitmap and offset
00425 
00426   SBitmap   *bmUnderlay, *bmOverlay;
00427 };
00428 
00429 
00430 //
00431 // CNeedleGauge
00432 //
00433 class CNeedleGauge : public CBitmapGauge {
00434 public:
00435   CNeedleGauge (void);
00436   virtual ~CNeedleGauge (void) {}
00437 
00438   // CStreamObject methods
00439   virtual int  Read (SStream *stream, Tag tag);
00440   virtual void Draw (void);
00441 
00442 protected:
00443   int       radi;   // Radius in pixels
00444   float     sang;   // Starting angle (degrees)
00445   float     dunt;   // Degrees per unit
00446   float     rang_min; // Minimum range (degrees)
00447   float     rang_max; // Maximum range (degrees)
00448   int       noff_x;   // Needle center offset
00449   int       noff_y;
00450   bool      noac;   // No auto-center
00451   CGaugeNeedle  nedl;
00452 };
00453 
00454 
00455 //
00456 // CTwoNeedleGauge
00457 //
00458 class CTwoNeedleGauge : public CBitmapGauge {
00459 public:
00460   CTwoNeedleGauge (void);
00461 
00462   // CStreamObject methods
00463   int   Read (SStream *stream, Tag tag);
00464 
00465 protected:
00466   CNeedleGauge  ndl1;
00467   CNeedleGauge  ndl2;
00468 };
00469 
00470 
00471 //
00472 // CThreeNeedleGauge
00473 //
00474 class CThreeNeedleGauge : public CBitmapGauge {
00475 public:
00476   CThreeNeedleGauge (void);
00477 
00478   // CStreamObject methods
00479   virtual int   Read (SStream *stream, Tag tag);
00480 
00481 protected:
00482   CNeedleGauge  ndl1;
00483   CNeedleGauge  ndl2;
00484   CNeedleGauge  ndl3;
00485 };
00486 
00487 
00488 //
00489 // CDigitalNeedleGauge
00490 //
00491 class CDigitalNeedleGauge : public CNeedleGauge {
00492 public:
00493   CDigitalNeedleGauge (void);
00494 
00495   // CStreamObject methods
00496   int   Read (SStream *stream, Tag tag);
00497 
00498 protected:
00499   CGaugeNeedle  nndl;
00500   SArtOffset    nbak;
00501   SMessage    powr;
00502 };
00503 
00504 
00505 //
00506 // CAltimeterGauge
00507 //
00508 class CAltimeterGauge : public CBitmapGauge {
00509 public:
00510   CAltimeterGauge (void);
00511   virtual ~CAltimeterGauge (void);
00512 
00513   // CStreamObject methods
00514   virtual int   Read (SStream *stream, Tag tag);
00515 
00516   // CGauge methods
00517   virtual ECursorResult MouseMoved (int x, int y);
00518 
00519 protected:
00520   int             psiz_x, psiz_y;
00521   CNeedleGauge    *ndl1;
00522   CNeedleGauge    *ndl2;
00523   CNeedleGauge    *ndl3;
00524   char            csrl_csr[64];
00525   char            csrr_csr[64];       // CSR filenames for custom cursors
00526   Tag             csrl_tag, csrr_tag; // Unique tags for custom cursors
00527   CGaugeClickArea koll;
00528   int             kpxy_x, kpxy_y;
00529   CGaugeKnob      knob;
00530   SMessage        kmsg;
00531 };
00532 
00533 
00534 //
00535 // CRollingAltimeterGauge
00536 //
00537 class CRollingAltimeterGauge : public CBitmapGauge {
00538 public:
00539   CRollingAltimeterGauge (void);
00540 
00541   // CStreamObject methods
00542   int   Read (SStream *stream, Tag tag);
00543 
00544   // CGauge methods
00545   virtual ECursorResult MouseMoved (int x, int y);
00546 
00547 protected:
00548   int       psiz_x, psiz_y;
00549   char      zdig_art[64];
00550   char      ndig_art[64];
00551   char      tdig_art[64];
00552   int       digx[4];
00553   int       digy;
00554   int       dsiz_x, dsiz_y;
00555   CNeedleGauge  ndl1;
00556   CGaugeClickArea koll;
00557   CGaugeKnob    knob;
00558   SMessage    kmsg;
00559 };
00560 
00561 
00562 //
00563 // CHorizonGauge
00564 //
00565 class CHorizonGauge : public CBitmapGauge {
00566 public:
00567   CHorizonGauge (void);
00568 
00569   // CStreamObject methods
00570   int   Read (SStream *stream, Tag tag);
00571 
00572   // CGauge methods
00573   virtual ECursorResult MouseMoved (int x, int y);
00574 
00575 protected:
00576   SArtOffset  foot;
00577   SArtOffset  horz;
00578   int     hoff;
00579   SArtOffset  irim;
00580   SArtOffset  orim;
00581   SArtOffset  fron;
00582   float   pixd;
00583   int     moff;
00584   CGaugeKnob  knob;
00585   char    flag_art[64];
00586   SMessage  pich;
00587   SMessage  roll;
00588 };
00589 
00590 
00591 //
00592 // CFDHorizonGauge
00593 //
00594 class CFDHorizonGauge : public CHorizonGauge {
00595 public:
00596   CFDHorizonGauge (void);
00597 
00598   // CStreamObject methods
00599   int   Read (SStream *stream, Tag tag);
00600 
00601 protected:
00602   SArtOffset  bars;
00603 };
00604 
00605 
00606 //
00607 // CHorizontalBallGauge
00608 //
00609 class CHorizontalBallGauge : public CBitmapGauge {
00610 public:
00611   CHorizontalBallGauge (void);
00612 
00613   // CStreamObject methods
00614   int   Read (SStream *stream, Tag tag);
00615 
00616 protected:
00617 };
00618 
00619 
00620 //
00621 // CAirspeedGauge
00622 //
00623 class CAirspeedGauge : public CNeedleGauge {
00624 public:
00625   CAirspeedGauge (void);
00626 
00627   // CStreamObject methods
00628   virtual int   Read (SStream *stream, Tag tag);
00629 
00630   // CGauge methods
00631   virtual ECursorResult MouseMoved (int x, int y);
00632 
00633 protected:
00634   CGaugeKnob    knob;   // Kollsman knob
00635   CNeedleGauge  mmo_;   // MMO indicator
00636 };
00637 
00638 
00639 //
00640 // CVerticalSpeedGauge
00641 //
00642 class CVerticalSpeedGauge : public CNeedleGauge {
00643 public:
00644   CVerticalSpeedGauge (void);
00645   virtual ~CVerticalSpeedGauge (void);
00646 
00647   // CStreamObject methods
00648   virtual int   Read (SStream *stream, Tag tag);
00649   virtual void  ReadFinished (void);
00650 
00651   // CGauge methods
00652   virtual ECursorResult MouseMoved (int x, int y);
00653 
00654   // CGauge methods
00655   virtual void Draw (void);
00656 
00657 protected:
00658   SArtOffset    vsbg;
00659   CGaugeKnob    vskb;
00660   SMessage      vmsg;
00661 
00662   SBitmap       *bmBug;
00663 };
00664 
00665 
00666 //
00667 // CDirectionalGyroGauge
00668 //
00669 class CDirectionalGyroGauge : public CNeedleGauge {
00670 public:
00671   CDirectionalGyroGauge (void);
00672 
00673   // CStreamObject methods
00674   int   Read (SStream *stream, Tag tag);
00675 
00676 protected:
00677   SArtOffset    apbg;
00678   SArtRectangle apkb;
00679   SArtRectangle knob;
00680   Tag       bias;
00681 };
00682 
00683 
00684 //
00685 // CVacuumGauge
00686 //
00687 class CVacuumGauge : public CNeedleGauge {
00688 public:
00689   CVacuumGauge (void);
00690 
00691   // CStreamObject methods
00692   int   Read (SStream *stream, Tag tag);
00693 
00694 protected:
00695 };
00696 
00697 
00698 //
00699 // CSuctionGauge
00700 //
00701 class CSuctionGauge : public CNeedleGauge {
00702 public:
00703   CSuctionGauge (void);
00704 
00705   // CStreamObject methods
00706   int   Read (SStream *stream, Tag tag);
00707 
00708 protected:
00709 };
00710 
00711 
00712 //
00713 // CFuelGauge
00714 //
00715 class CFuelGauge : public CNeedleGauge {
00716 public:
00717   CFuelGauge (void);
00718 
00719   // CStreamObject methods
00720   int   Read (SStream *stream, Tag tag);
00721 
00722 protected:
00723 };
00724 
00725 
00726 //
00727 // CFuelFlowGauge
00728 //
00729 class CFuelFlowGauge : public CNeedleGauge {
00730 public:
00731   CFuelFlowGauge (void);
00732 
00733   // CStreamObject methods
00734   int   Read (SStream *stream, Tag tag);
00735 
00736 protected:
00737 };
00738 
00739 
00740 //
00741 // COilPressureGauge
00742 //
00743 class COilPressureGauge : public CNeedleGauge {
00744 public:
00745   COilPressureGauge (void);
00746 
00747   // CStreamObject methods
00748   int   Read (SStream *stream, Tag tag);
00749 
00750 protected:
00751 };
00752 
00753 
00754 //
00755 // COilTemperatureGauge
00756 //
00757 class COilTemperatureGauge : public CNeedleGauge {
00758 public:
00759   COilTemperatureGauge (void);
00760 
00761   // CStreamObject methods
00762   int   Read (SStream *stream, Tag tag);
00763 
00764 protected:
00765 };
00766 
00767 
00768 //
00769 // CTachometerGauge
00770 //
00771 class CTachometerGauge : public CNeedleGauge {
00772 public:
00773   CTachometerGauge (void);
00774 
00775   // CStreamObject methods
00776   int   Read (SStream *stream, Tag tag);
00777 
00778 protected:
00779   bool    hobb;   // Integrated Hobbs meter
00780 };
00781 
00782 
00783 //
00784 // CDualTachometerGauge
00785 //
00786 class CDualTachometerGauge : public CTwoNeedleGauge {
00787 public:
00788   CDualTachometerGauge (void);
00789 
00790   // CStreamObject methods
00791   int   Read (SStream *stream, Tag tag);
00792 
00793 protected:
00794 };
00795 
00796 
00797 //
00798 // CN1TachometerGauge
00799 //
00800 class CN1TachometerGauge : public CTwoNeedleGauge {
00801 public:
00802   CN1TachometerGauge (void);
00803 
00804   // CStreamObject methods
00805   int   Read (SStream *stream, Tag tag);
00806 
00807   // CGauge methods
00808   virtual ECursorResult MouseMoved (int x, int y);
00809 
00810 protected:
00811   CGaugeKnob  knob;
00812 };
00813 
00814 
00815 //
00816 // CExhaustGasTemperatureGauge
00817 //
00818 class CExhaustGasTemperatureGauge : public CNeedleGauge {
00819 public:
00820   CExhaustGasTemperatureGauge (void);
00821 
00822   // CStreamObject methods
00823   int   Read (SStream *stream, Tag tag);
00824 
00825 protected:
00826   float egtr;
00827   char  egtn_art[64];
00828 };
00829 
00830 
00831 //
00832 // CBasicCompassGauge
00833 //
00834 class CBasicCompassGauge : public CBitmapGauge {
00835 public:
00836   CBasicCompassGauge (void);
00837 
00838   // CStreamObject methods
00839   int   Read (SStream *stream, Tag tag);
00840 
00841 protected:
00842   char  comp_art[64];
00843   int   wind;
00844   int   orgx;
00845   int   nton;
00846 };
00847 
00848 
00849 //
00850 // CAnalogClockGauge
00851 //
00852 class CAnalogClockGauge : public CTwoNeedleGauge {
00853 public:
00854   CAnalogClockGauge (void);
00855 
00856   // CStreamObject methods
00857   int   Read (SStream *stream, Tag tag);
00858 
00859 protected:
00860 };
00861 
00862 
00863 //
00864 // CAmmeterGauge
00865 //
00866 class CAmmeterGauge : public CNeedleGauge {
00867 public:
00868   CAmmeterGauge (void);
00869 
00870   // CStreamObject methods
00871   int   Read (SStream *stream, Tag tag);
00872 
00873 protected:
00874 };
00875 
00876 
00877 //
00878 // CFlyhawkDigitalClockGauge
00879 //
00880 class CFlyhawkDigitalClockGauge : public CBitmapGauge {
00881 public:
00882   CFlyhawkDigitalClockGauge (void);
00883 
00884   // CStreamObject methods
00885   int   Read (SStream *stream, Tag tag);
00886 
00887   // CGauge methods
00888   virtual ECursorResult MouseMoved (int x, int y);
00889 
00890 protected:
00891   int         oatd_x1, oatd_y1, oatd_x2, oatd_y2; // Outside Air Temp display
00892   int         clkd_x1, clkd_y1, clkd_x2, clkd_y2; // Clock display
00893   CGaugeClickArea   bupp;               // Upper button
00894   CGaugeClickArea   bsel;               // Select button
00895   CGaugeClickArea   bcon;               // Control button
00896   CGaugeClickArea   bbot;               // Bottom (both SEL and CON) buttons
00897   bool        ft13;               // Use 13-point font
00898   bool        noco;               // No colon between hour and minute
00899   int         cgap;               // Gap distance (pixels) for colon
00900   int         frgb_r, frgb_g, frgb_b;       // Font RGB colour
00901 };
00902 
00903 
00904 //
00905 // CBasicDigitalClockGauge
00906 //
00907 class CBasicDigitalClockGauge : public CFlyhawkDigitalClockGauge {
00908 public:
00909   CBasicDigitalClockGauge (void);
00910 
00911   // CStreamObject methods
00912   int   Read (SStream *stream, Tag tag);
00913 
00914 protected:
00915   int         tick_x, tick_y;
00916   int         tkut;
00917   int         tklt;
00918   int         tkft;
00919   int         tket;
00920 };
00921 
00922 
00923 //
00924 // CBasicADFGauge
00925 //
00926 class CBasicADFGauge : public CNeedleGauge {
00927 public:
00928   CBasicADFGauge (void);
00929   virtual ~CBasicADFGauge (void);
00930 
00931   // CStreamObject methods
00932   int   Read (SStream *stream, Tag tag);
00933   void  ReadFinished (void);
00934 
00935   // CGauge methods
00936   virtual ECursorResult MouseMoved (int x, int y);
00937   virtual EClickResult  MouseClick (int x, int y, int buttons);
00938   virtual void          Draw (void);
00939   virtual void          Blit (int xOffset, int yOffset, int y_isiz);
00940 
00941 protected:
00942   Tag           comp_tag;
00943   CGaugeNeedle  *comp;
00944   CGaugeKnob    *knob;
00945   CGaugeNeedle  *hdng;
00946   float         compass;      // Compass card setting
00947 };
00948 
00949 
00950 //
00951 // CDigitalReadoutGauge
00952 //
00953 class CDigitalReadoutGauge : public CBitmapGauge {
00954 public:
00955   CDigitalReadoutGauge (void);
00956 
00957   // CStreamObject methods
00958   int   Read (SStream *stream, Tag tag);
00959 
00960 protected:
00961   int   maxd;
00962   char  wdig_art[64];
00963   char  fdig_art[64];
00964   int   digY;
00965   int   num_digX;
00966   int   *digX;
00967   bool  whol;     // Whole numbers only
00968   bool  padz;     // Pad with leading zeroes
00969 };
00970 
00971 
00972 //
00973 // CDigitsReadoutGauge
00974 //
00975 class CDigitsReadoutGauge : public CGauge {
00976 public:
00977   CDigitsReadoutGauge (void);
00978 
00979   // CStreamObject methods
00980   int   Read (SStream *stream, Tag tag);
00981 
00982   // CGauge methods
00983   virtual void  Draw (void) {}
00984 
00985 protected:
00986   int   frgb_r, frgb_g, frgb_b;
00987   char  just[64];
00988 };
00989 
00990 
00991 //
00992 // CCabinPressureRateKnobGauge
00993 //
00994 class CCabinPressureRateKnobGauge : public CBitmapGauge {
00995 public:
00996   CCabinPressureRateKnobGauge (void);
00997 
00998   // CStreamObject methods
00999   int   Read (SStream *stream, Tag tag);
01000 
01001   // CGauge methods
01002   virtual ECursorResult MouseMoved (int x, int y);
01003 
01004 protected:
01005   int     ofxy_x, ofxy_y;
01006   float   alti_min, alti_max;   // Altitude range
01007   float   rate_min, rate_max;   // Rate range
01008   CGaugeKnob  knob;         // Rate knob
01009   CGaugeKnob  cabn;         // Cabin Pressure knob
01010   char    onsf[64];
01011   char    ofsf[64];
01012 };
01013 
01014 
01015 //
01016 // CCabinPressureGauge
01017 //
01018 class CCabinPressureGauge : public CNeedleGauge {
01019 public:
01020   CCabinPressureGauge (void);
01021 
01022   // CStreamObject methods
01023   int   Read (SStream *stream, Tag tag);
01024 
01025 protected:
01026   CNeedleGauge  alti;
01027   CNeedleGauge  diff;
01028   CNeedleGauge  rate;
01029 };
01030 
01031 
01032 //
01033 // CBrakePressureGauge
01034 //
01035 class CBrakePressureGauge : public CTwoNeedleGauge {
01036 public:
01037   CBrakePressureGauge (void);
01038 
01039   // CStreamObject methods
01040   int   Read (SStream *stream, Tag tag);
01041 
01042   // CGauge methods
01043   virtual ECursorResult MouseMoved (int x, int y);
01044 
01045 protected:
01046   CGaugeClickArea   left;   // Left help area
01047   CGaugeClickArea   rght;   // Right help area
01048 };
01049 
01050 
01051 //
01052 // CAOANeedleGauge
01053 //
01054 class CAOANeedleGauge : public CTwoNeedleGauge {
01055 public:
01056   CAOANeedleGauge (void);
01057 
01058   // CStreamObject methods
01059   int   Read (SStream *stream, Tag tag);
01060 
01061   // CGauge methods
01062   virtual ECursorResult MouseMoved (int x, int y);
01063 
01064 protected:
01065   CGaugeKnob      knob;
01066 };
01067 
01068 
01069 //
01070 // CTurnCoordinatorGauge
01071 //
01072 class CTurnCoordinatorGauge : public CBitmapGauge {
01073 public:
01074   CTurnCoordinatorGauge (void);
01075 
01076   // CStreamObject methods
01077   int   Read (SStream *stream, Tag tag);
01078 
01079 protected:
01080   char    plan_art[64];
01081   int     poff_x, poff_y;
01082   char    ball_art[64];
01083   int     boff_x, boff_y;
01084   Tag     pcon;
01085   Tag     bcon;
01086   int     Ltrn;
01087   int     Rtrn;
01088 };
01089 
01090 
01091 //
01092 // CHSIGauge
01093 //
01094 class CHSIGauge : public CBitmapGauge {
01095 public:
01096   CHSIGauge (void);
01097 
01098   // CStreamObject methods
01099   int   Read (SStream *stream, Tag tag);
01100 
01101   // CGauge methods
01102   virtual ECursorResult MouseMoved (int x, int y);
01103 
01104 protected:
01105   SArtOffset      comp;       // Compass plate
01106   SArtOffset      cour;
01107   SArtOffset      devi;   
01108   SArtOffset      devb;
01109   SArtOffset      apbg;       // Autopilot heading bug
01110   SArtOffset      to;         // TO flag
01111   SArtOffset      from;       // FROM flag
01112   SArtOffset      glid;       // Glideslope needle
01113   CGaugeKnob      knob;
01114   CGaugeKnob      apkb;       // Autopilot heading knob
01115   SMessage      obsm;       // OBS message
01116   SMessage      bugm;       // Autopilot heading message
01117   SMessage      fcs;        // FCS message
01118   Tag         radi_tag;
01119   int         radi_unit;
01120   float       rang_min, rang_max;
01121   float       gsdf;       // Glideslope deflection
01122 };
01123 
01124 
01125 //
01126 // CFlyhawkELTGauge
01127 //
01128 class CFlyhawkELTGauge : public CBitmapGauge {
01129 public:
01130   CFlyhawkELTGauge (void);
01131 
01132   // CStreamObject methods
01133   int   Read (SStream *stream, Tag tag);
01134 
01135 protected:
01136   char        ulit_art[64];
01137   char        lit_art[64];
01138   char        csru_csr[64];
01139   char        csrd_csr[64];
01140   char        sfxu_wav[64];
01141   char        sfxd_wav[64];
01142   int         sfxu_tag;
01143   int         sfxd_tag;
01144 };
01145 
01146 
01147 //
01148 // CSlipIndicatorGauge
01149 //
01150 class CSlipIndicatorGauge : public CBitmapGauge {
01151 public:
01152   CSlipIndicatorGauge (void);
01153 
01154   // CStreamObject methods
01155   int   Read (SStream *stream, Tag tag);
01156 
01157 protected:
01158   char    ball_art[64];
01159 };
01160 
01161 
01162 //
01163 // CHobbsMeterGauge
01164 //
01165 class CHobbsMeterGauge : public CGauge {
01166 public:
01167   CHobbsMeterGauge (void);
01168 
01169   // CStreamObject methods
01170   int   Read (SStream *stream, Tag tag);
01171 
01172   // CGauge methods
01173 
01174 protected:
01175   char  blak_art[64];
01176   char  whit_art[64];
01177 };
01178 
01179 
01180 //
01181 // CNavigationGauge
01182 //
01183 class CNavigationGauge : public CBitmapGauge {
01184 public:
01185   CNavigationGauge (void);
01186   virtual ~CNavigationGauge (void);
01187 
01188   // CStreamObject methods
01189   int   Read (SStream *stream, Tag tag);
01190   void  ReadFinished ();
01191 
01192   // CGauge methods
01193   EClickResult MouseClick (int x, int y, int buttons);
01194   EClickResult StopClick (int x, int y, int buttons);
01195   void  Draw (void);
01196   void  Blit (int xOffset, int yOffset, int y_isiz);
01197 
01198 protected:
01199   Tag       comp_tag;
01200   CGaugeNeedle  comp_ndl;
01201   SArtOffset    lndl;
01202   SArtOffset    gndl;
01203   SArtRectangle obs;
01204   char      wtab_art[64];
01205   char      ttab_art[64];
01206   char      ftab_art[64];
01207   int       ntpl_x, ntpl_y;
01208   int       gspl_x, gspl_y;
01209   Tag       radi_tag;
01210   int       radi_unit;
01211   SMessage    fcs;
01212 
01213   SSurface    *surfObsKnob;
01214   SBitmap     *bmObsKnob;
01215   int         nObsKnobFrames;
01216   SBitmap     *bmLocalizer;
01217   int         nLocalizerFrames;
01218   float       localizerFramesPerDeg;
01219   SBitmap     *bmGlideslope;
01220   int         nGlideslopeFrames;
01221   float       glideslopeFramesPerDeg;
01222   SBitmap     *bmWarnTab;
01223   SBitmap     *bmToTab;
01224   SBitmap     *bmFromTab;
01225 
01226   float       obsSetting;
01227   int         obsRate;
01228   bool        obsKnobClick;
01229   float       obsKnobTickRate;
01230   float       obsKnobTickRateTimer;
01231   float       obsKnobLastTick;
01232 };
01233 
01234 
01235 /*
01236  * Avionics gauges
01237  */
01238 
01239 //
01240 // CBKKX155ComPresets
01241 //
01242 // This helper class implements the 32 preset COM radio channels for the
01243 //   Bendix-King KX155 radio.  As a descendent of CStreamObject, the channel
01244 //   presets can be persistently stored.
01245 //
01246 class CBKKX155ComPresets : public CStreamObject {
01247 public:
01248   CBKKX155ComPresets (void);
01249 
01250   // CStreamObject methods
01251   virtual int       Read (SStream *stream, Tag tag);
01252 
01253   // CBKKX155ComPresets methods
01254   void              Load (const char *txtFilename);
01255   float             GetFreq (int i);
01256   void              SetFreq (int i, float freq);
01257 
01258 protected:
01259   float             freq[32];
01260 };
01261 
01262 //
01263 // CBKNavComKX155Gauge
01264 //
01265 class CBKNavComKX155Gauge : public CBitmapGauge {
01266 public:
01267   CBKNavComKX155Gauge (void);
01268 
01269   // CStreamObject methods
01270   int   Read (SStream *stream, Tag tag);
01271   void  ReadFinished (void);
01272 
01273   // CGauge methods
01274   virtual ECursorResult MouseMoved (int x, int y);
01275   virtual EClickResult  MouseClick (int x, int y, int buttons);
01276   virtual void          Draw (void);
01277 
01278   void    IncComChannel (void);
01279   void    DecComChannel (void);
01280 
01281 protected:
01282   Tag         radi_tag;
01283   int         radi_unit;
01284   CGaugeClickArea   ca01;
01285   CGaugeClickArea   ca02;
01286   CGaugeClickArea   ca03;
01287   CGaugeClickArea   ca04;
01288   CGaugeClickArea   ca05;
01289   CGaugeClickArea   ca06;
01290   CGaugeClickArea   ca07;
01291   CGaugeClickArea   ca08;
01292   CGaugeClickArea   ca09;
01293   CGaugeClickArea   ca10;
01294   CGaugeClickArea   ca11;
01295   CGaugeClickArea   ca12;
01296   CGaugeClickArea   ca13;
01297   CGaugeClickArea   ca14;
01298   CGaugeClickArea   ca15;
01299   CGaugeClickArea   ca16;
01300   CGaugeClickArea   ca17;
01301   CGaugeClickArea   ca18;
01302   CGaugeClickArea   ca19;
01303   CGaugeClickArea   ca20;
01304   CGaugeClickArea   ca21;
01305 
01306   SFont             *digi9;       // 9-point LED digits
01307 
01308   // COM Channel Presets
01309   CBKKX155ComPresets   presets;
01310 
01311   // COM mode variables
01312   int               comChannel;         // Prog/Select mode current channel
01313   bool              comProgramFlash;    // Prog mode flash state
01314   float             comProgramTimer;    // Prog mode flash timer
01315   bool              comProgramFreq;     // Prog mode, true if freq is being edited
01316 };
01317 
01318 
01319 //
01320 // CBKGPSKLN89Gauge
01321 //
01322 class CBKGPSKLN89Gauge : public CBitmapGauge {
01323 public:
01324   CBKGPSKLN89Gauge (void);
01325 
01326   // CStreamObject methods
01327   int   Read (SStream *stream, Tag tag);
01328 
01329   // CGauge methods
01330   virtual ECursorResult MouseMoved (int x, int y);
01331 
01332 protected:
01333   Tag         radi;
01334   CGaugeClickArea   ca01;
01335   CGaugeClickArea   ca02;
01336   CGaugeClickArea   ca03;
01337   CGaugeClickArea   ca04;
01338   CGaugeClickArea   ca05;
01339   CGaugeClickArea   ca06;
01340   CGaugeClickArea   ca07;
01341   CGaugeClickArea   ca08;
01342   CGaugeClickArea   ca09;
01343   CGaugeClickArea   ca10;
01344   CGaugeClickArea   ca11;
01345   CGaugeClickArea   ca12;
01346   CGaugeClickArea   ca13;
01347   CGaugeClickArea   ca14;
01348   CGaugeClickArea   ca15;
01349   CGaugeClickArea   ca16;
01350   CGaugeClickArea   ca17;
01351   CGaugeClickArea   ca18;
01352   CGaugeClickArea   ca19;
01353   CGaugeClickArea   ca20;
01354   CGaugeClickArea   ca21;
01355   CGaugeClickArea   ca22;
01356 };
01357 
01358 
01359 //
01360 // CBKXPDRKT76Gauge
01361 //
01362 class CBKXPDRKT76Gauge : public CBitmapGauge {
01363 public:
01364   CBKXPDRKT76Gauge (void);
01365 
01366   // CStreamObject methods
01367   int   Read (SStream *stream, Tag tag);
01368   void  ReadFinished (void);
01369 
01370   // CGauge methods
01371   virtual ECursorResult MouseMoved (int x, int y);
01372   virtual EClickResult  MouseClick (int x, int y, int buttons);
01373   virtual EClickResult  StopClick (int x, int y, int buttons);
01374   virtual void          Draw (void);
01375 
01376 protected:
01377   Tag         radi_tag;
01378   int         radi_unit;
01379   CGaugeClickArea   ca[17];
01380   int               nClickAreas;
01381   int               caClicked;
01382 };
01383 
01384 
01385 //
01386 // CBKADFKR87Gauge
01387 //
01388 class CBKADFKR87Gauge : public CBitmapGauge {
01389 public:
01390   CBKADFKR87Gauge (void);
01391 
01392   // CStreamObject methods
01393   int   Read (SStream *stream, Tag tag);
01394   void  ReadFinished (void);
01395 
01396   // CGauge methods
01397   virtual ECursorResult MouseMoved (int x, int y);
01398   virtual EClickResult  MouseClick (int x, int y, int buttons);
01399   virtual EClickResult  StopClick (int x, int y, int buttons);
01400   virtual void          Draw (void);
01401 
01402 protected:
01403   Tag               radi_tag;
01404   int               radi_unit;
01405   CGaugeClickArea   ca[16];
01406   int               nClickAreas;
01407   int               caClicked;
01408 };
01409 
01410 
01411 //
01412 // CBKAP140Gauge
01413 //
01414 class CBKAP140Gauge : public CBitmapGauge {
01415 public:
01416   CBKAP140Gauge (void);
01417 
01418   // CStreamObject methods
01419   int   Read (SStream *stream, Tag tag);
01420 
01421   // CGauge methods
01422   virtual ECursorResult MouseMoved (int x, int y);
01423   virtual void          Draw (void);
01424 
01425 protected:
01426   CGaugeClickArea   ca[7];
01427   int               nClickAreas;
01428   int               caClicked;
01429 };
01430 
01431 
01432 //
01433 // CBKKFC200Gauge
01434 //
01435 class CBKKFC200Gauge : public CBitmapGauge {
01436 public:
01437   CBKKFC200Gauge (void);
01438 
01439   // CStreamObject methods
01440   int   Read (SStream *stream, Tag tag);
01441 
01442   // CGauge methods
01443   virtual ECursorResult MouseMoved (int x, int y);
01444 
01445 protected:
01446   CGaugeClickArea   ca01;
01447   CGaugeClickArea   ca02;
01448   CGaugeClickArea   ca03;
01449   CGaugeClickArea   ca04;
01450   CGaugeClickArea   ca05;
01451   CGaugeClickArea   ca06;
01452   CGaugeClickArea   ca07;
01453   CGaugeClickArea   ca08;
01454   CGaugeClickArea   ca09;
01455   CGaugeClickArea   ca10;
01456   CGaugeClickArea   ca11;
01457   SArtOffset      fd;
01458   SArtOffset      alt;
01459   SArtOffset      hdg;
01460   SArtOffset      gs;
01461   SArtOffset      nav;
01462   SArtOffset      apr;
01463   SArtOffset      bc;
01464   SArtOffset      trim;
01465   SArtOffset      ap;
01466 };
01467 
01468 
01469 //
01470 // CBKKFC150Gauge
01471 //
01472 class CBKKFC150Gauge : public CBitmapGauge {
01473 public:
01474   CBKKFC150Gauge (void);
01475 
01476   // CStreamObject methods
01477   int   Read (SStream *stream, Tag tag);
01478 
01479   // CGauge methods
01480   virtual ECursorResult MouseMoved (int x, int y);
01481 
01482 protected:
01483   CGaugeClickArea   ca01;
01484   CGaugeClickArea   ca02;
01485   CGaugeClickArea   ca03;
01486   CGaugeClickArea   ca04;
01487   CGaugeClickArea   ca05;
01488   CGaugeClickArea   ca06;
01489   CGaugeClickArea   ca07;
01490   CGaugeClickArea   ca08;
01491   CGaugeClickArea   ca09;
01492   CGaugeClickArea   ca10;
01493   CGaugeClickArea   ca11;
01494   SArtOffset      fd;
01495   SArtOffset      alt;
01496   SArtOffset      hdg;
01497   SArtOffset      gs;
01498   SArtOffset      nav;
01499   SArtOffset      apr;
01500   SArtOffset      bc;
01501   SArtOffset      trim;
01502   SArtOffset      ap;
01503 };
01504 
01505 
01506 //
01507 // CBKAudioKMA26Gauge
01508 //
01509 class CBKAudioKMA26Gauge : public CBitmapGauge {
01510 public:
01511   CBKAudioKMA26Gauge (void);
01512 
01513   // CStreamObject methods
01514   int   Read (SStream *stream, Tag tag);
01515 
01516   // CGauge methods
01517   virtual ECursorResult MouseMoved (int x, int y);
01518 
01519 protected:
01520   Tag         radi;
01521   CGaugeClickArea   ca01;
01522   CGaugeClickArea   ca02;
01523   CGaugeClickArea   ca03;
01524   CGaugeClickArea   ca04;
01525   CGaugeClickArea   ca05;
01526   CGaugeClickArea   ca06;
01527   CGaugeClickArea   ca07;
01528   CGaugeClickArea   ca08;
01529   CGaugeClickArea   ca09;
01530   CGaugeClickArea   ca10;
01531   CGaugeClickArea   ca11;
01532   CGaugeClickArea   ca12;
01533   CGaugeClickArea   ca13;
01534   CGaugeClickArea   ca14;
01535   CGaugeClickArea   ca15;
01536 };
01537 
01538 
01539 //
01540 // CGenericNavRadioGauge
01541 //
01542 class CGenericNavRadioGauge : public CBitmapGauge {
01543 public:
01544   CGenericNavRadioGauge (void);
01545 
01546   // CStreamObject methods
01547   int   Read (SStream *stream, Tag tag);
01548 
01549   // CGauge methods
01550   virtual ECursorResult MouseMoved (int x, int y);
01551 
01552 protected:
01553   Tag         radi_tag;
01554   int         radi_unit;
01555   CGaugeClickArea   ca01;
01556   CGaugeClickArea   ca02;
01557   CGaugeClickArea   ca03;
01558   CGaugeClickArea   ca04;
01559   CGaugeClickArea   ca05;
01560   CGaugeClickArea   ca06;
01561   bool        sdim;
01562 };
01563 
01564 
01565 //
01566 // CGenericCommRadioGauge
01567 //
01568 class CGenericCommRadioGauge : public CBitmapGauge {
01569 public:
01570   CGenericCommRadioGauge (void);
01571 
01572   // CStreamObject methods
01573   int   Read (SStream *stream, Tag tag);
01574 
01575   // CGauge methods
01576   virtual ECursorResult MouseMoved (int x, int y);
01577 
01578 protected:
01579   Tag         radi_tag;
01580   int         radi_unit;
01581   CGaugeClickArea   ca01;
01582   CGaugeClickArea   ca02;
01583   CGaugeClickArea   ca03;
01584   CGaugeClickArea   ca04;
01585   CGaugeClickArea   ca05;
01586   CGaugeClickArea   ca06;
01587   bool        sdim;
01588 };
01589 
01590 
01591 //
01592 // CGenericTransponderGauge
01593 //
01594 class CGenericTransponderGauge : public CBitmapGauge {
01595 public:
01596   CGenericTransponderGauge (void);
01597 
01598   // CStreamObject methods
01599   int   Read (SStream *stream, Tag tag);
01600 
01601   // CGauge methods
01602   virtual ECursorResult MouseMoved (int x, int y);
01603 
01604 protected:
01605   Tag         radi_tag;
01606   int         radi_unit;
01607   CGaugeClickArea   tune;
01608   CGaugeClickArea   mode;
01609   CGaugeClickArea   idnt;
01610   CGaugeClickArea   test;
01611   CGaugeClickArea   ida1;
01612   CGaugeClickArea   ida2;
01613   CGaugeClickArea   ida3;
01614   CGaugeClickArea   ida4;
01615   CGaugeClickArea   idb1;
01616   CGaugeClickArea   idb2;
01617   CGaugeClickArea   idb3;
01618   CGaugeClickArea   idb4;
01619 };
01620 
01621 
01622 //
01623 // CGenericADFRadioGauge
01624 //
01625 class CGenericADFRadioGauge : public CBitmapGauge {
01626 public:
01627   CGenericADFRadioGauge (void);
01628 
01629   // CStreamObject methods
01630   int   Read (SStream *stream, Tag tag);
01631 
01632   // CGauge methods
01633   virtual ECursorResult MouseMoved (int x, int y);
01634 
01635 protected:
01636   Tag         radi_tag;
01637   int         radi_unit;
01638   CGaugeClickArea   dga1;
01639   CGaugeClickArea   dga2;
01640   CGaugeClickArea   dga3;
01641   CGaugeClickArea   dga4;
01642   CGaugeClickArea   dga5;
01643   CGaugeClickArea   dgb1;
01644   CGaugeClickArea   dgb2;
01645   CGaugeClickArea   dgb3;
01646   CGaugeClickArea   dgb4;
01647   CGaugeClickArea   dgb5;
01648   CGaugeClickArea   tune;
01649   CGaugeKnob      mode;
01650   CGaugeClickArea   stor;
01651   CGaugeClickArea   test;
01652   bool        sdim;
01653 };
01654 
01655 
01656 //
01657 // CRMINeedleGauge
01658 //
01659 class CRMINeedleGauge : public CBitmapGauge {
01660 public:
01661   CRMINeedleGauge (void);
01662 
01663   // CStreamObject methods
01664   int   Read (SStream *stream, Tag tag);
01665 
01666   // CGauge methods
01667   virtual ECursorResult MouseMoved (int x, int y);
01668 
01669 protected:
01670   Tag       comp_tag;
01671   CGaugeNeedle  comp;
01672   int       cpxy_x, cpxy_y;
01673   CGaugeNeedle  adfn;
01674   int       anxy_x, anxy_y;
01675   CGaugeNeedle  rmin;
01676   int       rnxy_x, rnxy_y;
01677   Tag       adf1;
01678   int       adf1_unit;
01679   Tag       adf2;
01680   int       adf2_unit;
01681   Tag       nav1;
01682   int       nav1_unit;
01683   Tag       nav2;
01684   int       nav2_unit;
01685   SArtOffset    adfa;
01686   SArtOffset    vora;
01687   CGaugeClickArea lbtn;
01688   CGaugeClickArea rbtn;
01689 };
01690 
01691 
01692 //
01693 // CNavGaugeGroup
01694 //
01695 class CNavGaugeGroup : public CGauge {
01696 public:
01697   CNavGaugeGroup (void);
01698 
01699   // CStreamObject methods
01700   int   Read (SStream *stream, Tag tag);
01701 
01702 protected:
01703   Tag   nav1;
01704   Tag   nav2;
01705 };
01706 
01707 
01708 //
01709 // CRadioGaugeGroup
01710 //
01711 class CRadioGaugeGroup : public CGauge {
01712 public:
01713   CRadioGaugeGroup (void);
01714 
01715   // CStreamObject methods
01716   int   Read (SStream *stream, Tag tag);
01717 
01718 protected:
01719   Tag   rad1_tag;   // 'rad1' conflicts with Windows #define
01720   Tag   rad2_tag;   // 'rad2' conflicts with Windows #define
01721   Tag   key_tag;
01722 };
01723 
01724 
01725 //
01726 // CAnnunciator
01727 //
01728 class CAnnunciator : public CBitmapGauge {
01729 public:
01730   CAnnunciator (void);
01731 
01732   // CStreamObject methods
01733   int   Read (SStream *stream, Tag tag);
01734 
01735 protected:
01736 };
01737 
01738 
01739 //
01740 // CFlyhawkAnnunciator
01741 //
01742 class CFlyhawkAnnunciator : public CGauge {
01743 public:
01744   CFlyhawkAnnunciator (void);
01745 
01746   // CStreamObject methods
01747   int   Read (SStream *stream, Tag tag);
01748 
01749 protected:
01750   char  lowf_art[64];
01751   char  lowl_art[64];
01752   char  lowr_art[64];
01753   char  oilp_art[64];
01754   char  vacl_art[64];
01755   char  vacr_art[64];
01756   char  lowv_art[64];
01757   char  volt_art[64];
01758   char  line_art[64];
01759 };
01760 
01761 
01762 //
01763 // CFlyhawkAnnunciatorTest
01764 //
01765 class CFlyhawkAnnunciatorTest : public CGauge {
01766 public:
01767   CFlyhawkAnnunciatorTest (void);
01768 
01769   // CStreamObject methods
01770   int   Read (SStream *stream, Tag tag);
01771 
01772 protected:
01773   char    swit_art[64];
01774   char    sfxu_wav[64];
01775   char    sfxd_wav[64];
01776   int     sfxu_tag;
01777   int     sfxd_tag;
01778   char    csru_csr[64];
01779   char    csrd_csr[64];
01780 };
01781 
01782 
01783 //
01784 // CFlyhawkNavGpsPanelGauge
01785 //
01786 class CFlyhawkNavGpsPanelGauge : public CBitmapGauge {
01787 public:
01788   CFlyhawkNavGpsPanelGauge (void);
01789 
01790   // CStreamObject methods
01791   int   Read (SStream *stream, Tag tag);
01792 
01793   // CGauge methods
01794   virtual ECursorResult MouseMoved (int x, int y);
01795 
01796 protected:
01797   CGaugeKnob    cnav;
01798   CGaugeKnob    capr;
01799   int       xnav_x, xnav_y;
01800   int       xgps_x, xgps_y;
01801   int       xapr_x, xapr_y;
01802   int       xmsg_x, xmsg_y;
01803   int       xwpt_x, xwpt_y;
01804 };
01805 
01806 
01807 //
01808 // CFlyhawkFuelSelectorGauge
01809 //
01810 class CFlyhawkFuelSelectorGauge : public CBitmapGauge {
01811 public:
01812   CFlyhawkFuelSelectorGauge (void);
01813 
01814   // CStreamObject methods
01815   int   Read (SStream *stream, Tag tag);
01816 
01817   // CGauge methods
01818   virtual ECursorResult MouseMoved (int x, int y);
01819 
01820 protected:
01821   char        swit_art[64];
01822   CGaugeClickArea   left;
01823   CGaugeClickArea   both;
01824   CGaugeClickArea   righ;
01825   SMessage      Lmsg;
01826   SMessage      Rmsg;
01827 };
01828 
01829 
01830 //
01831 // CFlyhawkElevatorTrimGauge
01832 //
01833 class CFlyhawkElevatorTrimGauge : public CBitmapGauge {
01834 public:
01835   CFlyhawkElevatorTrimGauge (void);
01836 
01837   // CStreamObject methods
01838   int   Read (SStream *stream, Tag tag);
01839 
01840   // CGauge methods
01841   virtual ECursorResult MouseMoved (int x, int y);
01842 
01843 protected:
01844   SArtOffset    trmw;
01845   SArtOffset    trmi;
01846   CGaugeClickArea down;
01847   CGaugeClickArea up;
01848 };
01849 
01850 
01851 //
01852 // CMalybooCHTIndicatorGauge
01853 //
01854 class CMalybooCHTIndicatorGauge : public CBitmapGauge {
01855 public:
01856   CMalybooCHTIndicatorGauge (void);
01857 
01858   // CStreamObject methods
01859   int   Read (SStream *stream, Tag tag);
01860 
01861 protected:
01862   int   xoff[6];
01863   int   yoff;
01864 };
01865 
01866 
01867 //
01868 // CMalybooCHTButtonGauge
01869 //
01870 class CMalybooCHTButtonGauge : public CBitmapGauge {
01871 public:
01872   CMalybooCHTButtonGauge (void);
01873 
01874   // CStreamObject methods
01875   int   Read (SStream *stream, Tag tag);
01876 
01877 protected:
01878 };
01879 
01880 
01881 //
01882 // CMalybooNavGpsPanelGauge
01883 //
01884 class CMalybooNavGpsPanelGauge : public CBitmapGauge {
01885 public:
01886   CMalybooNavGpsPanelGauge (void);
01887 
01888   // CStreamObject methods
01889   int   Read (SStream *stream, Tag tag);
01890 
01891 protected:
01892   CGaugeClickArea cnav;
01893   int       xnav_x, xnav_y;
01894   int       xgps_x, xgps_y;
01895   CGaugeClickArea capr;
01896   int       xapr_x, xapr_y;
01897   int       xarm_x, xarm_y;
01898   int       xact_x, xact_y;
01899   CGaugeClickArea ccrs;
01900   int       xcrs_x, xcrs_y;
01901   int       xobs_x, xobs_y;
01902   int       xleg_x, xleg_y;
01903   CGaugeClickArea cmsg;
01904   int       xmsg_x, xmsg_y;
01905   int       xwpt_x, xwpt_y;
01906   CGaugeClickArea cyaw;
01907   int       xyaw_x, xyaw_y;
01908 };
01909 
01910 
01911 //
01912 // CMalybooDigitalClockGauge
01913 //
01914 class CMalybooDigitalClockGauge : public CBitmapGauge {
01915 public:
01916   CMalybooDigitalClockGauge (void);
01917 
01918   // CStreamObject methods
01919   int   Read (SStream *stream, Tag tag);
01920 
01921 protected:
01922   int       clkd_x1, clkd_y1, clkd_x2, clkd_y2;   // Clock display area
01923   CGaugeClickArea mode;   // Mode button
01924   CGaugeClickArea powr;   // Power button
01925   CGaugeClickArea play;   // Play button
01926   CGaugeClickArea rec;    // Rec button
01927   CGaugeClickArea set;    // Set button
01928 };
01929 
01930 //
01931 // CMalybooEngineMonitorGauge
01932 //
01933 class CMalybooEngineMonitorGauge : public CBitmapGauge {
01934 public:
01935   CMalybooEngineMonitorGauge (void);
01936 
01937   // CStreamObject methods
01938   int   Read (SStream *stream, Tag tag);
01939 
01940 protected:
01941   CGaugeClickArea   fuel;
01942   CGaugeClickArea   inst;
01943   CGaugeClickArea   blk_;
01944   CGaugeClickArea   fill;
01945   CGaugeClickArea   pwr_;
01946   CGaugeClickArea   set_;
01947   CGaugeClickArea   MAP_;
01948   CGaugeClickArea   RPM_;
01949   CGaugeClickArea   TIT;
01950   CGaugeClickArea   FF__;
01951   CGaugeClickArea   OT__;
01952   CGaugeClickArea   OP__;
01953   CGaugeClickArea   CHT_;
01954   CGaugeClickArea   VAC_;
01955   CGaugeClickArea   LQTY;
01956   CGaugeClickArea   RQTY;
01957   char        rlit_art[64];
01958   char        glit_art[64];
01959   char        ylit_art[64];
01960 };
01961 
01962 
01963 //
01964 // CNavajoFuelSelectorGauge
01965 //
01966 class CNavajoFuelSelectorGauge : public CBitmapGauge {
01967 public:
01968   CNavajoFuelSelectorGauge (void);
01969 
01970   // CStreamObject methods
01971   int   Read (SStream *stream, Tag tag);
01972 
01973 protected:
01974   char        swit[64];   // Switch PBG artwork
01975   CGaugeClickArea   obca;     // Outboard
01976   CGaugeClickArea   ofca;     // Off
01977   CGaugeClickArea   ibca;     // Inboard
01978   SMessage      obms;     // Outboard tank message
01979   SMessage      ibms;     // Inboard tank message
01980 };
01981 
01982 
01983 //
01984 // CNavajoFuelAmmeterGauge
01985 //
01986 class CNavajoAmmeterGauge : public CNeedleGauge {
01987 public:
01988   CNavajoAmmeterGauge (void);
01989 
01990   // CStreamObject methods
01991   int   Read (SStream *stream, Tag tag);
01992 
01993 protected:
01994   SMessage      mChg;     // Charge message
01995   SMessage      mLtM;     // Left ammeter message
01996   SMessage      mRtM;     // Right ammeter message
01997   SMessage      mLtS;     // Left switch message
01998   SMessage      mRtS;     // Right switch message
01999   CGaugeClickArea   ca01;     // Left switch
02000   CGaugeClickArea   ca02;     // Right switch
02001 };
02002 
02003 
02004 //
02005 // CNavajoRadarAltimeterGauge
02006 //
02007 class CNavajoRadarAltimeterGauge : public CNeedleGauge {
02008 public:
02009   CNavajoRadarAltimeterGauge (void);
02010 
02011   // CStreamObject methods
02012   int   Read (SStream *stream, Tag tag);
02013 
02014 protected:
02015   SMessage        bMsg;     // DH Bug message
02016   CDataMap        dhbt;     // DH Bug table
02017   SArtOffset      bug;      // DH Bug PBG artwork and offset
02018   SArtOffset      plit;     // Power light PBG artwork and offset
02019   SMessage        dhms;     // DH message
02020   CGaugeKnob      knob;     // DH Knob
02021 };
02022 
02023 
02024 //
02025 // CCollinsEFISSelectionGauge
02026 //
02027 class CCollinsEFISSelectionGauge : public CBitmapGauge {
02028 public:
02029   CCollinsEFISSelectionGauge (void);
02030 
02031   // CStreamObject methods
02032   int   Read (SStream *stream, Tag tag);
02033 
02034 protected:
02035   CGaugeClickArea   brg_;     // Bearing
02036   CGaugeClickArea   brgm;     // Bearing mode
02037   CGaugeKnob      brgk;     // Bearing knob
02038   CGaugeKnob      dh__;     // DH knob
02039   CGaugeClickArea   form;     // Display format
02040   CGaugeClickArea   crs_;     // Course
02041   CGaugeClickArea   crsm;     // Course mode
02042   CGaugeKnob      crsk;     // Course knob
02043   CGaugeClickArea   wx__;     // Weather display
02044   CGaugeClickArea   nav_;     // Nav Data Toggle
02045   SMessage      pfdm;     // PFD message
02046   SMessage      ehim;     // EHSI message
02047   SMessage      mndm;     // Multi Nav Display message
02048   SMessage      adm_;     // Air Data message
02049   SMessage      aplt;     // Autopilot message
02050 };
02051 
02052 
02053 //
02054 // CCollinsVspeedPanel
02055 //
02056 class CCollinsVspeedPanel : public CBitmapGauge {
02057 public:
02058   CCollinsVspeedPanel (void);
02059 
02060   // CStreamObject methods
02061   int   Read (SStream *stream, Tag tag);
02062 
02063 protected:
02064   CGaugeClickArea   sped;
02065   CGaugeClickArea   vsel;
02066 };
02067 
02068 
02069 //
02070 // CCollinsHFRadioGauge
02071 //
02072 class CCollinsHFRadioGauge : public CBitmapGauge {
02073 public:
02074   CCollinsHFRadioGauge (void);
02075 
02076   // CStreamObject methods
02077   int   Read (SStream *stream, Tag tag);
02078 
02079 protected:
02080   CGaugeClickArea     tel;    //
02081   CGaugeClickArea     am;     // Amplitude Modulation button
02082   CGaugeClickArea     usb;    // Upper Sideband button
02083   CGaugeClickArea     lsb;    // Lower Sideband button
02084   CGaugeClickArea     mhz;    // MHz button
02085   CGaugeClickArea     khz;    // KHz button
02086   CGaugeClickArea     stor;   // Store button
02087   CGaugeClickArea     tune;   // Tune button
02088   CGaugeClickArea     volu;   // Volume button
02089   CGaugeClickArea     dash;   // 
02090   CGaugeClickArea     tx;     // Tx button
02091   CGaugeClickArea     chan;   // Channel button
02092   bool          ft13;   // Use 13-point font
02093 };
02094 
02095 
02096 //
02097 // CCollinsPFDGauge
02098 //
02099 class CCollinsPFDGauge : public CBitmapGauge {
02100 public:
02101   CCollinsPFDGauge (void);
02102 
02103   // CStreamObject methods
02104   int   Read (SStream *stream, Tag tag);
02105 
02106 protected:
02107 };
02108 
02109 
02110 //
02111 // CCollinsNDGauge
02112 //
02113 class CCollinsNDGauge : public CBitmapGauge {
02114 public:
02115   CCollinsNDGauge (void);
02116 
02117   // CStreamObject methods
02118   int   Read (SStream *stream, Tag tag);
02119 
02120 protected:
02121 };
02122 
02123 
02124 //
02125 // CCollinsRTUGauge
02126 //
02127 class CCollinsRTUGauge : public CBitmapGauge {
02128 public:
02129   CCollinsRTUGauge (void);
02130 
02131   // CStreamObject methods
02132   int   Read (SStream *stream, Tag tag);
02133 
02134 protected:
02135   CGaugeRectangle   lin1;     // Line 1
02136   CGaugeRectangle   lin2;     // Line 2
02137   CGaugeRectangle   lin3;     // Line 3
02138   CGaugeRectangle   lin4;     // Line 4
02139   CGaugeRectangle   lin5;     // Line 5
02140   CGaugeClickArea   btn1;     // Button 1
02141   CGaugeClickArea   btn2;     // Button 2
02142   CGaugeClickArea   btn3;     // Button 3
02143   CGaugeClickArea   btn4;     // Button 4
02144   CGaugeClickArea   btn5;     // Button 5
02145   CGaugeClickArea   cmaw;     // COM Active Whole MHz
02146   CGaugeClickArea   cmaf;     // COM Active Fract MHz
02147   CGaugeClickArea   cmsw;     // COM Stby Whole MHz
02148   CGaugeClickArea   cmsf;     // COM Stby Fract MHz
02149   CGaugeClickArea   nvaw;     // NAV Active Whole MHz
02150   CGaugeClickArea   nvaf;     // NAV Active Fract MHz
02151   CGaugeClickArea   adf1;     // ADF Digit 1
02152   CGaugeClickArea   adf2;     // ADF Digit 2
02153   CGaugeClickArea   adf3;     // ADF Digit 3
02154   CGaugeClickArea   adf4;     // ADF Digit 4
02155   CGaugeClickArea   adf5;     // ADF Digit 5
02156   CGaugeClickArea   xpd1;     // Transponder Digit 1
02157   CGaugeClickArea   xpd2;     // Transponder Digit 2
02158   CGaugeClickArea   xpd3;     // Transponder Digit 3
02159   CGaugeClickArea   xpd4;     // Transponder Digit 4
02160   SMessage      rtu_;     // RTU subsystem message
02161   SMessage      dme1;     // DME 1 message
02162   SMessage      dme2;     // DME 2 message
02163   SArtOffset      dmeH;     // DME Hold announcer
02164   SArtOffset      repl;     // XPDR Replyl announcer
02165   CGaugeClickArea   atci;     // ATC ID
02166   CGaugeClickArea   dmeh;     // DME Hold button
02167   CGaugeClickArea   coms;     // COM Squelch button
02168   CGaugeClickArea   atcs;     // ATC Standby button
02169   CGaugeClickArea   b1_2;     // 1/2 button
02170   CGaugeClickArea   adft;     // ADF Test button
02171   int         side;     // Side
02172 };
02173 
02174 
02175 //
02176 // CCollinsAirDataGauge
02177 //
02178 class CCollinsAirDataGauge : public CBitmapGauge {
02179 public:
02180   CCollinsAirDataGauge (void);
02181 
02182   // CStreamObject methods
02183   int   Read (SStream *stream, Tag tag);
02184 
02185 protected:
02186   CGaugeRectangle   scrn;     // Display screen
02187   CGaugeKnob      baro;     // Barometric Setting knob
02188   CGaugeClickArea   vs__;     // VS reference knob
02189   CGaugeClickArea   alt_;     // Altitude Preselect knob
02190   CGaugeClickArea   in__;     // Inches button
02191   CGaugeClickArea   mb__;     // Millibars button
02192 };
02193 
02194 
02195 //
02196 // CCollinsMNDGauge
02197 //
02198 class CCollinsMNDGauge : public CBitmapGauge {
02199 public:
02200   CCollinsMNDGauge (void);
02201 
02202   // CStreamObject methods
02203   int   Read (SStream *stream, Tag tag);
02204 
02205 protected:
02206   SMessage      obs_;     // OBS message
02207   SMessage      ap__;     // AP message
02208   CGaugeClickArea   frmt;     // Display Format
02209   CGaugeClickArea   hdg_;     // Heading
02210   CGaugeClickArea   crs_;     // Course
02211   CGaugeClickArea   brgt;     // Brightness
02212 };
02213 
02214 
02215 //
02216 // CUniversalFMSGauge
02217 //
02218 class CUniversalFMSGauge : public CBitmapGauge {
02219 public:
02220   CUniversalFMSGauge (void);
02221 
02222   // CStreamObject methods
02223   int   Read (SStream *stream, Tag tag);
02224 
02225 protected:
02226   CGaugeClickArea   scrn;     // Display screen
02227   CGaugeClickArea   l1;       // Left Select Key 1
02228   CGaugeClickArea   l2;       // Left Select Key 2
02229   CGaugeClickArea   l3;       // Left Select Key 3
02230   CGaugeClickArea   l4;       // Left Select Key 4
02231   CGaugeClickArea   l5;       // Left Select Key 5
02232   CGaugeClickArea   r1;       // Right Select Key 1
02233   CGaugeClickArea   r2;       // Right Select Key 2
02234   CGaugeClickArea   r3;       // Right Select Key 3
02235   CGaugeClickArea   r4;       // Right Select Key 4
02236   CGaugeClickArea   r5;       // Right Select Key 5
02237   CGaugeClickArea   data;     // DATA key
02238   CGaugeClickArea   nav;      // NAV key
02239   CGaugeClickArea   vnav;     // VNAV key
02240   CGaugeClickArea   dto;      // DTO key
02241   CGaugeClickArea   list;     // LIST key
02242   CGaugeClickArea   prev;     // PREV key
02243   CGaugeClickArea   fuel;     // FUEL key
02244   CGaugeClickArea   fpl;      // FPL key
02245   CGaugeClickArea   perf;     // PERF key
02246   CGaugeClickArea   tune;     // TUNE key
02247   CGaugeClickArea   menu;     // MENU key
02248   CGaugeClickArea   next;     // NEXT key
02249   CGaugeClickArea   key1;     // 1 key
02250   CGaugeClickArea   key2;     // 2 key
02251   CGaugeClickArea   key3;     // 3 key
02252   CGaugeClickArea   key4;     // 4 key
02253   CGaugeClickArea   key5;     // 5 key
02254   CGaugeClickArea   key6;     // 6 key
02255   CGaugeClickArea   key7;     // 7 key
02256   CGaugeClickArea   key8;     // 8 key
02257   CGaugeClickArea   key9;     // 9 key
02258   CGaugeClickArea   back;     // BACK key
02259   CGaugeClickArea   key0;     // 0 key
02260   CGaugeClickArea   msg;      // MSG key
02261   CGaugeClickArea   dim;      // DIM key
02262   CGaugeClickArea   plus;     // +/- key
02263   CGaugeClickArea   entr;     // ENT key
02264   CGaugeClickArea   keyA;     // A key
02265   CGaugeClickArea   keyB;     // B key
02266   CGaugeClickArea   keyC;     // C key
02267   CGaugeClickArea   keyD;     // D key
02268   CGaugeClickArea   keyE;     // E key
02269   CGaugeClickArea   keyF;     // F key
02270   CGaugeClickArea   keyG;     // G key
02271   CGaugeClickArea   keyH;     // H key
02272   CGaugeClickArea   keyI;     // I key
02273   CGaugeClickArea   keyJ;     // J key
02274   CGaugeClickArea   keyK;     // K key
02275   CGaugeClickArea   keyL;     // L key
02276   CGaugeClickArea   keyM;     // M key
02277   CGaugeClickArea   keyN;     // N key
02278   CGaugeClickArea   keyO;     // O key
02279   CGaugeClickArea   keyP;     // P key
02280   CGaugeClickArea   keyQ;     // Q key
02281   CGaugeClickArea   keyR;     // R key
02282   CGaugeClickArea   keyS;     // S key
02283   CGaugeClickArea   keyT;     // T key
02284   CGaugeClickArea   keyU;     // U key
02285   CGaugeClickArea   keyV;     // V key
02286   CGaugeClickArea   keyW;     // W key
02287   CGaugeClickArea   keyX;     // X key
02288   CGaugeClickArea   keyY;     // Y key
02289   CGaugeClickArea   keyZ;     // Z key
02290 };
02291 
02292 
02293 //
02294 // CPilatusEFISPanel
02295 //
02296 class CPilatusEFISPanel : public CBitmapGauge {
02297 public:
02298   CPilatusEFISPanel (void);
02299 
02300   // CStreamObject methods
02301   int   Read (SStream *stream, Tag tag);
02302 
02303 protected:
02304   SMessage      pfdm;     // PFD message
02305   SMessage      navm;     // ND message
02306   CGaugeKnob      dh;       // DH knob
02307   CGaugeKnob      brt;      // BRT knob
02308   CGaugeKnob      crs;      // CRS knob
02309   CGaugeKnob      hdg;      // HDG knob
02310   CGaugeKnob      hsi;      // HSI knob
02311   CGaugeKnob      arc;      // ARC knob
02312   CGaugeKnob      nav;      // NAV knob
02313   CGaugeKnob      rgup;     // Range Up knob
02314   CGaugeKnob      rgdn;     // Range Down knob
02315   CGaugeKnob      nav1;     // NAV1 knob
02316   CGaugeKnob      nav2;     // NAV2 knob
02317   CGaugeKnob      k1_2;     // 1/2 knob
02318 };
02319 
02320 
02321 //
02322 // CWalkerTempAirspeedGauge
02323 //
02324 class CWalkerTempAirspeedGauge : public CBitmapGauge {
02325 public:
02326   CWalkerTempAirspeedGauge (void);
02327 
02328   // CStreamObject methods
02329   int   Read (SStream *stream, Tag tag);
02330 
02331 protected:
02332   CGaugeClickArea     tat;      // True Air Temp button
02333   CGaugeClickArea     sat;      // Static Air Temp button
02334   CGaugeClickArea     tas;      // True Airspeed button
02335 };
02336 
02337 
02338 //
02339 // CGyroSlavingGauge
02340 //
02341 class CGyroSlavingGauge : public CBitmapGauge {
02342 public:
02343   CGyroSlavingGauge (void);
02344 
02345   // CStreamObject methods
02346   int   Read (SStream *stream, Tag tag);
02347   void  ReadFinished (void);
02348 
02349 protected:
02350   SArtOffset        nedl;           // Needle bitmap
02351   SArtOffset        slvb;           // Slave switch bitmap
02352   SArtOffset        ccwb;           // Mode switch bitmap
02353   CGaugeRectangle     err;            // Error window
02354   CGaugeClickArea     slav;           // Slave button
02355   CGaugeClickArea     free;           // Free button
02356   CGaugeClickArea     mode;           // Slave/Free Toggle button
02357   CGaugeClickArea     ccw;            // CCW switch
02358   CGaugeClickArea     cw;             // CW switch
02359   int           lrgb_r, lrgb_g, lrgb_b;   // Line RGB colour
02360   char          sfxu_wav[64];
02361   char          sfxd_wav[64];
02362   int           sfxu_tag;
02363   int          sfxd_tag;
02364 
02365 };
02366 
02367 
02368 //
02369 // CVerticalRateGauge
02370 //
02371 class CVerticalRateGauge : public CBitmapGauge {
02372 public:
02373   CVerticalRateGauge (void);
02374 
02375   // CStreamObject methods
02376   int   Read (SStream *stream, Tag tag);
02377 
02378 protected:
02379   CGaugeKnob        eng;      // Engage button
02380   CGaugeKnob        arm;      // Arm button
02381   CGaugeKnob        knob;     // VS knob
02382   CGaugeRectangle     led;      // LED Display area
02383   Tag           avil;     // Avionics light subsytem
02384 };
02385 
02386 
02387 //
02388 // CPropSyncGauge
02389 //
02390 class CPropSyncGauge : public CBitmapGauge {
02391 public:
02392   CPropSyncGauge (void);
02393 
02394   // CStreamObject methods
02395   int   Read (SStream *stream, Tag tag);
02396 
02397 protected:
02398 };
02399 
02400 
02401 //
02402 // CDMEGauge
02403 //
02404 class CDMEGauge : public CBitmapGauge {
02405 public:
02406   CDMEGauge (void);
02407 
02408   // CStreamObject methods
02409   int   Read (SStream *stream, Tag tag);
02410 
02411   // CGauge methods
02412   virtual ECursorResult MouseMoved (int x, int y);
02413 
02414 protected:
02415   bool        hold;       // Hold mode
02416   int         dist_x, dist_y;   // Distance text location
02417   int         sped_x, sped_y;   // Speed text location
02418   int         time_x, time_y;   // Time text location
02419   CGaugeKnob      knob;       // Distance text location
02420   bool        tiny;       // Use tiny fonts
02421 };
02422 
02423 
02424 //
02425 // CDME2Gauge
02426 //
02427 class CDME2Gauge : public CBitmapGauge {
02428 public:
02429   CDME2Gauge (void);
02430 
02431   // CStreamObject methods
02432   int   Read (SStream *stream, Tag tag);
02433 
02434   // CGauge methods
02435   virtual ECursorResult MouseMoved (int x, int y);
02436 
02437 protected:
02438   bool        hold;       // Hold mode
02439   int         left_x, left_y;   // DME text location
02440   int         rght_x, rght_y;   // SEL text location
02441   CGaugeClickArea   ch;         // Channel button
02442   CGaugeClickArea   sel;        // Select button
02443   CGaugeClickArea   pwr;        // Power button
02444 };
02445 
02446 
02447 //
02448 // CWeatherRadarGauge
02449 //
02450 class CWeatherRadarGauge : public CBitmapGauge {
02451 public:
02452   CWeatherRadarGauge (void);
02453 
02454   // CStreamObject methods
02455   int   Read (SStream *stream, Tag tag);
02456 
02457 protected:
02458   CGaugeRectangle   scrn;   // Display screen
02459   CGaugeClickArea   wx;     // WX button
02460   CGaugeClickArea   vp;     // VP button
02461   CGaugeClickArea   map;    // MAP button
02462   CGaugeClickArea   nav;    // NAV button
02463   CGaugeClickArea   rngp;   // RNG+ button
02464   CGaugeClickArea   rngm;   // RNG- button
02465   CGaugeClickArea   trkp;   // TRK+ button
02466   CGaugeClickArea   trkm;   // TRK- button
02467   CGaugeKnob      mode;   // Mode knob
02468   CGaugeKnob      tilt;   // Tile knob
02469   CGaugeKnob      gain;   // Gain knob
02470   CGaugeKnob      brit;   // Brightness knob
02471 };
02472 
02473 
02474 //
02475 // CAnalogAltPreselectGauge
02476 //
02477 class CAnalogAltPreselectGauge : public CBitmapGauge {
02478 public:
02479   CAnalogAltPreselectGauge (void);
02480 
02481   // CStreamObject methods
02482   int   Read (SStream *stream, Tag tag);
02483 
02484 protected:
02485   CGaugeKnob      knob;   // Altitude Select knob
02486   char        fdig_art[64]; // FL Digits strip PBM filename
02487   char        digi_art[64]; // Digits strip PBM filename
02488   char        zero_art[64]; // Zero digits strip PBM filename
02489   int         thou_x, thou_y; // Thousands digit offset
02490   int         hund_x, hund_y; // Hundreds digit offset
02491   int         ones_x, ones_y; // Ones digit offset
02492   int         dspc;     // Digits spacing
02493   int         zspc;     // Zero spacing
02494   CGaugeClickArea   aler;     // Altitude alert
02495 };
02496 
02497 
02498 
02499 /*
02500  * Switch gauge types
02501  *
02502  * The following gauges implement user-interactive objects such as switches, knobs,
02503  *   wheels, etc.
02504  */
02505 
02506 //
02507 // CMomentaryHotSpotGauge
02508 //
02509 class CMomentaryHotSpotGauge : public CBitmapGauge {
02510 public:
02511   CMomentaryHotSpotGauge (void);
02512 
02513   // CStreamObject methods
02514   int   Read (SStream *stream, Tag tag);
02515 
02516 protected:
02517 };
02518 
02519 //
02520 // CSimpleInOutStateSwitch
02521 //
02522 class CSimpleInOutStateSwitch : public CBitmapGauge {
02523 public:
02524   CSimpleInOutStateSwitch (void);
02525   virtual ~CSimpleInOutStateSwitch (void);
02526 
02527   // CStreamObject methods
02528   int   Read (SStream *stream, Tag tag);
02529   virtual void  ReadFinished (void);
02530 
02531   //
02532   virtual void  Draw (void);
02533   virtual EClickResult  MouseClick (int x, int y, int buttons);
02534 
02535 protected:
02536   char    sbmp_art[64]; // PBG artwork for switch animation
02537   SBitmap*  sbmp;     // Bitmap artwork
02538   int     onvl;     // ON value
02539   int     ofvl;     // OFF value
02540   bool    stat;     // On/Off state
02541   char    onht[64];   // ON help text
02542   char    ofht[64];   // OFF help text
02543 
02544   // Sound effects
02545   char    onsf_wav[64]; // ON sound effect
02546   char    ofsf_wav[64]; // OFF sound effect
02547   int     onsf_tag, ofsf_tag;
02548 
02549   char    sstr_off[64]; // ON popup string value
02550   char    sstr_on[64];  // OFF popup string value
02551   bool    mmnt;     // Momentary contact
02552 };
02553 
02554 
02555 //
02556 // CLitInOutSwitch
02557 //
02558 class CLitInOutSwitch : public CSimpleInOutStateSwitch {
02559 public:
02560   CLitInOutSwitch (void);
02561 
02562   // CStreamObject methods
02563   int   Read (SStream *stream, Tag tag);
02564 
02565 protected:
02566   SMessage  powr;
02567 };
02568 
02569 
02570 //
02571 // CSimpleSwitch
02572 //
02573 class CSimpleSwitch : public CGauge {
02574 public:
02575   CSimpleSwitch (void);
02576 
02577   // CStreamObject methods
02578   virtual int   Read (SStream *stream, Tag tag);
02579   virtual void  ReadFinished (void);
02580 
02581   // CGauge methods
02582   virtual void  Draw (void);
02583   virtual ECursorResult MouseMoved (int x, int y);
02584   virtual EClickResult  MouseClick (int x, int y, int buttons);
02585 
02586 protected:
02587   void DecState (void);
02588   void IncState (void);
02589 
02590 protected:
02591   char    bmap_art[64]; // PBG artwork for switch animation
02592   SBitmap   *bmap;      // Bitmap artwork
02593 
02594   // Sound effects
02595   char    sfxu_wav[64]; // Sound effect for switch up
02596   char    sfxd_wav[64]; // Sound effect for switch down
02597   int     sfxu_tag;
02598   int     sfxd_tag;
02599 
02600   // Cursors
02601   char    csru_csr[64]; // Cursor for switch up region
02602   char    csrd_csr[64]; // Cursor for switch down region
02603   Tag     csru_tag;     // Unique tag for switch up cursor
02604   Tag     csrd_tag;     // Unique tag for switch down cursor
02605 
02606   // States
02607   int     stat_n;     // Number of states
02608   int     *stat;      // Array of state values
02609   int     sstr_n;     // Number of state strings
02610   char    **sstr;     // Array of stat strings
02611   int     orie;     // Orientation
02612   int     ordr;     // Order
02613   int     indx;     // Default index
02614   bool    mmnt;     // Momentary contact
02615   bool    mntO;     // Momentary open
02616 };
02617 
02618 
02619 //
02620 // CBasicBatterySwitch
02621 //
02622 class CBasicBatterySwitch : public CSimpleSwitch {
02623 public:
02624   CBasicBatterySwitch (void);
02625 
02626   // CStreamObject methods
02627   int   Read (SStream *stream, Tag tag);
02628   virtual void  Draw (void);
02629   virtual EClickResult  MouseClick (int x, int y, int buttons);
02630 
02631 protected:
02632   Tag     altt;
02633   Tag     batt;
02634   SMessage  mesgBatt;
02635   SMessage  mesgAlt;
02636   bool    stateAlt;
02637   bool    stateBatt;
02638 };
02639 
02640 
02641 //
02642 // CTwoStateELTGauge
02643 //
02644 class CTwoStateELTGauge : public CSimpleSwitch {
02645 public:
02646   CTwoStateELTGauge (void);
02647 
02648   // CStreamObject methods
02649   int   Read (SStream *stream, Tag tag);
02650 
02651 protected:
02652 };
02653 
02654 
02655 //
02656 // CSwitchPairGauge
02657 //
02658 class CSwitchPairGauge : public CSimpleSwitch {
02659 public:
02660   CSwitchPairGauge (void);
02661 
02662   // CStreamObject methods
02663   int   Read (SStream *stream, Tag tag);
02664 
02665   // CGauge methods
02666   virtual ECursorResult MouseMoved (int x, int y);
02667 
02668 protected:
02669   SMessage    s1ms;
02670   SMessage    s2ms;
02671   CGaugeClickArea s1of;
02672   CGaugeClickArea s1on;
02673   CGaugeClickArea s2of;
02674   CGaugeClickArea s2on;
02675 };
02676 
02677 
02678 //
02679 // CSimpleFloatSwitch
02680 //
02681 class CSimpleFloatSwitch : public CGauge {
02682 public:
02683   CSimpleFloatSwitch (void);
02684   virtual ~CSimpleFloatSwitch (void);
02685 
02686   // CStreamObject methods
02687   int   Read (SStream *stream, Tag tag);
02688   void  ReadFinished (void);
02689 
02690 protected:
02691   char    bmap_art[64];
02692 
02693   // Cursors
02694   char    csru_csr[64];
02695   char    csrd_csr[64];
02696   int     csru_tag, csrd_tag;
02697 
02698   // Sound effects
02699   char    sfxu_wav[64];
02700   char    sfxd_wav[64];
02701   int     sfxu_tag, sfxd_tag;
02702 
02703   int     stat_n;
02704   float   *stat;
02705   int     sstr_n;
02706   char    **sstr;
02707   bool    mmnt;
02708 };
02709 
02710 
02711 //
02712 // CDualSwitch
02713 //
02714 class CDualSwitch : public CSimpleSwitch {
02715 public:
02716   CDualSwitch (void);
02717 
02718   // CStreamObject methods
02719   int   Read (SStream *stream, Tag tag);
02720 
02721 protected:
02722   int     nums;
02723   int     orie;
02724   SMessage  usrl;
02725   SMessage  usrr;
02726   bool    mmnt;
02727 };
02728 
02729 
02730 //
02731 // CPushPullKnobGauge
02732 //
02733 class CPushPullKnobGauge : public CGauge {
02734 public:
02735   CPushPullKnobGauge (void);
02736   virtual ~CPushPullKnobGauge (void);
02737 
02738   // CStreamObject methods
02739   int   Read (SStream *stream, Tag tag);
02740 
02741 protected:
02742   char    bmap_art[64];
02743   SMessage  mesg;
02744   SMessage  lnk1;
02745   int     ytop;
02746   int     ybtm;
02747   int     valu_n;
02748   SKnobArea *valu;
02749   float     lowv;
02750   float   high;
02751   bool    poll;
02752 };
02753 
02754 
02755 //
02756 // CPrimerKnobGauge
02757 //
02758 class CPrimerKnobGauge : public CPushPullKnobGauge {
02759 public:
02760   CPrimerKnobGauge (void);
02761 
02762   // CStreamObject methods
02763   int   Read (SStream *stream, Tag tag);
02764 
02765 protected:
02766 };
02767 
02768 
02769 class CFlapsSwitchGauge : public CPushPullKnobGauge {
02770 public:
02771   CFlapsSwitchGauge (void);
02772 
02773   // CStreamObject methods
02774   int   Read (SStream *stream, Tag tag);
02775 
02776 protected:
02777 };
02778 
02779 
02780 class CLitLandingGearKnobGauge : public CPushPullKnobGauge {
02781 public:
02782   CLitLandingGearKnobGauge (void);
02783 
02784   // CStreamObject methods
02785   int   Read (SStream *stream, Tag tag);
02786 
02787 protected:
02788 };
02789 
02790 
02791 
02792 class CMixtureKnobGauge : public CPushPullKnobGauge {
02793 public:
02794   CMixtureKnobGauge (void);
02795 
02796   // CStreamObject methods
02797   int   Read (SStream *stream, Tag tag);
02798 
02799 protected:
02800 };
02801 
02802 
02803 class CReversibleThrottleKnobGauge : public CPushPullKnobGauge {
02804 public:
02805   CReversibleThrottleKnobGauge (void);
02806 
02807   // CStreamObject methods
02808   int   Read (SStream *stream, Tag tag);
02809 
02810 protected:
02811   SMessage    rvsr;
02812   char      rbmp_art[64];
02813   int       rtop;
02814   int       rbtm;
02815 };
02816 
02817 
02818 class CDualKnobGauge : public CGauge {
02819 public:
02820   CDualKnobGauge (void);
02821 
02822   // CStreamObject methods
02823   int   Read (SStream *stream, Tag tag);
02824 
02825   // CGauge methods
02826   virtual ECursorResult MouseMoved (int x, int y);
02827 
02828 protected:
02829   SMessage    imsg;
02830   SMessage    omsg;
02831   float     iinc;
02832   float     idec;
02833   float     oinc;
02834   float     odec;
02835   CGaugeClickArea inca;
02836   CGaugeClickArea ouca;
02837 };
02838 
02839 
02840 class CFlyhawkLightKnobGauge : public CDualKnobGauge {
02841 public:
02842   CFlyhawkLightKnobGauge (void);
02843 
02844   // CStreamObject methods
02845   int   Read (SStream *stream, Tag tag);
02846 
02847 protected:
02848 };
02849 
02850 
02851 class CTurnKnobGauge : public CGauge {
02852 public:
02853   CTurnKnobGauge (void);
02854 
02855   // CStreamObject methods
02856   int   Read (SStream *stream, Tag tag);
02857 
02858 protected:
02859   char      bmap_art[64];
02860   float     incr;
02861   float     decr;
02862 };
02863 
02864 
02865 class CBasicMagnetoSwitch : public CSimpleSwitch {
02866 public:
02867   CBasicMagnetoSwitch (void);
02868 
02869   // CStreamObject methods
02870   virtual void  Draw (void);
02871 
02872   // CGauge methods
02873   virtual EClickResult  MouseClick (int x, int y, int buttons);
02874   virtual EClickResult  StopClick (int x, int y, int buttons);
02875 
02876 protected:
02877 };
02878 
02879 
02880 class CCoveredSwitch : public CSimpleSwitch {
02881 public:
02882   CCoveredSwitch (void);
02883 
02884   // CStreamObject methods
02885   int   Read (SStream *stream, Tag tag);
02886 
02887 protected:
02888 };
02889 
02890 
02891 class CCoveredLightButtonGauge : public CCoveredSwitch {
02892 public:
02893   CCoveredLightButtonGauge (void);
02894 
02895   // CStreamObject methods
02896   int   Read (SStream *stream, Tag tag);
02897 
02898 protected:
02899   char    lbmp_art[64];     // Lighted button art
02900   SMessage  lmsg;         // Light message
02901 };
02902 
02903 
02904 class CVerticalSliderGauge : public CGauge {
02905 public:
02906   CVerticalSliderGauge (void);
02907 
02908   // CStreamObject methods
02909   int   Read (SStream *stream, Tag tag);
02910 
02911 protected:
02912 };
02913 
02914 class CTrimWheelGauge : public CGauge {
02915 public:
02916   CTrimWheelGauge (void);
02917 
02918   // CStreamObject methods
02919   int   Read (SStream *stream, Tag tag);
02920 
02921   // CGauge methods
02922   virtual ECursorResult MouseMoved (int x, int y);
02923 
02924 protected:
02925   char      bmap_art[64];
02926   CGaugeClickArea down;
02927   CGaugeClickArea up;
02928 };
02929 
02930 
02931 class CTrimWheelIndicatorGauge : public CTrimWheelGauge {
02932 public:
02933   CTrimWheelIndicatorGauge (void);
02934 
02935   // CStreamObject methods
02936   int   Read (SStream *stream, Tag tag);
02937 
02938 protected:
02939 };
02940 
02941 
02942 class CIndicatorGauge : public CGauge {
02943 public:
02944   CIndicatorGauge (void);
02945 
02946   // CStreamObject methods
02947   int   Read (SStream *stream, Tag tag);
02948 
02949 protected:
02950   char    bmap_art[64];
02951   float   lval;
02952   float   hval;
02953 };
02954 
02955 
02956 class CFlapsIndicatorGauge : public CIndicatorGauge {
02957 public:
02958   CFlapsIndicatorGauge (void);
02959 
02960   // CStreamObject methods
02961   int   Read (SStream *stream, Tag tag);
02962 
02963 protected:
02964 };
02965 
02966 
02967 class CPushButtonGauge : public CGauge {
02968 public:
02969   CPushButtonGauge (void);
02970 
02971   // CStreamObject methods
02972   int   Read (SStream *stream, Tag tag);
02973 
02974 protected:
02975   char    bmap_art[64];
02976   char    curs_csr[64];
02977   bool    mmnt;
02978 };
02979 
02980 
02981 class CLightButtonGauge : public CPushButtonGauge {
02982 public:
02983   CLightButtonGauge (void);
02984 
02985   // CStreamObject methods
02986   int   Read (SStream *stream, Tag tag);
02987 
02988 protected:
02989   SMessage  lmsg;
02990   int     stat_off, stat_on;
02991   char    sstr_off[64];
02992   char    sstr_on[64];
02993 };
02994 
02995 
02996 class CTurnSwitchGauge : public CSimpleSwitch {
02997 public:
02998   CTurnSwitchGauge (void);
02999 
03000   // CStreamObject methods
03001   int   Read (SStream *stream, Tag tag);
03002 
03003 protected:
03004 };
03005 
03006 
03007 class CMasterCautionWarningButtonGauge : public CGauge {
03008 public:
03009   CMasterCautionWarningButtonGauge (void);
03010 
03011   // CStreamObject methods
03012   int   Read (SStream *stream, Tag tag);
03013   void  ReadFinished (void);
03014 
03015 protected:
03016   char    bmap_art[64];
03017 
03018   // Sound effect
03019   char      sfx_wav[64];
03020   int       sfx_tag;
03021 
03022   SMessage  smsg;
03023   SMessage  lmsg;
03024 };
03025 
03026 
03027 class CKAFireExtinguisherButton : public CGauge {
03028 public:
03029   CKAFireExtinguisherButton (void);
03030 
03031   // CStreamObject methods
03032   int   Read (SStream *stream, Tag tag);
03033   void  ReadFinished (void);
03034 
03035 protected:
03036   SArtOffset      fire;
03037   SArtOffset      ok;
03038   SArtOffset      dsch;
03039   
03040   // Sound effects
03041   char            sfx_wav[64];
03042   int             sfx_tag;
03043 
03044   // Cursors
03045   char            curs_csr[64];
03046   int             curs_tag;
03047 };
03048 
03049 
03050 class CWalkerAPPanel : public CGauge {
03051 public:
03052   CWalkerAPPanel (void);
03053 
03054   // CStreamObject methods
03055   int   Read (SStream *stream, Tag tag);
03056 
03057 protected:
03058   CGaugeClickArea   left;
03059   CGaugeClickArea   rght;
03060   CGaugeClickArea   up;
03061   CGaugeClickArea   down;
03062   CGaugeClickArea   xfer;
03063   CGaugeClickArea   turb;
03064   CGaugeClickArea   ydon;
03065   CGaugeClickArea   ydof;
03066   CGaugeClickArea   apon;
03067   CGaugeClickArea   apof;
03068   char        enga_yd_art[64];
03069   char        enga_ap_art[64];
03070   char        knob_bnk_art[64];
03071   char        knob_trm_art[64];
03072 };
03073 
03074 
03075 class CWalkerFirePanel : public CGauge {
03076 public:
03077   CWalkerFirePanel (void);
03078 
03079   // CStreamObject methods
03080   int   Read (SStream *stream, Tag tag);
03081 
03082 protected:
03083   SMessage      fir1;
03084   SMessage      fir2;
03085   CGaugeKnob      ext1;
03086   CGaugeKnob      ext2;
03087   CGaugeClickArea   bel1;
03088   CGaugeClickArea   bel2;
03089   CGaugeRectangle   ef1;
03090   CGaugeRectangle   ef2;
03091   CGaugeAnnunciator ann1;
03092   CGaugeAnnunciator ann2;
03093 };
03094 
03095 
03096 class CLightSwitchSetGauge : public CBitmapGauge {
03097 public:
03098   CLightSwitchSetGauge (void);
03099 
03100   // CStreamObject methods
03101   int   Read (SStream *stream, Tag tag);
03102 
03103 protected:
03104   SMessage      lmsg;
03105 };
03106 
03107 
03108 class CRockerSwitch : public CSimpleSwitch {
03109 public:
03110   CRockerSwitch (void);
03111 
03112   // CStreamObject methods
03113   int   Read (SStream *stream, Tag tag);
03114   void  ReadFinished (void);
03115 
03116   // CGauge methods
03117   virtual ECursorResult MouseMoved (int x, int y);
03118 
03119 protected:
03120   CGaugeClickArea   one;
03121   CGaugeClickArea   two;
03122   SMessage      msg1;
03123   SMessage      msg2;
03124   char        sfx1_wav[64];
03125   char        sfx2_wav[64];
03126   int               sfx1_tag, sfx2_tag;
03127 };
03128 
03129 
03130 #endif    // GAUGES_H
03131 
03132 
03133 /*
03134 
03135 //
03136 // CNavRadioGroup
03137 //
03138 class CNavRadioGroup : public CGauge {
03139 public:
03140   CNavRadioGroup (void);
03141 
03142   // CStreamObject methods
03143   int   Read (SStream *stream, Tag tag);
03144 
03145 protected:
03146 };
03147 
03148 
03149 //
03150 // CComRadioGroup
03151 //
03152 class CComRadioGroup : public CGauge {
03153 public:
03154   CComRadioGroup (void);
03155 
03156   // CStreamObject methods
03157   int   Read (SStream *stream, Tag tag);
03158 
03159 protected:
03160 };
03161 
03162 
03163 //
03164 // CTransponderRadioGroup
03165 //
03166 class CTransponderRadioGroup : public CGauge {
03167 public:
03168   CTransponderRadioGroup (void);
03169 
03170   // CStreamObject methods
03171   int   Read (SStream *stream, Tag tag);
03172 
03173 protected:
03174 };
03175 
03176 
03177 //
03178 // CAdfRadioGroup
03179 //
03180 class CAdfRadioGroup : public CGauge {
03181 public:
03182   CAdfRadioGroup (void);
03183 
03184   // CStreamObject methods
03185   int   Read (SStream *stream, Tag tag);
03186 
03187 protected:
03188 };
03189 
03190 //
03191 // CMalybooFuelSelectGauge
03192 //
03193 class CMalybooFuelSelectGauge : public CBitmapGauge {
03194 public:
03195   CMalybooFuelSelectGauge (void);
03196 
03197   // CStreamObject methods
03198 //  int   Read (SStream *stream, Tag tag);
03199 
03200 protected:
03201 };
03202 
03203 //
03204 // CTCASGauge
03205 //
03206 class CTCASGauge : public CBitmapGauge {
03207 public:
03208   CTCASGauge (void);
03209 
03210   // CStreamObject methods
03211 //  int   Read (SStream *stream, Tag tag);
03212 
03213 protected:
03214 };
03215 
03216 
03217 */
03218 
SourceForge.net Logo Documentation generated by doxygen