Classes | Public Types | Public Member Functions | Protected Member Functions | Private Attributes
QwtPlotCurve Class Reference

A plot item, that represents a series of points. More...

#include <qwt_plot_curve.h>

Inheritance diagram for QwtPlotCurve:
Inheritance graph
[legend]

List of all members.

Classes

class  PrivateData

Public Types

enum  CurveAttribute { Inverted = 0x01, Fitted = 0x02 }
typedef QFlags< CurveAttributeCurveAttributes
 Curve attributes.
enum  CurveStyle {
  NoCurve = -1, Lines, Sticks, Steps,
  Dots, LinesAndDots, UserCurve = 100
}
enum  LegendAttribute { LegendNoAttribute = 0x00, LegendShowLine = 0x01, LegendShowSymbol = 0x02, LegendShowBrush = 0x04 }
typedef QFlags< LegendAttributeLegendAttributes
 Legend attributes.
enum  PaintAttribute {
  ClipPolygons = 0x01, FilterPoints = 0x02, MinimizeMemory = 0x04, ImageBuffer = 0x08,
  FilterPointsAggressive = 0x10
}
typedef QFlags< PaintAttributePaintAttributes
 Paint attributes.

Public Member Functions

double baseline () const
const QBrush & brush () const
virtual int closestPoint (const QPoint &pos, double *dist=NULL) const
QwtCurveFittercurveFitter () const
virtual void drawSeries (QPainter *, const QwtScaleMap &xMap, const QwtScaleMap &yMap, const QRectF &canvasRect, int from, int to) const
virtual QwtGraphic legendIcon (int index, const QSizeF &) const
double maxXValue () const
 boundingRect().right()
double maxYValue () const
 boundingRect().bottom()
double minXValue () const
 boundingRect().left()
double minYValue () const
 boundingRect().top()
const QPen & pen () const
 QwtPlotCurve (const QString &title=QString())
 QwtPlotCurve (const QwtText &title)
virtual int rtti () const
void setBaseline (double)
 Set the value of the baseline.
void setBrush (const QBrush &)
 Assign a brush.
void setCurveAttribute (CurveAttribute, bool on=true)
void setCurveFitter (QwtCurveFitter *)
void setLegendAttribute (LegendAttribute, bool on=true)
void setPaintAttribute (PaintAttribute, bool on=true)
void setPen (const QColor &, qreal width=0.0, Qt::PenStyle=Qt::SolidLine)
void setPen (const QPen &)
void setRawSamples (const double *xData, const double *yData, int size)
 Initialize the data by pointing to memory blocks which are not managed by QwtPlotCurve.
void setSamples (const double *xData, const double *yData, int size)
void setSamples (const QVector< double > &xData, const QVector< double > &yData)
 Initialize data with x- and y-arrays (explicitly shared)
void setSamples (const QVector< QPointF > &)
void setSamples (QwtSeriesData< QPointF > *)
void setStyle (CurveStyle style)
void setSymbol (QwtSymbol *)
 Assign a symbol.
CurveStyle style () const
const QwtSymbolsymbol () const
bool testCurveAttribute (CurveAttribute) const
bool testLegendAttribute (LegendAttribute) const
bool testPaintAttribute (PaintAttribute) const
virtual ~QwtPlotCurve ()
 Destructor.

Protected Member Functions

void closePolyline (QPainter *, const QwtScaleMap &, const QwtScaleMap &, QPolygonF &) const
 Complete a polygon to be a closed polygon including the area between the original polygon and the baseline.
virtual void drawCurve (QPainter *p, int style, const QwtScaleMap &xMap, const QwtScaleMap &yMap, const QRectF &canvasRect, int from, int to) const
 Draw the line part (without symbols) of a curve interval.
virtual void drawDots (QPainter *p, const QwtScaleMap &xMap, const QwtScaleMap &yMap, const QRectF &canvasRect, int from, int to) const
virtual void drawLines (QPainter *p, const QwtScaleMap &xMap, const QwtScaleMap &yMap, const QRectF &canvasRect, int from, int to) const
 Draw lines.
virtual void drawSteps (QPainter *p, const QwtScaleMap &xMap, const QwtScaleMap &yMap, const QRectF &canvasRect, int from, int to) const
virtual void drawSticks (QPainter *p, const QwtScaleMap &xMap, const QwtScaleMap &yMap, const QRectF &canvasRect, int from, int to) const
virtual void drawSymbols (QPainter *p, const QwtSymbol &, const QwtScaleMap &xMap, const QwtScaleMap &yMap, const QRectF &canvasRect, int from, int to) const
virtual void fillCurve (QPainter *, const QwtScaleMap &, const QwtScaleMap &, const QRectF &canvasRect, QPolygonF &) const
void init ()
 Initialize internal members.

Private Attributes

PrivateDatad_data

Detailed Description

A plot item, that represents a series of points.

A curve is the representation of a series of points in the x-y plane. It supports different display styles, interpolation ( f.e. spline ) and symbols.

Usage
a) Assign curve properties
When a curve is created, it is configured to draw black solid lines with in QwtPlotCurve::Lines style and no symbols. You can change this by calling setPen(), setStyle() and setSymbol().
b) Connect/Assign data.
QwtPlotCurve gets its points using a QwtSeriesData object offering a bridge to the real storage of the points ( like QAbstractItemModel ). There are several convenience classes derived from QwtSeriesData, that also store the points inside ( like QStandardItemModel ). QwtPlotCurve also offers a couple of variations of setSamples(), that build QwtSeriesData objects from arrays internally.
c) Attach the curve to a plot
See QwtPlotItem::attach()
Example:
see examples/bode
See also:
QwtPointSeriesData, QwtSymbol, QwtScaleMap

Definition at line 55 of file qwt_plot_curve.h.


Member Typedef Documentation

Curve attributes.

Definition at line 134 of file qwt_plot_curve.h.

Legend attributes.

Definition at line 170 of file qwt_plot_curve.h.

Paint attributes.

Definition at line 237 of file qwt_plot_curve.h.


Member Enumeration Documentation

Attribute for drawing the curve

See also:
setCurveAttribute(), testCurveAttribute(), curveFitter()
Enumerator:
Inverted 

For QwtPlotCurve::Steps only. Draws a step function from the right to the left.

Fitted 

Only in combination with QwtPlotCurve::Lines A QwtCurveFitter tries to interpolate/smooth the curve, before it is painted.

Note:
Curve fitting requires temporary memory for calculating coefficients and additional points. If painting in QwtPlotCurve::Fitted mode is slow it might be better to fit the points, before they are passed to QwtPlotCurve.

Definition at line 112 of file qwt_plot_curve.h.

Curve styles.

See also:
setStyle(), style()
Enumerator:
NoCurve 

Don't draw a curve. Note: This doesn't affect the symbols.

Lines 

Connect the points with straight lines. The lines might be interpolated depending on the 'Fitted' attribute. Curve fitting can be configured using setCurveFitter().

Sticks 

Draw vertical or horizontal sticks ( depending on the orientation() ) 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 QwtPlotCurve::Inverted attribute.

Dots 

Draw dots at the locations of the data points. Note: This is different from a dotted line (see setPen()), and faster as a curve in QwtPlotCurve::NoStyle style and a symbol painting a point.

LinesAndDots 
UserCurve 

Styles >= QwtPlotCurve::UserCurve are reserved for derived classes of QwtPlotCurve that overload drawCurve() with additional application specific curve types.

Definition at line 63 of file qwt_plot_curve.h.

Attributes how to represent the curve on the legend

See also:
setLegendAttribute(), testLegendAttribute(), QwtPlotItem::legendData(), legendIcon()
Enumerator:
LegendNoAttribute 

QwtPlotCurve tries to find a color representing the curve and paints a rectangle with it.

LegendShowLine 

If the style() is not QwtPlotCurve::NoCurve a line is painted with the curve pen().

LegendShowSymbol 

If the curve has a valid symbol it is painted.

LegendShowBrush 

If the curve has a brush a rectangle filled with the curve brush() is painted.

Definition at line 143 of file qwt_plot_curve.h.

Attributes to modify the drawing algorithm. The default setting enables ClipPolygons | FilterPoints

See also:
setPaintAttribute(), testPaintAttribute()
Enumerator:
ClipPolygons 

Clip polygons before painting them. In situations, where points are far outside the visible area (f.e when zooming deep) this might be a substantial improvement for the painting performance

FilterPoints 

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 algorithms are implemented.

MinimizeMemory 

Minimize memory usage that is temporarily needed for the translated points, before they get painted. This might slow down the performance of painting

ImageBuffer 

Render the points to a temporary image and paint the image. This is a very special optimization for Dots style, when having a huge amount of points. With a reasonable number of points QPainter::drawPoints() will be faster.

FilterPointsAggressive 

More aggressive point filtering trying to filter out intermediate points, accepting minor visual differences.

Has only an effect, when drawing the curve to a paint device in integer coordinates ( f.e. all widgets on screen ) using the fact, that consecutive points are often mapped to the same x or y coordinate. Each chunk of samples mapped to the same coordinate can be reduced to 4 points ( first, min, max last ).

In the worst case the polygon to be rendered will be 4 times the width of the plot canvas.

The algorithm is very fast and effective for huge datasets, and can be used inside a replot cycle.

Note:
Implemented for QwtPlotCurve::Lines only
As this algo replaces many small lines by a long one a nasty bug of the raster paint engine ( Qt 4.8, Qt 5.1 - 5.3 ) becomes more dominant. For these versions the bug can be worked around by enabling the QwtPainter::polylineSplitting() mode.

Definition at line 178 of file qwt_plot_curve.h.


Constructor & Destructor Documentation

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

Constructor

Parameters:
titleTitle of the curve

Definition at line 129 of file qwt_plot_curve.cpp.

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

Constructor

Parameters:
titleTitle of the curve

Definition at line 119 of file qwt_plot_curve.cpp.

Destructor.

Definition at line 136 of file qwt_plot_curve.cpp.


Member Function Documentation

double QwtPlotCurve::baseline ( ) const
Returns:
Value of the baseline
See also:
setBaseline()

Definition at line 1068 of file qwt_plot_curve.cpp.

const QBrush & QwtPlotCurve::brush ( ) const
Returns:
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::closePolyline ( QPainter *  painter,
const QwtScaleMap xMap,
const QwtScaleMap yMap,
QPolygonF &  polygon 
) const [protected]

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

Parameters:
painterPainter
xMapX map
yMapY map
polygonPolygon to be completed

Definition at line 962 of file qwt_plot_curve.cpp.

int QwtPlotCurve::closestPoint ( const QPoint &  pos,
double *  dist = NULL 
) const [virtual]

Find the closest curve point for a specific position

Parameters:
posPosition, where to look for the closest curve point
distIf dist != NULL, closestPoint() returns the distance between the position and the closest curve point
Returns:
Index of the closest curve point, or -1 if none can be found ( f.e when the curve has no points )
Note:
closestPoint() implements a dumb algorithm, that iterates over all points

Definition at line 1084 of file qwt_plot_curve.cpp.

Get the curve fitter. If curve fitting is disabled NULL is returned.

Returns:
Curve fitter
See also:
setCurveFitter(), Fitted

Definition at line 905 of file qwt_plot_curve.cpp.

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

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

Parameters:
painterPainter
stylecurve style, see QwtPlotCurve::CurveStyle
xMapx map
yMapy map
canvasRectContents rectangle of the canvas
fromindex of the first point to be painted
toindex of the last point to be painted
See also:
draw(), drawDots(), drawLines(), drawSteps(), drawSticks()

Definition at line 412 of file qwt_plot_curve.cpp.

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

Draw dots

Parameters:
painterPainter
xMapx map
yMapy map
canvasRectContents rectangle of the canvas
fromindex of the first point to be painted
toindex of the last point to be painted
See also:
draw(), drawCurve(), drawSticks(), drawLines(), drawSteps()

Definition at line 673 of file qwt_plot_curve.cpp.

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

Draw lines.

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

Parameters:
painterPainter
xMapx map
yMapy map
canvasRectContents rectangle of the canvas
fromindex of the first point to be painted
toindex of the last point to be painted
See also:
setCurveAttribute(), setCurveFitter(), draw(), drawLines(), drawDots(), drawSteps(), drawSticks()

Definition at line 477 of file qwt_plot_curve.cpp.

void QwtPlotCurve::drawSeries ( QPainter *  painter,
const QwtScaleMap xMap,
const QwtScaleMap yMap,
const QRectF &  canvasRect,
int  from,
int  to 
) const [virtual]

Draw an interval of the curve

Parameters:
painterPainter
xMapMaps x-values into pixel coordinates.
yMapMaps y-values into pixel coordinates.
canvasRectContents rectangle of the canvas
fromIndex of the first point to be painted
toIndex of the last point to be painted. If to < 0 the curve will be painted to its last point.
See also:
drawCurve(), drawSymbols(),

Implements QwtPlotSeriesItem.

Definition at line 364 of file qwt_plot_curve.cpp.

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

Draw step function

The direction of the steps depends on Inverted attribute.

Parameters:
painterPainter
xMapx map
yMapy map
canvasRectContents rectangle of the canvas
fromindex of the first point to be painted
toindex of the last point to be painted
See also:
CurveAttribute, setCurveAttribute(), draw(), drawCurve(), drawDots(), drawLines(), drawSticks()

Definition at line 774 of file qwt_plot_curve.cpp.

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

Draw sticks

Parameters:
painterPainter
xMapx map
yMapy map
canvasRectContents rectangle of the canvas
fromindex of the first point to be painted
toindex of the last point to be painted
See also:
draw(), drawCurve(), drawDots(), drawLines(), drawSteps()

Definition at line 620 of file qwt_plot_curve.cpp.

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

Draw symbols

Parameters:
painterPainter
symbolCurve symbol
xMapx map
yMapy map
canvasRectContents rectangle of the canvas
fromIndex of the first point to be painted
toIndex of the last point to be painted
See also:
setSymbol(), drawSeries(), drawCurve()

Definition at line 1012 of file qwt_plot_curve.cpp.

void QwtPlotCurve::fillCurve ( QPainter *  painter,
const QwtScaleMap xMap,
const QwtScaleMap yMap,
const QRectF &  canvasRect,
QPolygonF &  polygon 
) const [protected, virtual]

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

Parameters:
painterPainter
xMapx map
yMapy map
canvasRectContents rectangle of the canvas
polygonPolygon - will be modified !
See also:
setBrush(), setBaseline(), setStyle()

Definition at line 922 of file qwt_plot_curve.cpp.

void QwtPlotCurve::init ( ) [protected]

Initialize internal members.

Definition at line 142 of file qwt_plot_curve.cpp.

QwtGraphic QwtPlotCurve::legendIcon ( int  index,
const QSizeF &  size 
) const [virtual]
Returns:
Icon representing the curve on the legend
Parameters:
indexIndex of the legend entry ( ignored as there is only one )
sizeIcon size
See also:
QwtPlotItem::setLegendIconSize(), QwtPlotItem::legendData()

Reimplemented from QwtPlotItem.

Definition at line 1128 of file qwt_plot_curve.cpp.

double QwtPlotCurve::maxXValue ( ) const [inline]

boundingRect().right()

Definition at line 342 of file qwt_plot_curve.h.

double QwtPlotCurve::maxYValue ( ) const [inline]

boundingRect().bottom()

Definition at line 354 of file qwt_plot_curve.h.

double QwtPlotCurve::minXValue ( ) const [inline]

boundingRect().left()

Definition at line 336 of file qwt_plot_curve.h.

double QwtPlotCurve::minYValue ( ) const [inline]

boundingRect().top()

Definition at line 348 of file qwt_plot_curve.h.

const QPen & QwtPlotCurve::pen ( ) const
Returns:
Pen used to draw the lines
See also:
setPen(), brush()

Definition at line 311 of file qwt_plot_curve.cpp.

int QwtPlotCurve::rtti ( ) const [virtual]
Returns:
QwtPlotItem::Rtti_PlotCurve

Reimplemented from QwtPlotItem.

Definition at line 154 of file qwt_plot_curve.cpp.

void QwtPlotCurve::setBaseline ( double  value)

Set the value of the baseline.

The baseline is needed for filling the curve with a brush or the Sticks drawing style.

The interpretation of the baseline depends on the orientation(). With Qt::Horizontal, the baseline is interpreted as a horizontal line at y = baseline(), with Qt::Vertical, it is interpreted as a vertical line at x = baseline().

The default value is 0.0.

Parameters:
valueValue of the baseline
See also:
baseline(), setBrush(), setStyle(), QwtPlotAbstractSeriesItem::orientation()

Definition at line 1055 of file qwt_plot_curve.cpp.

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:
brushNew brush
See also:
brush(), setBaseline(), baseline()

Definition at line 331 of file qwt_plot_curve.cpp.

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

Specify an attribute for drawing the curve

Parameters:
attributeCurve attribute
onOn/Off

/sa testCurveAttribute(), setCurveFitter()

Definition at line 852 of file qwt_plot_curve.cpp.

Assign a curve fitter

The curve fitter "smooths" the curve points, when the Fitted CurveAttribute is set. setCurveFitter(NULL) also disables curve fitting.

The curve fitter operates on the translated points ( = widget coordinates) to be functional for logarithmic scales. Obviously this is less performant for fitting algorithms, that reduce the number of points.

For situations, where curve fitting is used to improve the performance of painting huge series of points it might be better to execute the fitter on the curve points once and to cache the result in the QwtSeriesData object.

Parameters:
curveFitter()Curve fitter
See also:
Fitted

Definition at line 891 of file qwt_plot_curve.cpp.

void QwtPlotCurve::setLegendAttribute ( LegendAttribute  attribute,
bool  on = true 
)

Specify an attribute how to draw the legend icon

Parameters:
attributeAttribute
onOn/Off /sa testLegendAttribute(). legendIcon()

Definition at line 190 of file qwt_plot_curve.cpp.

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

Specify an attribute how to draw the curve

Parameters:
attributePaint attribute
onOn/Off
See also:
testPaintAttribute()

Definition at line 166 of file qwt_plot_curve.cpp.

void QwtPlotCurve::setPen ( const QColor &  color,
qreal  width = 0.0,
Qt::PenStyle  style = Qt::SolidLine 
)

Build and assign a pen

In Qt5 the default pen width is 1.0 ( 0.0 in Qt4 ) what makes it non cosmetic ( see QPen::isCosmetic() ). This method has been introduced to hide this incompatibility.

Parameters:
colorPen color
widthPen width
stylePen style
See also:
pen(), brush()

Definition at line 285 of file qwt_plot_curve.cpp.

void QwtPlotCurve::setPen ( const QPen &  pen)

Assign a pen

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

Definition at line 296 of file qwt_plot_curve.cpp.

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

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

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

Parameters:
xDatapointer to x data
yDatapointer to y data
sizesize of x and y
See also:
QwtCPointerData

Definition at line 1239 of file qwt_plot_curve.cpp.

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

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

Parameters:
xDatapointer to x values
yDatapointer to y values
sizesize of xData and yData
See also:
QwtPointArrayData

Definition at line 1256 of file qwt_plot_curve.cpp.

void QwtPlotCurve::setSamples ( const QVector< double > &  xData,
const QVector< double > &  yData 
)

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

Parameters:
xDatax data
yDatay data
See also:
QwtPointArrayData

Definition at line 1270 of file qwt_plot_curve.cpp.

void QwtPlotCurve::setSamples ( const QVector< QPointF > &  samples)

Initialize data with an array of points.

Parameters:
samplesVector of points
Note:
QVector is implicitly shared
QPolygonF is derived from QVector<QPointF>

Definition at line 1203 of file qwt_plot_curve.cpp.

void QwtPlotCurve::setSamples ( QwtSeriesData< QPointF > *  data)

Assign a series of points

setSamples() is just a wrapper for setData() without any additional value - beside that it is easier to find for the developer.

Parameters:
dataData
Warning:
The item takes ownership of the data object, deleting it when its not used anymore.

Definition at line 1218 of file qwt_plot_curve.cpp.

Set the curve's drawing style

Parameters:
styleCurve style
See also:
style()

Definition at line 219 of file qwt_plot_curve.cpp.

void QwtPlotCurve::setSymbol ( QwtSymbol symbol)

Assign a symbol.

The curve will take the ownership of the symbol, hence the previously set symbol will be delete by setting a new one. If symbol is NULL no symbol will be drawn.

Parameters:
symbolSymbol
See also:
symbol()

Definition at line 249 of file qwt_plot_curve.cpp.

Returns:
Style of the curve
See also:
setStyle()

Definition at line 234 of file qwt_plot_curve.cpp.

const QwtSymbol * QwtPlotCurve::symbol ( ) const
Returns:
Current symbol or NULL, when no symbol has been assigned
See also:
setSymbol()

Definition at line 267 of file qwt_plot_curve.cpp.

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

Definition at line 869 of file qwt_plot_curve.cpp.

Returns:
True, when attribute is enabled
See also:
setLegendAttribute()

Definition at line 208 of file qwt_plot_curve.cpp.

Returns:
True, when attribute is enabled
See also:
setPaintAttribute()

Definition at line 178 of file qwt_plot_curve.cpp.


Member Data Documentation

Reimplemented from QwtPlotSeriesItem.

Definition at line 331 of file qwt_plot_curve.h.


The documentation for this class was generated from the following files:


plotjuggler
Author(s): Davide Faconti
autogenerated on Wed Jul 3 2019 19:28:06