X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FCockpit%2Fhud_labl.cxx;h=95d5cc19a9da5cd034ea84d46741b44772151f1e;hb=c0b4531d04215f76f9cf65afbdaed6b7c0b32634;hp=d0512625acf129272d31fb2fddaa4401f4a56f7e;hpb=365b26d0933a4b9407e9a00b195f0e366d7a6b38;p=flightgear.git diff --git a/src/Cockpit/hud_labl.cxx b/src/Cockpit/hud_labl.cxx index d0512625a..95d5cc19a 100644 --- a/src/Cockpit/hud_labl.cxx +++ b/src/Cockpit/hud_labl.cxx @@ -3,9 +3,9 @@ #ifdef USE_HUD_TextList -#define textString( x , y, text, font ) TextString( text, x , y ) +#define textString( x , y, text, digit ) TextString( text, x , y,digit ) //suma #else -#define textString( x , y, text, font ) puDrawString ( guiFnt, text, x, y ); +#define textString( x , y, text, digit ) puDrawString ( guiFnt, text, x, y ); //suma #endif //======================= Top of instr_label class ========================= @@ -23,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 ) { @@ -63,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 ) { @@ -91,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; @@ -110,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; @@ -136,14 +187,14 @@ draw( void ) // Required method in base class posincr = 0; // 0; } - if( fontSize == SMALL ) { + if( fontSize == HUD_FONT_SMALL ) { textString( scrn_rect.left + posincr, scrn_rect.top, - label_buffer, GLUT_BITMAP_8_BY_13); + label_buffer, get_digits()); //suma } else { - if( fontSize == LARGE ) { + if( fontSize == HUD_FONT_LARGE ) { textString( scrn_rect.left + posincr, scrn_rect.top, - label_buffer, GLUT_BITMAP_9_BY_15); + label_buffer, get_digits()); //suma } } }