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

QwtScaleDraw Class Reference

Inheritance diagram for QwtScaleDraw:

QwtDiMap QwtDialScaleDraw 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.


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 QwtScaleDivscaleDiv () 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


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.

QwtScaleDraw::~QwtScaleDraw  )  [virtual]
 

Destructor.


Member Function Documentation

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

Draw the scale.

Parameters:
p the painter

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

Draws the baseline of the scale.

void QwtScaleDraw::drawLabel QPainter *  p,
double  val
const [protected]
 

Draws the number label for a major scale tick.

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

Draws a single scale tick.

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.

int QwtScaleDraw::labelAlignment  )  const
 

Returns:
the label alignment
See also:
setLabelAlignment(), labelRotation()

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.

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

Format character and precision have the same meaning as for the QString class.

Return values:
f format character 'g', 'e', or 'f'
prec precision(f), or siginificance(g)
Returns:
the number format for the major scale labels
See also:
QString::sprintf in the Qt manual

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

Find position, alignment and rotation of the label.

double QwtScaleDraw::labelRotation  )  const
 

Returns:
the label rotation
See also:
setLabelRotation(), labelAlignment()

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

Return the world matrix for painting the label.

int QwtScaleDraw::length  )  const
 

Return length.

unsigned int QwtScaleDraw::majTickLength  )  const
 

Return the length of the major ticks

See also:
QwtScaleDraw::tickLength()

int QwtScaleDraw::maxHeight const QPen &  pen,
const QFontMetrics &  fm
const
 

Parameters:
pen pen
fm font metrics
Returns:
the maximum height of the scale

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

Parameters:
fm QFontMetrics
Returns:
the maximum width of a label

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

Parameters:
fm QFontMetrics
Returns:
the maximum width of a label

int QwtScaleDraw::maxWidth const QPen &  pen,
const QFontMetrics &  fm
const
 

Parameters:
pen pen
fm font metrics
Returns:
the maximum width of the scale

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

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

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

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

QwtScaleDraw::Orientation QwtScaleDraw::orientation  )  const
 

Return scale orientation.

const QwtScaleDiv& QwtScaleDraw::scaleDiv  )  const
 

Returns:
scale division

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

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

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()

void QwtScaleDraw::setLabelFormat char  f,
int  prec,
int  fieldwidth = 0
 

Set the number format for the major scale labels.

Format character and precision have the same meaning as for the QString class.

Parameters:
f format character, 'g', 'e' or 'f'
prec precision(f) or significance(g)
fieldwidth fieldwidth
See also:
QString::sprintf in the Qt manual

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.

void QwtScaleDraw::setMargin uint  hMargin,
uint  vMargin
 

Set the margins of the ticks

Parameters:
hMargin Horizontal margin
vMargin Vertical margin

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)

void QwtScaleDraw::setScale const QwtScaleDiv sd  ) 
 

Change the scale division.

Parameters:
sd new scale division

void QwtScaleDraw::setTickLength unsigned int  minLen,
unsigned int  medLen,
unsigned int  majLen
 

Set the length of the ticks

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

Return the length of the ticks

See also:
QwtScaleDraw::majTickLength()

int QwtScaleDraw::x  )  const
 

Return x origin.

int QwtScaleDraw::y  )  const
 

Return y origin.


Generated on Tue Nov 25 21:15:09 2003 for Qwt User's Guide by doxygen 1.3.4