00001 #ifndef PLOTDATA_QWT_H 00002 #define PLOTDATA_QWT_H 00003 00004 #include "series_data.h" 00005 #include "PlotJuggler/plotdata.h" 00006 00007 class TimeseriesQwt: public DataSeriesBase 00008 { 00009 public: 00010 00011 TimeseriesQwt(const PlotData *source_data, const PlotData* transformed_data); 00012 00013 PlotData::RangeValueOpt getVisualizationRangeY(PlotData::RangeTime range_X) override; 00014 00015 nonstd::optional<QPointF> sampleFromTime(double t) override; 00016 00017 protected: 00018 const PlotData* _source_data; 00019 PlotData _cached_data; 00020 }; 00021 00022 //--------------------------------------------------------- 00023 00024 class Timeseries_NoTransform: public TimeseriesQwt 00025 { 00026 public: 00027 Timeseries_NoTransform(const PlotData* source_data): 00028 TimeseriesQwt( source_data, source_data ) 00029 { 00030 updateCache(); 00031 } 00032 00033 bool updateCache() override; 00034 00035 }; 00036 00037 class Timeseries_1stDerivative: public TimeseriesQwt 00038 { 00039 public: 00040 Timeseries_1stDerivative(const PlotData* source_data): 00041 TimeseriesQwt(source_data, &_cached_data) 00042 { 00043 updateCache(); 00044 } 00045 00046 bool updateCache() override; 00047 }; 00048 00049 class Timeseries_2ndDerivative: public TimeseriesQwt 00050 { 00051 public: 00052 Timeseries_2ndDerivative(const PlotData* source_data): 00053 TimeseriesQwt(source_data, &_cached_data) 00054 { 00055 updateCache(); 00056 } 00057 00058 bool updateCache() override; 00059 }; 00060 00061 00062 00063 #endif // PLOTDATA_H