QwtPlotCurve Class Reference

Inheritance diagram for QwtPlotCurve:

Inheritance graph
[legend]
Collaboration diagram for QwtPlotCurve:

Collaboration graph
[legend]
List of all members.

Detailed Description

A class which draws curves.

This class can be used to display data as a curve in the x-y plane. It supports different display styles, spline interpolation and symbols.

Usage
A. Assign curve properties
When a curve is created, it is configured to draw black solid lines with QwtPlotCurve::Lines and no symbols. You can change this by calling setPen(), setStyle() and setSymbol().
B. Assign or change data.
Data can be set in two ways:
  • setData() is overloaded to initialize the x and y data by copying from different data structures with different kind of copy semantics.
  • setRawData() only stores the pointers and size information and is provided for backwards compatibility. This function is less safe (you must not delete the data while they are attached), but has been more efficient, and has been more convenient for dynamically changing data. Use of setData() in combination with a problem-specific subclass of QwtData is always preferrable.
C. Draw
draw() maps the data into pixel coordinates and paints them.
Example:
see examples/curvdemo
See also:
QwtData, QwtSymbol, QwtScaleMap

Definition at line 56 of file qwt_plot_curve.h.

Public Types

enum  CurveType {
  Yfx,
  Xfy
}
enum  CurveStyle {
  NoCurve,
  Lines,
  Sticks,
  Steps,
  Dots,
  UserCurve = 100
}
enum  CurveAttribute {
  Inverted = 1,
  Fitted = 2
}
enum  PaintAttribute {
  PaintCached = 1,
  PaintPacked = 2,
  PaintFiltered = 1,
  ClipPolygons = 2,
  PaintUsingTextFont = 1,
  PaintUsingTextColor = 2,
  PaintBackground = 4
}

Public Member Functions

 QwtPlotCurve ()
 QwtPlotCurve (const QwtText &title)
 QwtPlotCurve (const QString &title)
virtual ~QwtPlotCurve ()
virtual int rtti () const
void setCurveType (CurveType)
CurveType curveType () const
void setPaintAttribute (PaintAttribute, bool on=true)
bool testPaintAttribute (PaintAttribute) const
void setRawData (const double *x, const double *y, int size)
void setData (const double *xData, const double *yData, int size)
void setData (const QwtArray< double > &xData, const QwtArray< double > &yData)
void setData (const QPolygonF &data)
void setData (const QwtData &data)
int closestPoint (const QPoint &pos, double *dist=NULL) const
QwtDatadata ()
const QwtDatadata () const
int dataSize () const
double x (int i) const
double y (int i) const
virtual QwtDoubleRect boundingRect () const
double minXValue () const
double maxXValue () const
double minYValue () const
double maxYValue () const
void setCurveAttribute (CurveAttribute, bool on=true)
bool testCurveAttribute (CurveAttribute) const
void setPen (const QPen &)
const QPen & pen () const
void setBrush (const QBrush &)
const QBrush & brush () const
void setBaseline (double ref)
double baseline () const
void setStyle (CurveStyle style)
CurveStyle style () const
void setSymbol (const QwtSymbol &s)
const QwtSymbolsymbol () const
void setCurveFitter (QwtCurveFitter *)
QwtCurveFittercurveFitter () const
virtual void draw (QPainter *p, const QwtScaleMap &xMap, const QwtScaleMap &yMap, const QRect &) const
virtual void draw (QPainter *p, const QwtScaleMap &xMap, const QwtScaleMap &yMap, int from, int to) const
void draw (int from, int to) const
virtual void updateLegend (QwtLegend *) const

Protected Member Functions

void init ()
virtual void drawCurve (QPainter *p, int style, const QwtScaleMap &xMap, const QwtScaleMap &yMap, int from, int to) const
virtual void drawSymbols (QPainter *p, const QwtSymbol &, const QwtScaleMap &xMap, const QwtScaleMap &yMap, int from, int to) const
void drawLines (QPainter *p, const QwtScaleMap &xMap, const QwtScaleMap &yMap, int from, int to) const
void drawSticks (QPainter *p, const QwtScaleMap &xMap, const QwtScaleMap &yMap, int from, int to) const
void drawDots (QPainter *p, const QwtScaleMap &xMap, const QwtScaleMap &yMap, int from, int to) const
void drawSteps (QPainter *p, const QwtScaleMap &xMap, const QwtScaleMap &yMap, int from, int to) const
void fillCurve (QPainter *, const QwtScaleMap &, const QwtScaleMap &, QwtPolygon &) const
void closePolyline (const QwtScaleMap &, const QwtScaleMap &, QwtPolygon &) const


Member Enumeration Documentation

enum QwtPlotCurve::CurveStyle

Curve styles.

See also:
setStyle

Definition at line 69 of file qwt_plot_curve.h.

enum QwtPlotCurve::CurveAttribute

Curve attributes.

See also:
setCurveAttribute, testCurveAttribute

Definition at line 85 of file qwt_plot_curve.h.

enum QwtPlotCurve::PaintAttribute

Paint attributes

See also:
setPaintAttribute, testPaintAttribute

Definition at line 95 of file qwt_plot_curve.h.


Constructor & Destructor Documentation

QwtPlotCurve::QwtPlotCurve (  )  [explicit]

Constructor.

Definition at line 139 of file qwt_plot_curve.cpp.

References init().

QwtPlotCurve::QwtPlotCurve ( const QwtText title  )  [explicit]

Constructor

Parameters:
title title of the curve

Definition at line 149 of file qwt_plot_curve.cpp.

References init().

QwtPlotCurve::QwtPlotCurve ( const QString &  title  )  [explicit]

Constructor

Parameters:
title title of the curve

Definition at line 159 of file qwt_plot_curve.cpp.

References init().

QwtPlotCurve::~QwtPlotCurve (  )  [virtual]

Destructor.

Definition at line 166 of file qwt_plot_curve.cpp.


Member Function Documentation

int QwtPlotCurve::rtti (  )  const [virtual]

Returns:
QwtPlotItem::Rtti_PlotCurve

Reimplemented from QwtPlotItem.

Definition at line 187 of file qwt_plot_curve.cpp.

void QwtPlotCurve::setCurveType ( CurveType  curveType  ) 

Assign the curve type

QwtPlotCurve::Yfx Draws y as a function of x (the default). The baseline is interpreted as a horizontal line with y = baseline().

QwtPlotCurve::Xfy Draws x as a function of y. The baseline is interpreted as a vertical line with x = baseline().

The baseline is used for aligning the sticks, or filling the curve with a brush.

See also:
curveType()

Definition at line 993 of file qwt_plot_curve.cpp.

References QwtPlotItem::itemChanged().

QwtPlotCurve::CurveType QwtPlotCurve::curveType (  )  const

Return the curve type

See also:
setCurveType()

Definition at line 1006 of file qwt_plot_curve.cpp.

void QwtPlotCurve::setPaintAttribute ( PaintAttribute  attribute,
bool  on = true 
)

Specify an attribute how to draw the curve.

The attributes can be used to modify the drawing algorithm.

The following attributes are defined:

PaintFiltered
Tries to reduce the data that has to be painted, by sorting out duplicates, or paintings outside the visible area. Might have a notable impact on curves with many close points. Only a couple of very basic filtering algos are implemented.
ClipPolygons
Clip polygons before painting them. In situations, where points are far outside the visible area this might be a great improvement for the painting performance ( especially on Windows ).

The default is, that no paint attributes are enabled.

Parameters:
attribute Paint attribute
on On/Off /sa testPaintAttribute()

Definition at line 215 of file qwt_plot_curve.cpp.

bool QwtPlotCurve::testPaintAttribute ( PaintAttribute  attribute  )  const

Return the current paint attributes.

See also:
setPaintAttribute

Definition at line 227 of file qwt_plot_curve.cpp.

void QwtPlotCurve::setRawData ( const double *  xData,
const double *  yData,
int  size 
)

Initialize the data by pointing to memory blocks which are not managed by QwtPlotCurve.

setRawData is provided for efficiency. It is important to keep the pointers during the lifetime of the underlying QwtCPointerData class.

Parameters:
xData pointer to x data
yData pointer to y data
size size of x and y
See also:
QwtCPointerData::setData.

Definition at line 429 of file qwt_plot_curve.cpp.

References QwtPlotItem::itemChanged().

void QwtPlotCurve::setData ( const double *  xData,
const double *  yData,
int  size 
)

Set data by copying x- and y-values from specified memory blocks. Contrary to setCurveRawData(), this function makes a 'deep copy' of the data.

Parameters:
xData pointer to x values
yData pointer to y values
size size of xData and yData
See also:
QwtCPointerData

Definition at line 363 of file qwt_plot_curve.cpp.

References QwtPlotItem::itemChanged().

void QwtPlotCurve::setData ( const QwtArray< double > &  xData,
const QwtArray< double > &  yData 
)

Initialize data with x- and y-arrays (explicitly shared).

Parameters:
xData x data
yData y data
See also:
QwtArrayData

Definition at line 378 of file qwt_plot_curve.cpp.

References QwtPlotItem::itemChanged().

void QwtPlotCurve::setData ( const QPolygonF &  data  ) 

Initialize data with an array of points (explicitly shared).

Parameters:
data Data
See also:
QwtPolygonFData

Definition at line 395 of file qwt_plot_curve.cpp.

void QwtPlotCurve::setData ( const QwtData data  ) 

Initialize data with a pointer to QwtData.

Parameters:
data Data
See also:
QwtData::copy()

Definition at line 409 of file qwt_plot_curve.cpp.

References QwtData::copy(), data(), and QwtPlotItem::itemChanged().

QwtData & QwtPlotCurve::data (  )  [inline]

Returns:
the the curve data

Definition at line 217 of file qwt_plot_curve.h.

Referenced by setData().

const QwtData & QwtPlotCurve::data (  )  const [inline]

Returns:
the the curve data

Definition at line 223 of file qwt_plot_curve.h.

int QwtPlotCurve::dataSize (  )  const

Return the size of the data arrays

See also:
setData()

Definition at line 1185 of file qwt_plot_curve.cpp.

References QwtData::size().

Referenced by closestPoint(), draw(), and drawCurve().

double QwtPlotCurve::x ( int  i  )  const [inline]

Parameters:
i index
Returns:
x-value at position i

Definition at line 232 of file qwt_plot_curve.h.

References QwtData::x().

Referenced by closestPoint(), drawDots(), drawLines(), drawSteps(), drawSticks(), and drawSymbols().

double QwtPlotCurve::y ( int  i  )  const [inline]

Parameters:
i index
Returns:
y-value at position i

Definition at line 241 of file qwt_plot_curve.h.

References QwtData::y().

Referenced by closestPoint(), drawDots(), drawLines(), drawSteps(), drawSticks(), and drawSymbols().

QwtDoubleRect QwtPlotCurve::boundingRect (  )  const [virtual]

Returns the bounding rectangle of the curve data. If there is no bounding rect, like for empty data the rectangle is invalid.

See also:
QwtData::boundingRect(), QwtDoubleRect::isValid()

Reimplemented from QwtPlotItem.

Definition at line 442 of file qwt_plot_curve.cpp.

References QwtData::boundingRect().

double QwtPlotCurve::minXValue (  )  const [inline]

boundingRect().left()

Definition at line 137 of file qwt_plot_curve.h.

References QwtPlotItem::boundingRect().

double QwtPlotCurve::maxXValue (  )  const [inline]

boundingRect().right()

Definition at line 139 of file qwt_plot_curve.h.

References QwtPlotItem::boundingRect().

double QwtPlotCurve::minYValue (  )  const [inline]

boundingRect().top()

Definition at line 141 of file qwt_plot_curve.h.

References QwtPlotItem::boundingRect().

double QwtPlotCurve::maxYValue (  )  const [inline]

boundingRect().bottom()

Definition at line 143 of file qwt_plot_curve.h.

References QwtPlotItem::boundingRect().

void QwtPlotCurve::setCurveAttribute ( CurveAttribute  attribute,
bool  on = true 
)

Specify an attribute for drawing the curve.

The attributes can be used to modify the drawing style. The following attributes are defined:

Fitted
For Lines only. A QwtCurveFitter tries to interpolate/smooth the curve, before it is painted. Note that curve fitting requires temorary memory for calculating coefficients and additional points. If painting in Fitted mode is slow it might be better to fit the points, before they are passed to QwtPlotCurve.
Inverted
For Steps only. Draws a step function from the right to the left.

Parameters:
attribute Curve attribute
on On/Off
/sa testCurveAttribute(), setCurveFitter()

Definition at line 955 of file qwt_plot_curve.cpp.

References QwtPlotItem::itemChanged().

bool QwtPlotCurve::testCurveAttribute ( CurveAttribute  attribute  )  const

Returns:
true, if attribute is enabled
See also:
setCurveAttribute()

Definition at line 972 of file qwt_plot_curve.cpp.

Referenced by drawCurve().

void QwtPlotCurve::setPen ( const QPen &  pen  ) 

Assign a pen.

Parameters:
pen New pen
See also:
pen(), brush()

Definition at line 303 of file qwt_plot_curve.cpp.

References QwtPlotItem::itemChanged().

Referenced by QwtPlotPrintFilter::apply(), and QwtPlotPrintFilter::reset().

const QPen & QwtPlotCurve::pen (  )  const

Return the pen used to draw the lines.

See also:
setPen(), brush()

Definition at line 316 of file qwt_plot_curve.cpp.

Referenced by QwtPlotPrintFilter::apply(), QwtPlotPrintFilter::reset(), and updateLegend().

void QwtPlotCurve::setBrush ( const QBrush &  brush  ) 

Assign a brush. In case of brush.style() != QBrush::NoBrush and style() != QwtPlotCurve::Sticks the area between the curve and the baseline will be filled. In case !brush.color().isValid() the area will be filled by pen.color(). The fill algorithm simply connects the first and the last curve point to the baseline. So the curve data has to be sorted (ascending or descending).

Parameters:
brush New brush
See also:
brush(), setBaseline(), baseline()

Definition at line 333 of file qwt_plot_curve.cpp.

References QwtPlotItem::itemChanged().

const QBrush & QwtPlotCurve::brush (  )  const

Return the brush used to fill the area between lines and the baseline.

See also:
setBrush(), setBaseline(), baseline()

Definition at line 346 of file qwt_plot_curve.cpp.

void QwtPlotCurve::setBaseline ( double  reference  ) 

Set the value of the baseline.

The baseline is needed for filling the curve with a brush or the Sticks drawing style. The default value is 0.0. The interpretation of the baseline depends on the CurveType. With QwtPlotCurve::Yfx, the baseline is interpreted as a horizontal line at y = baseline(), with QwtPlotCurve::Yfy, it is interpreted as a vertical line at x = baseline().

Parameters:
reference baseline
See also:
baseline(), setBrush(), setStyle(), setCurveType()

Definition at line 1163 of file qwt_plot_curve.cpp.

References QwtPlotItem::itemChanged().

double QwtPlotCurve::baseline (  )  const

Return the value of the baseline

See also:
setBaseline

Definition at line 1176 of file qwt_plot_curve.cpp.

void QwtPlotCurve::setStyle ( CurveStyle  style  ) 

Set the curve's drawing style.

Valid styles are:

NoCurve
Don't draw a curve. Note: This doesn't affect the symbol.
Lines
Connect the points with straight lines. The lines might be interpolated depending on the 'Fitted' option. Curve fitting can be configured using setCurveFitter.
Sticks
Draw vertical sticks from a baseline which is defined by setBaseline().
Steps
Connect the points with a step function. The step function is drawn from the left to the right or vice versa, depending on the 'Inverted' option.
Dots
Draw dots at the locations of the data points. Note: This is different from a dotted line (see setPen()).
UserCurve ...
Styles >= UserCurve are reserved for derived classes of QwtPlotCurve that overload drawCurve() with additional application specific curve types.
See also:
style()

Definition at line 259 of file qwt_plot_curve.cpp.

References QwtPlotItem::itemChanged().

QwtPlotCurve::CurveStyle QwtPlotCurve::style (  )  const

Return the current style.

See also:
setStyle()

Definition at line 272 of file qwt_plot_curve.cpp.

Referenced by updateLegend().

void QwtPlotCurve::setSymbol ( const QwtSymbol symbol  ) 

Assign a symbol.

Parameters:
symbol Symbol
See also:
symbol()

Definition at line 282 of file qwt_plot_curve.cpp.

References QwtSymbol::clone(), QwtPlotItem::itemChanged(), and symbol().

Referenced by QwtPlotPrintFilter::apply(), and QwtPlotPrintFilter::reset().

const QwtSymbol & QwtPlotCurve::symbol (  )  const

Return the current symbol.

See also:
setSymbol()

Definition at line 293 of file qwt_plot_curve.cpp.

Referenced by QwtPlotPrintFilter::apply(), drawSymbols(), QwtPlotPrintFilter::reset(), setSymbol(), and updateLegend().

void QwtPlotCurve::draw ( QPainter *  painter,
const QwtScaleMap xMap,
const QwtScaleMap yMap,
const QRect &   
) const [virtual]

Draw the complete curve.

Parameters:
painter Painter
xMap Maps x-values into pixel coordinates.
yMap Maps y-values into pixel coordinates.
See also:
drawCurve(), drawSymbols()

Implements QwtPlotItem.

Definition at line 459 of file qwt_plot_curve.cpp.

Referenced by draw().

void QwtPlotCurve::draw ( QPainter *  painter,
const QwtScaleMap xMap,
const QwtScaleMap yMap,
int  from,
int  to 
) const [virtual]

Draw an interval of the curve.

Parameters:
painter Painter
xMap maps x-values into pixel coordinates.
yMap maps y-values into pixel coordinates.
from index of the first point to be painted
to index of the last point to be painted. If to < 0 the curve will be painted to its last point.
See also:
drawCurve(), drawSymbols(),

Definition at line 557 of file qwt_plot_curve.cpp.

References dataSize(), drawCurve(), and drawSymbols().

void QwtPlotCurve::draw ( int  from,
int  to 
) const

Draw a set of points of a curve.

When observing an measurement while it is running, new points have to be added to an existing curve. drawCurve can be used to display them avoiding a complete redraw of the canvas.

Setting plot()->canvas()->setAttribute(Qt::WA_PaintOutsidePaintEvent, true); will result in faster painting, if the paint engine of the canvas widget supports this feature.

Parameters:
from Index of the first point to be painted
to Index of the last point to be painted. If to < 0 the curve will be painted to its last point.
See also:
drawCurve(), drawSymbols()

Definition at line 483 of file qwt_plot_curve.cpp.

References QwtPlot::canvas(), QwtPlot::canvasMap(), draw(), QwtPlotCanvas::paintCache(), QwtPlotItem::plot(), QwtPlotCanvas::testPaintAttribute(), QwtPlotItem::xAxis(), and QwtPlotItem::yAxis().

void QwtPlotCurve::updateLegend ( QwtLegend  )  const [virtual]

Update the widget that represents the curve on the legend.

Reimplemented from QwtPlotItem.

Definition at line 1220 of file qwt_plot_curve.cpp.

References QwtLegend::displayPolicy(), QwtLegend::find(), QwtLegend::identifierMode(), QwtPlotItem::legendItem(), pen(), style(), symbol(), QwtPlotItem::title(), and QwtPlotItem::updateLegend().

void QwtPlotCurve::init (  )  [protected]

Initialize data members.

Definition at line 175 of file qwt_plot_curve.cpp.

References QwtPlotItem::setItemAttribute(), and QwtPlotItem::setZ().

Referenced by QwtPlotCurve().

void QwtPlotCurve::drawCurve ( QPainter *  painter,
int  style,
const QwtScaleMap xMap,
const QwtScaleMap yMap,
int  from,
int  to 
) const [protected, virtual]

Draw the line part (without symbols) of a curve interval.

Parameters:
painter Painter
style curve style, see QwtPlotCurve::CurveStyle
xMap x map
yMap y map
from index of the first point to be painted
to index of the last point to be painted
See also:
draw(), drawDots(), drawLines(), drawSteps(), drawSticks()

Definition at line 601 of file qwt_plot_curve.cpp.

References dataSize(), drawDots(), drawLines(), drawSteps(), drawSticks(), and testCurveAttribute().

Referenced by draw().

void QwtPlotCurve::drawSymbols ( QPainter *  painter,
const QwtSymbol symbol,
const QwtScaleMap xMap,
const QwtScaleMap yMap,
int  from,
int  to 
) const [protected, virtual]

Draw symbols.

Parameters:
painter Painter
symbol Curve symbol
xMap x map
yMap y map
from index of the first point to be painted
to index of the last point to be painted
See also:
setSymbol(), draw(), drawCurve()

Definition at line 1107 of file qwt_plot_curve.cpp.

References QwtSymbol::brush(), QwtSymbol::draw(), QwtPainter::metricsMap(), QwtSymbol::pen(), QwtSymbol::size(), symbol(), QwtScaleMap::transform(), x(), and y().

Referenced by draw().

void QwtPlotCurve::drawLines ( QPainter *  painter,
const QwtScaleMap xMap,
const QwtScaleMap yMap,
int  from,
int  to 
) const [protected]

Draw lines.

If the CurveAttribute Fitted is enabled a QwtCurveFitter tries to interpolate/smooth the curve, before it is painted.

Parameters:
painter Painter
xMap x map
yMap y map
from index of the first point to be painted
to index of the last point to be painted
See also:
setCurveAttribute(), setCurveFitter(), draw(), drawLines(), drawDots(), drawSteps(), drawSticks()

Definition at line 647 of file qwt_plot_curve.cpp.

References QwtClipper::clipPolygon(), QwtPainter::drawPolyline(), fillCurve(), QwtScaleMap::transform(), x(), QwtScaleMap::xTransform(), and y().

Referenced by drawCurve().

void QwtPlotCurve::drawSticks ( QPainter *  painter,
const QwtScaleMap xMap,
const QwtScaleMap yMap,
int  from,
int  to 
) const [protected]

Draw sticks

Parameters:
painter Painter
xMap x map
yMap y map
from index of the first point to be painted
to index of the last point to be painted
See also:
draw(), drawCurve(), drawDots(), drawLines(), drawSteps()

Definition at line 773 of file qwt_plot_curve.cpp.

References QwtPainter::drawLine(), QwtScaleMap::transform(), x(), and y().

Referenced by drawCurve().

void QwtPlotCurve::drawDots ( QPainter *  painter,
const QwtScaleMap xMap,
const QwtScaleMap yMap,
int  from,
int  to 
) const [protected]

Draw dots

Parameters:
painter Painter
xMap x map
yMap y map
from index of the first point to be painted
to index of the last point to be painted
See also:
draw(), drawCurve(), drawSticks(), drawLines(), drawSteps()

Definition at line 803 of file qwt_plot_curve.cpp.

References QwtClipper::clipPolygon(), QwtPainter::drawPoint(), fillCurve(), QwtScaleMap::transform(), x(), and y().

Referenced by drawCurve().

void QwtPlotCurve::drawSteps ( QPainter *  painter,
const QwtScaleMap xMap,
const QwtScaleMap yMap,
int  from,
int  to 
) const [protected]

Draw step function

The direction of the steps depends on Inverted attribute.

Parameters:
painter Painter
xMap x map
yMap y map
from index of the first point to be painted
to index of the last point to be painted
See also:
CurveAttribute, setCurveAttribute(), draw(), drawCurve(), drawDots(), drawLines(), drawSticks()

Definition at line 896 of file qwt_plot_curve.cpp.

References QwtClipper::clipPolygon(), QwtPainter::drawPolyline(), fillCurve(), QwtScaleMap::transform(), x(), and y().

Referenced by drawCurve().

void QwtPlotCurve::fillCurve ( QPainter *  painter,
const QwtScaleMap xMap,
const QwtScaleMap yMap,
QwtPolygon &  pa 
) const [protected]

Fill the area between the curve and the baseline with the curve brush

Parameters:
painter Painter
xMap x map
yMap y map
pa Polygon
See also:
setBrush(), setBaseline(), setCurveType()

Definition at line 1036 of file qwt_plot_curve.cpp.

References closePolyline(), and QwtPainter::drawPolygon().

Referenced by drawDots(), drawLines(), and drawSteps().

void QwtPlotCurve::closePolyline ( const QwtScaleMap xMap,
const QwtScaleMap yMap,
QwtPolygon &  pa 
) const [protected]

Complete a polygon to be a closed polygon including the area between the original polygon and the baseline.

Parameters:
xMap X map
yMap Y map
pa Polygon to be completed

Definition at line 1070 of file qwt_plot_curve.cpp.

References QwtScaleMap::transform().

Referenced by fillCurve().


Generated on Thu May 1 15:45:02 2008 for Qwt User's Guide by  doxygen 1.5.0