Qwt User's Guide  6.1-rc3
 All Classes Functions Variables Typedefs Enumerations Enumerator Pages
qwt_series_store.h
1 /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
2  * Qwt Widget Library
3  * Copyright (C) 1997 Josef Wilgen
4  * Copyright (C) 2002 Uwe Rathmann
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the Qwt License, Version 1.0
8  *****************************************************************************/
9 
10 #ifndef QWT_SERIES_STORE_H
11 #define QWT_SERIES_STORE_H
12 
13 #include "qwt_global.h"
14 #include "qwt_series_data.h"
15 
25 {
26 protected:
29 
31  virtual void dataChanged() = 0;
32 
37  virtual void setRectOfInterest( const QRectF & ) = 0;
38 
40  virtual QRectF dataRect() const = 0;
41 
43  virtual size_t dataSize() const = 0;
44 };
45 
56 template <typename T>
58 {
59 public:
64  explicit QwtSeriesStore<T>();
65 
68 
76  void setData( QwtSeriesData<T> *series );
77 
80 
82  const QwtSeriesData<T> *data() const;
83 
88  T sample( int index ) const;
89 
95  virtual size_t dataSize() const;
96 
103  virtual QRectF dataRect() const;
104 
111  virtual void setRectOfInterest( const QRectF &rect );
112 
120 
121 private:
122  QwtSeriesData<T> *d_series;
123 };
124 
125 template <typename T>
127  d_series( NULL )
128 {
129 }
130 
131 template <typename T>
133 {
134  delete d_series;
135 }
136 
137 template <typename T>
139 {
140  return d_series;
141 }
142 
143 template <typename T>
145 {
146  return d_series;
147 }
148 
149 template <typename T>
150 inline T QwtSeriesStore<T>::sample( int index ) const
151 {
152  return d_series ? d_series->sample( index ) : T();
153 }
154 
155 template <typename T>
157 {
158  if ( d_series != series )
159  {
160  delete d_series;
161  d_series = series;
162  dataChanged();
163  }
164 }
165 
166 template <typename T>
168 {
169  if ( d_series == NULL )
170  return 0;
171 
172  return d_series->size();
173 }
174 
175 template <typename T>
177 {
178  if ( d_series == NULL )
179  return QRectF( 1.0, 1.0, -2.0, -2.0 ); // invalid
180 
181  return d_series->boundingRect();
182 }
183 
184 template <typename T>
185 void QwtSeriesStore<T>::setRectOfInterest( const QRectF &rect )
186 {
187  if ( d_series )
188  d_series->setRectOfInterest( rect );
189 }
190 
191 template <typename T>
193 {
194  QwtSeriesData<T> * swappedSeries = d_series;
195  d_series = series;
196 
197  return swappedSeries;
198 }
199 
200 #endif