Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include "qwt_math.h"
00011 #include "qwt_interval_data.h"
00012
00014 QwtIntervalData::QwtIntervalData()
00015 {
00016 }
00017
00019 QwtIntervalData::QwtIntervalData(
00020 const QwtArray<QwtDoubleInterval> &intervals,
00021 const QwtArray<double> &values):
00022 d_intervals(intervals),
00023 d_values(values)
00024 {
00025 }
00026
00028 QwtIntervalData::~QwtIntervalData()
00029 {
00030 }
00031
00033 void QwtIntervalData::setData(
00034 const QwtArray<QwtDoubleInterval> &intervals,
00035 const QwtArray<double> &values)
00036 {
00037 d_intervals = intervals;
00038 d_values = values;
00039 }
00040
00049 QwtDoubleRect QwtIntervalData::boundingRect() const
00050 {
00051 double minX, maxX, minY, maxY;
00052 minX = maxX = minY = maxY = 0.0;
00053
00054 bool isValid = false;
00055
00056 const size_t sz = size();
00057 for ( size_t i = 0; i < sz; i++ )
00058 {
00059 const QwtDoubleInterval intv = interval(i);
00060 if ( !intv.isValid() )
00061 continue;
00062
00063 const double v = value(i);
00064
00065 if ( !isValid )
00066 {
00067 minX = intv.minValue();
00068 maxX = intv.maxValue();
00069 minY = maxY = v;
00070
00071 isValid = true;
00072 }
00073 else
00074 {
00075 if ( intv.minValue() < minX )
00076 minX = intv.minValue();
00077 if ( intv.maxValue() > maxX )
00078 maxX = intv.maxValue();
00079
00080 if ( v < minY )
00081 minY = v;
00082 if ( v > maxY )
00083 maxY = v;
00084 }
00085 }
00086 if ( !isValid )
00087 return QwtDoubleRect(1.0, 1.0, -2.0, -2.0);
00088
00089 return QwtDoubleRect(minX, minY, maxX - minX, maxY - minY);
00090 }