void InfoBoxContentFlightLevel::Update(InfoBoxWindow &infobox) { const NMEAInfo &basic = CommonInterface::Basic(); const SETTINGS_COMPUTER &settings_computer = CommonInterface::SettingsComputer(); TCHAR sTmp[32]; if (basic.pressure_altitude_available) { fixed Altitude = Units::ToUserUnit(basic.pressure_altitude, unFeet); // Title color black infobox.SetColorTop(0); // Set Value _stprintf(sTmp, _T("%03d"), iround(Altitude/100)); infobox.SetValue(sTmp); // Set Comment _stprintf(sTmp, _T("%dft"), iround(Altitude)); infobox.SetComment(sTmp); } else if (basic.gps_altitude_available && settings_computer.pressure_available) { // Take gps altitude as baro altitude. This is inaccurate but still fits our needs. const AtmosphericPressure &qnh = settings_computer.pressure; fixed Altitude = Units::ToUserUnit(qnh.QNHAltitudeToPressureAltitude(basic.gps_altitude), unFeet); // Title color red infobox.SetColorTop(1); // Set Value _stprintf(sTmp, _T("%03d"), iround(Altitude/100)); infobox.SetValue(sTmp); // Set Comment _stprintf(sTmp, _T("%dft"), iround(Altitude)); infobox.SetComment(sTmp); } else if ((basic.baro_altitude_available || basic.gps_altitude_available) && !settings_computer.pressure_available) { infobox.SetInvalid(); infobox.SetComment(_("no QNH")); } else { infobox.SetInvalid(); } }