* @brief Configures the multi-line series data structure for the dashboard. */
| 2731 | * @brief Configures the multi-line series data structure for the dashboard. |
| 2732 | */ |
| 2733 | void UI::Dashboard::configureMultiLineSeries() |
| 2734 | { |
| 2735 | Q_ASSERT(m_points > 0); |
| 2736 | |
| 2737 | m_multipltValues.clear(); |
| 2738 | m_multipltValues.squeeze(); |
| 2739 | m_activeMultiplots.clear(); |
| 2740 | m_multiplotTimeRings.clear(); |
| 2741 | m_multiplotSweep.clear(); |
| 2742 | |
| 2743 | m_multipltXAxis = DSP::AxisData(points() + 1); |
| 2744 | m_multipltXAxis.fillRange(0, 1); |
| 2745 | |
| 2746 | for (int i = 0; i < widgetCount(SerialStudio::DashboardMultiPlot); ++i) { |
| 2747 | const auto& group = getGroupWidget(SerialStudio::DashboardMultiPlot, i); |
| 2748 | |
| 2749 | DSP::MultiLineSeries series; |
| 2750 | series.x = &m_multipltXAxis; |
| 2751 | for (size_t j = 0; j < group.datasets.size(); ++j) |
| 2752 | series.y.push_back(DSP::AxisData(points() + 1)); |
| 2753 | |
| 2754 | m_multipltValues.append(series); |
| 2755 | m_activeMultiplots.insert(i, true); |
| 2756 | |
| 2757 | if (useTimeXAxisGroup(group)) { |
| 2758 | const int cap = timeRingCapacity(m_plotTimeRange); |
| 2759 | std::vector<DSP::TimeRing> rings; |
| 2760 | rings.reserve(group.datasets.size()); |
| 2761 | for (size_t j = 0; j < group.datasets.size(); ++j) |
| 2762 | rings.push_back(makeHistoryRing(m_plotTimeRange)); |
| 2763 | |
| 2764 | m_multiplotTimeRings.insert(i, std::move(rings)); |
| 2765 | |
| 2766 | DSP::SweepEngine sweep; |
| 2767 | sweep.configure(static_cast<int>(group.datasets.size()), cap, m_plotTimeRange); |
| 2768 | m_multiplotSweep.insert(i, std::move(sweep)); |
| 2769 | } |
| 2770 | } |
| 2771 | |
| 2772 | buildMultiplotPushes(); |
| 2773 | } |
| 2774 | |
| 2775 | /** |
| 2776 | * @brief Resolves the per-tick multiplot push table from the configured buffers. |
nothing calls this directly
no test coverage detected