LARS
LARS (Light Augmented Reality System) is an open-source framework for light-based interaction and real-time tracking in multi-robot experiments. Inspired by ARK, LARS extends the augmented reality paradigm to robotic collectives by projecting dynamic visual cues and environments onto the arena, enabling new experimental possibilities for collective robotics research, education, and outreach. LARS features integrated tracking, light projection, and modular experiment control with a user-friendly Qt GUI.
Loading...
Searching...
No Matches
QCPAbstractPlottable1D< DataType > Class Template Reference

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

#include <qcustomplot.h>

Inheritance diagram for QCPAbstractPlottable1D< DataType >:
QCPAbstractPlottable QCPPlottableInterface1D QCPLayerable

Public Member Functions

 QCPAbstractPlottable1D (QCPAxis *keyAxis, QCPAxis *valueAxis)
virtual int dataCount () const Q_DECL_OVERRIDE
virtual double dataMainKey (int index) const Q_DECL_OVERRIDE
virtual double dataSortKey (int index) const Q_DECL_OVERRIDE
virtual double dataMainValue (int index) const Q_DECL_OVERRIDE
virtual QCPRange dataValueRange (int index) const Q_DECL_OVERRIDE
virtual QPointF dataPixelPosition (int index) const Q_DECL_OVERRIDE
virtual bool sortKeyIsMainKey () const Q_DECL_OVERRIDE
virtual QCPDataSelection selectTestRect (const QRectF &rect, bool onlySelectable) const Q_DECL_OVERRIDE
virtual int findBegin (double sortKey, bool expandedRange=true) const Q_DECL_OVERRIDE
virtual int findEnd (double sortKey, bool expandedRange=true) const Q_DECL_OVERRIDE
virtual double selectTest (const QPointF &pos, bool onlySelectable, QVariant *details=nullptr) const Q_DECL_OVERRIDE
virtual QCPPlottableInterface1Dinterface1D () Q_DECL_OVERRIDE
Public Member Functions inherited from QCPAbstractPlottable
 QCPAbstractPlottable (QCPAxis *keyAxis, QCPAxis *valueAxis)
QString name () const
bool antialiasedFill () const
bool antialiasedScatters () const
QPen pen () const
QBrush brush () const
QCPAxiskeyAxis () const
QCPAxisvalueAxis () const
QCP::SelectionType selectable () const
bool selected () const
QCPDataSelection selection () const
QCPSelectionDecoratorselectionDecorator () 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 Member Functions inherited from QCPLayerable
 QCPLayerable (QCustomPlot *plot, QString targetLayer=QString(), QCPLayerable *parentLayerable=nullptr)
bool visible () const
QCustomPlotparentPlot () const
QCPLayerableparentLayerable () const
QCPLayerlayer () 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 Member Functions

void getDataSegments (QList< QCPDataRange > &selectedSegments, QList< QCPDataRange > &unselectedSegments) const
void drawPolyline (QCPPainter *painter, const QVector< QPointF > &lineData) const
Protected Member Functions inherited from QCPAbstractPlottable
virtual QRect clipRect () const Q_DECL_OVERRIDE
virtual void draw (QCPPainter *painter) Q_DECL_OVERRIDE=0
virtual QCP::Interaction selectionCategory () const Q_DECL_OVERRIDE
void applyDefaultAntialiasingHint (QCPPainter *painter) const Q_DECL_OVERRIDE
virtual void selectEvent (QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged) Q_DECL_OVERRIDE
virtual void deselectEvent (bool *selectionStateChanged) Q_DECL_OVERRIDE
virtual void drawLegendIcon (QCPPainter *painter, const QRectF &rect) const =0
void applyFillAntialiasingHint (QCPPainter *painter) const
void applyScattersAntialiasingHint (QCPPainter *painter) const
Protected Member 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

Protected Attributes

QSharedPointer< QCPDataContainer< DataType > > mDataContainer
Protected Attributes inherited from QCPAbstractPlottable
QString mName
bool mAntialiasedFill
bool mAntialiasedScatters
QPen mPen
QBrush mBrush
QPointer< QCPAxismKeyAxis
QPointer< QCPAxismValueAxis
QCP::SelectionType mSelectable
QCPDataSelection mSelection
QCPSelectionDecoratormSelectionDecorator
Protected Attributes inherited from QCPLayerable
bool mVisible
QCustomPlotmParentPlot
QPointer< QCPLayerablemParentLayerable
QCPLayermLayer
bool mAntialiased

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.

◆ 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.

◆ 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.

◆ 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.

◆ 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.

◆ 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.

◆ 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.

◆ 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

◆ interface1D()

template<class DataType>
virtual QCPPlottableInterface1D * QCPAbstractPlottable1D< DataType >::interface1D ( )
inlinevirtual

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

\seebaseclassmethod

Reimplemented from QCPAbstractPlottable.

◆ 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.

\seebaseclassmethod

Implements QCPAbstractPlottable.

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

◆ 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.

\seebaseclassmethod

Implements QCPPlottableInterface1D.

Reimplemented in QCPBars, QCPFinancial, and QCPStatisticalBox.

◆ 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.


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