void VisitPolygon(const AirspacePolygon &airspace) { if (warnings.IsAcked(airspace)) return; AirspaceClass airspace_class = airspace.GetType(); if (settings.classes[airspace_class].fill_mode == AirspaceClassRendererSettings::FillMode::NONE) return; BufferRenderStart(); SetBufferPens(airspace); DrawSearchPointVector(airspace.GetPoints()); }
void VisitCircle(const AirspaceCircle &airspace) { if (warnings.IsAcked(airspace)) return; AirspaceClass airspace_class = airspace.GetType(); if (settings.classes[airspace_class].fill_mode == AirspaceClassRendererSettings::FillMode::NONE) return; BufferRenderStart(); SetBufferPens(airspace); RasterPoint center = proj.GeoToScreen(airspace.GetCenter()); unsigned radius = proj.GeoToScreenDistance(airspace.GetRadius()); DrawCircle(center, radius); }
virtual void Visit(const AbstractAirspace &airspace) override { if (warnings.IsAcked(airspace)) return; AirspaceClass airspace_class = airspace.GetType(); if (settings.fill_mode == AirspaceRendererSettings::FillMode::NONE || settings.classes[airspace_class].fill_mode == AirspaceClassRendererSettings::FillMode::NONE) return; Begin(); SetBufferPens(airspace); switch (airspace.GetShape()) { case AbstractAirspace::Shape::CIRCLE: VisitCircle((const AirspaceCircle &)airspace); break; case AbstractAirspace::Shape::POLYGON: VisitPolygon((const AirspacePolygon &)airspace); break; } }