]> git.mxchange.org Git - flightgear.git/blobdiff - src/Cockpit/hud_labl.cxx
Update from JSBSim
[flightgear.git] / src / Cockpit / hud_labl.cxx
index 048394e0cc40046f35dbb6972af40558b1663ae5..305d6a052d5867ccbe7f84c33a9eb5b855b8791e 100644 (file)
@@ -1,31 +1,11 @@
-#ifdef HAVE_CONFIG_H
-#  include <config.h>
-#endif
-
-#ifdef HAVE_WINDOWS_H
-#  include <windows.h>
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-
-#include <simgear/constants.h>
-#include <simgear/math/fg_random.h>
-#include <simgear/math/mat3.h>
-#include <simgear/math/polar3d.hxx>
-
-#include <Aircraft/aircraft.hxx>
-#include <GUI/gui.h>
-#include <Scenery/scenery.hxx>
-#include <Time/fg_timer.hxx>
 
 #include "hud.hxx"
 
 
 #ifdef USE_HUD_TextList
-#define textString( x , y, text, font )  TextString( text, x , y )
+#define textString( x , y, text, font,digit )  TextString( text, x , y,digit ) //suma
 #else
-#define textString( x , y, text, font )  puDrawString ( guiFnt, text, x, y );
+#define textString( x , y, text, font,digit )  puDrawString ( guiFnt, text, x, y ); //suma
 #endif
 
 //======================= Top of instr_label class =========================
@@ -43,15 +23,23 @@ instr_label ::
                       fgLabelJust   justification,
                       int           font_size,
                       int           blinking,
-                      bool          working ):
+                                     bool                      latitude,
+                                     bool                      longitude,
+                                         bool                  label_box,//hud
+                      bool          working,
+                                         int                   digit):  //suma
                            instr_item( x, y, width, height,
-                                       data_source, scale_data,options, working ),
+                                       data_source,scale_data,options, working, digit), //suma
                            pformat  ( label_format      ),
                            pre_str  ( pre_label_string  ),
                            post_str ( post_label_string ),
                            justify  ( justification     ),
                            fontSize ( font_size         ),
-                           blink    ( blinking          )
+                           blink    ( blinking          ),
+                                                  lat          ( latitude                      ),
+                                                  lon          ( longitude                     ),
+                                                  lbox         ( label_box                     ) //hud
+
 {
   if( pre_str != NULL) {
     if( post_str != NULL ) {
@@ -83,7 +71,11 @@ instr_label :: instr_label( const instr_label & image) :
                               pformat    ( image.pformat    ),
                               pre_str  ( image.pre_str  ),
                               post_str ( image.post_str ),
-                              blink    ( image.blink    )
+                              blink    ( image.blink    ),
+                                                         lat      ( image.lat          ),
+                                                         lon      ( image.lon          ),      
+                                                         lbox     (image.lbox          ) //hud
+
 {
   if( pre_str != NULL) {
     if( post_str != NULL ) {
@@ -111,6 +103,11 @@ instr_label & instr_label ::operator = (const instr_label & rhs )
     justify    = rhs.justify;
     pre_str    = rhs.pre_str;
     post_str   = rhs.post_str;
+    lat                   = rhs.lat;
+    lon                   = rhs.lon;
+       lbox       = rhs.lbox; //hud
+
+
     strcpy(format_buffer,rhs.format_buffer);   
     }
   return *this;
@@ -130,22 +127,56 @@ draw( void )       // Required method in base class
   RECT  scrn_rect = get_location();
 
   if( data_available() ) {
-    sprintf( label_buffer, format_buffer, get_value() );
-    }
+       if(lat)
+               sprintf( label_buffer, format_buffer, coord_format_lat(get_value()) );
+       else
+       if(lon)    
+               sprintf( label_buffer, format_buffer, coord_format_lon(get_value()) );
+       else
+       {       
+               if(lbox)//hud
+                       {// Box for label
+                               float x = scrn_rect.left;
+                               float y = scrn_rect.top;
+                               float w = scrn_rect.right;
+                       float h = HUD_TextSize;
+
+                               glPushMatrix();
+                               glLoadIdentity();
+                               glBegin(GL_LINES);
+                                       glVertex2f( x - 2.0,  y - 2.0);
+                                       glVertex2f( x + w + 2.0, y - 2.0);
+                                       glVertex2f( x + w + 2.0, y + h + 2.0);
+                                       glVertex2f( x - 2.0,  y + h + 2.0);
+                               glEnd();
+                       glEnable(GL_LINE_STIPPLE);
+                               glLineStipple( 1, 0xAAAA );
+                               glBegin(GL_LINES);
+                                       glVertex2f( x + w + 2.0, y - 2.0);
+                                       glVertex2f( x + w + 2.0, y + h + 2.0);
+                                       glVertex2f( x - 2.0,  y + h + 2.0);
+                                       glVertex2f( x - 2.0,  y - 2.0);
+                               glEnd();
+                       glDisable(GL_LINE_STIPPLE);
+                               glPopMatrix();
+                       }//hud
+               sprintf( label_buffer, format_buffer, get_value()*data_scaling() );
+       }
+  }
   else {
-    sprintf( label_buffer, format_buffer );
-    }
+//    sprintf( label_buffer, format_buffer );
+  }
   
   lenstr = getStringWidth( label_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" );
+  fgPrintf( SG_COCKPIT, SG_DEBUG,  format_buffer );
+  fgPrintf( SG_COCKPIT, SG_DEBUG,  "\n" );
+  fgPrintf( SG_COCKPIT, SG_DEBUG, label_buffer );
+  fgPrintf( SG_COCKPIT, SG_DEBUG, "\n" );
 #endif
-//  lenstr = strlen( label_buffer );
+  lenstr = strlen( label_buffer );
 
   if( justify == RIGHT_JUST ) {
          posincr = scrn_rect.right - lenstr;
@@ -158,12 +189,12 @@ draw( void )       // Required method in base class
   
   if( fontSize == SMALL ) {
     textString( scrn_rect.left + posincr, scrn_rect.top,
-                label_buffer, GLUT_BITMAP_8_BY_13);
+                label_buffer, GLUT_BITMAP_8_BY_13 ,get_digits()); //suma
     }
   else  {
     if( fontSize == LARGE ) {
       textString( scrn_rect.left + posincr, scrn_rect.top,
-                  label_buffer, GLUT_BITMAP_9_BY_15);
+                  label_buffer, GLUT_BITMAP_9_BY_15 ,get_digits()); //suma
       }
     }
 }