00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
#include "qwt_data.h"
00013
00014 QwtData::QwtData()
00015 {
00016 }
00017
00018 QwtData::~QwtData()
00019 {
00020 }
00021
00033 QwtDoubleRect QwtData::boundingRect()
const
00034
{
00035
const size_t sz =
size();
00036
00037
if ( sz <= 0 )
00038
return QwtDoubleRect(1.0, -1.0, 1.0, -1.0);
00039
00040
double minX, maxX, minY, maxY;
00041 minX = maxX =
x(0);
00042 minY = maxY =
y(0);
00043
00044
for ( size_t i = 1; i < sz; i++ )
00045 {
00046
const double xv =
x(i);
00047
if ( xv < minX )
00048 minX = xv;
00049
if ( xv > maxX )
00050 maxX = xv;
00051
00052
const double yv =
y(i);
00053
if ( yv < minY )
00054 minY = yv;
00055
if ( yv > maxY )
00056 maxY = yv;
00057 }
00058
return QwtDoubleRect(minX, maxX, minY, maxY);
00059 }
00060
00061 QwtDoublePointData::QwtDoublePointData(
const QwtArray<QwtDoublePoint> &data):
00062 d_data(data)
00063 {
00064 }
00065
00067 QwtDoublePointData&
QwtDoublePointData::operator=(
00068
const QwtDoublePointData &data)
00069 {
00070
if (
this != &data)
00071 {
00072 d_data = data.
d_data;
00073 }
00074
return *
this;
00075 }
00076
00077 size_t
QwtDoublePointData::size()
const
00078
{
00079
return d_data.size();
00080 }
00081
00082 double QwtDoublePointData::x(size_t i)
const
00083
{
00084
return d_data[int(i)].x();
00085 }
00086
00087 double QwtDoublePointData::y(size_t i)
const
00088
{
00089
return d_data[int(i)].y();
00090 }
00091
00092 QwtData *
QwtDoublePointData::copy()
const
00093
{
00094
return new QwtDoublePointData(d_data);
00095 }
00096
00102 QwtArrayData::QwtArrayData(
00103
const QwtArray<double> &x,
const QwtArray<double> &y): d_x(x), d_y(y)
00104 {
00105 }
00106
00112 QwtArrayData::QwtArrayData(
const double *x,
const double *y, size_t size)
00113 {
00114 d_x.detach();
00115 d_x.duplicate(x, size);
00116 d_y.detach();
00117 d_y.duplicate(y, size);
00118 }
00119
00121 QwtArrayData&
QwtArrayData::operator=(
const QwtArrayData &data)
00122 {
00123
if (
this != &data)
00124 {
00125 d_x = data.
d_x;
00126 d_y = data.
d_y;
00127 }
00128
return *
this;
00129 }
00130
00131 size_t
QwtArrayData::size()
const
00132
{
00133
return QMIN(d_x.size(), d_y.size());
00134 }
00135
00136 double QwtArrayData::x(size_t i)
const
00137
{
00138
return d_x[int(i)];
00139 }
00140
00141 double QwtArrayData::y(size_t i)
const
00142
{
00143
return d_y[int(i)];
00144 }
00145
00146 QwtData *
QwtArrayData::copy()
const
00147
{
00148
return new QwtArrayData(d_x, d_y);
00149 }
00150
00156 QwtDoubleRect QwtArrayData::boundingRect()
const
00157
{
00158
const size_t sz =
size();
00159
00160
if ( sz <= 0 )
00161
return QwtDoubleRect(1.0, -1.0, 1.0, -1.0);
00162
00163
double minX, maxX, minY, maxY;
00164 QwtArray<double>::ConstIterator xIt = d_x.begin();
00165 QwtArray<double>::ConstIterator yIt = d_y.begin();
00166 QwtArray<double>::ConstIterator end = d_x.begin() + sz;
00167 minX = maxX = *xIt++;
00168 minY = maxY = *yIt++;
00169
00170
while ( xIt < end )
00171 {
00172
const double xv = *xIt++;
00173
if ( xv < minX )
00174 minX = xv;
00175
if ( xv > maxX )
00176 maxX = xv;
00177
00178
const double yv = *yIt++;
00179
if ( yv < minY )
00180 minY = yv;
00181
if ( yv > maxY )
00182 maxY = yv;
00183 }
00184
return QwtDoubleRect(minX, maxX, minY, maxY);
00185 }
00186
00187 QwtCPointerData::QwtCPointerData(
const double *x,
const double *y,
00188 size_t size):
00189 d_x(x), d_y(y), d_size(size)
00190 {
00191 }
00192
00194 QwtCPointerData&
QwtCPointerData::operator=(
const QwtCPointerData &data)
00195 {
00196
if (
this != &data)
00197 {
00198 d_x = data.
d_x;
00199 d_y = data.
d_y;
00200 d_size = data.
d_size;
00201 }
00202
return *
this;
00203 }
00204
00205 size_t
QwtCPointerData::size()
const
00206
{
00207
return d_size;
00208 }
00209
00210 double QwtCPointerData::x(size_t i)
const
00211
{
00212
return d_x[int(i)];
00213 }
00214
00215 double QwtCPointerData::y(size_t i)
const
00216
{
00217
return d_y[int(i)];
00218 }
00219
00220 QwtData *
QwtCPointerData::copy()
const
00221
{
00222
return new QwtCPointerData(d_x, d_y, d_size);
00223 }
00224
00230 QwtDoubleRect QwtCPointerData::boundingRect()
const
00231
{
00232
const size_t sz =
size();
00233
00234
if ( sz <= 0 )
00235
return QwtDoubleRect(1.0, -1.0, 1.0, -1.0);
00236
00237
double minX, maxX, minY, maxY;
00238
const double *xIt = d_x;
00239
const double *yIt = d_y;
00240
const double *end = d_x + sz;
00241 minX = maxX = *xIt++;
00242 minY = maxY = *yIt++;
00243
00244
while ( xIt < end )
00245 {
00246
const double xv = *xIt++;
00247
if ( xv < minX )
00248 minX = xv;
00249
if ( xv > maxX )
00250 maxX = xv;
00251
00252
const double yv = *yIt++;
00253
if ( yv < minY )
00254 minY = yv;
00255
if ( yv > maxY )
00256 maxY = yv;
00257 }
00258
return QwtDoubleRect(minX, maxX, minY, maxY);
00259 }
00260
00261
00262
00263
00264
00265