* Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
* Distributed under the terms of the MIT License.
*/
#ifndef CHART_DATA_RANGE_H
#define CHART_DATA_RANGE_H
#include <algorithm>
class ChartDataRange {
public:
double min;
double max;
ChartDataRange()
:
min(0),
max(0)
{
}
ChartDataRange(double min, double max)
:
min(min),
max(max)
{
}
ChartDataRange(const ChartDataRange& other)
:
min(other.min),
max(other.max)
{
}
bool IsValid() const
{
return min < max;
}
double Size() const
{
return max - min;
}
ChartDataRange& Extend(const ChartDataRange& other)
{
min = std::min(min, other.min);
max = std::max(max, other.max);
return *this;
}
ChartDataRange& OffsetBy(double offset)
{
min += offset;
max += offset;
return *this;
}
ChartDataRange& OffsetTo(double newMin)
{
max += newMin - min;
min = newMin;
return *this;
}
ChartDataRange& operator=(const ChartDataRange& other)
{
min = other.min;
max = other.max;
return *this;
}
bool operator==(const ChartDataRange& other) const
{
return min == other.min && max == other.max;
}
bool operator!=(const ChartDataRange& other) const
{
return !(*this == other);
}
};
#endif