The Qwt Auto-Scaler.
This class can be used to generate a scale which may span multiple ranges of values. A scale consists of a lower boundary, an upper boundary, a vector of major scale ticks and a vector of minor scale ticks which divide it into subintervals. A quick look at the example below will give you an idea of how the auto-scaler works.
The auto-scaler produces 'reasonable' major and minor step sizes. For linear scales, the major step size will fit into the pattern $
The step size can be manipulated indirectly using setMaxMajor(). The layout of the scale can be varied with setOptions().
The auto-scaling algorithm can be partly or completely disabled (even temporarily) if a user-defined scale is desired. This can be done with the setScale() function. It can be switched off again with setAutoScale().
The two adjust() members are used to extend the scale if necessary in order to include another range or array of values. The resulting scale division can be obtained with scaleDiv(). reset() resets the scale to zero.
Example.RS 4
#include <qwt_autoscl.h>
#include <iostream.h>
double x1[100];
double x2[200];
double range_min, range_max;
QwtAutoScale as;
// ... determine x1 and x1, range_min and range_max here ...
as.reset(); // clear it
as.adjust(range_min, range_max); // include a range
as.adjust(x1,100); // include an array
as.adjust(x2,200); // include another array
for (i=0;i<as.scaleDiv().majCnt(); i++)
{
cout << 'Scale tick ' << i
<< ' at ' << as.scaleDiv().majMark(i) << ';
}
Warning:
Definition at line 78 of file qwt_autoscl.h.
enum { None = 0, IncludeRef = 1, Symmetric = 2, Floating = 4, Logarithmic = 8, Inverted = 16 }
QwtAutoScale ()
~QwtAutoScale ()
void setAutoScale ()
bool autoScale () const
void setAutoRebuild (bool)
bool autoRebuild () const
void changeOptions (int opt, bool tf)
void setOptions (int opt)
bool option (int opt) const
int options () const
void setMaxMajor (int n)
int maxMajor () const
void setMaxMinor (int n)
int maxMinor () const
void setReference (double r)
double reference () const
void setMargins (double m1, double m2)
double loMargin () const
double hiMargin () const
void setScale (double xmin, double xmax, double step=0.0)
const QwtScaleDiv & scaleDiv () const
void adjust (double *arr, int n, int reset=0)
void adjust (const QwtArray< double > &x, int reset=0)
void adjust (double x1, double x2, int reset=0)
void build ()
void reset ()
void buildLinScale ()
void buildLogScale ()
void setRange (double x1, double x2)
Ctor.
Definition at line 17 of file qwt_autoscl.cpp.
Dtor.
Definition at line 37 of file qwt_autoscl.cpp.
Adjust the scale to include a specified interval.
This member function extends the boundaries of the scale and re-calculates the step size if necessary in order to include a specified interval. If the reset parameter has nonzero value, the previous state will be cleared.
Parameters:
Definition at line 150 of file qwt_autoscl.cpp.
Adjust the scale to include a given array of input values.
This member function extends the boundaries of the scale and re-calculates the step size if necessary in order to include all values in the array. If the reset parameter has nonzero value, the previous state will be cleared.
Parameters:
Definition at line 131 of file qwt_autoscl.cpp.
Adjust the scale to include a given array of input values.
This member function extends the boundaries of the scale and re-calculates the step size if necessary in order to include all values in the array. If the reset parameter has nonzero value, the previous state will be cleared.
Parameters:
Definition at line 100 of file qwt_autoscl.cpp.
References build().
Referenced by adjust(), and QwtPlot::updateAxes().
Returns:
See also:
Definition at line 739 of file qwt_autoscl.cpp.
Returns:
See also:
Definition at line 45 of file qwt_autoscl.cpp.
Referenced by QwtPlot::axisAutoScale(), and QwtPlot::updateAxes().
Re-build the scale.
Definition at line 176 of file qwt_autoscl.cpp.
References buildLinScale(), buildLogScale(), and QwtScaleDiv::rebuild().
Referenced by adjust(), changeOptions(), setAutoScale(), setMargins(), setMaxMajor(), setMaxMinor(), setOptions(), setReference(), and setScale().
Build a linear scale.
Definition at line 213 of file qwt_autoscl.cpp.
References QwtScaleDiv::rebuild(), and setRange().
build a logarithmic scale
Definition at line 300 of file qwt_autoscl.cpp.
References QwtScaleDiv::rebuild(), and setRange().
Set or reset specified scale options.
Parameters:
See also:
Definition at line 391 of file qwt_autoscl.cpp.
References build().
Referenced by QwtPlot::changeAxisOptions().
Returns:
See also:
Definition at line 63 of file qwt_autoscl.cpp.
Returns:
See also:
Definition at line 54 of file qwt_autoscl.cpp.
Referenced by QwtPlot::axisMargins().
Returns:
See also:
Definition at line 72 of file qwt_autoscl.cpp.
Referenced by QwtPlot::axisMaxMajor().
Returns:
See also:
Definition at line 81 of file qwt_autoscl.cpp.
Referenced by QwtPlot::axisMaxMinor().
Returns TRUE if the specified option is set.
Parameters:
See also:
Definition at line 697 of file qwt_autoscl.cpp.
Returns:
See also:
Definition at line 707 of file qwt_autoscl.cpp.
Referenced by QwtPlot::axisOptions().
Returns:
See also:
Definition at line 686 of file qwt_autoscl.cpp.
Referenced by QwtPlot::axisReference().
Set the interval boundaries to zero and clear the scale division.
This member function resets an AutoScale object to its initial state. It is needed to clean up the scale before or after subsequent adjust() calls. The boundaries of the scale are set to zero and the scale division is cleared.
Warning:
Definition at line 413 of file qwt_autoscl.cpp.
References QwtScaleDiv::reset().
Referenced by QwtPlot::updateAxes().
The scale division consists of two boundary values, an array of major tickmarks and an array of minor tickmarks.
Returns:
See also:
Definition at line 720 of file qwt_autoscl.cpp.
Referenced by QwtPlot::axisScale(), QwtPlot::canvasMap(), and QwtPlot::print().
If true, rebuild scale automatically with call to 'adjust'
See also:
Definition at line 730 of file qwt_autoscl.cpp.
Enable auto-scaling.
This function is used to switch back to auto-scaling mode if the scale has been frozen temporarily (see setScale()).
When auto-scaling is reactivated, the scale will be rebuild, which means that .PD 0
See also:
Definition at line 439 of file qwt_autoscl.cpp.
References build().
Referenced by QwtPlot::setAxisAutoScale().
Specify margins at the scale's endpoints.
Parameters:
Margins can be used to leave a minimum amount of space between the enclosed intervals and the boundaries of the scale.
Warning:
Definition at line 461 of file qwt_autoscl.cpp.
References build().
Referenced by QwtPlot::setAxisMargins().
Specify the maximum number of major intervals.
Parameters:
The auto-scaler places the major ticks at reasonable points, such that the number of major tick intervals does not exceed the specified maximum number. Definition at line 477 of file qwt_autoscl.cpp.
References build().
Referenced by QwtPlot::setAxisMaxMajor().
Specify the maximum number of minor subdivisions within major scale intervals.
Parameters:
Definition at line 489 of file qwt_autoscl.cpp.
References build().
Referenced by QwtPlot::setAxisMaxMinor().
Reset scale options and set specified options.
Parameters:
The behaviour of the auto-scaling algorithm can be changed with the following options:
Warning:
Example:
#include '../include/qwt_autoscl.h>
void main()
{
QwtAutoScale as;
// build linear scale with default settings
as.adjust(17.45, 87344.0);
//...
// change to logarithmic scale with floating ends
as.setOptions(QwtAutoScale::Floating | QwtAutoscale::Logarithmic);
//...
// change to linear, zero-symmetric scale
as.setOptions(QwtAutoScale::ZeroSymmetric);
//...
}
See also:
Definition at line 649 of file qwt_autoscl.cpp.
References build().
Referenced by QwtPlot::setAxisOptions().
Specify a user-defined range.
Parameters:
Warning:
See also:
Definition at line 510 of file qwt_autoscl.cpp.
References LOG_MAX, and LOG_MIN.
Referenced by buildLinScale(), buildLogScale(), and setScale().
Specify a reference point.
Parameters:
The reference point is needed if the auto-scaler options IncludeRef or Symmetric are active. Its default value is 0 for linear scales and 1 for logarithmic scales.
Warning:
See also:
Definition at line 670 of file qwt_autoscl.cpp.
References build(), LOG_MAX, and LOG_MIN.
Referenced by QwtPlot::setAxisReference().
Specify a user-defined scale and switch off auto-scaling.
Parameters:
A fixed scale may be used for different purposes, e.g. zooming. If the step argument is left out or less or equal to zero, the auto-scaler will calculate the major step size size according to the maxMajor setting.
The fixed-scale mode can switched off using setAutoScale(), which restores the previous values.
Warning:
See also:
Definition at line 576 of file qwt_autoscl.cpp.
References build(), and setRange().
Referenced by QwtPlot::setAxisScale().
Generated automatically by Doxygen for Qwt User's Guide from the source code.