static void DrawLegs(ChartRenderer &chart, const TaskManager &task_manager, const NMEAInfo& basic, const DerivedInfo& calculated, const bool task_relative) { const TaskStats &task_stats = calculated.ordered_task_stats; if (!task_stats.start.task_started) return; const auto start_time = task_relative ? basic.time - task_stats.total.time_elapsed : calculated.flight.takeoff_time; const OrderedTask &task = task_manager.GetOrderedTask(); for (unsigned i = 0, n = task.TaskSize(); i < n; ++i) { const OrderedTaskPoint &tp = task.GetTaskPoint(i); if (!IsTaskLegVisible(tp)) continue; auto x = tp.GetEnteredState().time - start_time; if (x >= 0) { x /= 3600; chart.DrawLine(x, chart.GetYMin(), x, chart.GetYMax(), ChartLook::STYLE_REDTHICK); } } }
void RenderTaskLegs(ChartRenderer &chart, const TaskManager &task_manager, const NMEAInfo& basic, const DerivedInfo& calculated, const double y) { const TaskStats &task_stats = calculated.ordered_task_stats; if (!task_stats.start.task_started) return; TCHAR sTmp[5]; const OrderedTask &task = task_manager.GetOrderedTask(); for (unsigned i = 0, n = task.TaskSize(); i < n; ++i) { const OrderedTaskPoint &tp = task.GetTaskPoint(i); if (!IsTaskLegVisible(tp)) continue; auto x = tp.GetEnteredState().time - calculated.flight.takeoff_time; if (x >= 0) { x /= 3600; if (y>=0) { if (i==0) { chart.DrawBlankRectangle(chart.GetXMin(), chart.GetYMin(), x, chart.GetYMax()); } else if (i+1 == task.TaskSize()) { chart.DrawBlankRectangle(x, chart.GetYMin(), chart.GetXMax(), chart.GetYMax()); } chart.DrawLine(x, chart.GetYMin(), x, chart.GetYMax(), ChartLook::STYLE_GRIDZERO); } if (y>=0) { StringFormatUnsafe(sTmp, _T("%d"), i); chart.DrawLabel(sTmp, x, chart.GetYMax()*y + chart.GetYMin()*(1-y)); } } } }