A scale engine trys to find "reasonable" ranges and step sizes for scales.
The layout of the scale can be varied with setAttribute().
Qwt offers implementations for logarithmic (log10) and linear scales. Contributions for other types of scale engines (date/time, log2 ... ) are welcome.
Definition at line 50 of file qwt_scale_engine.h.
Public Types | |
enum | Attribute { NoAttribute = 0, IncludeReference = 1, Symmetric = 2, Floating = 4, Inverted = 8 } |
Public Member Functions | |
QwtScaleEngine () | |
virtual | ~QwtScaleEngine () |
void | setAttribute (Attribute, bool on=true) |
bool | testAttribute (Attribute) const |
void | setAttributes (int) |
int | attributes () const |
void | setReference (double reference) |
double | reference () const |
void | setMargins (double m1, double m2) |
double | loMargin () const |
double | hiMargin () const |
virtual void | autoScale (int maxNumSteps, double &x1, double &x2, double &stepSize) const=0 |
virtual QwtScaleDiv | divideScale (double x1, double x2, int maxMajSteps, int maxMinSteps, double stepSize=0.0) const=0 |
virtual QwtScaleTransformation * | transformation () const=0 |
Protected Member Functions | |
bool | contains (const QwtDoubleInterval &, double val) const |
QwtValueList | strip (const QwtValueList &, const QwtDoubleInterval &) const |
double | divideInterval (double interval, int numSteps) const |
QwtDoubleInterval | buildInterval (double v) const |
QwtScaleEngine::QwtScaleEngine | ( | ) | [explicit] |
QwtScaleEngine::~QwtScaleEngine | ( | ) | [virtual] |
void QwtScaleEngine::setAttribute | ( | Attribute | attribute, | |
bool | on = true | |||
) |
Change a scale attribute
attribute | Attribute to change | |
on | On/Off |
Definition at line 339 of file qwt_scale_engine.cpp.
bool QwtScaleEngine::testAttribute | ( | Attribute | attribute | ) | const |
Check if a attribute is set.
attribute | Attribute to be tested |
Definition at line 353 of file qwt_scale_engine.cpp.
Referenced by QwtLog10ScaleEngine::autoScale(), and QwtLinearScaleEngine::autoScale().
void QwtScaleEngine::setAttributes | ( | int | attributes | ) |
Change the scale attribute
attributes | Set scale attributes |
Definition at line 364 of file qwt_scale_engine.cpp.
Referenced by QwtLog10ScaleEngine::divideScale().
int QwtScaleEngine::attributes | ( | ) | const |
Return the scale attributes
Definition at line 372 of file qwt_scale_engine.cpp.
Referenced by QwtLog10ScaleEngine::divideScale().
void QwtScaleEngine::setReference | ( | double | r | ) |
Specify a reference point.
r | new reference value |
Definition at line 384 of file qwt_scale_engine.cpp.
Referenced by QwtLog10ScaleEngine::divideScale().
double QwtScaleEngine::reference | ( | ) | const |
Definition at line 393 of file qwt_scale_engine.cpp.
Referenced by QwtLog10ScaleEngine::autoScale(), QwtLinearScaleEngine::autoScale(), and QwtLog10ScaleEngine::divideScale().
void QwtScaleEngine::setMargins | ( | double | mlo, | |
double | mhi | |||
) |
Specify margins at the scale's endpoints.
mlo | minimum distance between the scale's lower boundary and the smallest enclosed value | |
mhi | minimum distance between the scale's upper boundary and the greatest enclosed value |
Definition at line 219 of file qwt_scale_engine.cpp.
Referenced by QwtLog10ScaleEngine::divideScale().
double QwtScaleEngine::loMargin | ( | ) | const |
Definition at line 187 of file qwt_scale_engine.cpp.
Referenced by QwtLog10ScaleEngine::autoScale(), QwtLinearScaleEngine::autoScale(), and QwtLog10ScaleEngine::divideScale().
double QwtScaleEngine::hiMargin | ( | ) | const |
Definition at line 198 of file qwt_scale_engine.cpp.
Referenced by QwtLog10ScaleEngine::autoScale(), QwtLinearScaleEngine::autoScale(), and QwtLog10ScaleEngine::divideScale().
virtual void QwtScaleEngine::autoScale | ( | int | maxNumSteps, | |
double & | x1, | |||
double & | x2, | |||
double & | stepSize | |||
) | const [pure virtual] |
Align and divide an interval
maxNumSteps | Max. number of steps | |
x1 | First limit of the interval (In/Out) | |
x2 | Second limit of the interval (In/Out) | |
stepSize | Step size (Return value) |
Implemented in QwtLinearScaleEngine, and QwtLog10ScaleEngine.
virtual QwtScaleDiv QwtScaleEngine::divideScale | ( | double | x1, | |
double | x2, | |||
int | maxMajSteps, | |||
int | maxMinSteps, | |||
double | stepSize = 0.0 | |||
) | const [pure virtual] |
Calculate a scale division.
x1 | First interval limit | |
x2 | Second interval limit | |
maxMajSteps | Maximum for the number of major steps | |
maxMinSteps | Maximum number of minor steps | |
stepSize | Step size. If stepSize == 0.0, the scaleEngine calculates one. |
Implemented in QwtLinearScaleEngine, and QwtLog10ScaleEngine.
virtual QwtScaleTransformation* QwtScaleEngine::transformation | ( | ) | const [pure virtual] |
bool QwtScaleEngine::contains | ( | const QwtDoubleInterval & | interval, | |
double | value | |||
) | const [protected] |
Check if an interval "contains" a value
interval | Interval | |
value | Value |
Definition at line 251 of file qwt_scale_engine.cpp.
References QwtScaleArithmetic::compareEps(), QwtDoubleInterval::isValid(), QwtDoubleInterval::maxValue(), QwtDoubleInterval::minValue(), and QwtDoubleInterval::width().
Referenced by strip().
QwtValueList QwtScaleEngine::strip | ( | const QwtValueList & | ticks, | |
const QwtDoubleInterval & | interval | |||
) | const [protected] |
Remove ticks from a list, that are not inside an interval
ticks | Tick list | |
interval | Interval |
Definition at line 280 of file qwt_scale_engine.cpp.
References contains(), and QwtDoubleInterval::isValid().
double QwtScaleEngine::divideInterval | ( | double | intervalSize, | |
int | numSteps | |||
) | const [protected] |
Calculate a step size for an interval size
intervalSize | Interval size | |
numSteps | Number of steps |
Definition at line 233 of file qwt_scale_engine.cpp.
References QwtScaleArithmetic::ceil125(), and QwtScaleArithmetic::divideEps().
Referenced by QwtLog10ScaleEngine::autoScale(), QwtLinearScaleEngine::autoScale(), QwtLog10ScaleEngine::divideScale(), and QwtLinearScaleEngine::divideScale().
QwtDoubleInterval QwtScaleEngine::buildInterval | ( | double | v | ) | const [protected] |
Build an interval for a value.
In case of v == 0.0 the interval is [-0.5, 0.5], otherwide it is [0.5 * v, 1.5 * v]
Definition at line 309 of file qwt_scale_engine.cpp.
Referenced by QwtLog10ScaleEngine::autoScale(), and QwtLinearScaleEngine::autoScale().