qwt_series_store.h
Go to the documentation of this file.
00001 /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
00002  * Qwt Widget Library
00003  * Copyright (C) 1997   Josef Wilgen
00004  * Copyright (C) 2002   Uwe Rathmann
00005  *
00006  * This library is free software; you can redistribute it and/or
00007  * modify it under the terms of the Qwt License, Version 1.0
00008  *****************************************************************************/
00009 
00010 #ifndef QWT_SERIES_STORE_H
00011 #define QWT_SERIES_STORE_H
00012 
00013 #include "qwt_global.h"
00014 #include "qwt_series_data.h"
00015 
00024 class QwtAbstractSeriesStore
00025 {
00026 protected:
00028     virtual ~QwtAbstractSeriesStore() {}
00029 
00031     virtual void dataChanged() = 0;
00032 
00037     virtual void setRectOfInterest( const QRectF & ) = 0;
00038 
00040     virtual QRectF dataRect() const = 0;
00041 
00043     virtual size_t dataSize() const = 0;
00044 };
00045 
00056 template <typename T>
00057 class QwtSeriesStore: public virtual QwtAbstractSeriesStore
00058 {
00059 public:
00064     explicit QwtSeriesStore<T>();
00065 
00067     ~QwtSeriesStore<T>();
00068 
00076     void setData( QwtSeriesData<T> *series );
00077 
00079     QwtSeriesData<T> *data();
00080 
00082     const QwtSeriesData<T> *data() const;
00083 
00088     T sample( int index ) const;
00089 
00094     virtual size_t dataSize() const;
00095 
00102     virtual QRectF dataRect() const;
00103 
00110     virtual void setRectOfInterest( const QRectF &rect );
00111 
00118     QwtSeriesData<T> *swapData( QwtSeriesData<T> *series );
00119 
00120 private:
00121     QwtSeriesData<T> *d_series;
00122 };
00123 
00124 template <typename T>
00125 QwtSeriesStore<T>::QwtSeriesStore():
00126     d_series( NULL )
00127 {
00128 }
00129 
00130 template <typename T>
00131 QwtSeriesStore<T>::~QwtSeriesStore()
00132 {
00133     delete d_series;
00134 }
00135 
00136 template <typename T>
00137 inline QwtSeriesData<T> *QwtSeriesStore<T>::data()
00138 {
00139     return d_series;
00140 }
00141 
00142 template <typename T>
00143 inline const QwtSeriesData<T> *QwtSeriesStore<T>::data() const
00144 {
00145     return d_series;
00146 }
00147 
00148 template <typename T>
00149 inline T QwtSeriesStore<T>::sample( int index ) const
00150 {
00151     return d_series ? d_series->sample( index ) : T();
00152 }
00153 
00154 template <typename T>
00155 void QwtSeriesStore<T>::setData( QwtSeriesData<T> *series )
00156 {
00157     if ( d_series != series )
00158     {
00159         delete d_series;
00160         d_series = series;
00161         dataChanged();
00162     }
00163 }
00164 
00165 template <typename T>
00166 size_t QwtSeriesStore<T>::dataSize() const
00167 {
00168     if ( d_series == NULL )
00169         return 0;
00170 
00171     return d_series->size();
00172 }
00173 
00174 template <typename T>
00175 QRectF QwtSeriesStore<T>::dataRect() const
00176 {
00177     if ( d_series == NULL )
00178         return QRectF( 1.0, 1.0, -2.0, -2.0 ); // invalid
00179 
00180     return d_series->boundingRect();
00181 }
00182 
00183 template <typename T>
00184 void QwtSeriesStore<T>::setRectOfInterest( const QRectF &rect )
00185 {
00186     if ( d_series )
00187         d_series->setRectOfInterest( rect );
00188 }
00189 
00190 template <typename T>
00191 QwtSeriesData<T>* QwtSeriesStore<T>::swapData( QwtSeriesData<T> *series )
00192 {
00193     QwtSeriesData<T> * swappedSeries = d_series;
00194     d_series = series;
00195 
00196     return swappedSeries;
00197 }
00198 
00199 #endif


plotjuggler
Author(s): Davide Faconti
autogenerated on Fri Sep 1 2017 02:41:56