#include "Visualization/AxisRenderingUtils.h" #include #include #include namespace { /** * Delegate used to set axes properties */ template struct AxisSetter { static void setProperties(T &, QCustomPlot &, QCPColorScale &) { // Default implementation does nothing } }; /** * Specialization of AxisSetter for scalars and vectors * @sa ScalarSeries * @sa VectorSeries */ template struct AxisSetter::value or std::is_base_of::value> > { static void setProperties(T &dataSeries, QCustomPlot &plot, QCPColorScale &) { /// @todo ALX } }; /** * Default implementation of IAxisHelper, which takes data series to set axes properties * @tparam T the data series' type */ template struct AxisHelper : public IAxisHelper { explicit AxisHelper(T &dataSeries) : m_DataSeries{dataSeries} {} void setProperties(QCustomPlot &plot, QCPColorScale &colorScale) override { AxisSetter::setProperties(m_DataSeries, plot, colorScale); } T &m_DataSeries; }; } // namespace std::unique_ptr IAxisHelperFactory::create(std::shared_ptr dataSeries) noexcept { if (auto scalarSeries = std::dynamic_pointer_cast(dataSeries)) { return std::make_unique >(*scalarSeries); } else if (auto vectorSeries = std::dynamic_pointer_cast(dataSeries)) { return std::make_unique >(*vectorSeries); } else { return std::make_unique >(*dataSeries); } }