#include "Visualization/PlottablesRenderingUtils.h" #include #include #include namespace { /** * Delegate used to set plottables properties */ template struct PlottablesSetter { static void setProperties(T &, PlottablesMap &) { // Default implementation does nothing } }; /** * Specialization of PlottablesSetter for scalars and vectors * @sa ScalarSeries * @sa VectorSeries */ template struct PlottablesSetter::value or std::is_base_of::value> > { static void setProperties(T &dataSeries, PlottablesMap &plottables) { /// @todo ALX } }; /** * Default implementation of IPlottablesHelper, which takes data series to set plottables properties * @tparam T the data series' type */ template struct PlottablesHelper : public IPlottablesHelper { explicit PlottablesHelper(T &dataSeries) : m_DataSeries{dataSeries} {} void setProperties(PlottablesMap &plottables) override { PlottablesSetter::setProperties(m_DataSeries, plottables); } T &m_DataSeries; }; } // namespace std::unique_ptr IPlottablesHelperFactory::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); } }