]> git.mxchange.org Git - flightgear.git/commitdiff
Initial revision.
authorcurt <curt>
Wed, 12 May 1999 02:11:43 +0000 (02:11 +0000)
committercurt <curt>
Wed, 12 May 1999 02:11:43 +0000 (02:11 +0000)
Simulator/Cockpit/hud_lat.cxx [new file with mode: 0644]
Simulator/Cockpit/hud_lon.cxx [new file with mode: 0644]

diff --git a/Simulator/Cockpit/hud_lat.cxx b/Simulator/Cockpit/hud_lat.cxx
new file mode 100644 (file)
index 0000000..5ee014b
--- /dev/null
@@ -0,0 +1,168 @@
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#ifdef HAVE_WINDOWS_H
+#  include <windows.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+#include <Aircraft/aircraft.hxx>
+#include <GUI/gui.h>
+#include <Include/fg_constants.h>
+#include <Math/fg_random.h>
+#include <Math/mat3.h>
+#include <Math/polar3d.hxx>
+#include <Scenery/scenery.hxx>
+#include <Time/fg_timer.hxx>
+
+#include "hud.hxx"
+
+
+#ifdef USE_HUD_TextList
+#define textString( x , y, text, font )  TextString( font, text, x , y )
+#endif
+
+//======================= Top of instr_label class =========================
+lat_label ::
+         lat_label( int           x,
+                      int           y,
+                      UINT          width,
+                      UINT          height,
+                      FLTFNPTR      data_source,
+//                      DBLFNPTR      data_source,                  
+                      const char   *label_format,
+                      const char   *pre_label_string,
+                      const char   *post_label_string,
+                      float        scale_data,
+//                      double        scale_data,                   
+                      UINT          options,
+                      fgLabelJust   justification,
+                      int           font_size,
+                      int           blinking,
+                      bool          working ):
+                           instr_item( x, y, width, height,
+                                       data_source, scale_data,options, working ),
+                           pformat  ( label_format      ),
+                           pre_str  ( pre_label_string  ),
+                           post_str ( post_label_string ),
+                           justify  ( justification     ),
+                           fontSize ( font_size         ),
+                           blink    ( blinking          )
+{
+  if( pre_str != NULL) {
+    if( post_str != NULL ) {
+      sprintf( format_buffer, "%s%s%s", pre_str, pformat, post_str );
+      }
+    else {
+      sprintf( format_buffer, "%s%s",   pre_str, pformat );
+      }
+    }
+  else {
+    if( post_str != NULL ) {
+      sprintf( format_buffer, "%s%s",   pformat, post_str );
+      }
+    } // else do nothing if both pre and post strings are nulls. Interesting.
+
+}
+
+// I put this in to make it easy to construct a class member using the current
+// C code.
+
+
+lat_label :: ~lat_label()
+{
+}
+
+// Copy constructor
+lat_label :: lat_label( const lat_label & image) :
+                              instr_item((const instr_item &)image),
+                              pformat    ( image.pformat    ),
+                              pre_str  ( image.pre_str  ),
+                              post_str ( image.post_str ),
+                              blink    ( image.blink    )
+{
+  if( pre_str != NULL) {
+    if( post_str != NULL ) {
+      sprintf( format_buffer, "%s%s%s", pre_str, pformat, post_str );
+      }
+    else {
+      sprintf( format_buffer, "%s%s",   pre_str, pformat );
+      }
+    }
+  else {
+    if( post_str != NULL ) {
+      sprintf( format_buffer, "%s%s",   pformat, post_str );
+      }
+    } // else do nothing if both pre and post strings are nulls. Interesting.
+
+}
+
+lat_label & lat_label ::operator = (const lat_label & rhs )
+{
+  if( !(this == &rhs)) {
+    instr_item::operator = (rhs);
+    pformat      = rhs.pformat;
+    fontSize   = rhs.fontSize;
+    blink      = rhs.blink;
+    justify    = rhs.justify;
+    pre_str    = rhs.pre_str;
+    post_str   = rhs.post_str;
+    strcpy(format_buffer,rhs.format_buffer);    
+    }
+    return *this;
+}
+
+//
+// draw                    Draws a label anywhere in the HUD
+//
+//
+void lat_label ::
+draw( void )       // Required method in base class
+{
+//  char format_buffer[80];
+  char label_buffer[80];
+  int posincr;
+  int lenstr;
+  RECT  scrn_rect = get_location();
+  float lat = get_value();
+//  double lat = get_value();  
+  
+  if( data_available() ) {
+//  char *latstring = coord_format_lat(lat);
+    lenstr = sprintf( label_buffer, format_buffer, coord_format_lat(lat) );
+    }
+  else {
+    lenstr = sprintf( label_buffer, format_buffer );
+    }
+    
+#ifdef DEBUGHUD
+    fgPrintf( FG_COCKPIT, FG_DEBUG,  format_buffer );
+    fgPrintf( FG_COCKPIT, FG_DEBUG,  "\n" );
+    fgPrintf( FG_COCKPIT, FG_DEBUG, label_buffer );
+    fgPrintf( FG_COCKPIT, FG_DEBUG, "\n" );
+#endif
+//  lenstr = strlen( label_buffer );
+
+  posincr = 0;   //  default to RIGHT_JUST ... center located calc: -lenstr*8;
+
+  if( justify == CENTER_JUST ) {
+    posincr =  - (lenstr << 2); //  -lenstr*4;
+    }
+  else {
+    if( justify == LEFT_JUST ) {
+      posincr = - (lenstr << 8);  // 0;
+      }
+    }
+  if( fontSize == SMALL ) {
+    textString( scrn_rect.left + posincr, scrn_rect.top,
+                label_buffer, GLUT_BITMAP_8_BY_13);
+    }
+  else  {
+    if( fontSize == LARGE ) {
+      textString( scrn_rect.left + posincr, scrn_rect.top,
+                  label_buffer, GLUT_BITMAP_9_BY_15);
+      }
+    }
+}
+
diff --git a/Simulator/Cockpit/hud_lon.cxx b/Simulator/Cockpit/hud_lon.cxx
new file mode 100644 (file)
index 0000000..9ac38ea
--- /dev/null
@@ -0,0 +1,167 @@
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#ifdef HAVE_WINDOWS_H
+#  include <windows.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+#include <Aircraft/aircraft.hxx>
+#include <GUI/gui.h>
+#include <Include/fg_constants.h>
+#include <Math/fg_random.h>
+#include <Math/mat3.h>
+#include <Math/polar3d.hxx>
+#include <Scenery/scenery.hxx>
+#include <Time/fg_timer.hxx>
+
+
+#include "hud.hxx"
+
+#ifdef USE_HUD_TextList
+#define textString( x , y, text, font )  TextString( font, text, x , y )
+#endif
+
+//======================= Top of instr_label class =========================
+lon_label ::
+         lon_label( int           x,
+                      int           y,
+                      UINT          width,
+                      UINT          height,
+                      FLTFNPTR      data_source,
+//                      DBLFNPTR      data_source,                  
+                      const char   *label_format,
+                      const char   *pre_label_string,
+                      const char   *post_label_string,
+                      float        scale_data,
+//                      double        scale_data,                   
+                      UINT          options,
+                      fgLabelJust   justification,
+                      int           font_size,
+                      int           blinking,
+                      bool          working ):
+                           instr_item( x, y, width, height,
+                                       data_source, scale_data,options, working ),
+                           pformat  ( label_format      ),
+                           pre_str  ( pre_label_string  ),
+                           post_str ( post_label_string ),
+                           justify  ( justification     ),
+                           fontSize ( font_size         ),
+                           blink    ( blinking          )
+{
+  if( pre_str != NULL) {
+    if( post_str != NULL ) {
+      sprintf( format_buffer, "%s%s%s", pre_str, pformat, post_str );
+      }
+    else {
+      sprintf( format_buffer, "%s%s",   pre_str, pformat );
+      }
+    }
+  else {
+    if( post_str != NULL ) {
+      sprintf( format_buffer, "%s%s",   pformat, post_str );
+      }
+    } // else do nothing if both pre and post strings are nulls. Interesting.
+
+}
+
+// I put this in to make it easy to construct a class member using the current
+// C code.
+
+
+lon_label :: ~lon_label()
+{
+}
+
+// Copy constructor
+lon_label :: lon_label( const lon_label & image) :
+                              instr_item((const instr_item &)image),
+                              pformat    ( image.pformat    ),
+                              pre_str  ( image.pre_str  ),
+                              post_str ( image.post_str ),
+                              blink    ( image.blink    )
+{
+  if( pre_str != NULL) {
+    if( post_str != NULL ) {
+      sprintf( format_buffer, "%s%s%s", pre_str, pformat, post_str );
+      }
+    else {
+      sprintf( format_buffer, "%s%s",   pre_str, pformat );
+      }
+    }
+  else {
+    if( post_str != NULL ) {
+      sprintf( format_buffer, "%s%s",   pformat, post_str );
+      }
+    } // else do nothing if both pre and post strings are nulls. Interesting.
+
+}
+
+lon_label & lon_label ::operator = (const lon_label & rhs )
+{
+  if( !(this == &rhs)) {
+    instr_item::operator = (rhs);
+    pformat      = rhs.pformat;
+    fontSize   = rhs.fontSize;
+    blink      = rhs.blink;
+    justify    = rhs.justify;
+    pre_str    = rhs.pre_str;
+    post_str   = rhs.post_str;
+    strcpy(format_buffer,rhs.format_buffer);    
+    }
+    return *this;
+}
+
+//
+// draw                    Draws a label anywhere in the HUD
+//
+//
+void lon_label ::
+draw( void )       // Required method in base class
+{
+//  char format_buffer[80];
+  char label_buffer[80];
+  int posincr;
+  int lenstr;
+  RECT  scrn_rect = get_location();
+  float lon = get_value();
+//  double lon = get_value();  
+  if( data_available() ) {
+//  char *lonstring = coord_format_lon(lon);
+    lenstr = sprintf( label_buffer, format_buffer, coord_format_lon(lon) );
+    }
+  else {
+    lenstr = sprintf( label_buffer, format_buffer );
+    }
+    
+#ifdef DEBUGHUD
+    fgPrintf( FG_COCKPIT, FG_DEBUG,  format_buffer );
+    fgPrintf( FG_COCKPIT, FG_DEBUG,  "\n" );
+    fgPrintf( FG_COCKPIT, FG_DEBUG, label_buffer );
+    fgPrintf( FG_COCKPIT, FG_DEBUG, "\n" );
+#endif
+//  lenstr = strlen( label_buffer );
+
+  posincr = 0;   //  default to RIGHT_JUST ... center located calc: -lenstr*8;
+
+  if( justify == CENTER_JUST ) {
+    posincr =  - (lenstr << 2); //  -lenstr*4;
+    }
+  else {
+    if( justify == LEFT_JUST ) {
+      posincr = - (lenstr << 8);  // 0;
+      }
+    }
+  if( fontSize == SMALL ) {
+    textString( scrn_rect.left + posincr, scrn_rect.top,
+                label_buffer, GLUT_BITMAP_8_BY_13);
+    }
+  else  {
+    if( fontSize == LARGE ) {
+      textString( scrn_rect.left + posincr, scrn_rect.top,
+                  label_buffer, GLUT_BITMAP_9_BY_15);
+      }
+    }
+}
+