void MapWindow::DrawThermalEstimate(Canvas &canvas) const { const MoreData &basic = Basic(); const DerivedInfo &calculated = Calculated(); const ThermalLocatorInfo &thermal_locator = calculated.thermal_locator; if (render_projection.GetMapScale() > 4000) return; // draw only at close map scales in non-circling mode DrawThermalSources(canvas, look.thermal_source_icon, render_projection, thermal_locator.sources, basic.nav_altitude, calculated.wind_available ? calculated.wind : SpeedVector::Zero()); const auto &cloud_settings = ComputerSettings().tracking.skylines.cloud; if (cloud_settings.show_thermals && skylines_data != nullptr) { ScopeLock protect(skylines_data->mutex); for (auto &i : skylines_data->thermals) { // TODO: apply wind drift PixelPoint pt; if (render_projection.GeoToScreenIfVisible(i.bottom_location, pt)) look.thermal_source_icon.Draw(canvas, pt); } } }
void MapWindow::DrawThermalEstimate(Canvas &canvas) const { const MoreData &basic = Basic(); const DerivedInfo &calculated = Calculated(); const ThermalLocatorInfo &thermal_locator = calculated.thermal_locator; if (render_projection.GetMapScale() > 4000) return; // draw only at close map scales in non-circling mode DrawThermalSources(canvas, look.thermal_source_icon, render_projection, thermal_locator.sources, basic.nav_altitude, calculated.wind_available ? calculated.wind : SpeedVector::Zero()); }