void UpdateInfoBoxGRInstant(InfoBoxData &data) { const auto gr = CommonInterface::Calculated().gr; if (!::GradientValid(gr)) { data.SetInvalid(); return; } // Set Value data.SetValueFromGlideRatio(gr); }
void UpdateInfoBoxLDVario(InfoBoxData &data) { const auto ld_vario = CommonInterface::Calculated().ld_vario; if (!::GradientValid(ld_vario) || !CommonInterface::Basic().total_energy_vario_available || !CommonInterface::Basic().airspeed_available) { data.SetInvalid(); return; } // Set Value data.SetValueFromGlideRatio(ld_vario); }
void InfoBoxContentAlternateGR::Update(InfoBoxData &data) { if (protected_task_manager == NULL) { data.SetInvalid(); return; } ProtectedTaskManager::Lease lease(*protected_task_manager); const AlternateList &alternates = lease->GetAlternates(); const AlternatePoint *alternate; if (!alternates.empty()) { if (index >= alternates.size()) index = alternates.size() - 1; alternate = &alternates[index]; } else { alternate = NULL; } data.FormatTitle(_T("Altn %d GR"), index + 1); if (alternate == NULL) { data.SetInvalid(); return; } data.SetComment(alternate->waypoint.name.c_str()); fixed gradient = ::AngleToGradient(alternate->solution.DestinationAngleGround()); if (negative(gradient)) { data.SetValueColor(0); data.SetValue(_T("+++")); return; } if (::GradientValid(gradient)) { data.SetValueFromGlideRatio(gradient); } else { data.SetInvalid(); } // Set Color (blue/black) data.SetValueColor(alternate->solution.IsFinalGlide() ? 2 : 0); }
void UpdateInfoBoxGRAvg(InfoBoxData &data) { const auto average_gr = CommonInterface::Calculated().average_gr; if (average_gr == 0) { data.SetInvalid(); return; } // Set Value if (average_gr < 0) data.SetValue(_T("^^^")); else if (!::GradientValid(average_gr)) data.SetValue(_T("+++")); else data.SetValueFromGlideRatio(average_gr); }
void UpdateInfoBoxFinalGR(InfoBoxData &data) { const TaskStats &task_stats = CommonInterface::Calculated().task_stats; if (!task_stats.task_valid) { data.SetInvalid(); return; } fixed gradient = task_stats.total.gradient; if (!positive(gradient)) { data.SetValue(_T("+++")); return; } if (::GradientValid(gradient)) data.SetValueFromGlideRatio(gradient); else data.SetInvalid(); }
void UpdateInfoBoxGRCruise(InfoBoxData &data) { const auto &basic = CommonInterface::Basic(); const auto &calculated = CommonInterface::Calculated(); const auto cruise_gr = calculated.cruise_gr; if (!::GradientValid(cruise_gr)) { data.SetInvalid(); return; } // Set Value data.SetValueFromGlideRatio(cruise_gr); if (basic.location_available) data.SetCommentFromDistance(basic.location.DistanceS(calculated.cruise_start_location)); else data.SetCommentInvalid(); }
void UpdateInfoBoxNextGR(InfoBoxData &data) { // pilots want this to be assuming terminal flight to this wp, and this // is what current_leg gradient does. if (!CommonInterface::Calculated().task_stats.task_valid) { data.SetInvalid(); return; } fixed gradient = CommonInterface::Calculated().task_stats.current_leg.gradient; if (!positive(gradient)) { data.SetValue(_T("+++")); return; } if (::GradientValid(gradient)) { data.SetValueFromGlideRatio(gradient); } else { data.SetInvalid(); } }