X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FAutopilot%2Fauto_gui.cxx;h=20ccc7bedd5f46aaf4669f93928eab642e93c876;hb=249fbedcae232822e97a7923e72769d44d3c9f19;hp=833180d9056e9f1e0d103dbed8f059957964dd15;hpb=4c4d17631fb9a7794e0009ebebe285b1f9eed967;p=flightgear.git diff --git a/src/Autopilot/auto_gui.cxx b/src/Autopilot/auto_gui.cxx index 833180d90..20ccc7bed 100644 --- a/src/Autopilot/auto_gui.cxx +++ b/src/Autopilot/auto_gui.cxx @@ -26,19 +26,27 @@ # include #endif +#include + #include #include +#include + +#include STL_STRING +#include +#include +#include #include #include +#include #include #include #include #include #include -#include
#include
#include
#include
@@ -47,6 +55,8 @@ #include "auto_gui.hxx" #include "newauto.hxx" +SG_USING_STD(string); + #define mySlider puSlider @@ -209,19 +219,22 @@ void NewHeading(puObject *cb) { // string ApHeadingLabel( "Enter New Heading" ); // ApHeadingDialogMessage -> setLabel(ApHeadingLabel.c_str()); + float heading = current_autopilot->get_DGTargetHeading(); + while ( heading < 0.0 ) { heading += 360.0; } + ApHeadingDialogInput -> setValue ( heading ); ApHeadingDialogInput -> acceptInput(); FG_PUSH_PUI_DIALOG( ApHeadingDialog ); } -void NewHeadingInit(void) +void NewHeadingInit() { // printf("NewHeadingInit\n"); char NewHeadingLabel[] = "Enter New Heading"; char *s; - float heading = FGBFI::getHeading(); + float heading = fgGetDouble("/orientation/heading-deg"); int len = 260/2 - - (puGetStringWidth( puGetDefaultLabelFont(), NewHeadingLabel ) /2 ); + (puGetDefaultLabelFont().getStringWidth( NewHeadingLabel ) / 2 ); ApHeadingDialog = new puDialogBox (150, 50); { @@ -281,11 +294,13 @@ void ApAltitudeDialog_OK (puObject *me) void NewAltitude(puObject *cb) { + float altitude = current_autopilot->get_TargetAltitude() * SG_METER_TO_FEET; + ApAltitudeDialogInput -> setValue( altitude ); ApAltitudeDialogInput -> acceptInput(); FG_PUSH_PUI_DIALOG( ApAltitudeDialog ); } -void NewAltitudeInit(void) +void NewAltitudeInit() { // printf("NewAltitudeInit\n"); char NewAltitudeLabel[] = "Enter New Altitude"; @@ -298,7 +313,7 @@ void NewAltitudeInit(void) } int len = 260/2 - - (puGetStringWidth( puGetDefaultLabelFont(), NewAltitudeLabel )/2); + (puGetDefaultLabelFont().getStringWidth( NewAltitudeLabel ) / 2); // ApAltitudeDialog = new puDialogBox (150, 50); ApAltitudeDialog = new puDialogBox (150, 200); @@ -332,15 +347,12 @@ void NewAltitudeInit(void) FG_FINALIZE_PUI_DIALOG( ApAltitudeDialog ); } -/////// simple AutoPilot GAIN / LIMITS ADJUSTER - -#define fgAP_CLAMP(val,min,max) ( (val) = (val) > (max) ? (max) : (val) < (min) ? (min) : (val) ) static void maxroll_adj( puObject *hs ) { float val ; hs-> getValue ( &val ) ; - fgAP_CLAMP ( val, 0.1, 1.0 ) ; + SG_CLAMP_RANGE ( val, 0.1f, 1.0f ) ; // printf ( "maxroll_adj( %p ) %f %f\n", hs, val, MaxRollAdjust * val ) ; current_autopilot->set_MaxRoll( MaxRollAdjust * val ); sprintf( SliderText[ 0 ], "%05.2f", current_autopilot->get_MaxRoll() ); @@ -351,7 +363,7 @@ static void rollout_adj( puObject *hs ) { float val ; hs-> getValue ( &val ) ; - fgAP_CLAMP ( val, 0.1, 1.0 ) ; + SG_CLAMP_RANGE ( val, 0.1f, 1.0f ) ; // printf ( "rollout_adj( %p ) %f %f\n", hs, val, RollOutAdjust * val ) ; current_autopilot->set_RollOut( RollOutAdjust * val ); sprintf( SliderText[ 1 ], "%05.2f", current_autopilot->get_RollOut() ); @@ -362,7 +374,7 @@ static void maxaileron_adj( puObject *hs ) { float val ; hs-> getValue ( &val ) ; - fgAP_CLAMP ( val, 0.1, 1.0 ) ; + SG_CLAMP_RANGE ( val, 0.1f, 1.0f ) ; // printf ( "maxaileron_adj( %p ) %f %f\n", hs, val, MaxAileronAdjust * val ) ; current_autopilot->set_MaxAileron( MaxAileronAdjust * val ); sprintf( SliderText[ 3 ], "%05.2f", current_autopilot->get_MaxAileron() ); @@ -373,7 +385,7 @@ static void rolloutsmooth_adj( puObject *hs ) { float val ; hs -> getValue ( &val ) ; - fgAP_CLAMP ( val, 0.1, 1.0 ) ; + SG_CLAMP_RANGE ( val, 0.1f, 1.0f ) ; // printf ( "rolloutsmooth_adj( %p ) %f %f\n", hs, val, RollOutSmoothAdjust * val ) ; current_autopilot->set_RollOutSmooth( RollOutSmoothAdjust * val ); sprintf( SliderText[ 2 ], "%5.2f", current_autopilot->get_RollOutSmooth() ); @@ -406,7 +418,7 @@ void resetAPAdjust( puObject *self ) { fgAPAdjust( self ); } -void fgAPAdjust( puObject * ) { +void fgAPAdjust( puObject *self ) { TmpMaxRollValue = current_autopilot->get_MaxRoll(); TmpRollOutValue = current_autopilot->get_RollOut(); TmpMaxAileronValue = current_autopilot->get_MaxAileron(); @@ -427,7 +439,7 @@ void fgAPAdjust( puObject * ) { } // Done once at system initialization -void fgAPAdjustInit( void ) { +void fgAPAdjustInit() { // printf("fgAPAdjustInit\n"); #define HORIZONTAL FALSE @@ -440,7 +452,7 @@ void fgAPAdjustInit( void ) { char *s; int labelX = (DialogWidth / 2) - - (puGetStringWidth( puGetDefaultLabelFont(), Label ) / 2); + (puGetDefaultLabelFont().getStringWidth( Label ) / 2); labelX -= 30; // KLUDGEY int nSliders = 4; @@ -469,8 +481,8 @@ void fgAPAdjustInit( void ) { puGetDefaultFonts ( &APAdjustLegendFont, &APAdjustLabelFont ); APAdjustDialog = new puDialogBox ( DialogX, DialogY ); { - int horiz_slider_height = puGetStringHeight (APAdjustLabelFont) + - puGetStringDescender (APAdjustLabelFont) + + int horiz_slider_height = APAdjustLabelFont.getStringHeight() + + APAdjustLabelFont.getStringDescender() + PUSTR_TGAP + PUSTR_BGAP + 5; APAdjustFrame = new puFrame ( 0, 0, @@ -636,7 +648,6 @@ void TgtAptDialog_OK (puObject *) void TgtAptDialog_Reset(puObject *) { - // strncpy( NewAirportId, fgGetString("/sim/startup/airport-id").c_str(), 16 ); sprintf( NewTgtAirportId, "%s", fgGetString("/sim/startup/airport-id").c_str() ); TgtAptDialogInput->setValue ( NewTgtAirportId ); TgtAptDialogInput->setCursor( 0 ) ; @@ -644,7 +655,6 @@ void TgtAptDialog_Reset(puObject *) void AddWayPoint(puObject *cb) { - // strncpy( NewAirportId, fgGetString("/sim/startup/airport-id").c_str(), 16 ); sprintf( NewTgtAirportId, "%s", fgGetString("/sim/startup/airport-id").c_str() ); TgtAptDialogInput->setValue( NewTgtAirportId ); @@ -664,7 +674,8 @@ void PopWayPoint(puObject *cb) current_autopilot->set_HeadingMode( FGAutopilot::FG_TC_HEADING_LOCK ); // use current heading - current_autopilot->set_TargetHeading( FGBFI::getHeading() ); + current_autopilot + ->set_TargetHeading(fgGetDouble("/orientation/heading-deg")); } } @@ -673,15 +684,14 @@ void ClearRoute(puObject *cb) globals->get_route()->clear(); } -void NewTgtAirportInit(void) +void NewTgtAirportInit() { SG_LOG( SG_AUTOPILOT, SG_INFO, " enter NewTgtAirportInit()" ); - // fgAPset_tgt_airport_id( fgGetString("/sim/startup/airport-id") ); - sprintf( NewTgtAirportId, "%s", fgGetString("/sim/startup/airport-id").c_str() ); + sprintf( NewTgtAirportId, "%s", + fgGetString("/sim/startup/airport-id").c_str() ); SG_LOG( SG_AUTOPILOT, SG_INFO, " NewTgtAirportId " << NewTgtAirportId ); - // printf(" NewTgtAirportId %s\n", NewTgtAirportId); - int len = 150 - puGetStringWidth( puGetDefaultLabelFont(), - NewTgtAirportLabel ) / 2; + int len = 150 + - puGetDefaultLabelFont().getStringWidth( NewTgtAirportLabel ) / 2; TgtAptDialog = new puDialogBox (150, 50); {