Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

# QwtScaleDraw Class Reference

Inheritance diagram for QwtScaleDraw:

[legend]
Collaboration diagram for QwtScaleDraw:

[legend]
List of all members.

## Detailed Description

A class for drawing scales.

QwtScaleDraw can be used to draw linear or logarithmic scales. A scale has an origin, an orientation and a length, which all can be specified with QwtScaleDraw::setGeometry(). The labels can be rotated and aligned to the ticks using QwtScaleDraw::setLabelRotation(), QwtScaleDraw::setLabelAlignment().

After a scale division has been specified as a QwtScaleDiv object using QwtScaleDraw::setScale(const QwtScaleDiv &s), or determined internally using QwtScaleDraw::setScale(double vmin, double vmax, int maxMajIntv, int maxMinIntv, double step = 0.0, int logarithmic = 0), the scale can be drawn with the QwtScaleDraw::draw() member.

Definition at line 38 of file qwt_scldraw.h.

## Public Types
enum | Orientation { Bottom, Top, Left, Right, Round }
enum | Option { None = 0, Backbone = 1 }
## Public Member Functions
| QwtScaleDraw ()
virtual | ~QwtScaleDraw ()
void | setScale (const QwtScaleDiv &s)
void | setScale (double vmin, double vmax, int maxMajIntv, int maxMinIntv, double step=0.0, int logarithmic=0)
void | setOptions (int opt)
int | options () const
void | setGeometry (int xorigin, int yorigin, int length, Orientation o)
int | x () const
int | y () const
int | length () const
Orientation | orientation () const
void | setAngleRange (double angle1, double angle2)
void | setLabelFormat (char f, int prec, int fieldwidth=0)
void | setLabelAlignment (int align)
void | setLabelRotation (double rotation)
void | setTickLength (unsigned int minLen, unsigned int medLen, unsigned int majLen)
void | setMargin (uint hMargin, uint vMargin)
const QwtScaleDiv & | scaleDiv () const
int | maxWidth (const QPen &pen, const QFontMetrics &fm) const
int | maxHeight (const QPen &pen, const QFontMetrics &fm) const
void | minBorderDist (const QFontMetrics &fm, int &start, int &end) const
int | minLabelDist (const QFontMetrics &fm) const
int | minHeight (const QPen &pen, const QFontMetrics &fm) const
int | minWidth (const QPen &pen, const QFontMetrics &fm) const
void | labelFormat (char &f, int &prec, int &fieldwidth) const
int | labelAlignment () const
double | labelRotation () const
void | tickLength (unsigned int &minLen, unsigned int &medLen, unsigned int &majLen) const
unsigned int | majTickLength () const
virtual void | draw (QPainter *p) const
virtual QString | label (double) const
## Protected Member Functions
virtual void | labelPlacement (const QFontMetrics &, double val, QPoint &pos, int &alignment, double &rotation) const
virtual int | maxLabelHeight (const QFontMetrics &) const
virtual int | maxLabelWidth (const QFontMetrics &) const
QRect | labelBoundingRect (const QFontMetrics &, double val) const
void | drawTick (QPainter *p, double val, int len) const
void | drawBackbone (QPainter *p) const
void | drawLabel (QPainter *p, double val) const
QWMatrix | labelWorldMatrix (const QFontMetrics &, const QPoint &, int alignment, double rotation, const QString &) const

## Member Enumeration Documentation

enum QwtScaleDraw::Orientation

| Orientation/Position of the scale draw See also: QwtScaleDraw::setGeometry Definition at line 45 of file qwt_scldraw.h. Referenced by orientation().

## Constructor & Destructor Documentation

QwtScaleDraw::QwtScaleDraw | ( |  | ) |

| Constructor. The range of the scale is initialized to [0, 100], the angle range is set to [-135, 135], the geometry is initialized such that the origin is at (0,0), the length is 100, and the orientation is QwtScaleDraw::Bottom. Definition at line 29 of file qwt_scldraw.cpp. References setGeometry(), and setScale().

QwtScaleDraw::~QwtScaleDraw | ( |  | ) | `[virtual]`

| Destructor. Definition at line 52 of file qwt_scldraw.cpp.

## Member Function Documentation

void QwtScaleDraw::draw | ( | QPainter * | p | ) | const`[virtual]`

  | Draw the scale. Parameters:
  | p | the painter
Definition at line 104 of file qwt_scldraw.cpp. References drawBackbone(), drawLabel(), drawTick(), QwtScaleDiv::logScale(), QwtScaleDiv::majCnt(), QwtScaleDiv::majMark(), QwtScaleDiv::majStep(), QwtScaleDiv::minCnt(), QwtScaleDiv::minMark(), and options(). Referenced by QwtThermo::draw(), QwtSlider::draw(), QwtScale::draw(), QwtKnob::draw(), QwtDial::drawScale(), and QwtPlot::printScale().

void QwtScaleDraw::drawBackbone | ( | QPainter * | p | ) | const`[protected]`

| Draws the baseline of the scale. Definition at line 374 of file qwt_scldraw.cpp. References QwtPainter::drawLine(), QwtDiMap::i1(), and QwtDiMap::i2(). Referenced by draw().

void QwtScaleDraw::drawLabel | ( | QPainter * | p,
|  | double | val
| ) | const`[protected]`

| Draws the number label for a major scale tick. Definition at line 204 of file qwt_scldraw.cpp. References QwtPainter::drawText(), label(), labelPlacement(), and labelWorldMatrix(). Referenced by draw().

void QwtScaleDraw::drawTick | ( | QPainter * | p,
|  | double | val,
|  | int | len
| ) | const`[protected]`

| Draws a single scale tick. Definition at line 160 of file qwt_scldraw.cpp. References QwtPainter::drawLine(), and QwtDiMap::transform(). Referenced by draw().

QString QwtScaleDraw::label | ( | double | value | ) | const`[virtual]`

  | Convert a value into its representing label using the labelFormat. Parameters:
  | value | Value
Returns: Label string. See also: QwtScaleDraw::setLabelFormat() Reimplemented in QwtDialScaleDraw. Definition at line 1045 of file qwt_scldraw.cpp. Referenced by drawLabel(), QwtDialScaleDraw::label(), labelBoundingRect(), and labelPlacement().

int QwtScaleDraw::labelAlignment | ( |  | ) | const

| Returns: the label alignment See also: setLabelAlignment(), labelRotation() Definition at line 588 of file qwt_scldraw.cpp.

QRect QwtScaleDraw::labelBoundingRect | ( | const QFontMetrics & | fm,
|  | double | val
| ) | const`[protected]`

| Find the bounding rect for the label. The coordinates of the rect are relative to margin + ticklength from the backbone in direction of the tick. Definition at line 793 of file qwt_scldraw.cpp. References label(), labelPlacement(), and labelWorldMatrix(). Referenced by maxLabelHeight(), maxLabelWidth(), minBorderDist(), and minLabelDist().

void QwtScaleDraw::labelFormat | ( | char & | f,
|  | int & | prec,
|  | int & | fieldwidth
| ) | const

  | Return the number format for the major scale labels. Format character, precision and fieldwidth have the same meaning as for sprintf(). Parameters:
  | f | format character 'e', 'f' or 'g'
  | prec | for 'e', 'f': the number of digits after the radix character (point) for 'g': the maximum number of significant digits
  | fieldwidth | fieldwidth
See also: setLabelFormat() Definition at line 679 of file qwt_scldraw.cpp. Referenced by QwtScale::labelFormat().

void QwtScaleDraw::labelPlacement | ( | const QFontMetrics & | ,
|  | double | val,
|  | QPoint & | pos,
|  | int & | alignment,
|  | double & | rotation
| ) | const`[protected, virtual]`

| Find position, alignment and rotation of the label. Definition at line 232 of file qwt_scldraw.cpp. References label(), QwtScaleDiv::logScale(), QwtScaleDiv::majStep(), QwtDiMap::transform(), x(), and y(). Referenced by drawLabel(), and labelBoundingRect().

double QwtScaleDraw::labelRotation | ( |  | ) | const

| Returns: the label rotation See also: setLabelRotation(), labelAlignment() Definition at line 555 of file qwt_scldraw.cpp.

QWMatrix QwtScaleDraw::labelWorldMatrix | ( | const QFontMetrics & | ,
|  | const QPoint & | ,
|  | int | alignment,
|  | double | rotation,
|  | const QString & |
| ) | const`[protected]`

| Return the world matrix for painting the label. Definition at line 335 of file qwt_scldraw.cpp. References x(), and y(). Referenced by drawLabel(), and labelBoundingRect().

int QwtScaleDraw::length | ( |  | ) | const

| Return length. Definition at line 1076 of file qwt_scldraw.cpp. Referenced by QwtPlot::printScale().

unsigned int QwtScaleDraw::majTickLength | ( |  | ) | const

| Return the length of the major ticks See also: QwtScaleDraw::tickLength() Definition at line 727 of file qwt_scldraw.cpp. Referenced by QwtPlotLayout::minimumSizeHint().

int QwtScaleDraw::maxHeight | ( | const QPen & | pen,
|  | const QFontMetrics & | fm
| ) | const

  | Parameters:
  | pen | pen
  | fm | font metrics
Returns: the maximum height of the scale Definition at line 513 of file qwt_scldraw.cpp. References maxLabelHeight(). Referenced by QwtScale::layoutScale(), maxLabelHeight(), and QwtDial::scaleContentsRect().

int QwtScaleDraw::maxLabelHeight | ( | const QFontMetrics & | fm | ) | const`[protected, virtual]`

  | Parameters:
  | fm | QFontMetrics
Returns: the maximum width of a label Definition at line 764 of file qwt_scldraw.cpp. References labelBoundingRect(), QwtScaleDiv::logScale(), QwtScaleDiv::majCnt(), QwtScaleDiv::majMark(), QwtScaleDiv::majStep(), and maxHeight(). Referenced by maxHeight(), and minHeight().

int QwtScaleDraw::maxLabelWidth | ( | const QFontMetrics & | fm | ) | const`[protected, virtual]`

  | Parameters:
  | fm | QFontMetrics
Returns: the maximum width of a label Definition at line 736 of file qwt_scldraw.cpp. References labelBoundingRect(), QwtScaleDiv::logScale(), QwtScaleDiv::majCnt(), QwtScaleDiv::majMark(), QwtScaleDiv::majStep(), and maxWidth(). Referenced by maxWidth(), minHeight(), and minWidth().

int QwtScaleDraw::maxWidth | ( | const QPen & | pen,
|  | const QFontMetrics & | fm
| ) | const

  | Parameters:
  | pen | pen
  | fm | font metrics
Returns: the maximum width of the scale Definition at line 487 of file qwt_scldraw.cpp. References maxLabelWidth(). Referenced by QwtScale::layoutScale(), maxLabelWidth(), and QwtDial::scaleContentsRect().

void QwtScaleDraw::minBorderDist | ( | const QFontMetrics & | fm,
|  | int & | start,
|  | int & | end
| ) | const

  | Determine the minimum border distance. This member function returns the minimum space needed to draw the mark labels at the scale's endpoints. Parameters:
  | fm | QFontMetrics
  | start | start border distance
  | end | end border distance
Definition at line 839 of file qwt_scldraw.cpp. References labelBoundingRect(), QwtScaleDiv::majCnt(), and QwtScaleDiv::majMark(). Referenced by QwtSlider::layoutSlider(), QwtThermo::layoutThermo(), QwtScale::minBorderDist(), minHeight(), QwtSlider::minimumSizeHint(), and minWidth().

int QwtScaleDraw::minHeight | ( | const QPen & | pen,
|  | const QFontMetrics & | fm
| ) | const

  | Parameters:
  | pen | pen
  | fm | font metrics
Returns: the minimum height required to draw the scale including the minimum border distance Definition at line 960 of file qwt_scldraw.cpp. References QwtScaleDiv::majCnt(), maxLabelHeight(), maxLabelWidth(), minBorderDist(), QwtScaleDiv::minCnt(), and minLabelDist(). Referenced by QwtScale::dimForLength(), QwtThermo::minimumSizeHint(), QwtSlider::minimumSizeHint(), QwtScale::minimumSizeHint(), QwtKnob::minimumSizeHint(), QwtDial::minimumSizeHint(), and QwtDial::sizeHint().

int QwtScaleDraw::minLabelDist | ( | const QFontMetrics & | fm | ) | const

  | Determine the minimum distance between two labels, that is necessairy that the texts don't overlap. Parameters:
  | fm | QFontMetrics
Returns: the maximum width of a label Warning: Not implemented for round scales Definition at line 880 of file qwt_scldraw.cpp. References labelBoundingRect(), QwtScaleDiv::majCnt(), and QwtScaleDiv::majMark(). Referenced by minHeight(), and minWidth().

int QwtScaleDraw::minWidth | ( | const QPen & | pen,
|  | const QFontMetrics & | fm
| ) | const

  | Parameters:
  | pen | pen
  | fm | font metrics
Returns: the minimum width required to draw the scale including the minimum border distance Definition at line 1000 of file qwt_scldraw.cpp. References QwtScaleDiv::majCnt(), maxLabelWidth(), minBorderDist(), QwtScaleDiv::minCnt(), and minLabelDist(). Referenced by QwtScale::dimForLength(), QwtThermo::minimumSizeHint(), QwtSlider::minimumSizeHint(), and QwtScale::minimumSizeHint().

int QwtScaleDraw::options | ( |  | ) | const

| Returns: scale draw options Definition at line 65 of file qwt_scldraw.cpp. Referenced by draw(), and QwtDial::setScaleOptions().

QwtScaleDraw::Orientation QwtScaleDraw::orientation | ( |  | ) | const

| Return scale orientation. Definition at line 1082 of file qwt_scldraw.cpp. References Orientation. Referenced by QwtScale::dimForLength(), QwtScale::draw(), QwtScale::layoutScale(), QwtScale::minimumSizeHint(), QwtScale::position(), QwtThermo::sizePolicy(), and QwtScale::sizePolicy().

const QwtScaleDiv& QwtScaleDraw::scaleDiv | ( |  | ) | const

| Returns: scale division Definition at line 74 of file qwt_scldraw.h. Referenced by QwtThermo::setRange(), QwtScaleIf::setScale(), QwtScale::setScaleDiv(), QwtScaleIf::setScaleMaxMajor(), QwtScaleIf::setScaleMaxMinor(), and QwtPlot::sizeHint().

void QwtScaleDraw::setAngleRange | ( | double | angle1,
|  | double | angle2
| ) |

  | Adjust the baseline circle segment for round scales. The baseline will be drawn from min(angle1,angle2) to max(angle1, angle2). The settings have no effect if the scale orientation is not set to QwtScaleDraw::Round. The default setting is [ -135, 135 ]. An angle of 0 degrees corresponds to the 12 o'clock position, and positive angles count in a clockwise direction. Parameters:
  | angle1 |
  | angle2 | boundaries of the angle interval in degrees.
Warning: The angle range is limited to [-360, 360] degrees. Angles exceeding this range will be clipped. For angles more than 359 degrees above or below min(angle1, angle2), scale marks will not be drawn. If you need a counterclockwise scale, use QwtScaleDiv::setRange Definition at line 611 of file qwt_scldraw.cpp. References qwtLim(), and QwtDiMap::setIntRange(). Referenced by QwtDial::drawScale(), and QwtKnob::setTotalAngle().

void QwtScaleDraw::setGeometry | ( | int | xorigin,
|  | int | yorigin,
|  | int | length,
|  | Orientation | o
| ) |

  | Specify the geometry of the scale. The parameters xorigin, yorigin and length have different meanings, dependent on the orientation: QwtScaleDraw::Left The origin is the topmost point of the baseline. The baseline is a vertical line with the specified length. Scale marks and labels are drawn at the left of the baseline. QwtScaleDraw::Right The origin is the topmost point of the baseline. The baseline is a vertical line with the specified length. Scale marks and labels are drawn at the right of the baseline. QwtScaleDraw::Top The origin is the leftmost point of the baseline. The baseline is a horizontal line with the specified length. Scale marks and labels are drawn above the baseline. QwtScaleDraw::Bottom The origin is the leftmost point of the baseline. The baseline is a horizontal line with the specified length. Scale marks and labels are drawn below the baseline. QwtScaleDraw::Round The origin is the top left corner of the bounding rectangle of the baseline circle. The baseline is the segment of a circle with a diameter of the specified length. Scale marks and labels are drawn outside the baseline circle. Parameters:
  | xorigin | x coordinate of the origin
  | yorigin | y coordinate of the origin
  | length | length or diameter of the scale, excluding border distance
  | o | The orientation
Definition at line 448 of file qwt_scldraw.cpp. References QwtDiMap::setIntRange(). Referenced by QwtDial::drawScale(), QwtScale::layoutScale(), QwtSlider::layoutSlider(), QwtThermo::layoutThermo(), QwtPlot::printScale(), QwtDial::QwtDial(), QwtKnob::QwtKnob(), QwtScaleDraw(), QwtSlider::QwtSlider(), and QwtScale::setPosition().

void QwtScaleDraw::setLabelAlignment | ( | int | alignment | ) |

  | Labels are aligned to the point ticklength + margin away from the backbone. The alignment is relative to the orientation of the label text. In case of an alignment of 0 the label will be aligned depending on the orientation of the scale: QwtScaleDraw::Top: Qt::AlignHCenter | Qt::AlignTop QwtScaleDraw::Bottom: Qt::AlignHCenter | Qt::AlignBottom QwtScaleDraw::Left: Qt::AlignLeft | Qt::AlignVCenter QwtScaleDraw::Right: Qt::AlignRight | Qt::AlignVCenter Changing the alignment is often necessary for rotated labels. Parameters:
  | alignment | Or'd Qt::AlignmentFlags <see qnamespace.h>
Warning: Alignment of labels is not implemented for round scales. See also: QwtScaleDraw::setLabelRotation(), QwtScaleDraw::labelRotation(), QwtScaleDraw::labelAlignment() Definition at line 579 of file qwt_scldraw.cpp. Referenced by QwtScale::setLabelAlignment().

void QwtScaleDraw::setLabelFormat | ( | char | f,
|  | int | prec,
|  | int | fieldwidth = `0`
| ) |

  | Set the number format for the major scale labels. Format character, precision and fieldwidth have the same meaning as for sprintf(). Parameters:
  | f | format character 'e', 'f', 'g'
  | prec | for 'e', 'f': the number of digits after the radix character (point) for 'g': the maximum number of significant digits
  | fieldwidth | fieldwidth
Note: precision and fieldwidth must be in the range 0, 1, .., 99. Invalid input is discarded. See also: labelFormat() Definition at line 646 of file qwt_scldraw.cpp. Referenced by QwtScale::setLabelFormat().

void QwtScaleDraw::setLabelRotation | ( | double | rotation | ) |

  | Rotate all labels. Parameters:
  | rotation | Angle in degrees. When changing the label rotation, the label alignment might be adjusted too.
See also: setLabelAlignment(), labelRotation(), labelAlignment(). Warning: Rotation of labels is not implemented for round scales. Definition at line 546 of file qwt_scldraw.cpp. Referenced by QwtScale::setLabelRotation().

void QwtScaleDraw::setMargin | ( | uint | hMargin,
|  | uint | vMargin
| ) |

  | Set the margins of the ticks Parameters:
  | hMargin | Horizontal margin
  | vMargin | Vertical margin
Definition at line 692 of file qwt_scldraw.cpp.

void QwtScaleDraw::setOptions | ( | int | opt | ) |

| Change the scale draw options. Definition at line 57 of file qwt_scldraw.cpp. Referenced by QwtDial::setScaleOptions().

void QwtScaleDraw::setScale | ( | double | x1,
|  | double | x2,
|  | int | maxMajIntv,
|  | int | maxMinIntv,
|  | double | step = `0.0`,
|  | int | logscale = `0`
| ) |

  | Adjust the range of the scale. If step == 0.0, the step width is calculated automatically dependent on the maximal number of scale ticks. Parameters:
  | x1 | Value at the left/low endpoint of the scale
  | x2 | Value at the right/high endpoint of the scale
  | maxMajIntv | Max. number of major step intervals
  | maxMinIntv | Max. number of minor step intervals
  | step | Step size (default : 0.0)
  | logscale | Logarithmic scale (default : 0)
Definition at line 82 of file qwt_scldraw.cpp. References QwtScaleDiv::hBound(), QwtScaleDiv::lBound(), QwtScaleDiv::logScale(), QwtScaleDiv::rebuild(), and QwtDiMap::setDblRange().

void QwtScaleDraw::setScale | ( | const QwtScaleDiv & | sd | ) |

  | Change the scale division. Parameters:
  | sd | new scale division
Definition at line 94 of file qwt_scldraw.cpp. References QwtScaleDiv::hBound(), QwtScaleDiv::lBound(), QwtScaleDiv::logScale(), and QwtDiMap::setDblRange(). Referenced by QwtScaleDraw(), QwtScaleIf::QwtScaleIf(), QwtSlider::rangeChange(), QwtSlider::scaleChange(), QwtThermo::setRange(), QwtScaleIf::setScale(), QwtScale::setScaleDiv(), QwtScaleIf::setScaleMaxMajor(), QwtScaleIf::setScaleMaxMinor(), and QwtDial::updateScale().

void QwtScaleDraw::setTickLength | ( | unsigned int | minLen,
|  | unsigned int | medLen,
|  | unsigned int | majLen
| ) |

| Set the length of the ticks Definition at line 701 of file qwt_scldraw.cpp. Referenced by QwtDial::setScaleOptions(), and QwtDial::setScaleTicks().

void QwtScaleDraw::tickLength | ( | unsigned int & | minLen,
|  | unsigned int & | medLen,
|  | unsigned int & | majLen
| ) | const

| Return the length of the ticks See also: QwtScaleDraw::majTickLength() Definition at line 715 of file qwt_scldraw.cpp.

int QwtScaleDraw::x | ( |  | ) | const

| Return x origin. Definition at line 1064 of file qwt_scldraw.cpp. Referenced by labelPlacement(), labelWorldMatrix(), and QwtPlot::printScale().

int QwtScaleDraw::y | ( |  | ) | const

| Return y origin. Definition at line 1070 of file qwt_scldraw.cpp. Referenced by labelPlacement(), labelWorldMatrix(), and QwtPlot::printScale().