· · · ·
Public Functions | Protected Functions
QCPAbstractPlottable1D< DataType > Class Template Reference

A template base class for plottables with one-dimensional data. More...

Inheritance diagram for QCPAbstractPlottable1D< DataType >:

## Public Functions
| QCPAbstractPlottable1D (QCPAxis *keyAxis, QCPAxis *valueAxis)
virtual int | dataCount () const
virtual double | dataMainKey (int index) const
virtual double | dataSortKey (int index) const
virtual double | dataMainValue (int index) const
virtual QCPRange | dataValueRange (int index) const
virtual QPointF | dataPixelPosition (int index) const
virtual bool | sortKeyIsMainKey () const
virtual QCPDataSelection | selectTestRect (const QRectF &rect, bool onlySelectable) const
virtual int | findBegin (double sortKey, bool expandedRange=true) const
virtual int | findEnd (double sortKey, bool expandedRange=true) const
virtual double | selectTest (const QPointF &pos, bool onlySelectable, QVariant *details=nullptr) const
virtual QCPPlottableInterface1D * | interface1D ()
Public Functions inherited from QCPAbstractPlottable
| QCPAbstractPlottable (QCPAxis *keyAxis, QCPAxis *valueAxis)
QString | name () const
bool | antialiasedFill () const
bool | antialiasedScatters () const
QPen | pen () const
QBrush | brush () const
QCPAxis * | keyAxis () const
QCPAxis * | valueAxis () const
QCP::SelectionType | selectable () const
bool | selected () const
QCPDataSelection | selection () const
QCPSelectionDecorator * | selectionDecorator () const
void | setName (const QString &name)
void | setAntialiasedFill (bool enabled)
void | setAntialiasedScatters (bool enabled)
void | setPen (const QPen &pen)
void | setBrush (const QBrush &brush)
void | setKeyAxis (QCPAxis *axis)
void | setValueAxis (QCPAxis *axis)
Q_SLOT void | setSelectable (QCP::SelectionType selectable)
Q_SLOT void | setSelection (QCPDataSelection selection)
void | setSelectionDecorator (QCPSelectionDecorator *decorator)
virtual QCPRange | getKeyRange (bool &foundRange, QCP::SignDomain inSignDomain=QCP::sdBoth) const =0
virtual QCPRange | getValueRange (bool &foundRange, QCP::SignDomain inSignDomain=QCP::sdBoth, const QCPRange &inKeyRange=QCPRange()) const =0
void | coordsToPixels (double key, double value, double &x, double &y) const
const QPointF | coordsToPixels (double key, double value) const
void | pixelsToCoords (double x, double y, double &key, double &value) const
void | pixelsToCoords (const QPointF &pixelPos, double &key, double &value) const
void | rescaleAxes (bool onlyEnlarge=false) const
void | rescaleKeyAxis (bool onlyEnlarge=false) const
void | rescaleValueAxis (bool onlyEnlarge=false, bool inKeyRange=false) const
bool | addToLegend (QCPLegend *legend)
bool | addToLegend ()
bool | removeFromLegend (QCPLegend *legend) const
bool | removeFromLegend () const
Public Functions inherited from QCPLayerable
| QCPLayerable (QCustomPlot *plot, QString targetLayer=QString(), QCPLayerable *parentLayerable=nullptr)
bool | visible () const
QCustomPlot * | parentPlot () const
QCPLayerable * | parentLayerable () const
QCPLayer * | layer () const
bool | antialiased () const
void | setVisible (bool on)
Q_SLOT bool | setLayer (QCPLayer *layer)
bool | setLayer (const QString &layerName)
void | setAntialiased (bool enabled)
bool | realVisibility () const

## Protected Functions
void | getDataSegments (QList< QCPDataRange > &selectedSegments, QList< QCPDataRange > &unselectedSegments) const
void | drawPolyline (QCPPainter *painter, const QVector< QPointF > &lineData) const
Protected Functions inherited from QCPAbstractPlottable
virtual QRect | clipRect () const
virtual void | draw (QCPPainter *painter)=0
virtual QCP::Interaction | selectionCategory () const
void | applyDefaultAntialiasingHint (QCPPainter *painter) const
virtual void | selectEvent (QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged)
virtual void | deselectEvent (bool *selectionStateChanged)
virtual void | drawLegendIcon (QCPPainter *painter, const QRectF &rect) const =0
void | applyFillAntialiasingHint (QCPPainter *painter) const
void | applyScattersAntialiasingHint (QCPPainter *painter) const
Protected Functions inherited from QCPLayerable
virtual void | parentPlotInitialized (QCustomPlot *parentPlot)
virtual void | mousePressEvent (QMouseEvent *event, const QVariant &details)
virtual void | mouseMoveEvent (QMouseEvent *event, const QPointF &startPos)
virtual void | mouseReleaseEvent (QMouseEvent *event, const QPointF &startPos)
virtual void | mouseDoubleClickEvent (QMouseEvent *event, const QVariant &details)
virtual void | wheelEvent (QWheelEvent *event)
void | initializeParentPlot (QCustomPlot *parentPlot)
void | setParentLayerable (QCPLayerable *parentLayerable)
bool | moveToLayer (QCPLayer *layer, bool prepend)
void | applyAntialiasingHint (QCPPainter *painter, bool localAntialiased, QCP::AntialiasedElement overrideElement) const

## Additional Inherited Members
Signals inherited from QCPAbstractPlottable
void | selectionChanged (bool selected)
void | selectionChanged (const QCPDataSelection &selection)
void | selectableChanged (QCP::SelectionType selectable)
Signals inherited from QCPLayerable
void | layerChanged (QCPLayer *newLayer)

## Detailed Description

### template<class DataType>
class QCPAbstractPlottable1D< DataType >

A template base class for plottables with one-dimensional data.

This template class derives from QCPAbstractPlottable and from the abstract interface QCPPlottableInterface1D. It serves as a base class for all one-dimensional data (i.e. data with one key dimension), such as QCPGraph and QCPCurve.

The template parameter DataType is the type of the data points of this plottable (e.g. QCPGraphData or QCPCurveData). The main purpose of this base class is to provide the member mDataContainer (a shared pointer to a QCPDataContainer<DataType>) and implement the according virtual methods of the QCPPlottableInterface1D, such that most subclassed plottables don't need to worry about this anymore.

Further, it provides a convenience method for retrieving selected/unselected data segments via getDataSegments. This is useful when subclasses implement their draw method and need to draw selected segments with a different pen/brush than unselected segments (also see QCPSelectionDecorator).

This class implements basic functionality of QCPAbstractPlottable::selectTest and QCPPlottableInterface1D::selectTestRect, assuming point-like data points, based on the 1D data interface. In spite of that, most plottable subclasses will want to reimplement those methods again, to provide a more accurate hit test based on their specific data visualization geometry.

## Constructor & Destructor Documentation

## § QCPAbstractPlottable1D()

template<class DataType >

QCPAbstractPlottable1D< DataType >::QCPAbstractPlottable1D | ( | QCPAxis * | keyAxis,
|  | QCPAxis * | valueAxis
| ) |  |

Forwards keyAxis and valueAxis to the QCPAbstractPlottable constructor and allocates the mDataContainer.

## Member Function Documentation

## § dataCount()

template<class DataType >

int QCPAbstractPlottable1D< DataType >::dataCount | ( |  | ) | const
| virtual

Returns the number of data points of the plottable.

Implements QCPPlottableInterface1D.

## § dataMainKey()

template<class DataType >

double QCPAbstractPlottable1D< DataType >::dataMainKey | ( | int | index | ) | const
| virtual

Returns the main key of the data point at the given index.

What the main key is, is defined by the plottable's data type. See the QCPDataContainer DataType documentation for details about this naming convention.

Implements QCPPlottableInterface1D.

## § dataSortKey()

template<class DataType >

double QCPAbstractPlottable1D< DataType >::dataSortKey | ( | int | index | ) | const
| virtual

Returns the sort key of the data point at the given index.

What the sort key is, is defined by the plottable's data type. See the QCPDataContainer DataType documentation for details about this naming convention.

Implements QCPPlottableInterface1D.

## § dataMainValue()

template<class DataType >

double QCPAbstractPlottable1D< DataType >::dataMainValue | ( | int | index | ) | const
| virtual

Returns the main value of the data point at the given index.

What the main value is, is defined by the plottable's data type. See the QCPDataContainer DataType documentation for details about this naming convention.

Implements QCPPlottableInterface1D.

## § dataValueRange()

template<class DataType >

QCPRange QCPAbstractPlottable1D< DataType >::dataValueRange | ( | int | index | ) | const
| virtual

Returns the value range of the data point at the given index.

What the value range is, is defined by the plottable's data type. See the QCPDataContainer DataType documentation for details about this naming convention.

Implements QCPPlottableInterface1D.

## § dataPixelPosition()

template<class DataType >

QPointF QCPAbstractPlottable1D< DataType >::dataPixelPosition | ( | int | index | ) | const
| virtual

Returns the pixel position on the widget surface at which the data point at the given index appears.

Usually this corresponds to the point of dataMainKey/dataMainValue, in pixel coordinates. However, depending on the plottable, this might be a different apparent position than just a coord-to-pixel transform of those values. For example, QCPBars apparent data values can be shifted depending on their stacking, bar grouping or configured base value.

Implements QCPPlottableInterface1D.

Reimplemented in QCPBars.

## § sortKeyIsMainKey()

template<class DataType >

bool QCPAbstractPlottable1D< DataType >::sortKeyIsMainKey | ( |  | ) | const
| virtual

Returns whether the sort key (dataSortKey) is identical to the main key (dataMainKey).

What the sort and main keys are, is defined by the plottable's data type. See the QCPDataContainer DataType documentation for details about this naming convention.

Implements QCPPlottableInterface1D.

## § selectTestRect()

template<class DataType >

QCPDataSelection QCPAbstractPlottable1D< DataType >::selectTestRect | ( | const QRectF & | rect,
|  | bool | onlySelectable
| ) |  | const
| virtual

Implements a rect-selection algorithm assuming the data (accessed via the 1D data interface) is point-like. Most subclasses will want to reimplement this method again, to provide a more accurate hit test based on the true data visualization geometry.

For general information about this virtual method, see the base class implementation.

Implements QCPPlottableInterface1D.

Reimplemented in QCPBars, QCPFinancial, and QCPStatisticalBox.

## § findBegin()

template<class DataType >

int QCPAbstractPlottable1D< DataType >::findBegin | ( | double | sortKey,
|  | bool | expandedRange = `true`
| ) |  | const
| virtual

Returns the index of the data point with a (sort-)key that is equal to, just below, or just above sortKey. If expandedRange is true, the data point just below sortKey will be considered, otherwise the one just above.

This can be used in conjunction with findEnd to iterate over data points within a given key range, including or excluding the bounding data points that are just beyond the specified range.

If expandedRange is true but there are no data points below sortKey, 0 is returned.

If the container is empty, returns 0 (in that case, findEnd will also return 0, so a loop using these methods will not iterate over the index 0).

See also
  findEnd, QCPDataContainer::findBegin

Implements QCPPlottableInterface1D.

## § findEnd()

template<class DataType >

int QCPAbstractPlottable1D< DataType >::findEnd | ( | double | sortKey,
|  | bool | expandedRange = `true`
| ) |  | const
| virtual

Returns the index one after the data point with a (sort-)key that is equal to, just above, or just below sortKey. If expandedRange is true, the data point just above sortKey will be considered, otherwise the one just below.

This can be used in conjunction with findBegin to iterate over data points within a given key range, including the bounding data points that are just below and above the specified range.

If expandedRange is true but there are no data points above sortKey, the index just above the highest data point is returned.

If the container is empty, returns 0.

See also
  findBegin, QCPDataContainer::findEnd

Implements QCPPlottableInterface1D.

## § selectTest()

template<class DataType >

double QCPAbstractPlottable1D< DataType >::selectTest | ( | const QPointF & | pos,
|  | bool | onlySelectable,
|  | QVariant * | details = `nullptr`
| ) |  | const
| virtual

Implements a point-selection algorithm assuming the data (accessed via the 1D data interface) is point-like. Most subclasses will want to reimplement this method again, to provide a more accurate hit test based on the true data visualization geometry.

If details is not 0, it will be set to a QCPDataSelection, describing the closest data point to pos.

For general information about this virtual method, see the base class implementation.

Implements QCPAbstractPlottable.

Reimplemented in QCPBars, QCPFinancial, QCPGraph, QCPStatisticalBox, and QCPCurve.

## § interface1D()

template<class DataType>

QCPPlottableInterface1D * QCPAbstractPlottable1D< DataType >::interface1D | ( |  | ) |
| inline virtual

Returns a QCPPlottableInterface1D pointer to this plottable, providing access to its 1D interface.

For general information about this virtual method, see the base class implementation.

Reimplemented from QCPAbstractPlottable.

## § getDataSegments()

template<class DataType >

void QCPAbstractPlottable1D< DataType >::getDataSegments | ( | QList< QCPDataRange > & | selectedSegments,
|  | QList< QCPDataRange > & | unselectedSegments
| ) |  | const
| protected

Splits all data into selected and unselected segments and outputs them via selectedSegments and unselectedSegments, respectively.

This is useful when subclasses implement their draw method and need to draw selected segments with a different pen/brush than unselected segments (also see QCPSelectionDecorator).

See also
  setSelection

## § drawPolyline()

template<class DataType >

void QCPAbstractPlottable1D< DataType >::drawPolyline | ( | QCPPainter * | painter,
|  | const QVector< QPointF > & | lineData
| ) |  | const
| protected

A helper method which draws a line with the passed painter, according to the pixel data in lineData. NaN points create gaps in the line, as expected from QCustomPlot's plottables (this is the main difference to QPainter's regular drawPolyline, which handles NaNs by lagging or crashing).

Further it uses a faster line drawing technique based on QCPPainter::drawLine rather than `QPainter::drawPolyline` if the configured QCustomPlot::setPlottingHints() and painter style allows.

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

- src/plottable1d.h