29 #include <QtCore/qglobal.h>
32 #ifdef QCUSTOMPLOT_USE_OPENGL
33 # if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
34 # define QCP_OPENGL_PBUFFER
36 # define QCP_OPENGL_FBO
38 # if QT_VERSION >= QT_VERSION_CHECK(5, 3, 0)
39 # define QCP_OPENGL_OFFSCREENSURFACE
43 #if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
44 # define QCP_DEVICEPIXELRATIO_SUPPORTED
45 # if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)
46 # define QCP_DEVICEPIXELRATIO_FLOAT
50 #include <QtCore/QObject>
51 #include <QtCore/QPointer>
52 #include <QtCore/QSharedPointer>
53 #include <QtCore/QTimer>
54 #include <QtGui/QPainter>
55 #include <QtGui/QPaintEvent>
56 #include <QtGui/QMouseEvent>
57 #include <QtGui/QWheelEvent>
58 #include <QtGui/QPixmap>
59 #include <QtCore/QVector>
60 #include <QtCore/QString>
61 #include <QtCore/QDateTime>
62 #include <QtCore/QMultiMap>
63 #include <QtCore/QFlags>
64 #include <QtCore/QDebug>
65 #include <QtCore/QStack>
66 #include <QtCore/QCache>
67 #include <QtCore/QMargins>
72 # include <QtGui/QOpenGLContext>
73 # include <QtGui/QOpenGLFramebufferObject>
74 # ifdef QCP_OPENGL_OFFSCREENSURFACE
75 # include <QtGui/QOffscreenSurface>
77 # include <QtGui/QWindow>
80 #ifdef QCP_OPENGL_PBUFFER
81 # include <QtOpenGL/QGLPixelBuffer>
83 #if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
84 # include <qnumeric.h>
85 # include <QtGui/QWidget>
86 # include <QtGui/QPrinter>
87 # include <QtGui/QPrintEngine>
90 # include <QtWidgets/QWidget>
91 # include <QtPrintSupport/QtPrintSupport>
119 #if defined(QCUSTOMPLOT_COMPILE_LIBRARY)
120 # define QCP_LIB_DECL Q_DECL_EXPORT
121 #elif defined(QCUSTOMPLOT_USE_LIBRARY)
122 # define QCP_LIB_DECL Q_DECL_IMPORT
124 # define QCP_LIB_DECL
128 #ifndef Q_DECL_OVERRIDE
129 # define Q_DECL_OVERRIDE
149 Q_FLAGS(AntialiasedElements)
151 Q_FLAGS(PlottingHints)
153 Q_FLAGS(Interactions)
306 return qIsNaN(value) || qIsInf(value);
331 case QCP::msTop: margins.setTop(value);
break;
333 case QCP::msAll: margins = QMargins(value, value, value, value);
break;
362 Q_DECLARE_OPERATORS_FOR_FLAGS(QCP::AntialiasedElements)
363 Q_DECLARE_OPERATORS_FOR_FLAGS(QCP::PlottingHints)
364 Q_DECLARE_OPERATORS_FOR_FLAGS(QCP::MarginSides)
365 Q_DECLARE_OPERATORS_FOR_FLAGS(QCP::Interactions)
386 QCPVector2D(
double x,
double y);
387 QCPVector2D(
const QPoint &point);
388 QCPVector2D(
const QPointF &point);
391 double x()
const {
return mX; }
392 double y()
const {
return mY; }
393 double &
rx() {
return mX; }
394 double &
ry() {
return mY; }
397 void setX(
double x) { mX = x; }
401 double length()
const {
return qSqrt(mX*mX+mY*mY); }
403 QPoint
toPoint()
const {
return QPoint(mX, mY); }
404 QPointF
toPointF()
const {
return QPointF(mX, mY); }
406 bool isNull()
const {
return qIsNull(mX) && qIsNull(mY); }
408 QCPVector2D normalized()
const;
410 double dot(
const QCPVector2D &vec)
const {
return mX*vec.mX+mY*vec.mY; }
411 double distanceSquaredToLine(
const QCPVector2D &start,
const QCPVector2D &end)
const;
412 double distanceSquaredToLine(
const QLineF &line)
const;
413 double distanceToStraightLine(
const QCPVector2D &base,
const QCPVector2D &direction)
const;
415 QCPVector2D &operator*=(
double factor);
416 QCPVector2D &operator/=(
double divisor);
417 QCPVector2D &operator+=(
const QCPVector2D &vector);
418 QCPVector2D &operator-=(
const QCPVector2D &vector);
424 friend inline const QCPVector2D
operator*(
double factor,
const QCPVector2D &vec);
425 friend inline const QCPVector2D
operator*(
const QCPVector2D &vec,
double factor);
426 friend inline const QCPVector2D
operator/(
const QCPVector2D &vec,
double divisor);
427 friend inline const QCPVector2D
operator+(
const QCPVector2D &vec1,
const QCPVector2D &vec2);
428 friend inline const QCPVector2D
operator-(
const QCPVector2D &vec1,
const QCPVector2D &vec2);
429 friend inline const QCPVector2D
operator-(
const QCPVector2D &vec);
446 d.nospace() <<
"QCPVector2D(" << vec.
x() <<
", " << vec.
y() <<
")";
467 ,pmNonCosmetic = 0x04
470 Q_FLAGS(PainterModes)
471 Q_DECLARE_FLAGS(PainterModes, PainterMode)
474 explicit QCPPainter(QPaintDevice *device);
477 bool antialiasing()
const {
return testRenderHint(QPainter::Antialiasing); }
478 PainterModes
modes()
const {
return mModes; }
481 void setAntialiasing(
bool enabled);
482 void setMode(PainterMode mode,
bool enabled=
true);
483 void setModes(PainterModes modes);
486 bool begin(QPaintDevice *device);
487 void setPen(
const QPen &pen);
488 void setPen(
const QColor &color);
489 void setPen(Qt::PenStyle penStyle);
490 void drawLine(
const QLineF &line);
496 void makeNonCosmetic();
501 bool mIsAntialiasing;
504 QStack<bool> mAntialiasingStack;
506 Q_DECLARE_OPERATORS_FOR_FLAGS(QCPPainter::PainterModes)
518 explicit QCPAbstractPaintBuffer(
const QSize &size,
double devicePixelRatio);
519 virtual ~QCPAbstractPaintBuffer();
522 QSize
size()
const {
return mSize; }
527 void setSize(
const QSize &size);
528 void setInvalidated(
bool invalidated=
true);
529 void setDevicePixelRatio(
double ratio);
534 virtual void draw(
QCPPainter *painter)
const = 0;
535 virtual void clear(
const QColor &color) = 0;
540 double mDevicePixelRatio;
546 virtual void reallocateBuffer() = 0;
559 void clear(
const QColor &color) Q_DECL_OVERRIDE;
566 virtual
void reallocateBuffer() Q_DECL_OVERRIDE;
570 #ifdef QCP_OPENGL_PBUFFER
574 explicit QCPPaintBufferGlPbuffer(
const QSize &size,
double devicePixelRatio,
int multisamples);
575 virtual ~QCPPaintBufferGlPbuffer();
578 virtual QCPPainter *startPainting() Q_DECL_OVERRIDE;
580 void clear(
const QColor &color) Q_DECL_OVERRIDE;
584 QGLPixelBuffer *mGlPBuffer;
588 virtual
void reallocateBuffer() Q_DECL_OVERRIDE;
590 #endif // QCP_OPENGL_PBUFFER
593 #ifdef QCP_OPENGL_FBO
597 explicit QCPPaintBufferGlFbo(
const QSize &size,
double devicePixelRatio, QWeakPointer<QOpenGLContext> glContext, QWeakPointer<QOpenGLPaintDevice> glPaintDevice);
598 virtual ~QCPPaintBufferGlFbo();
601 virtual QCPPainter *startPainting() Q_DECL_OVERRIDE;
602 virtual
void donePainting() Q_DECL_OVERRIDE;
604 void clear(
const QColor &color) Q_DECL_OVERRIDE;
608 QWeakPointer<QOpenGLContext> mGlContext;
609 QWeakPointer<QOpenGLPaintDevice> mGlPaintDevice;
610 QOpenGLFramebufferObject *mGlFrameBuffer;
613 virtual
void reallocateBuffer() Q_DECL_OVERRIDE;
615 #endif // QCP_OPENGL_FBO
627 Q_PROPERTY(
QCustomPlot* parentPlot READ parentPlot)
630 Q_PROPERTY(QList<QCPLayerable*> children READ children)
631 Q_PROPERTY(
bool visible READ visible WRITE setVisible)
632 Q_PROPERTY(LayerMode mode READ mode WRITE setMode)
653 QString
name()
const {
return mName; }
654 int index()
const {
return mIndex; }
655 QList<QCPLayerable*>
children()
const {
return mChildren; }
660 void setVisible(
bool visible);
661 void setMode(LayerMode mode);
671 QList<QCPLayerable*> mChildren;
676 QWeakPointer<QCPAbstractPaintBuffer> mPaintBuffer;
680 void drawToPaintBuffer();
690 Q_DECLARE_METATYPE(
QCPLayer::LayerMode)
696 Q_PROPERTY(
bool visible READ visible WRITE setVisible)
697 Q_PROPERTY(QCustomPlot* parentPlot READ parentPlot)
698 Q_PROPERTY(QCPLayerable* parentLayerable READ parentLayerable)
699 Q_PROPERTY(
QCPLayer* layer READ layer WRITE setLayer NOTIFY layerChanged)
700 Q_PROPERTY(
bool antialiased READ antialiased WRITE setAntialiased)
703 QCPLayerable(QCustomPlot *plot, QString targetLayer=QString(), QCPLayerable *parentLayerable=0);
704 virtual ~QCPLayerable();
714 void setVisible(
bool on);
715 Q_SLOT
bool setLayer(
QCPLayer *layer);
716 bool setLayer(
const QString &layerName);
717 void setAntialiased(
bool enabled);
720 virtual double selectTest(
const QPointF &pos,
bool onlySelectable, QVariant *details=0)
const;
723 bool realVisibility()
const;
726 void layerChanged(
QCPLayer *newLayer);
731 QCustomPlot *mParentPlot;
732 QPointer<QCPLayerable> mParentLayerable;
737 virtual void parentPlotInitialized(QCustomPlot *parentPlot);
739 virtual QRect clipRect()
const;
740 virtual void applyDefaultAntialiasingHint(
QCPPainter *painter)
const = 0;
743 virtual void selectEvent(QMouseEvent *event,
bool additive,
const QVariant &details,
bool *selectionStateChanged);
744 virtual void deselectEvent(
bool *selectionStateChanged);
746 virtual void mousePressEvent(QMouseEvent *event,
const QVariant &details);
747 virtual void mouseMoveEvent(QMouseEvent *event,
const QPointF &startPos);
748 virtual void mouseReleaseEvent(QMouseEvent *event,
const QPointF &startPos);
749 virtual void mouseDoubleClickEvent(QMouseEvent *event,
const QVariant &details);
750 virtual void wheelEvent(QWheelEvent *event);
753 void initializeParentPlot(QCustomPlot *parentPlot);
754 void setParentLayerable(QCPLayerable* parentLayerable);
755 bool moveToLayer(
QCPLayer *layer,
bool prepend);
759 Q_DISABLE_COPY(QCPLayerable)
761 friend class QCustomPlot;
778 QCPRange(
double lower,
double upper);
781 bool operator!=(
const QCPRange& other)
const {
return !(*
this == other); }
787 friend inline const QCPRange
operator+(
const QCPRange&,
double);
788 friend inline const QCPRange
operator+(
double,
const QCPRange&);
789 friend inline const QCPRange
operator-(
const QCPRange& range,
double value);
790 friend inline const QCPRange
operator*(
const QCPRange& range,
double value);
791 friend inline const QCPRange
operator*(
double value,
const QCPRange& range);
792 friend inline const QCPRange
operator/(
const QCPRange& range,
double value);
794 double size()
const {
return upper-lower; }
795 double center()
const {
return (upper+lower)*0.5; }
796 void normalize() {
if (lower > upper) qSwap(lower, upper); }
797 void expand(
const QCPRange &otherRange);
798 void expand(
double includeCoord);
799 QCPRange expanded(
const QCPRange &otherRange)
const;
800 QCPRange expanded(
double includeCoord)
const;
801 QCPRange bounded(
double lowerBound,
double upperBound)
const;
802 QCPRange sanitizedForLogScale()
const;
803 QCPRange sanitizedForLinScale()
const;
804 bool contains(
double value)
const {
return value >= lower && value <=
upper; }
806 static bool validRange(
double lower,
double upper);
807 static bool validRange(
const QCPRange &range);
808 static const double minRange;
809 static const double maxRange;
820 d.nospace() <<
"QCPRange(" << range.
lower <<
", " << range.
upper <<
")";
900 int begin()
const {
return mBegin; }
901 int end()
const {
return mEnd; }
902 int size()
const {
return mEnd-mBegin; }
910 bool isValid()
const {
return (mEnd >= mBegin) && (mBegin >= 0); }
911 bool isEmpty()
const {
return length() == 0; }
950 int dataPointCount()
const;
952 QList<QCPDataRange>
dataRanges()
const {
return mDataRanges; }
956 void addDataRange(
const QCPDataRange &dataRange,
bool simplify=
true);
958 bool isEmpty()
const {
return mDataRanges.isEmpty(); }
968 QList<QCPDataRange> mDataRanges;
1065 d.nospace() <<
"[" << dataRange.
begin() <<
".." << dataRange.
end()-1 <<
"]";
1075 d.nospace() <<
"QCPDataSelection(";
1102 QRect
rect()
const {
return mRect; }
1104 QPen
pen()
const {
return mPen; }
1109 void setPen(
const QPen &pen);
1110 void setBrush(
const QBrush &brush);
1113 Q_SLOT
void cancel();
1116 void started(QMouseEvent *event);
1117 void changed(
const QRect &rect, QMouseEvent *event);
1118 void canceled(
const QRect &rect, QInputEvent *event);
1119 void accepted(
const QRect &rect, QMouseEvent *event);
1130 virtual void startSelection(QMouseEvent *event);
1131 virtual void moveSelection(QMouseEvent *event);
1132 virtual void endSelection(QMouseEvent *event);
1133 virtual void keyPressEvent(QKeyEvent *event);
1139 friend class QCustomPlot;
1157 bool isEmpty()
const;
1162 QCustomPlot *mParentPlot;
1163 QHash<QCP::MarginSide, QList<QCPLayoutElement*> > mChildren;
1179 class
QCP_LIB_DECL QCPLayoutElement : public QCPLayerable
1183 Q_PROPERTY(
QCPLayout* layout READ layout)
1184 Q_PROPERTY(QRect rect READ rect)
1185 Q_PROPERTY(QRect outerRect READ outerRect WRITE setOuterRect)
1186 Q_PROPERTY(QMargins margins READ margins WRITE setMargins)
1187 Q_PROPERTY(QMargins minimumMargins READ minimumMargins WRITE setMinimumMargins)
1188 Q_PROPERTY(QSize minimumSize READ minimumSize WRITE setMinimumSize)
1189 Q_PROPERTY(QSize maximumSize READ maximumSize WRITE setMaximumSize)
1190 Q_PROPERTY(SizeConstraintRect sizeConstraintRect READ sizeConstraintRect WRITE setSizeConstraintRect)
1201 Q_ENUMS(UpdatePhase)
1214 Q_ENUMS(SizeConstraintRect)
1216 explicit QCPLayoutElement(QCustomPlot *parentPlot=0);
1217 virtual ~QCPLayoutElement();
1221 QRect
rect()
const {
return mRect; }
1230 QHash<QCP::MarginSide, QCPMarginGroup*>
marginGroups()
const {
return mMarginGroups; }
1233 void setOuterRect(
const QRect &rect);
1234 void setMargins(
const QMargins &margins);
1235 void setMinimumMargins(
const QMargins &margins);
1236 void setAutoMargins(QCP::MarginSides sides);
1237 void setMinimumSize(
const QSize &size);
1238 void setMinimumSize(
int width,
int height);
1239 void setMaximumSize(
const QSize &size);
1240 void setMaximumSize(
int width,
int height);
1241 void setSizeConstraintRect(SizeConstraintRect constraintRect);
1242 void setMarginGroup(QCP::MarginSides sides,
QCPMarginGroup *group);
1245 virtual void update(UpdatePhase phase);
1246 virtual QSize minimumOuterSizeHint()
const;
1247 virtual QSize maximumOuterSizeHint()
const;
1248 virtual QList<QCPLayoutElement*> elements(
bool recursive)
const;
1251 virtual double selectTest(
const QPointF &pos,
bool onlySelectable, QVariant *details=0)
const Q_DECL_OVERRIDE;
1256 QSize mMinimumSize, mMaximumSize;
1257 SizeConstraintRect mSizeConstraintRect;
1258 QRect mRect, mOuterRect;
1259 QMargins mMargins, mMinimumMargins;
1260 QCP::MarginSides mAutoMargins;
1264 virtual
int calculateAutoMargin(QCP::MarginSide side);
1265 virtual
void layoutChanged();
1268 virtual
void applyDefaultAntialiasingHint(
QCPPainter *painter)
const Q_DECL_OVERRIDE { Q_UNUSED(painter) }
1270 virtual void parentPlotInitialized(QCustomPlot *parentPlot)
Q_DECL_OVERRIDE;
1273 Q_DISABLE_COPY(QCPLayoutElement)
1275 friend class QCustomPlot;
1279 Q_DECLARE_METATYPE(QCPLayoutElement::UpdatePhase)
1286 explicit QCPLayout();
1290 virtual QList<QCPLayoutElement*> elements(
bool recursive)
const Q_DECL_OVERRIDE;
1293 virtual int elementCount()
const = 0;
1294 virtual QCPLayoutElement* elementAt(
int index)
const = 0;
1295 virtual QCPLayoutElement* takeAt(
int index) = 0;
1296 virtual bool take(QCPLayoutElement* element) = 0;
1297 virtual void simplify();
1300 bool removeAt(
int index);
1301 bool remove(QCPLayoutElement* element);
1306 virtual void updateLayout();
1309 void sizeConstraintsChanged()
const;
1310 void adoptElement(QCPLayoutElement *el);
1311 void releaseElement(QCPLayoutElement *el);
1312 QVector<int> getSectionSizes(QVector<int> maxSizes, QVector<int> minSizes, QVector<double> stretchFactors,
int totalSize)
const;
1313 static QSize getFinalMinimumOuterSize(
const QCPLayoutElement *el);
1314 static QSize getFinalMaximumOuterSize(
const QCPLayoutElement *el);
1317 Q_DISABLE_COPY(QCPLayout)
1318 friend class QCPLayoutElement;
1326 Q_PROPERTY(
int rowCount READ rowCount)
1327 Q_PROPERTY(
int columnCount READ columnCount)
1328 Q_PROPERTY(QList<double> columnStretchFactors READ columnStretchFactors WRITE setColumnStretchFactors)
1329 Q_PROPERTY(QList<double> rowStretchFactors READ rowStretchFactors WRITE setRowStretchFactors)
1330 Q_PROPERTY(
int columnSpacing READ columnSpacing WRITE setColumnSpacing)
1331 Q_PROPERTY(
int rowSpacing READ rowSpacing WRITE setRowSpacing)
1332 Q_PROPERTY(FillOrder fillOrder READ fillOrder WRITE setFillOrder)
1333 Q_PROPERTY(
int wrap READ wrap WRITE setWrap)
1350 virtual ~QCPLayoutGrid();
1353 int rowCount()
const {
return mElements.size(); }
1354 int columnCount()
const {
return mElements.size() > 0 ? mElements.first().size() : 0; }
1363 void setColumnStretchFactor(
int column,
double factor);
1364 void setColumnStretchFactors(
const QList<double> &factors);
1365 void setRowStretchFactor(
int row,
double factor);
1366 void setRowStretchFactors(
const QList<double> &factors);
1367 void setColumnSpacing(
int pixels);
1368 void setRowSpacing(
int pixels);
1369 void setWrap(
int count);
1370 void setFillOrder(FillOrder order,
bool rearrange=
true);
1373 virtual void updateLayout() Q_DECL_OVERRIDE;
1374 virtual
int elementCount()
const Q_DECL_OVERRIDE {
return rowCount()*columnCount(); }
1378 virtual QList<QCPLayoutElement*> elements(
bool recursive)
const Q_DECL_OVERRIDE;
1379 virtual void simplify() Q_DECL_OVERRIDE;
1380 virtual QSize minimumOuterSizeHint()
const Q_DECL_OVERRIDE;
1381 virtual QSize maximumOuterSizeHint()
const Q_DECL_OVERRIDE;
1384 QCPLayoutElement *element(
int row,
int column)
const;
1385 bool addElement(
int row,
int column, QCPLayoutElement *element);
1386 bool addElement(QCPLayoutElement *element);
1387 bool hasElement(
int row,
int column);
1388 void expandTo(
int newRowCount,
int newColumnCount);
1389 void insertRow(
int newIndex);
1390 void insertColumn(
int newIndex);
1391 int rowColToIndex(
int row,
int column) const;
1392 void indexToRowCol(
int index,
int &row,
int &column) const;
1396 QList<QList<QCPLayoutElement*> > mElements;
1397 QList<
double> mColumnStretchFactors;
1398 QList<
double> mRowStretchFactors;
1399 int mColumnSpacing, mRowSpacing;
1401 FillOrder mFillOrder;
1404 void getMinimumRowColSizes(QVector<
int> *minColWidths, QVector<
int> *minRowHeights) const;
1405 void getMaximumRowColSizes(QVector<
int> *maxColWidths, QVector<
int> *maxRowHeights) const;
1410 Q_DECLARE_METATYPE(QCPLayoutGrid::FillOrder)
1423 Q_ENUMS(InsetPlacement)
1426 virtual ~QCPLayoutInset();
1429 InsetPlacement insetPlacement(
int index) const;
1430 Qt::Alignment insetAlignment(
int index) const;
1431 QRectF insetRect(
int index) const;
1434 void setInsetPlacement(
int index, InsetPlacement placement);
1435 void setInsetAlignment(
int index, Qt::Alignment alignment);
1436 void setInsetRect(
int index, const QRectF &rect);
1439 virtual
void updateLayout() Q_DECL_OVERRIDE;
1440 virtual
int elementCount() const Q_DECL_OVERRIDE;
1441 virtual QCPLayoutElement* elementAt(
int index) const Q_DECL_OVERRIDE;
1442 virtual QCPLayoutElement* takeAt(
int index) Q_DECL_OVERRIDE;
1443 virtual
bool take(QCPLayoutElement* element) Q_DECL_OVERRIDE;
1444 virtual
void simplify() Q_DECL_OVERRIDE {}
1445 virtual double selectTest(
const QPointF &pos,
bool onlySelectable, QVariant *details=0) const Q_DECL_OVERRIDE;
1448 void addElement(QCPLayoutElement *element, Qt::Alignment alignment);
1449 void addElement(QCPLayoutElement *element, const QRectF &rect);
1453 QList<QCPLayoutElement*> mElements;
1454 QList<InsetPlacement> mInsetPlacement;
1455 QList<Qt::Alignment> mInsetAlignment;
1456 QList<QRectF> mInsetRect;
1461 Q_DECLARE_METATYPE(QCPLayoutInset::InsetPlacement)
1495 Q_ENUMS(EndingStyle)
1498 QCPLineEnding(EndingStyle style,
double width=8,
double length=10,
bool inverted=false);
1507 void setStyle(EndingStyle style);
1508 void setWidth(
double width);
1509 void setLength(
double length);
1510 void setInverted(
bool inverted);
1513 double boundingDistance()
const;
1514 double realLength()
const;
1521 double mWidth, mLength;
1547 Q_ENUMS(TickStepStrategy)
1550 virtual ~QCPAxisTicker();
1558 void setTickStepStrategy(TickStepStrategy strategy);
1559 void setTickCount(
int count);
1560 void setTickOrigin(
double origin);
1563 virtual void generate(
const QCPRange &range,
const QLocale &locale, QChar formatChar,
int precision, QVector<double> &ticks, QVector<double> *subTicks, QVector<QString> *tickLabels);
1567 TickStepStrategy mTickStepStrategy;
1572 virtual double getTickStep(
const QCPRange &range);
1573 virtual int getSubTickCount(
double tickStep);
1574 virtual QString getTickLabel(
double tick,
const QLocale &locale, QChar formatChar,
int precision);
1575 virtual QVector<double> createTickVector(
double tickStep,
const QCPRange &range);
1576 virtual QVector<double> createSubTickVector(
int subTickCount,
const QVector<double> &ticks);
1577 virtual QVector<QString> createLabelVector(
const QVector<double> &ticks,
const QLocale &locale, QChar formatChar,
int precision);
1580 void trimTicks(
const QCPRange &range, QVector<double> &ticks,
bool keepOneOutlier)
const;
1581 double pickClosest(
double target,
const QVector<double> &candidates)
const;
1582 double getMantissa(
double input,
double *magnitude=0)
const;
1583 double cleanMantissa(
double input)
const;
1604 void setDateTimeFormat(
const QString &format);
1605 void setDateTimeSpec(Qt::TimeSpec spec);
1606 void setTickOrigin(
double origin);
1607 void setTickOrigin(
const QDateTime &origin);
1610 static QDateTime keyToDateTime(
double key);
1611 static double dateTimeToKey(
const QDateTime dateTime);
1612 static double dateTimeToKey(
const QDate date);
1616 QString mDateTimeFormat;
1617 Qt::TimeSpec mDateTimeSpec;
1620 enum DateStrategy {dsNone, dsUniformTimeInDay, dsUniformDayInMonth} mDateStrategy;
1625 virtual QString getTickLabel(
double tick,
const QLocale &locale, QChar formatChar,
int precision)
Q_DECL_OVERRIDE;
1655 QString timeFormat()
const {
return mTimeFormat; }
1659 void setTimeFormat(
const QString &format);
1660 void setFieldWidth(TimeUnit
unit,
int width);
1664 QString mTimeFormat;
1665 QHash<TimeUnit, int> mFieldWidth;
1668 TimeUnit mSmallestUnit, mBiggestUnit;
1669 QHash<TimeUnit, QString> mFormatPattern;
1674 virtual QString getTickLabel(
double tick,
const QLocale &locale, QChar formatChar,
int precision)
Q_DECL_OVERRIDE;
1677 void replaceUnit(QString &text, TimeUnit
unit,
int value)
const;
1701 Q_ENUMS(ScaleStrategy)
1706 double tickStep()
const {
return mTickStep; }
1710 void setTickStep(
double step);
1711 void setScaleStrategy(ScaleStrategy strategy);
1716 ScaleStrategy mScaleStrategy;
1735 QMap<double, QString> &
ticks() {
return mTicks; }
1739 void setTicks(
const QMap<double, QString> &ticks);
1740 void setTicks(
const QVector<double> &positions,
const QVector<QString> labels);
1741 void setSubTickCount(
int subTicks);
1745 void addTick(
double position, QString label);
1746 void addTicks(
const QMap<double, QString> &ticks);
1747 void addTicks(
const QVector<double> &positions,
const QVector<QString> &labels);
1751 QMap<double, QString> mTicks;
1757 virtual QString getTickLabel(
double tick,
const QLocale &locale, QChar formatChar,
int precision)
Q_DECL_OVERRIDE;
1781 Q_ENUMS(FractionStyle)
1786 QString piSymbol()
const {
return mPiSymbol; }
1792 void setPiSymbol(QString symbol);
1793 void setPiValue(
double pi);
1794 void setPeriodicity(
int multiplesOfPi);
1795 void setFractionStyle(FractionStyle style);
1802 FractionStyle mFractionStyle;
1810 virtual QString getTickLabel(
double tick,
const QLocale &locale, QChar formatChar,
int precision)
Q_DECL_OVERRIDE;
1813 void simplifyFraction(
int &numerator,
int &denominator)
const;
1814 QString fractionToString(
int numerator,
int denominator)
const;
1815 QString unicodeFraction(
int numerator,
int denominator)
const;
1816 QString unicodeSuperscript(
int number)
const;
1817 QString unicodeSubscript(
int number)
const;
1837 void setLogBase(
double base);
1838 void setSubTickCount(
int subTicks);
1846 double mLogBaseLnInv;
1864 Q_PROPERTY(
bool subGridVisible READ subGridVisible WRITE setSubGridVisible)
1865 Q_PROPERTY(
bool antialiasedSubGrid READ antialiasedSubGrid WRITE setAntialiasedSubGrid)
1866 Q_PROPERTY(
bool antialiasedZeroLine READ antialiasedZeroLine WRITE setAntialiasedZeroLine)
1867 Q_PROPERTY(QPen pen READ pen WRITE setPen)
1868 Q_PROPERTY(QPen subGridPen READ subGridPen WRITE setSubGridPen)
1869 Q_PROPERTY(QPen zeroLinePen READ zeroLinePen WRITE setZeroLinePen)
1878 QPen
pen()
const {
return mPen; }
1883 void setSubGridVisible(
bool visible);
1884 void setAntialiasedSubGrid(
bool enabled);
1885 void setAntialiasedZeroLine(
bool enabled);
1886 void setPen(
const QPen &pen);
1887 void setSubGridPen(
const QPen &pen);
1888 void setZeroLinePen(
const QPen &pen);
1892 bool mSubGridVisible;
1893 bool mAntialiasedSubGrid, mAntialiasedZeroLine;
1894 QPen mPen, mSubGridPen, mZeroLinePen;
1904 void drawGridLines(
QCPPainter *painter)
const;
1905 void drawSubGridLines(
QCPPainter *painter)
const;
1915 Q_PROPERTY(AxisType axisType READ axisType)
1917 Q_PROPERTY(ScaleType scaleType READ scaleType WRITE setScaleType NOTIFY scaleTypeChanged)
1918 Q_PROPERTY(
QCPRange range READ range WRITE setRange NOTIFY rangeChanged)
1919 Q_PROPERTY(
bool rangeReversed READ rangeReversed WRITE setRangeReversed)
1920 Q_PROPERTY(QSharedPointer<QCPAxisTicker> ticker READ ticker WRITE setTicker)
1921 Q_PROPERTY(
bool ticks READ ticks WRITE setTicks)
1922 Q_PROPERTY(
bool tickLabels READ tickLabels WRITE setTickLabels)
1923 Q_PROPERTY(
int tickLabelPadding READ tickLabelPadding WRITE setTickLabelPadding)
1924 Q_PROPERTY(QFont tickLabelFont READ tickLabelFont WRITE setTickLabelFont)
1925 Q_PROPERTY(QColor tickLabelColor READ tickLabelColor WRITE setTickLabelColor)
1926 Q_PROPERTY(
double tickLabelRotation READ tickLabelRotation WRITE setTickLabelRotation)
1927 Q_PROPERTY(LabelSide tickLabelSide READ tickLabelSide WRITE setTickLabelSide)
1928 Q_PROPERTY(QString numberFormat READ numberFormat WRITE setNumberFormat)
1929 Q_PROPERTY(
int numberPrecision READ numberPrecision WRITE setNumberPrecision)
1930 Q_PROPERTY(QVector<double> tickVector READ tickVector)
1931 Q_PROPERTY(QVector<QString> tickVectorLabels READ tickVectorLabels)
1932 Q_PROPERTY(
int tickLengthIn READ tickLengthIn WRITE setTickLengthIn)
1933 Q_PROPERTY(
int tickLengthOut READ tickLengthOut WRITE setTickLengthOut)
1934 Q_PROPERTY(
bool subTicks READ subTicks WRITE setSubTicks)
1935 Q_PROPERTY(
int subTickLengthIn READ subTickLengthIn WRITE setSubTickLengthIn)
1936 Q_PROPERTY(
int subTickLengthOut READ subTickLengthOut WRITE setSubTickLengthOut)
1937 Q_PROPERTY(QPen basePen READ basePen WRITE setBasePen)
1938 Q_PROPERTY(QPen tickPen READ tickPen WRITE setTickPen)
1939 Q_PROPERTY(QPen subTickPen READ subTickPen WRITE setSubTickPen)
1940 Q_PROPERTY(QFont labelFont READ labelFont WRITE setLabelFont)
1941 Q_PROPERTY(QColor labelColor READ labelColor WRITE setLabelColor)
1942 Q_PROPERTY(QString label READ label WRITE setLabel)
1943 Q_PROPERTY(
int labelPadding READ labelPadding WRITE setLabelPadding)
1944 Q_PROPERTY(
int padding READ padding WRITE setPadding)
1945 Q_PROPERTY(
int offset READ offset WRITE setOffset)
1946 Q_PROPERTY(SelectableParts selectedParts READ selectedParts WRITE setSelectedParts NOTIFY selectionChanged)
1947 Q_PROPERTY(SelectableParts selectableParts READ selectableParts WRITE setSelectableParts NOTIFY selectableChanged)
1948 Q_PROPERTY(QFont selectedTickLabelFont READ selectedTickLabelFont WRITE setSelectedTickLabelFont)
1949 Q_PROPERTY(QFont selectedLabelFont READ selectedLabelFont WRITE setSelectedLabelFont)
1950 Q_PROPERTY(QColor selectedTickLabelColor READ selectedTickLabelColor WRITE setSelectedTickLabelColor)
1951 Q_PROPERTY(QColor selectedLabelColor READ selectedLabelColor WRITE setSelectedLabelColor)
1952 Q_PROPERTY(QPen selectedBasePen READ selectedBasePen WRITE setSelectedBasePen)
1953 Q_PROPERTY(QPen selectedTickPen READ selectedTickPen WRITE setSelectedTickPen)
1954 Q_PROPERTY(QPen selectedSubTickPen READ selectedSubTickPen WRITE setSelectedSubTickPen)
1955 Q_PROPERTY(
QCPLineEnding lowerEnding READ lowerEnding WRITE setLowerEnding)
1956 Q_PROPERTY(
QCPLineEnding upperEnding READ upperEnding WRITE setUpperEnding)
1957 Q_PROPERTY(
QCPGrid* grid READ grid)
1971 Q_DECLARE_FLAGS(AxisTypes, AxisType)
1995 ,spTickLabels = 0x002
1996 ,spAxisLabel = 0x004
1998 Q_ENUMS(SelectablePart)
1999 Q_FLAGS(SelectableParts)
2000 Q_DECLARE_FLAGS(SelectableParts, SelectablePart)
2011 QSharedPointer<QCPAxisTicker>
ticker()
const {
return mTicker; }
2014 int tickLabelPadding()
const;
2017 double tickLabelRotation()
const;
2018 LabelSide tickLabelSide()
const;
2019 QString numberFormat()
const;
2023 int tickLengthIn()
const;
2024 int tickLengthOut()
const;
2026 int subTickLengthIn()
const;
2027 int subTickLengthOut()
const;
2033 QString
label()
const {
return mLabel; }
2034 int labelPadding()
const;
2052 Q_SLOT
void setRange(
const QCPRange &range);
2053 void setRange(
double lower,
double upper);
2054 void setRange(
double position,
double size, Qt::AlignmentFlag alignment);
2055 void setRangeLower(
double lower);
2056 void setRangeUpper(
double upper);
2057 void setRangeReversed(
bool reversed);
2058 void setTicker(QSharedPointer<QCPAxisTicker> ticker);
2059 void setTicks(
bool show);
2060 void setTickLabels(
bool show);
2061 void setTickLabelPadding(
int padding);
2062 void setTickLabelFont(
const QFont &font);
2063 void setTickLabelColor(
const QColor &color);
2064 void setTickLabelRotation(
double degrees);
2065 void setTickLabelSide(LabelSide side);
2066 void setNumberFormat(
const QString &formatCode);
2067 void setNumberPrecision(
int precision);
2068 void setTickLength(
int inside,
int outside=0);
2069 void setTickLengthIn(
int inside);
2070 void setTickLengthOut(
int outside);
2071 void setSubTicks(
bool show);
2072 void setSubTickLength(
int inside,
int outside=0);
2073 void setSubTickLengthIn(
int inside);
2074 void setSubTickLengthOut(
int outside);
2075 void setBasePen(
const QPen &pen);
2076 void setTickPen(
const QPen &pen);
2077 void setSubTickPen(
const QPen &pen);
2078 void setLabelFont(
const QFont &font);
2079 void setLabelColor(
const QColor &color);
2080 void setLabel(
const QString &str);
2081 void setLabelPadding(
int padding);
2082 void setPadding(
int padding);
2083 void setOffset(
int offset);
2084 void setSelectedTickLabelFont(
const QFont &font);
2085 void setSelectedLabelFont(
const QFont &font);
2086 void setSelectedTickLabelColor(
const QColor &color);
2087 void setSelectedLabelColor(
const QColor &color);
2088 void setSelectedBasePen(
const QPen &pen);
2089 void setSelectedTickPen(
const QPen &pen);
2090 void setSelectedSubTickPen(
const QPen &pen);
2091 Q_SLOT
void setSelectableParts(
const QCPAxis::SelectableParts &selectableParts);
2092 Q_SLOT
void setSelectedParts(
const QCPAxis::SelectableParts &selectedParts);
2097 virtual double selectTest(
const QPointF &pos,
bool onlySelectable, QVariant *details=0) const Q_DECL_OVERRIDE;
2100 Qt::Orientation orientation()
const {
return mOrientation; }
2101 int pixelOrientation()
const {
return rangeReversed() != (orientation()==Qt::Vertical) ? -1 : 1; }
2102 void moveRange(
double diff);
2103 void scaleRange(
double factor);
2104 void scaleRange(
double factor,
double center);
2105 void setScaleRatio(
const QCPAxis *otherAxis,
double ratio=1.0);
2106 void rescale(
bool onlyVisiblePlottables=
false);
2107 double pixelToCoord(
double value)
const;
2108 double coordToPixel(
double value)
const;
2109 SelectablePart getPartAt(
const QPointF &pos)
const;
2110 QList<QCPAbstractPlottable*> plottables()
const;
2111 QList<QCPGraph*> graphs()
const;
2112 QList<QCPAbstractItem*> items()
const;
2115 static Qt::Orientation
orientation(
AxisType type) {
return type==atBottom||type==atTop ? Qt::Horizontal : Qt::Vertical; }
2116 static AxisType opposite(AxisType type);
2119 void rangeChanged(
const QCPRange &newRange);
2122 void selectionChanged(
const QCPAxis::SelectableParts &parts);
2123 void selectableChanged(
const QCPAxis::SelectableParts &parts);
2132 Qt::Orientation mOrientation;
2133 SelectableParts mSelectableParts, mSelectedParts;
2134 QPen mBasePen, mSelectedBasePen;
2139 QFont mLabelFont, mSelectedLabelFont;
2140 QColor mLabelColor, mSelectedLabelColor;
2145 QFont mTickLabelFont, mSelectedTickLabelFont;
2146 QColor mTickLabelColor, mSelectedTickLabelColor;
2147 int mNumberPrecision;
2148 QLatin1Char mNumberFormatChar;
2149 bool mNumberBeautifulPowers;
2155 QPen mTickPen, mSelectedTickPen;
2156 QPen mSubTickPen, mSelectedSubTickPen;
2159 bool mRangeReversed;
2160 ScaleType mScaleType;
2165 QSharedPointer<QCPAxisTicker> mTicker;
2166 QVector<double> mTickVector;
2167 QVector<QString> mTickVectorLabels;
2168 QVector<double> mSubTickVector;
2169 bool mCachedMarginValid;
2173 QCP::AntialiasedElements mAADragBackup, mNotAADragBackup;
2176 virtual int calculateMargin();
2183 virtual
void selectEvent(QMouseEvent *event,
bool additive, const QVariant &details,
bool *selectionStateChanged) Q_DECL_OVERRIDE;
2184 virtual
void deselectEvent(
bool *selectionStateChanged) Q_DECL_OVERRIDE;
2186 virtual
void mousePressEvent(QMouseEvent *event, const QVariant &details);
2187 virtual
void mouseMoveEvent(QMouseEvent *event, const QPointF &startPos);
2188 virtual
void mouseReleaseEvent(QMouseEvent *event, const QPointF &startPos);
2189 virtual
void wheelEvent(QWheelEvent *event);
2192 void setupTickVectors();
2193 QPen getBasePen() const;
2194 QPen getTickPen() const;
2195 QPen getSubTickPen() const;
2196 QFont getTickLabelFont() const;
2197 QFont getLabelFont() const;
2198 QColor getTickLabelColor() const;
2199 QColor getLabelColor() const;
2204 friend class QCustomPlot;
2208 Q_DECLARE_OPERATORS_FOR_FLAGS(
QCPAxis::SelectableParts)
2209 Q_DECLARE_OPERATORS_FOR_FLAGS(
QCPAxis::AxisTypes)
2210 Q_DECLARE_METATYPE(
QCPAxis::AxisType)
2211 Q_DECLARE_METATYPE(
QCPAxis::LabelSide)
2212 Q_DECLARE_METATYPE(
QCPAxis::ScaleType)
2213 Q_DECLARE_METATYPE(
QCPAxis::SelectablePart)
2219 explicit QCPAxisPainterPrivate(QCustomPlot *parentPlot);
2220 virtual ~QCPAxisPainterPrivate();
2223 virtual int size()
const;
2238 int tickLabelPadding;
2239 double tickLabelRotation;
2241 bool substituteExponent;
2242 bool numberMultiplyCross;
2243 int tickLengthIn, tickLengthOut, subTickLengthIn, subTickLengthOut;
2244 QPen tickPen, subTickPen;
2245 QFont tickLabelFont;
2246 QColor tickLabelColor;
2247 QRect axisRect, viewportRect;
2249 bool abbreviateDecimalPowers;
2250 bool reversedEndings;
2252 QVector<double> subTickPositions;
2253 QVector<double> tickPositions;
2254 QVector<QString> tickLabels;
2262 struct TickLabelData
2264 QString basePart, expPart, suffixPart;
2265 QRect baseBounds, expBounds, suffixBounds, totalBounds, rotatedTotalBounds;
2266 QFont baseFont, expFont;
2268 QCustomPlot *mParentPlot;
2269 QByteArray mLabelParameterHash;
2270 QCache<QString, CachedLabel> mLabelCache;
2271 QRect mAxisSelectionBox, mTickLabelsSelectionBox, mLabelSelectionBox;
2273 virtual QByteArray generateLabelParameterHash()
const;
2275 virtual void placeTickLabel(
QCPPainter *painter,
double position,
int distanceToAxis,
const QString &text, QSize *tickLabelsSize);
2276 virtual void drawTickLabel(
QCPPainter *painter,
double x,
double y,
const TickLabelData &labelData)
const;
2277 virtual TickLabelData getTickLabelData(
const QFont &font,
const QString &text)
const;
2278 virtual QPointF getTickLabelDrawOffset(
const TickLabelData &labelData)
const;
2279 virtual void getMaxTickLabelSize(
const QFont &font,
const QString &text, QSize *tickLabelsSize)
const;
2307 Q_ENUMS(ScatterProperty)
2308 Q_FLAGS(ScatterProperties)
2309 Q_DECLARE_FLAGS(ScatterProperties, ScatterProperty)
2337 Q_ENUMS(ScatterShape)
2340 QCPScatterStyle(ScatterShape shape,
double size=6);
2341 QCPScatterStyle(ScatterShape shape, const QColor &color,
double size);
2342 QCPScatterStyle(ScatterShape shape, const QColor &color, const QColor &fill,
double size);
2343 QCPScatterStyle(ScatterShape shape, const QPen &pen, const QBrush &brush,
double size);
2344 QCPScatterStyle(const QPixmap &pixmap);
2345 QCPScatterStyle(const QPainterPath &customPath, const QPen &pen, const QBrush &brush=Qt::NoBrush,
double size=6);
2348 double size()
const {
return mSize; }
2350 QPen
pen()
const {
return mPen; }
2356 void setFromOther(
const QCPScatterStyle &other, ScatterProperties properties);
2357 void setSize(
double size);
2358 void setShape(ScatterShape shape);
2359 void setPen(
const QPen &pen);
2360 void setBrush(
const QBrush &brush);
2361 void setPixmap(
const QPixmap &pixmap);
2362 void setCustomPath(
const QPainterPath &customPath);
2365 bool isNone()
const {
return mShape == ssNone; }
2368 void applyTo(
QCPPainter *painter,
const QPen &defaultPen)
const;
2369 void drawShape(
QCPPainter *painter,
const QPointF &pos)
const;
2370 void drawShape(
QCPPainter *painter,
double x,
double y)
const;
2375 ScatterShape mShape;
2379 QPainterPath mCustomPath;
2385 Q_DECLARE_OPERATORS_FOR_FLAGS(QCPScatterStyle::ScatterProperties)
2401 inline
bool qcpLessThanSortKey(const
DataType &a, const
DataType &b) {
return a.sortKey() < b.sortKey(); }
2403 template <
class DataType>
2413 int size()
const {
return mData.size()-mPreallocSize; }
2418 void setAutoSqueeze(
bool enabled);
2422 void set(
const QVector<DataType> &data,
bool alreadySorted=
false);
2424 void add(
const QVector<DataType> &data,
bool alreadySorted=
false);
2426 void removeBefore(
double sortKey);
2427 void removeAfter(
double sortKey);
2428 void remove(
double sortKeyFrom,
double sortKeyTo);
2429 void remove(
double sortKey);
2432 void squeeze(
bool preAllocation=
true,
bool postAllocation=
true);
2438 const_iterator findBegin(
double sortKey,
bool expandedRange=
true)
const;
2439 const_iterator findEnd(
double sortKey,
bool expandedRange=
true)
const;
2444 void limitIteratorsToDataRange(const_iterator &begin, const_iterator &end,
const QCPDataRange &dataRange)
const;
2451 QVector<DataType> mData;
2453 int mPreallocIteration;
2456 void preallocateGrow(
int minimumPreallocSize);
2457 void performAutoSqueeze();
2598 template <
class DataType>
2602 mPreallocIteration(0)
2614 template <
class DataType>
2617 if (mAutoSqueeze != enabled)
2621 performAutoSqueeze();
2631 template <
class DataType>
2647 template <
class DataType>
2652 mPreallocIteration = 0;
2663 template <
class DataType>
2669 const int n = data.
size();
2670 const int oldSize = size();
2672 if (oldSize > 0 && !qcpLessThanSortKey<DataType>(*constBegin(), *(data.
constEnd()-1)))
2674 if (mPreallocSize < n)
2680 mData.resize(mData.size()+n);
2682 if (oldSize > 0 && !qcpLessThanSortKey<DataType>(*(constEnd()-n-1), *(constEnd()-n)))
2683 std::inplace_merge(begin(), end()-n, end(), qcpLessThanSortKey<DataType>);
2695 template <
class DataType>
2702 set(data, alreadySorted);
2706 const int n = data.size();
2707 const int oldSize = size();
2709 if (alreadySorted && oldSize > 0 && !qcpLessThanSortKey<DataType>(*constBegin(), *(data.constEnd()-1)))
2711 if (mPreallocSize < n)
2714 std::copy(data.constBegin(), data.constEnd(), begin());
2717 mData.resize(mData.size()+n);
2718 std::copy(data.constBegin(), data.constEnd(), end()-n);
2720 std::sort(end()-n, end(), qcpLessThanSortKey<DataType>);
2721 if (oldSize > 0 && !qcpLessThanSortKey<DataType>(*(constEnd()-n-1), *(constEnd()-n)))
2722 std::inplace_merge(begin(), end()-n, end(), qcpLessThanSortKey<DataType>);
2732 template <
class DataType>
2735 if (isEmpty() || !qcpLessThanSortKey<DataType>(data, *(constEnd()-1)))
2738 }
else if (qcpLessThanSortKey<DataType>(data, *constBegin()))
2740 if (mPreallocSize < 1)
2747 mData.insert(insertionPoint, data);
2756 template <
class DataType>
2761 mPreallocSize += itEnd-it;
2763 performAutoSqueeze();
2771 template <
class DataType>
2776 mData.erase(it, itEnd);
2778 performAutoSqueeze();
2788 template <
class DataType>
2791 if (sortKeyFrom >= sortKeyTo || isEmpty())
2796 mData.erase(it, itEnd);
2798 performAutoSqueeze();
2810 template <
class DataType>
2813 QCPDataContainer::iterator it = std::lower_bound(begin(), end(), DataType::fromSortKey(sortKey), qcpLessThanSortKey<DataType>);
2814 if (it != end() && it->sortKey() == sortKey)
2822 performAutoSqueeze();
2830 template <
class DataType>
2834 mPreallocIteration = 0;
2849 template <
class DataType>
2852 std::sort(begin(), end(), qcpLessThanSortKey<DataType>);
2865 template <
class DataType>
2870 if (mPreallocSize > 0)
2872 std::copy(begin(), end(), mData.begin());
2873 mData.resize(size());
2876 mPreallocIteration = 0;
2897 template <
class DataType>
2904 if (expandedRange && it != constBegin())
2924 template <
class DataType>
2931 if (expandedRange && it != constEnd())
2951 template <
class DataType>
2960 bool haveLower =
false;
2961 bool haveUpper =
false;
2968 if (DataType::sortKeyIsMainKey())
2972 if (!qIsNaN(it->mainValue()))
2974 range.
lower = it->mainKey();
2981 while (it != constBegin())
2984 if (!qIsNaN(it->mainValue()))
2986 range.
upper = it->mainKey();
2995 if (!qIsNaN(it->mainValue()))
2997 current = it->mainKey();
2998 if (current < range.
lower || !haveLower)
3000 range.
lower = current;
3003 if (current > range.
upper || !haveUpper)
3005 range.
upper = current;
3016 if (!qIsNaN(it->mainValue()))
3018 current = it->mainKey();
3019 if ((current < range.
lower || !haveLower) && current < 0)
3021 range.
lower = current;
3024 if ((current > range.
upper || !haveUpper) && current < 0)
3026 range.
upper = current;
3036 if (!qIsNaN(it->mainValue()))
3038 current = it->mainKey();
3039 if ((current < range.
lower || !haveLower) && current > 0)
3041 range.
lower = current;
3044 if ((current > range.
upper || !haveUpper) && current > 0)
3046 range.
upper = current;
3054 foundRange = haveLower && haveUpper;
3074 template <
class DataType>
3083 const bool restrictKeyRange = inKeyRange !=
QCPRange();
3084 bool haveLower =
false;
3085 bool haveUpper =
false;
3089 if (DataType::sortKeyIsMainKey() && restrictKeyRange)
3091 itBegin = findBegin(inKeyRange.
lower);
3092 itEnd = findEnd(inKeyRange.
upper);
3098 if (restrictKeyRange && (it->mainKey() < inKeyRange.
lower || it->mainKey() > inKeyRange.
upper))
3101 if ((current.
lower < range.
lower || !haveLower) && !qIsNaN(current.
lower))
3106 if ((current.
upper > range.
upper || !haveUpper) && !qIsNaN(current.
upper))
3116 if (restrictKeyRange && (it->mainKey() < inKeyRange.
lower || it->mainKey() > inKeyRange.
upper))
3119 if ((current.
lower < range.
lower || !haveLower) && current.
lower < 0 && !qIsNaN(current.
lower))
3124 if ((current.
upper > range.
upper || !haveUpper) && current.
upper < 0 && !qIsNaN(current.
upper))
3134 if (restrictKeyRange && (it->mainKey() < inKeyRange.
lower || it->mainKey() > inKeyRange.
upper))
3137 if ((current.
lower < range.
lower || !haveLower) && current.
lower > 0 && !qIsNaN(current.
lower))
3142 if ((current.
upper > range.
upper || !haveUpper) && current.
upper > 0 && !qIsNaN(current.
upper))
3150 foundRange = haveLower && haveUpper;
3162 template <
class DataType>
3165 QCPDataRange iteratorRange(begin-constBegin(), end-constBegin());
3166 iteratorRange = iteratorRange.bounded(dataRange.
bounded(this->dataRange()));
3167 begin = constBegin()+iteratorRange.begin();
3168 end = constBegin()+iteratorRange.end();
3180 template <
class DataType>
3183 if (minimumPreallocSize <= mPreallocSize)
3186 int newPreallocSize = minimumPreallocSize;
3187 newPreallocSize += (1u<<qBound(4, mPreallocIteration+4, 15)) - 12;
3188 ++mPreallocIteration;
3190 int sizeDifference = newPreallocSize-mPreallocSize;
3191 mData.resize(mData.size()+sizeDifference);
3192 std::copy_backward(mData.begin()+mPreallocSize, mData.end()-sizeDifference, mData.end());
3193 mPreallocSize = newPreallocSize;
3210 template <
class DataType>
3213 const int totalAlloc = mData.capacity();
3214 const int postAllocSize = totalAlloc-mData.size();
3215 const int usedSize = size();
3216 bool shrinkPostAllocation =
false;
3217 bool shrinkPreAllocation =
false;
3218 if (totalAlloc > 650000)
3220 shrinkPostAllocation = postAllocSize > usedSize*1.5;
3221 shrinkPreAllocation = mPreallocSize*10 > usedSize;
3222 }
else if (totalAlloc > 1000)
3224 shrinkPostAllocation = postAllocSize > usedSize*5;
3225 shrinkPreAllocation = mPreallocSize > usedSize*1.5;
3228 if (shrinkPreAllocation || shrinkPostAllocation)
3229 squeeze(shrinkPreAllocation, shrinkPostAllocation);
3248 QPen
pen()
const {
return mPen; }
3254 void setPen(
const QPen &pen);
3255 void setBrush(
const QBrush &brush);
3257 void setUsedScatterProperties(
const QCPScatterStyle::ScatterProperties &properties);
3273 QCPScatterStyle::ScatterProperties mUsedScatterProperties;
3287 class
QCP_LIB_DECL QCPAbstractPlottable : public QCPLayerable
3291 Q_PROPERTY(QString
name READ
name WRITE setName)
3292 Q_PROPERTY(
bool antialiasedFill READ antialiasedFill WRITE setAntialiasedFill)
3293 Q_PROPERTY(
bool antialiasedScatters READ antialiasedScatters WRITE setAntialiasedScatters)
3294 Q_PROPERTY(QPen pen READ pen WRITE setPen)
3295 Q_PROPERTY(QBrush brush READ brush WRITE setBrush)
3296 Q_PROPERTY(
QCPAxis* keyAxis READ keyAxis WRITE setKeyAxis)
3297 Q_PROPERTY(
QCPAxis* valueAxis READ valueAxis WRITE setValueAxis)
3298 Q_PROPERTY(
QCP::SelectionType selectable READ selectable WRITE setSelectable NOTIFY selectableChanged)
3299 Q_PROPERTY(
QCPDataSelection selection READ selection WRITE setSelection NOTIFY selectionChanged)
3300 Q_PROPERTY(
QCPSelectionDecorator* selectionDecorator READ selectionDecorator WRITE setSelectionDecorator)
3304 virtual ~QCPAbstractPlottable();
3307 QString
name()
const {
return mName; }
3310 QPen
pen()
const {
return mPen; }
3315 bool selected()
const {
return !mSelection.isEmpty(); }
3320 void setName(
const QString &
name);
3321 void setAntialiasedFill(
bool enabled);
3322 void setAntialiasedScatters(
bool enabled);
3323 void setPen(
const QPen &pen);
3324 void setBrush(
const QBrush &brush);
3325 void setKeyAxis(
QCPAxis *axis);
3326 void setValueAxis(
QCPAxis *axis);
3332 virtual double selectTest(
const QPointF &pos,
bool onlySelectable, QVariant *details=0)
const = 0;
3338 void coordsToPixels(
double key,
double value,
double &x,
double &
y)
const;
3339 const QPointF coordsToPixels(
double key,
double value)
const;
3340 void pixelsToCoords(
double x,
double y,
double &key,
double &value)
const;
3341 void pixelsToCoords(
const QPointF &pixelPos,
double &key,
double &value)
const;
3342 void rescaleAxes(
bool onlyEnlarge=
false)
const;
3343 void rescaleKeyAxis(
bool onlyEnlarge=
false)
const;
3344 void rescaleValueAxis(
bool onlyEnlarge=
false,
bool inKeyRange=
false)
const;
3347 bool removeFromLegend(
QCPLegend *legend)
const;
3348 bool removeFromLegend()
const;
3351 void selectionChanged(
bool selected);
3358 bool mAntialiasedFill, mAntialiasedScatters;
3361 QPointer<QCPAxis> mKeyAxis, mValueAxis;
3367 virtual QRect clipRect() const Q_DECL_OVERRIDE;
3368 virtual
void draw(
QCPPainter *painter) Q_DECL_OVERRIDE = 0;
3369 virtual QCP::
Interaction selectionCategory() const Q_DECL_OVERRIDE;
3370 void applyDefaultAntialiasingHint(
QCPPainter *painter) const Q_DECL_OVERRIDE;
3372 virtual
void selectEvent(QMouseEvent *event,
bool additive, const QVariant &details,
bool *selectionStateChanged) Q_DECL_OVERRIDE;
3373 virtual
void deselectEvent(
bool *selectionStateChanged) Q_DECL_OVERRIDE;
3376 virtual
void drawLegendIcon(
QCPPainter *painter, const QRectF &rect) const = 0;
3379 void applyFillAntialiasingHint(
QCPPainter *painter) const;
3380 void applyScattersAntialiasingHint(
QCPPainter *painter) const;
3383 Q_DISABLE_COPY(QCPAbstractPlottable)
3385 friend class QCustomPlot;
3401 QCPItemAnchor(QCustomPlot *parentPlot,
QCPAbstractItem *parentItem,
const QString &
name,
int anchorId=-1);
3402 virtual ~QCPItemAnchor();
3405 QString
name()
const {
return mName; }
3406 virtual QPointF pixelPosition()
const;
3413 QCustomPlot *mParentPlot;
3416 QSet<QCPItemPosition*> mChildrenX, mChildrenY;
3428 Q_DISABLE_COPY(QCPItemAnchor)
3435 class
QCP_LIB_DECL QCPItemPosition : public QCPItemAnchor
3454 Q_ENUMS(PositionType)
3456 QCPItemPosition(QCustomPlot *parentPlot,
QCPAbstractItem *parentItem, const QString &
name);
3457 virtual ~QCPItemPosition();
3466 double key()
const {
return mKey; }
3468 QPointF
coords()
const {
return QPointF(mKey, mValue); }
3469 QCPAxis *
keyAxis()
const {
return mKeyAxis.data(); }
3472 virtual QPointF pixelPosition() const Q_DECL_OVERRIDE;
3475 void setType(PositionType type);
3476 void setTypeX(PositionType type);
3477 void setTypeY(PositionType type);
3478 bool setParentAnchor(QCPItemAnchor *parentAnchor,
bool keepPixelPosition=false);
3479 bool setParentAnchorX(QCPItemAnchor *parentAnchor,
bool keepPixelPosition=false);
3480 bool setParentAnchorY(QCPItemAnchor *parentAnchor,
bool keepPixelPosition=false);
3481 void setCoords(
double key,
double value);
3482 void setCoords(const QPointF &coords);
3483 void setAxes(QCPAxis* keyAxis, QCPAxis* valueAxis);
3485 void setPixelPosition(const QPointF &pixelPosition);
3489 PositionType mPositionTypeX, mPositionTypeY;
3490 QPointer<QCPAxis> mKeyAxis, mValueAxis;
3492 double mKey, mValue;
3493 QCPItemAnchor *mParentAnchorX, *mParentAnchorY;
3496 virtual QCPItemPosition *toQCPItemPosition() Q_DECL_OVERRIDE {
return this; }
3499 Q_DISABLE_COPY(QCPItemPosition)
3509 Q_PROPERTY(
bool clipToAxisRect READ clipToAxisRect WRITE setClipToAxisRect)
3510 Q_PROPERTY(
QCPAxisRect* clipAxisRect READ clipAxisRect WRITE setClipAxisRect)
3511 Q_PROPERTY(
bool selectable READ selectable WRITE setSelectable NOTIFY selectableChanged)
3512 Q_PROPERTY(
bool selected READ selected WRITE setSelected NOTIFY selectionChanged)
3525 void setClipToAxisRect(
bool clip);
3527 Q_SLOT
void setSelectable(
bool selectable);
3528 Q_SLOT
void setSelected(
bool selected);
3531 virtual double selectTest(
const QPointF &pos,
bool onlySelectable, QVariant *details=0) const Q_DECL_OVERRIDE = 0;
3535 QList<QCPItemAnchor*>
anchors()
const {
return mAnchors; }
3537 QCPItemAnchor *anchor(
const QString &
name)
const;
3538 bool hasAnchor(
const QString &
name)
const;
3541 void selectionChanged(
bool selected);
3542 void selectableChanged(
bool selectable);
3546 bool mClipToAxisRect;
3547 QPointer<QCPAxisRect> mClipAxisRect;
3548 QList<QCPItemPosition*> mPositions;
3549 QList<QCPItemAnchor*> mAnchors;
3550 bool mSelectable, mSelected;
3554 virtual QRect clipRect() const Q_DECL_OVERRIDE;
3555 virtual
void applyDefaultAntialiasingHint(
QCPPainter *painter) const Q_DECL_OVERRIDE;
3556 virtual
void draw(
QCPPainter *painter) Q_DECL_OVERRIDE = 0;
3558 virtual
void selectEvent(QMouseEvent *event,
bool additive, const QVariant &details,
bool *selectionStateChanged) Q_DECL_OVERRIDE;
3559 virtual
void deselectEvent(
bool *selectionStateChanged) Q_DECL_OVERRIDE;
3562 virtual QPointF anchorPixelPosition(
int anchorId) const;
3565 double rectDistance(const QRectF &rect, const QPointF &pos,
bool filledRect) const;
3567 QCPItemAnchor *createAnchor(const QString &name,
int anchorId);
3572 friend class QCustomPlot;
3573 friend class QCPItemAnchor;
3586 Q_PROPERTY(QRect viewport READ viewport WRITE setViewport)
3587 Q_PROPERTY(QPixmap background READ background WRITE setBackground)
3588 Q_PROPERTY(
bool backgroundScaled READ backgroundScaled WRITE setBackgroundScaled)
3589 Q_PROPERTY(Qt::AspectRatioMode backgroundScaledMode READ backgroundScaledMode WRITE setBackgroundScaledMode)
3590 Q_PROPERTY(QCPLayoutGrid* plotLayout READ plotLayout)
3591 Q_PROPERTY(
bool autoAddPlottableToLegend READ autoAddPlottableToLegend WRITE setAutoAddPlottableToLegend)
3592 Q_PROPERTY(
int selectionTolerance READ selectionTolerance WRITE setSelectionTolerance)
3593 Q_PROPERTY(
bool noAntialiasingOnDrag READ noAntialiasingOnDrag WRITE setNoAntialiasingOnDrag)
3594 Q_PROPERTY(Qt::KeyboardModifier multiSelectModifier READ multiSelectModifier WRITE setMultiSelectModifier)
3595 Q_PROPERTY(
bool openGl READ openGl WRITE setOpenGl)
3606 Q_ENUMS(LayerInsertMode)
3618 Q_ENUMS(RefreshPriority)
3620 explicit QCustomPlot(QWidget *parent = 0);
3621 virtual ~QCustomPlot();
3624 QRect viewport()
const {
return mViewport; }
3643 void setViewport(
const QRect &rect);
3644 void setBufferDevicePixelRatio(
double ratio);
3645 void setBackground(
const QPixmap &pm);
3646 void setBackground(
const QPixmap &pm,
bool scaled, Qt::AspectRatioMode mode=Qt::KeepAspectRatioByExpanding);
3647 void setBackground(
const QBrush &brush);
3648 void setBackgroundScaled(
bool scaled);
3649 void setBackgroundScaledMode(Qt::AspectRatioMode mode);
3650 void setAntialiasedElements(
const QCP::AntialiasedElements &antialiasedElements);
3652 void setNotAntialiasedElements(
const QCP::AntialiasedElements ¬AntialiasedElements);
3654 void setAutoAddPlottableToLegend(
bool on);
3655 void setInteractions(
const QCP::Interactions &interactions);
3656 void setInteraction(
const QCP::Interaction &interaction,
bool enabled=
true);
3657 void setSelectionTolerance(
int pixels);
3658 void setNoAntialiasingOnDrag(
bool enabled);
3659 void setPlottingHints(
const QCP::PlottingHints &hints);
3661 void setMultiSelectModifier(Qt::KeyboardModifier modifier);
3664 void setOpenGl(
bool enabled,
int multisampling=16);
3668 QCPAbstractPlottable *plottable(
int index);
3669 QCPAbstractPlottable *plottable();
3670 bool removePlottable(QCPAbstractPlottable *plottable);
3671 bool removePlottable(
int index);
3672 int clearPlottables();
3673 int plottableCount()
const;
3674 QList<QCPAbstractPlottable*> selectedPlottables()
const;
3675 QCPAbstractPlottable *plottableAt(
const QPointF &pos,
bool onlySelectable=
false)
const;
3676 bool hasPlottable(QCPAbstractPlottable *plottable)
const;
3681 QCPGraph *addGraph(QCPAxis *keyAxis=0, QCPAxis *valueAxis=0);
3683 bool removeGraph(
int index);
3685 int graphCount()
const;
3686 QList<QCPGraph*> selectedGraphs()
const;
3692 bool removeItem(
int index);
3694 int itemCount()
const;
3695 QList<QCPAbstractItem*> selectedItems()
const;
3696 QCPAbstractItem *itemAt(
const QPointF &pos,
bool onlySelectable=
false)
const;
3700 QCPLayer *layer(
const QString &name)
const;
3703 bool setCurrentLayer(
const QString &name);
3704 bool setCurrentLayer(
QCPLayer *layer);
3705 int layerCount()
const;
3706 bool addLayer(
const QString &name,
QCPLayer *otherLayer=0, LayerInsertMode insertMode=limAbove);
3708 bool moveLayer(
QCPLayer *layer,
QCPLayer *otherLayer, LayerInsertMode insertMode=limAbove);
3711 int axisRectCount()
const;
3713 QList<QCPAxisRect*> axisRects()
const;
3714 QCPLayoutElement* layoutElementAt(
const QPointF &pos)
const;
3715 QCPAxisRect* axisRectAt(
const QPointF &pos)
const;
3716 Q_SLOT
void rescaleAxes(
bool onlyVisiblePlottables=
false);
3718 QList<QCPAxis*> selectedAxes()
const;
3719 QList<QCPLegend*> selectedLegends()
const;
3720 Q_SLOT
void deselectAll();
3722 bool savePdf(
const QString &fileName,
int width=0,
int height=0,
QCP::ExportPen exportPen=
QCP::epAllowCosmetic,
const QString &pdfCreator=QString(),
const QString &pdfTitle=QString());
3726 bool saveRastered(
const QString &fileName,
int width,
int height,
double scale,
const char *format,
int quality=-1,
int resolution=96,
QCP::ResolutionUnit resolutionUnit=
QCP::ruDotsPerInch);
3727 QPixmap toPixmap(
int width=0,
int height=0,
double scale=1.0);
3728 void toPainter(
QCPPainter *painter,
int width=0,
int height=0);
3731 QCPAxis *xAxis, *yAxis, *xAxis2, *yAxis2;
3735 void mouseDoubleClick(QMouseEvent *event);
3736 void mousePress(QMouseEvent *event);
3737 void mouseMove(QMouseEvent *event);
3738 void mouseRelease(QMouseEvent *event);
3739 void mouseWheel(QWheelEvent *event);
3741 void plottableClick(QCPAbstractPlottable *plottable,
int dataIndex, QMouseEvent *event);
3742 void plottableDoubleClick(QCPAbstractPlottable *plottable,
int dataIndex, QMouseEvent *event);
3750 void selectionChangedByUser();
3751 void beforeReplot();
3757 double mBufferDevicePixelRatio;
3758 QCPLayoutGrid *mPlotLayout;
3759 bool mAutoAddPlottableToLegend;
3760 QList<QCPAbstractPlottable*> mPlottables;
3761 QList<QCPGraph*> mGraphs;
3762 QList<QCPAbstractItem*> mItems;
3763 QList<QCPLayer*> mLayers;
3764 QCP::AntialiasedElements mAntialiasedElements, mNotAntialiasedElements;
3765 QCP::Interactions mInteractions;
3766 int mSelectionTolerance;
3767 bool mNoAntialiasingOnDrag;
3768 QBrush mBackgroundBrush;
3769 QPixmap mBackgroundPixmap;
3770 QPixmap mScaledBackgroundPixmap;
3771 bool mBackgroundScaled;
3772 Qt::AspectRatioMode mBackgroundScaledMode;
3774 QCP::PlottingHints mPlottingHints;
3775 Qt::KeyboardModifier mMultiSelectModifier;
3781 QList<QSharedPointer<QCPAbstractPaintBuffer> > mPaintBuffers;
3782 QPoint mMousePressPos;
3783 bool mMouseHasMoved;
3784 QPointer<QCPLayerable> mMouseEventLayerable;
3785 QPointer<QCPLayerable> mMouseSignalLayerable;
3786 QVariant mMouseEventLayerableDetails;
3787 QVariant mMouseSignalLayerableDetails;
3790 int mOpenGlMultisamples;
3791 QCP::AntialiasedElements mOpenGlAntialiasedElementsBackup;
3792 bool mOpenGlCacheLabelsBackup;
3793 #ifdef QCP_OPENGL_FBO
3794 QSharedPointer<QOpenGLContext> mGlContext;
3795 QSharedPointer<QSurface> mGlSurface;
3796 QSharedPointer<QOpenGLPaintDevice> mGlPaintDevice;
3800 virtual QSize minimumSizeHint() const Q_DECL_OVERRIDE;
3801 virtual QSize sizeHint() const Q_DECL_OVERRIDE;
3802 virtual
void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
3803 virtual
void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE;
3804 virtual
void mouseDoubleClickEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
3805 virtual
void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
3806 virtual
void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
3807 virtual
void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
3808 virtual
void wheelEvent(QWheelEvent *event) Q_DECL_OVERRIDE;
3812 virtual
void updateLayout();
3813 virtual
void axisRemoved(QCPAxis *axis);
3814 virtual
void legendRemoved(
QCPLegend *legend);
3815 Q_SLOT virtual
void processRectSelection(QRect rect, QMouseEvent *event);
3816 Q_SLOT virtual
void processRectZoom(QRect rect, QMouseEvent *event);
3817 Q_SLOT virtual
void processPointSelection(QMouseEvent *event);
3820 bool registerPlottable(QCPAbstractPlottable *plottable);
3821 bool registerGraph(
QCPGraph *graph);
3823 void updateLayerIndices() const;
3824 QCPLayerable *layerableAt(const QPointF &pos,
bool onlySelectable, QVariant *selectionDetails=0) const;
3825 QList<QCPLayerable*> layerableListAt(const QPointF &pos,
bool onlySelectable, QList<QVariant> *selectionDetails=0) const;
3827 void setupPaintBuffers();
3829 bool hasInvalidatedPaintBuffers();
3834 friend class QCPAxis;
3837 friend class QCPAbstractPlottable;
3841 Q_DECLARE_METATYPE(QCustomPlot::LayerInsertMode)
3842 Q_DECLARE_METATYPE(QCustomPlot::RefreshPriority)
3855 virtual int dataCount()
const = 0;
3856 virtual double dataMainKey(
int index)
const = 0;
3857 virtual double dataSortKey(
int index)
const = 0;
3858 virtual double dataMainValue(
int index)
const = 0;
3859 virtual QCPRange dataValueRange(
int index)
const = 0;
3860 virtual QPointF dataPixelPosition(
int index)
const = 0;
3861 virtual bool sortKeyIsMainKey()
const = 0;
3862 virtual QCPDataSelection selectTestRect(
const QRectF &rect,
bool onlySelectable)
const = 0;
3863 virtual int findBegin(
double sortKey,
bool expandedRange=
true)
const = 0;
3864 virtual int findEnd(
double sortKey,
bool expandedRange=
true)
const = 0;
3867 template <
class DataType>
3877 virtual int dataCount() const Q_DECL_OVERRIDE;
3878 virtual
double dataMainKey(
int index) const Q_DECL_OVERRIDE;
3879 virtual
double dataSortKey(
int index) const Q_DECL_OVERRIDE;
3880 virtual
double dataMainValue(
int index) const Q_DECL_OVERRIDE;
3881 virtual
QCPRange dataValueRange(
int index) const Q_DECL_OVERRIDE;
3882 virtual QPointF dataPixelPosition(
int index) const Q_DECL_OVERRIDE;
3883 virtual
bool sortKeyIsMainKey() const Q_DECL_OVERRIDE;
3884 virtual
QCPDataSelection selectTestRect(const QRectF &rect,
bool onlySelectable) const Q_DECL_OVERRIDE;
3885 virtual
int findBegin(
double sortKey,
bool expandedRange=true) const Q_DECL_OVERRIDE;
3886 virtual
int findEnd(
double sortKey,
bool expandedRange=true) const Q_DECL_OVERRIDE;
3889 virtual
double selectTest(const QPointF &pos,
bool onlySelectable, QVariant *details=0) const Q_DECL_OVERRIDE;
3894 QSharedPointer<QCPDataContainer<DataType> > mDataContainer;
3897 void getDataSegments(QList<QCPDataRange> &selectedSegments, QList<QCPDataRange> &unselectedSegments)
const;
3898 void drawPolyline(
QCPPainter *painter,
const QVector<QPointF> &lineData)
const;
4095 template <
class DataType>
4097 QCPAbstractPlottable(keyAxis, valueAxis),
4102 template <
class DataType>
4110 template <
class DataType>
4113 return mDataContainer->size();
4119 template <
class DataType>
4122 if (index >= 0 && index < mDataContainer->size())
4124 return (mDataContainer->constBegin()+
index)->mainKey();
4127 qDebug() << Q_FUNC_INFO <<
"Index out of bounds" <<
index;
4135 template <
class DataType>
4138 if (index >= 0 && index < mDataContainer->size())
4140 return (mDataContainer->constBegin()+
index)->sortKey();
4143 qDebug() << Q_FUNC_INFO <<
"Index out of bounds" <<
index;
4151 template <
class DataType>
4154 if (index >= 0 && index < mDataContainer->size())
4156 return (mDataContainer->constBegin()+
index)->mainValue();
4159 qDebug() << Q_FUNC_INFO <<
"Index out of bounds" <<
index;
4167 template <
class DataType>
4170 if (index >= 0 && index < mDataContainer->size())
4172 return (mDataContainer->constBegin()+
index)->valueRange();
4175 qDebug() << Q_FUNC_INFO <<
"Index out of bounds" <<
index;
4183 template <
class DataType>
4186 if (index >= 0 && index < mDataContainer->size())
4189 return coordsToPixels(it->mainKey(), it->mainValue());
4192 qDebug() << Q_FUNC_INFO <<
"Index out of bounds" <<
index;
4200 template <
class DataType>
4203 return DataType::sortKeyIsMainKey();
4213 template <
class DataType>
4217 if ((onlySelectable && mSelectable ==
QCP::stNone) || mDataContainer->isEmpty())
4219 if (!mKeyAxis || !mValueAxis)
4223 double key1, value1, key2, value2;
4224 pixelsToCoords(rect.topLeft(), key1, value1);
4225 pixelsToCoords(rect.bottomRight(), key2, value2);
4227 QCPRange valueRange(value1, value2);
4230 if (DataType::sortKeyIsMainKey())
4232 begin = mDataContainer->
findBegin(keyRange.lower,
false);
4233 end = mDataContainer->
findEnd(keyRange.upper,
false);
4238 int currentSegmentBegin = -1;
4241 if (currentSegmentBegin == -1)
4243 if (valueRange.contains(it->mainValue()) && keyRange.contains(it->mainKey()))
4244 currentSegmentBegin = it-mDataContainer->
constBegin();
4245 }
else if (!valueRange.contains(it->mainValue()) || !keyRange.contains(it->mainKey()))
4248 currentSegmentBegin = -1;
4252 if (currentSegmentBegin != -1)
4262 template <
class DataType>
4265 return mDataContainer->findBegin(sortKey, expandedRange)-mDataContainer->constBegin();
4271 template <
class DataType>
4274 return mDataContainer->findEnd(sortKey, expandedRange)-mDataContainer->constBegin();
4284 template <
class DataType>
4287 if ((onlySelectable && mSelectable ==
QCP::stNone) || mDataContainer->isEmpty())
4289 if (!mKeyAxis || !mValueAxis)
4294 int minDistIndex = mDataContainer->size();
4298 if (DataType::sortKeyIsMainKey())
4301 double posKeyMin, posKeyMax, dummy;
4304 if (posKeyMin > posKeyMax)
4305 qSwap(posKeyMin, posKeyMax);
4306 begin = mDataContainer->
findBegin(posKeyMin,
true);
4307 end = mDataContainer->
findEnd(posKeyMax,
true);
4311 QCPRange keyRange(mKeyAxis->range());
4312 QCPRange valueRange(mValueAxis->range());
4315 const double mainKey = it->mainKey();
4316 const double mainValue = it->mainValue();
4317 if (keyRange.contains(mainKey) && valueRange.contains(mainValue))
4320 if (currentDistSqr < minDistSqr)
4322 minDistSqr = currentDistSqr;
4323 minDistIndex = it-mDataContainer->
constBegin();
4327 if (minDistIndex != mDataContainer->size())
4332 details->setValue(selectionResult);
4333 return qSqrt(minDistSqr);
4346 template <
class DataType>
4349 selectedSegments.clear();
4350 unselectedSegments.clear();
4361 selectedSegments = sel.dataRanges();
4362 unselectedSegments = sel.inverse(
QCPDataRange(0, dataCount())).dataRanges();
4376 template <
class DataType>
4381 painter->pen().style() == Qt::SolidLine &&
4386 bool lastIsNan =
false;
4387 const int lineDataSize = lineData.size();
4388 while (i < lineDataSize && (qIsNaN(lineData.at(i).y()) || qIsNaN(lineData.at(i).x())))
4391 while (i < lineDataSize)
4393 if (!qIsNaN(lineData.at(i).y()) && !qIsNaN(lineData.at(i).x()))
4396 painter->
drawLine(lineData.at(i-1), lineData.at(i));
4405 int segmentStart = 0;
4407 const int lineDataSize = lineData.size();
4408 while (i < lineDataSize)
4410 if (qIsNaN(lineData.at(i).y()) || qIsNaN(lineData.at(i).x()) || qIsInf(lineData.at(i).y()))
4412 painter->drawPolyline(lineData.constData()+segmentStart, i-segmentStart);
4418 painter->drawPolyline(lineData.constData()+segmentStart, lineDataSize-segmentStart);
4442 Q_ENUMS(ColorInterpolation)
4461 Q_ENUMS(GradientPreset)
4464 QCPColorGradient(GradientPreset preset);
4465 bool operator==(const QCPColorGradient &other) const;
4466 bool operator!=(const QCPColorGradient &other)
const {
return !(*
this == other); }
4475 void setLevelCount(
int n);
4476 void setColorStops(
const QMap<double, QColor> &colorStops);
4477 void setColorStopAt(
double position,
const QColor &color);
4478 void setColorInterpolation(ColorInterpolation interpolation);
4479 void setPeriodic(
bool enabled);
4482 void colorize(
const double *data,
const QCPRange &range, QRgb *scanLine,
int n,
int dataIndexFactor=1,
bool logarithmic=
false);
4483 void colorize(
const double *data,
const unsigned char *alpha,
const QCPRange &range, QRgb *scanLine,
int n,
int dataIndexFactor=1,
bool logarithmic=
false);
4484 QRgb color(
double position,
const QCPRange &range,
bool logarithmic=
false);
4485 void loadPreset(GradientPreset preset);
4486 void clearColorStops();
4492 QMap<double, QColor> mColorStops;
4493 ColorInterpolation mColorInterpolation;
4497 QVector<QRgb> mColorBuffer;
4498 bool mColorBufferInvalidated;
4501 bool stopsUseAlpha()
const;
4502 void updateColorBuffer();
4530 Q_ENUMS(BracketStyle)
4533 virtual ~QCPSelectionDecoratorBracket();
4536 QPen bracketPen()
const {
return mBracketPen; }
4545 void setBracketPen(
const QPen &pen);
4546 void setBracketBrush(
const QBrush &brush);
4547 void setBracketWidth(
int width);
4548 void setBracketHeight(
int height);
4549 void setBracketStyle(BracketStyle style);
4550 void setTangentToData(
bool enabled);
4551 void setTangentAverage(
int pointCount);
4554 virtual void drawBracket(
QCPPainter *painter,
int direction)
const;
4562 QBrush mBracketBrush;
4565 BracketStyle mBracketStyle;
4566 bool mTangentToData;
4567 int mTangentAverage;
4586 Q_PROPERTY(QPixmap background READ background WRITE setBackground)
4587 Q_PROPERTY(
bool backgroundScaled READ backgroundScaled WRITE setBackgroundScaled)
4588 Q_PROPERTY(Qt::AspectRatioMode backgroundScaledMode READ backgroundScaledMode WRITE setBackgroundScaledMode)
4589 Q_PROPERTY(Qt::Orientations rangeDrag READ rangeDrag WRITE setRangeDrag)
4590 Q_PROPERTY(Qt::Orientations rangeZoom READ rangeZoom WRITE setRangeZoom)
4593 explicit QCPAxisRect(QCustomPlot *parentPlot,
bool setupDefaultAxes=
true);
4603 QCPAxis *rangeDragAxis(Qt::Orientation orientation);
4604 QCPAxis *rangeZoomAxis(Qt::Orientation orientation);
4605 QList<QCPAxis*> rangeDragAxes(Qt::Orientation orientation);
4606 QList<QCPAxis*> rangeZoomAxes(Qt::Orientation orientation);
4607 double rangeZoomFactor(Qt::Orientation orientation);
4610 void setBackground(
const QPixmap &pm);
4611 void setBackground(
const QPixmap &pm,
bool scaled, Qt::AspectRatioMode mode=Qt::KeepAspectRatioByExpanding);
4612 void setBackground(
const QBrush &brush);
4613 void setBackgroundScaled(
bool scaled);
4614 void setBackgroundScaledMode(Qt::AspectRatioMode mode);
4615 void setRangeDrag(Qt::Orientations orientations);
4616 void setRangeZoom(Qt::Orientations orientations);
4617 void setRangeDragAxes(QCPAxis *horizontal, QCPAxis *vertical);
4618 void setRangeDragAxes(QList<QCPAxis*> axes);
4619 void setRangeDragAxes(QList<QCPAxis*> horizontal, QList<QCPAxis*> vertical);
4620 void setRangeZoomAxes(QCPAxis *horizontal, QCPAxis *vertical);
4621 void setRangeZoomAxes(QList<QCPAxis*> axes);
4622 void setRangeZoomAxes(QList<QCPAxis*> horizontal, QList<QCPAxis*> vertical);
4623 void setRangeZoomFactor(
double horizontalFactor,
double verticalFactor);
4624 void setRangeZoomFactor(
double factor);
4629 QList<QCPAxis*> axes(QCPAxis::AxisTypes types)
const;
4630 QList<QCPAxis*> axes()
const;
4632 QList<QCPAxis*> addAxes(QCPAxis::AxisTypes types);
4633 bool removeAxis(QCPAxis *axis);
4636 void zoom(
const QRectF &pixelRect);
4637 void zoom(
const QRectF &pixelRect,
const QList<QCPAxis*> &affectedAxes);
4638 void setupFullAxesBox(
bool connectRanges=
false);
4639 QList<QCPAbstractPlottable*> plottables()
const;
4640 QList<QCPGraph*> graphs()
const;
4641 QList<QCPAbstractItem*> items()
const;
4644 int left()
const {
return mRect.left(); }
4645 int right()
const {
return mRect.right(); }
4646 int top()
const {
return mRect.top(); }
4647 int bottom()
const {
return mRect.bottom(); }
4648 int width()
const {
return mRect.width(); }
4649 int height()
const {
return mRect.height(); }
4650 QSize
size()
const {
return mRect.size(); }
4651 QPoint
topLeft()
const {
return mRect.topLeft(); }
4655 QPoint
center()
const {
return mRect.center(); }
4659 virtual QList<QCPLayoutElement*> elements(
bool recursive)
const Q_DECL_OVERRIDE;
4663 QBrush mBackgroundBrush;
4664 QPixmap mBackgroundPixmap;
4665 QPixmap mScaledBackgroundPixmap;
4666 bool mBackgroundScaled;
4667 Qt::AspectRatioMode mBackgroundScaledMode;
4669 Qt::Orientations mRangeDrag, mRangeZoom;
4670 QList<QPointer<QCPAxis> > mRangeDragHorzAxis, mRangeDragVertAxis;
4671 QList<QPointer<QCPAxis> > mRangeZoomHorzAxis, mRangeZoomVertAxis;
4672 double mRangeZoomFactorHorz, mRangeZoomFactorVert;
4675 QList<QCPRange> mDragStartHorzRange, mDragStartVertRange;
4676 QCP::AntialiasedElements mAADragBackup, mNotAADragBackup;
4678 QHash<QCPAxis::AxisType, QList<QCPAxis*> > mAxes;
4684 virtual void layoutChanged() Q_DECL_OVERRIDE;
4686 virtual
void mousePressEvent(QMouseEvent *event, const QVariant &details) Q_DECL_OVERRIDE;
4687 virtual
void mouseMoveEvent(QMouseEvent *event, const QPointF &startPos) Q_DECL_OVERRIDE;
4688 virtual
void mouseReleaseEvent(QMouseEvent *event, const QPointF &startPos) Q_DECL_OVERRIDE;
4689 virtual
void wheelEvent(QWheelEvent *event) Q_DECL_OVERRIDE;
4693 void updateAxesOffset(QCPAxis::AxisType type);
4698 friend class QCustomPlot;
4712 Q_PROPERTY(
QCPLegend* parentLegend READ parentLegend)
4713 Q_PROPERTY(QFont font READ font WRITE setFont)
4714 Q_PROPERTY(QColor textColor READ textColor WRITE setTextColor)
4715 Q_PROPERTY(QFont selectedFont READ selectedFont WRITE setSelectedFont)
4716 Q_PROPERTY(QColor selectedTextColor READ selectedTextColor WRITE setSelectedTextColor)
4717 Q_PROPERTY(
bool selectable READ selectable WRITE setSelectable NOTIFY selectionChanged)
4718 Q_PROPERTY(
bool selected READ selected WRITE setSelected NOTIFY selectableChanged)
4725 QFont
font()
const {
return mFont; }
4733 void setFont(
const QFont &font);
4734 void setTextColor(
const QColor &color);
4735 void setSelectedFont(
const QFont &font);
4736 void setSelectedTextColor(
const QColor &color);
4737 Q_SLOT
void setSelectable(
bool selectable);
4738 Q_SLOT
void setSelected(
bool selected);
4741 virtual double selectTest(
const QPointF &pos,
bool onlySelectable, QVariant *details=0) const Q_DECL_OVERRIDE;
4744 void selectionChanged(
bool selected);
4745 void selectableChanged(
bool selectable);
4752 QFont mSelectedFont;
4753 QColor mSelectedTextColor;
4754 bool mSelectable, mSelected;
4757 virtual QCP::
Interaction selectionCategory() const Q_DECL_OVERRIDE;
4758 virtual
void applyDefaultAntialiasingHint(
QCPPainter *painter) const Q_DECL_OVERRIDE;
4759 virtual QRect clipRect() const Q_DECL_OVERRIDE;
4760 virtual
void draw(
QCPPainter *painter) Q_DECL_OVERRIDE = 0;
4762 virtual
void selectEvent(QMouseEvent *event,
bool additive, const QVariant &details,
bool *selectionStateChanged) Q_DECL_OVERRIDE;
4763 virtual
void deselectEvent(
bool *selectionStateChanged) Q_DECL_OVERRIDE;
4776 QCPPlottableLegendItem(QCPLegend *parent, QCPAbstractPlottable *plottable);
4783 QCPAbstractPlottable *mPlottable;
4787 virtual QSize minimumOuterSizeHint() const Q_DECL_OVERRIDE;
4790 QPen getIconBorderPen() const;
4791 QColor getTextColor() const;
4792 QFont getFont() const;
4800 Q_PROPERTY(QPen borderPen READ borderPen WRITE setBorderPen)
4801 Q_PROPERTY(QBrush brush READ brush WRITE setBrush)
4802 Q_PROPERTY(QFont font READ font WRITE setFont)
4803 Q_PROPERTY(QColor textColor READ textColor WRITE setTextColor)
4804 Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize)
4805 Q_PROPERTY(
int iconTextPadding READ iconTextPadding WRITE setIconTextPadding)
4806 Q_PROPERTY(QPen iconBorderPen READ iconBorderPen WRITE setIconBorderPen)
4807 Q_PROPERTY(SelectableParts selectableParts READ selectableParts WRITE setSelectableParts NOTIFY selectionChanged)
4808 Q_PROPERTY(SelectableParts selectedParts READ selectedParts WRITE setSelectedParts NOTIFY selectableChanged)
4809 Q_PROPERTY(QPen selectedBorderPen READ selectedBorderPen WRITE setSelectedBorderPen)
4810 Q_PROPERTY(QPen selectedIconBorderPen READ selectedIconBorderPen WRITE setSelectedIconBorderPen)
4811 Q_PROPERTY(QBrush selectedBrush READ selectedBrush WRITE setSelectedBrush)
4812 Q_PROPERTY(QFont selectedFont READ selectedFont WRITE setSelectedFont)
4813 Q_PROPERTY(QColor selectedTextColor READ selectedTextColor WRITE setSelectedTextColor)
4822 ,spLegendBox = 0x001
4825 Q_ENUMS(SelectablePart)
4826 Q_FLAGS(SelectableParts)
4827 Q_DECLARE_FLAGS(SelectableParts, SelectablePart)
4829 explicit QCPLegend();
4830 virtual ~QCPLegend();
4833 QPen borderPen()
const {
return mBorderPen; }
4835 QFont
font()
const {
return mFont; }
4841 SelectableParts selectedParts()
const;
4849 void setBorderPen(
const QPen &pen);
4850 void setBrush(
const QBrush &brush);
4851 void setFont(
const QFont &font);
4852 void setTextColor(
const QColor &color);
4853 void setIconSize(
const QSize &size);
4854 void setIconSize(
int width,
int height);
4855 void setIconTextPadding(
int padding);
4856 void setIconBorderPen(
const QPen &pen);
4857 Q_SLOT
void setSelectableParts(
const SelectableParts &selectableParts);
4858 Q_SLOT
void setSelectedParts(
const SelectableParts &selectedParts);
4859 void setSelectedBorderPen(
const QPen &pen);
4860 void setSelectedIconBorderPen(
const QPen &pen);
4861 void setSelectedBrush(
const QBrush &brush);
4862 void setSelectedFont(
const QFont &font);
4863 void setSelectedTextColor(
const QColor &color);
4866 virtual double selectTest(
const QPointF &pos,
bool onlySelectable, QVariant *details=0) const Q_DECL_OVERRIDE;
4869 QCPAbstractLegendItem *item(
int index) const;
4870 QCPPlottableLegendItem *itemWithPlottable(const QCPAbstractPlottable *plottable) const;
4871 int itemCount() const;
4872 bool hasItem(QCPAbstractLegendItem *item) const;
4873 bool hasItemWithPlottable(const QCPAbstractPlottable *plottable) const;
4874 bool addItem(QCPAbstractLegendItem *item);
4875 bool removeItem(
int index);
4876 bool removeItem(QCPAbstractLegendItem *item);
4878 QList<QCPAbstractLegendItem*> selectedItems() const;
4881 void selectionChanged(QCPLegend::SelectableParts parts);
4882 void selectableChanged(QCPLegend::SelectableParts parts);
4886 QPen mBorderPen, mIconBorderPen;
4891 int mIconTextPadding;
4892 SelectableParts mSelectedParts, mSelectableParts;
4893 QPen mSelectedBorderPen, mSelectedIconBorderPen;
4894 QBrush mSelectedBrush;
4895 QFont mSelectedFont;
4896 QColor mSelectedTextColor;
4899 virtual
void parentPlotInitialized(QCustomPlot *parentPlot) Q_DECL_OVERRIDE;
4900 virtual QCP::
Interaction selectionCategory() const Q_DECL_OVERRIDE;
4901 virtual
void applyDefaultAntialiasingHint(
QCPPainter *painter) const Q_DECL_OVERRIDE;
4902 virtual
void draw(
QCPPainter *painter) Q_DECL_OVERRIDE;
4904 virtual
void selectEvent(QMouseEvent *event,
bool additive, const QVariant &details,
bool *selectionStateChanged) Q_DECL_OVERRIDE;
4905 virtual
void deselectEvent(
bool *selectionStateChanged) Q_DECL_OVERRIDE;
4908 QPen getBorderPen() const;
4909 QBrush getBrush() const;
4912 Q_DISABLE_COPY(QCPLegend)
4914 friend class QCustomPlot;
4915 friend class QCPAbstractLegendItem;
4917 Q_DECLARE_OPERATORS_FOR_FLAGS(QCPLegend::SelectableParts)
4918 Q_DECLARE_METATYPE(QCPLegend::SelectablePart)
4930 Q_PROPERTY(QString text READ text WRITE setText)
4931 Q_PROPERTY(QFont font READ font WRITE setFont)
4932 Q_PROPERTY(QColor textColor READ textColor WRITE setTextColor)
4933 Q_PROPERTY(QFont selectedFont READ selectedFont WRITE setSelectedFont)
4934 Q_PROPERTY(QColor selectedTextColor READ selectedTextColor WRITE setSelectedTextColor)
4935 Q_PROPERTY(
bool selectable READ selectable WRITE setSelectable NOTIFY selectableChanged)
4936 Q_PROPERTY(
bool selected READ selected WRITE setSelected NOTIFY selectionChanged)
4941 QCPTextElement(QCustomPlot *parentPlot,
const QString &text,
double pointSize);
4942 QCPTextElement(QCustomPlot *parentPlot,
const QString &text,
const QString &fontFamily,
double pointSize);
4943 QCPTextElement(QCustomPlot *parentPlot,
const QString &text,
const QFont &font);
4946 QString
text()
const {
return mText; }
4948 QFont
font()
const {
return mFont; }
4956 void setText(
const QString &text);
4957 void setTextFlags(
int flags);
4958 void setFont(
const QFont &font);
4959 void setTextColor(
const QColor &color);
4960 void setSelectedFont(
const QFont &font);
4961 void setSelectedTextColor(
const QColor &color);
4962 Q_SLOT
void setSelectable(
bool selectable);
4963 Q_SLOT
void setSelected(
bool selected);
4966 virtual double selectTest(
const QPointF &pos,
bool onlySelectable, QVariant *details=0) const Q_DECL_OVERRIDE;
4967 virtual
void mousePressEvent(QMouseEvent *event, const QVariant &details) Q_DECL_OVERRIDE;
4968 virtual
void mouseReleaseEvent(QMouseEvent *event, const QPointF &startPos) Q_DECL_OVERRIDE;
4969 virtual
void mouseDoubleClickEvent(QMouseEvent *event, const QVariant &details) Q_DECL_OVERRIDE;
4972 void selectionChanged(
bool selected);
4973 void selectableChanged(
bool selectable);
4974 void clicked(QMouseEvent *event);
4975 void doubleClicked(QMouseEvent *event);
4983 QFont mSelectedFont;
4984 QColor mSelectedTextColor;
4985 QRect mTextBoundingRect;
4986 bool mSelectable, mSelected;
4989 virtual
void applyDefaultAntialiasingHint(
QCPPainter *painter) const Q_DECL_OVERRIDE;
4990 virtual
void draw(
QCPPainter *painter) Q_DECL_OVERRIDE;
4991 virtual QSize minimumOuterSizeHint() const Q_DECL_OVERRIDE;
4992 virtual QSize maximumOuterSizeHint() const Q_DECL_OVERRIDE;
4994 virtual
void selectEvent(QMouseEvent *event,
bool additive, const QVariant &details,
bool *selectionStateChanged) Q_DECL_OVERRIDE;
4995 virtual
void deselectEvent(
bool *selectionStateChanged) Q_DECL_OVERRIDE;
4998 QFont mainFont() const;
4999 QColor mainTextColor() const;
5021 QImage mGradientImage;
5022 bool mGradientImageInvalidated;
5031 void updateGradientImage();
5032 Q_SLOT
void axisSelectionChanged(QCPAxis::SelectableParts selectedParts);
5033 Q_SLOT
void axisSelectableChanged(QCPAxis::SelectableParts selectableParts);
5043 Q_PROPERTY(
QCPRange dataRange READ dataRange WRITE setDataRange NOTIFY dataRangeChanged)
5044 Q_PROPERTY(
QCPAxis::ScaleType dataScaleType READ dataScaleType WRITE setDataScaleType NOTIFY dataScaleTypeChanged)
5045 Q_PROPERTY(
QCPColorGradient gradient READ gradient WRITE setGradient NOTIFY gradientChanged)
5046 Q_PROPERTY(QString label READ label WRITE setLabel)
5047 Q_PROPERTY(
int barWidth READ barWidth WRITE setBarWidth)
5048 Q_PROPERTY(
bool rangeDrag READ rangeDrag WRITE setRangeDrag)
5049 Q_PROPERTY(
bool rangeZoom READ rangeZoom WRITE setRangeZoom)
5056 QCPAxis *
axis()
const {
return mColorAxis.data(); }
5061 QString label()
const;
5063 bool rangeDrag()
const;
5064 bool rangeZoom()
const;
5068 Q_SLOT
void setDataRange(
const QCPRange &dataRange);
5071 void setLabel(
const QString &str);
5072 void setBarWidth(
int width);
5073 void setRangeDrag(
bool enabled);
5074 void setRangeZoom(
bool enabled);
5077 QList<QCPColorMap*> colorMaps()
const;
5078 void rescaleDataRange(
bool onlyVisibleMaps);
5084 void dataRangeChanged(
const QCPRange &newRange);
5097 QPointer<QCPColorScaleAxisRectPrivate> mAxisRect;
5098 QPointer<QCPAxis> mColorAxis;
5125 QCPGraphData(
double key,
double value);
5128 inline static QCPGraphData
fromSortKey(
double sortKey) {
return QCPGraphData(sortKey, 0); }
5156 Q_PROPERTY(LineStyle lineStyle READ lineStyle WRITE setLineStyle)
5157 Q_PROPERTY(
QCPScatterStyle scatterStyle READ scatterStyle WRITE setScatterStyle)
5158 Q_PROPERTY(
int scatterSkip READ scatterSkip WRITE setScatterSkip)
5159 Q_PROPERTY(
QCPGraph* channelFillGraph READ channelFillGraph WRITE setChannelFillGraph)
5160 Q_PROPERTY(
bool adaptiveSampling READ adaptiveSampling WRITE setAdaptiveSampling)
5178 explicit
QCPGraph(QCPAxis *keyAxis, QCPAxis *valueAxis);
5190 void setData(QSharedPointer<QCPGraphDataContainer> data);
5191 void setData(
const QVector<double> &keys,
const QVector<double> &values,
bool alreadySorted=
false);
5192 void setLineStyle(LineStyle ls);
5194 void setScatterSkip(
int skip);
5195 void setChannelFillGraph(
QCPGraph *targetGraph);
5196 void setAdaptiveSampling(
bool enabled);
5199 void addData(
const QVector<double> &keys,
const QVector<double> &values,
bool alreadySorted=
false);
5200 void addData(
double key,
double value);
5203 virtual double selectTest(
const QPointF &pos,
bool onlySelectable, QVariant *details=0) const Q_DECL_OVERRIDE;
5209 LineStyle mLineStyle;
5212 QPointer<
QCPGraph> mChannelFillGraph;
5213 bool mAdaptiveSampling;
5216 virtual
void draw(
QCPPainter *painter) Q_DECL_OVERRIDE;
5217 virtual
void drawLegendIcon(
QCPPainter *painter, const QRectF &rect) const Q_DECL_OVERRIDE;
5220 virtual
void drawFill(
QCPPainter *painter, QVector<QPointF> *lines) const;
5221 virtual
void drawScatterPlot(
QCPPainter *painter, const QVector<QPointF> &scatters, const
QCPScatterStyle &style) const;
5222 virtual
void drawLinePlot(
QCPPainter *painter, const QVector<QPointF> &lines) const;
5223 virtual
void drawImpulsePlot(
QCPPainter *painter, const QVector<QPointF> &lines) const;
5230 void getLines(QVector<QPointF> *lines, const
QCPDataRange &dataRange) const;
5231 void getScatters(QVector<QPointF> *scatters, const
QCPDataRange &dataRange) const;
5232 QVector<QPointF> dataToLines(const QVector<
QCPGraphData> &data) const;
5233 QVector<QPointF> dataToStepLeftLines(const QVector<
QCPGraphData> &data) const;
5234 QVector<QPointF> dataToStepRightLines(const QVector<
QCPGraphData> &data) const;
5235 QVector<QPointF> dataToStepCenterLines(const QVector<
QCPGraphData> &data) const;
5236 QVector<QPointF> dataToImpulseLines(const QVector<
QCPGraphData> &data) const;
5237 QVector<
QCPDataRange> getNonNanSegments(const QVector<QPointF> *lineData, Qt::Orientation keyOrientation) const;
5238 QVector<QPair<
QCPDataRange, QCPDataRange> > getOverlappingSegments(QVector<QCPDataRange> thisSegments, const QVector<QPointF> *thisData, QVector<QCPDataRange> otherSegments, const QVector<QPointF> *otherData) const;
5239 bool segmentsIntersect(
double aLower,
double aUpper,
double bLower,
double bUpper,
int &bPrecedence) const;
5240 QPointF getFillBasePoint(QPointF matchingDataPoint) const;
5241 const QPolygonF getFillPolygon(const QVector<QPointF> *lineData, QCPDataRange segment) const;
5242 const QPolygonF getChannelFillPolygon(const QVector<QPointF> *lineData, QCPDataRange thisSegment, const QVector<QPointF> *otherData, QCPDataRange otherSegment) const;
5243 int findIndexBelowX(const QVector<QPointF> *data,
double x) const;
5244 int findIndexAboveX(const QVector<QPointF> *data,
double x) const;
5245 int findIndexBelowY(const QVector<QPointF> *data,
double y) const;
5246 int findIndexAboveY(const QVector<QPointF> *data,
double y) const;
5247 double pointDistance(const QPointF &pixelPoint,
QCPGraphDataContainer::const_iterator &closestData) const;
5249 friend class QCustomPlot;
5250 friend class QCPLegend;
5252 Q_DECLARE_METATYPE(
QCPGraph::LineStyle)
5264 QCPCurveData(
double t,
double key,
double value);
5267 inline static QCPCurveData
fromSortKey(
double sortKey) {
return QCPCurveData(sortKey, 0, 0); }
5275 double t, key,
value;
5296 Q_PROPERTY(
QCPScatterStyle scatterStyle READ scatterStyle WRITE setScatterStyle)
5297 Q_PROPERTY(
int scatterSkip READ scatterSkip WRITE setScatterSkip)
5298 Q_PROPERTY(LineStyle lineStyle READ lineStyle WRITE setLineStyle)
5311 explicit
QCPCurve(QCPAxis *keyAxis, QCPAxis *valueAxis);
5321 void setData(QSharedPointer<QCPCurveDataContainer> data);
5322 void setData(
const QVector<double> &t,
const QVector<double> &keys,
const QVector<double> &values,
bool alreadySorted=
false);
5323 void setData(
const QVector<double> &keys,
const QVector<double> &values);
5325 void setScatterSkip(
int skip);
5326 void setLineStyle(LineStyle style);
5329 void addData(
const QVector<double> &t,
const QVector<double> &keys,
const QVector<double> &values,
bool alreadySorted=
false);
5330 void addData(
const QVector<double> &keys,
const QVector<double> &values);
5331 void addData(
double t,
double key,
double value);
5332 void addData(
double key,
double value);
5335 virtual double selectTest(
const QPointF &pos,
bool onlySelectable, QVariant *details=0) const Q_DECL_OVERRIDE;
5343 LineStyle mLineStyle;
5346 virtual
void draw(
QCPPainter *painter) Q_DECL_OVERRIDE;
5347 virtual
void drawLegendIcon(
QCPPainter *painter, const QRectF &rect) const Q_DECL_OVERRIDE;
5350 virtual
void drawCurveLine(
QCPPainter *painter, const QVector<QPointF> &lines) const;
5354 void getCurveLines(QVector<QPointF> *lines, const
QCPDataRange &dataRange,
double penWidth) const;
5355 void getScatters(QVector<QPointF> *scatters, const
QCPDataRange &dataRange,
double scatterWidth) const;
5356 int getRegion(
double key,
double value,
double keyMin,
double valueMax,
double keyMax,
double valueMin) const;
5357 QPointF getOptimizedPoint(
int prevRegion,
double prevKey,
double prevValue,
double key,
double value,
double keyMin,
double valueMax,
double keyMax,
double valueMin) const;
5358 QVector<QPointF> getOptimizedCornerPoints(
int prevRegion,
int currentRegion,
double prevKey,
double prevValue,
double key,
double value,
double keyMin,
double valueMax,
double keyMax,
double valueMin) const;
5359 bool mayTraverse(
int prevRegion,
int currentRegion) const;
5360 bool getTraverse(
double prevKey,
double prevValue,
double key,
double value,
double keyMin,
double valueMax,
double keyMax,
double valueMin, QPointF &crossA, QPointF &crossB) const;
5361 void getTraverseCornerPoints(
int prevRegion,
int currentRegion,
double keyMin,
double valueMax,
double keyMax,
double valueMin, QVector<QPointF> &beforeTraverse, QVector<QPointF> &afterTraverse) const;
5362 double pointDistance(const QPointF &pixelPoint,
QCPCurveDataContainer::const_iterator &closestData) const;
5364 friend class QCustomPlot;
5365 friend class QCPLegend;
5367 Q_DECLARE_METATYPE(
QCPCurve::LineStyle)
5379 Q_PROPERTY(SpacingType spacingType READ spacingType WRITE setSpacingType)
5380 Q_PROPERTY(
double spacing READ spacing WRITE setSpacing)
5393 Q_ENUMS(SpacingType)
5403 void setSpacingType(SpacingType spacingType);
5404 void setSpacing(
double spacing);
5407 QList<QCPBars*>
bars()
const {
return mBars; }
5408 QCPBars* bars(
int index)
const;
5409 int size()
const {
return mBars.size(); }
5414 void insert(
int i,
QCPBars *bars);
5419 QCustomPlot *mParentPlot;
5420 SpacingType mSpacingType;
5422 QList<QCPBars*> mBars;
5425 void registerBars(
QCPBars *bars);
5426 void unregisterBars(
QCPBars *bars);
5429 double keyPixelOffset(
const QCPBars *bars,
double keyCoord);
5430 double getPixelSpacing(
const QCPBars *bars,
double keyCoord);
5444 QCPBarsData(
double key,
double value);
5447 inline static QCPBarsData
fromSortKey(
double sortKey) {
return QCPBarsData(sortKey, 0); }
5475 Q_PROPERTY(
double width READ width WRITE setWidth)
5476 Q_PROPERTY(WidthType widthType READ widthType WRITE setWidthType)
5477 Q_PROPERTY(
QCPBarsGroup* barsGroup READ barsGroup WRITE setBarsGroup)
5478 Q_PROPERTY(
double baseValue READ baseValue WRITE setBaseValue)
5479 Q_PROPERTY(
double stackingGap READ stackingGap WRITE setStackingGap)
5480 Q_PROPERTY(
QCPBars* barBelow READ barBelow)
5481 Q_PROPERTY(
QCPBars* barAbove READ barAbove)
5496 explicit
QCPBars(QCPAxis *keyAxis, QCPAxis *valueAxis);
5500 double width()
const {
return mWidth; }
5507 QSharedPointer<QCPBarsDataContainer>
data()
const {
return mDataContainer; }
5510 void setData(QSharedPointer<QCPBarsDataContainer> data);
5511 void setData(
const QVector<double> &keys,
const QVector<double> &values,
bool alreadySorted=
false);
5512 void setWidth(
double width);
5513 void setWidthType(WidthType widthType);
5515 void setBaseValue(
double baseValue);
5516 void setStackingGap(
double pixels);
5519 void addData(
const QVector<double> &keys,
const QVector<double> &values,
bool alreadySorted=
false);
5520 void addData(
double key,
double value);
5521 void moveBelow(
QCPBars *bars);
5522 void moveAbove(
QCPBars *bars);
5526 virtual double selectTest(
const QPointF &pos,
bool onlySelectable, QVariant *details=0) const Q_DECL_OVERRIDE;
5527 virtual
QCPRange getKeyRange(
bool &foundRange, QCP::
SignDomain inSignDomain=QCP::sdBoth) const Q_DECL_OVERRIDE;
5529 virtual QPointF dataPixelPosition(
int index) const Q_DECL_OVERRIDE;
5534 WidthType mWidthType;
5537 double mStackingGap;
5538 QPointer<
QCPBars> mBarBelow, mBarAbove;
5541 virtual
void draw(
QCPPainter *painter) Q_DECL_OVERRIDE;
5542 virtual
void drawLegendIcon(
QCPPainter *painter, const QRectF &rect) const Q_DECL_OVERRIDE;
5545 void getVisibleDataBounds(QCPBarsDataContainer::const_iterator &begin, QCPBarsDataContainer::const_iterator &end) const;
5546 QRectF getBarRect(
double key,
double value) const;
5547 void getPixelWidth(
double key,
double &lower,
double &
upper) const;
5548 double getStackedBaseValue(
double key,
bool positive) const;
5551 friend class QCustomPlot;
5552 friend class QCPLegend;
5555 Q_DECLARE_METATYPE(
QCPBars::WidthType)
5566 QCPStatisticalBoxData();
5567 QCPStatisticalBoxData(
double key,
double minimum,
double lowerQuartile,
double median,
double upperQuartile,
double maximum,
const QVector<double>& outliers=QVector<double>());
5570 inline static QCPStatisticalBoxData
fromSortKey(
double sortKey) {
return QCPStatisticalBoxData(sortKey, 0, 0, 0, 0, 0); }
5579 for (QVector<double>::const_iterator it = outliers.
constBegin(); it != outliers.
constEnd(); ++it)
5584 double key, minimum, lowerQuartile, median, upperQuartile, maximum;
5585 QVector<double> outliers;
5606 Q_PROPERTY(
double width READ width WRITE setWidth)
5607 Q_PROPERTY(
double whiskerWidth READ whiskerWidth WRITE setWhiskerWidth)
5608 Q_PROPERTY(QPen whiskerPen READ whiskerPen WRITE setWhiskerPen)
5609 Q_PROPERTY(QPen whiskerBarPen READ whiskerBarPen WRITE setWhiskerBarPen)
5610 Q_PROPERTY(
bool whiskerAntialiased READ whiskerAntialiased WRITE setWhiskerAntialiased)
5611 Q_PROPERTY(QPen medianPen READ medianPen WRITE setMedianPen)
5612 Q_PROPERTY(
QCPScatterStyle outlierStyle READ outlierStyle WRITE setOutlierStyle)
5618 QSharedPointer<QCPStatisticalBoxDataContainer>
data()
const {
return mDataContainer; }
5628 void setData(QSharedPointer<QCPStatisticalBoxDataContainer> data);
5629 void setData(
const QVector<double> &keys,
const QVector<double> &minimum,
const QVector<double> &lowerQuartile,
const QVector<double> &median,
const QVector<double> &upperQuartile,
const QVector<double> &maximum,
bool alreadySorted=
false);
5630 void setWidth(
double width);
5631 void setWhiskerWidth(
double width);
5632 void setWhiskerPen(
const QPen &pen);
5633 void setWhiskerBarPen(
const QPen &pen);
5634 void setWhiskerAntialiased(
bool enabled);
5635 void setMedianPen(
const QPen &pen);
5639 void addData(
const QVector<double> &keys,
const QVector<double> &minimum,
const QVector<double> &lowerQuartile,
const QVector<double> &median,
const QVector<double> &upperQuartile,
const QVector<double> &maximum,
bool alreadySorted=
false);
5640 void addData(
double key,
double minimum,
double lowerQuartile,
double median,
double upperQuartile,
double maximum,
const QVector<double> &outliers=QVector<double>());
5644 virtual double selectTest(
const QPointF &pos,
bool onlySelectable, QVariant *details=0) const Q_DECL_OVERRIDE;
5645 virtual
QCPRange getKeyRange(
bool &foundRange, QCP::
SignDomain inSignDomain=QCP::sdBoth) const Q_DECL_OVERRIDE;
5651 double mWhiskerWidth;
5652 QPen mWhiskerPen, mWhiskerBarPen;
5653 bool mWhiskerAntialiased;
5658 virtual
void draw(
QCPPainter *painter) Q_DECL_OVERRIDE;
5659 virtual
void drawLegendIcon(
QCPPainter *painter, const QRectF &rect) const Q_DECL_OVERRIDE;
5670 friend class QCustomPlot;
5671 friend class QCPLegend;
5683 QCPColorMapData(
int keySize,
int valueSize,
const QCPRange &keyRange,
const QCPRange &valueRange);
5685 QCPColorMapData(
const QCPColorMapData &other);
5686 QCPColorMapData &operator=(
const QCPColorMapData &other);
5694 double data(
double key,
double value);
5695 double cell(
int keyIndex,
int valueIndex);
5696 unsigned char alpha(
int keyIndex,
int valueIndex);
5699 void setSize(
int keySize,
int valueSize);
5700 void setKeySize(
int keySize);
5701 void setValueSize(
int valueSize);
5703 void setKeyRange(
const QCPRange &keyRange);
5704 void setValueRange(
const QCPRange &valueRange);
5705 void setData(
double key,
double value,
double z);
5706 void setCell(
int keyIndex,
int valueIndex,
double z);
5707 void setAlpha(
int keyIndex,
int valueIndex,
unsigned char alpha);
5710 void recalculateDataBounds();
5713 void fill(
double z);
5714 void fillAlpha(
unsigned char alpha);
5716 void coordToCell(
double key,
double value,
int *keyIndex,
int *valueIndex)
const;
5717 void cellToCoord(
int keyIndex,
int valueIndex,
double *key,
double *value)
const;
5721 int mKeySize, mValueSize;
5727 unsigned char *mAlpha;
5731 bool createAlpha(
bool initializeOpaque=
true);
5741 Q_PROPERTY(
QCPRange dataRange READ dataRange WRITE setDataRange NOTIFY dataRangeChanged)
5742 Q_PROPERTY(
QCPAxis::ScaleType dataScaleType READ dataScaleType WRITE setDataScaleType NOTIFY dataScaleTypeChanged)
5743 Q_PROPERTY(
QCPColorGradient gradient READ gradient WRITE setGradient NOTIFY gradientChanged)
5744 Q_PROPERTY(
bool interpolate READ interpolate WRITE setInterpolate)
5745 Q_PROPERTY(
bool tightBoundary READ tightBoundary WRITE setTightBoundary)
5746 Q_PROPERTY(
QCPColorScale* colorScale READ colorScale WRITE setColorScale)
5749 explicit QCPColorMap(QCPAxis *keyAxis, QCPAxis *valueAxis);
5763 Q_SLOT
void setDataRange(
const QCPRange &dataRange);
5766 void setInterpolate(
bool enabled);
5767 void setTightBoundary(
bool enabled);
5771 void rescaleDataRange(
bool recalculateDataBounds=
false);
5772 Q_SLOT
void updateLegendIcon(Qt::TransformationMode transformMode=Qt::SmoothTransformation,
const QSize &thumbSize=QSize(32, 18));
5775 virtual double selectTest(
const QPointF &pos,
bool onlySelectable, QVariant *details=0) const Q_DECL_OVERRIDE;
5776 virtual
QCPRange getKeyRange(
bool &foundRange, QCP::
SignDomain inSignDomain=QCP::sdBoth) const Q_DECL_OVERRIDE;
5780 void dataRangeChanged(const
QCPRange &newRange);
5781 void dataScaleTypeChanged(QCPAxis::ScaleType scaleType);
5787 QCPAxis::ScaleType mDataScaleType;
5791 bool mTightBoundary;
5795 QImage mMapImage, mUndersampledMapImage;
5796 QPixmap mLegendIcon;
5797 bool mMapImageInvalidated;
5800 virtual
void updateMapImage();
5803 virtual
void draw(
QCPPainter *painter) Q_DECL_OVERRIDE;
5804 virtual
void drawLegendIcon(
QCPPainter *painter, const QRectF &rect) const Q_DECL_OVERRIDE;
5806 friend class QCustomPlot;
5807 friend class QCPLegend;
5820 QCPFinancialData(
double key,
double open,
double high,
double low,
double close);
5823 inline static QCPFinancialData
fromSortKey(
double sortKey) {
return QCPFinancialData(sortKey, 0, 0, 0, 0); }
5831 double key, open, high, low, close;
5851 Q_PROPERTY(ChartStyle chartStyle READ chartStyle WRITE setChartStyle)
5852 Q_PROPERTY(
double width READ width WRITE setWidth)
5853 Q_PROPERTY(WidthType widthType READ widthType WRITE setWidthType)
5854 Q_PROPERTY(
bool twoColored READ twoColored WRITE setTwoColored)
5855 Q_PROPERTY(QBrush brushPositive READ brushPositive WRITE setBrushPositive)
5856 Q_PROPERTY(QBrush brushNegative READ brushNegative WRITE setBrushNegative)
5857 Q_PROPERTY(QPen penPositive READ penPositive WRITE setPenPositive)
5858 Q_PROPERTY(QPen penNegative READ penNegative WRITE setPenNegative)
5883 explicit
QCPFinancial(QCPAxis *keyAxis, QCPAxis *valueAxis);
5898 void setData(QSharedPointer<QCPFinancialDataContainer> data);
5899 void setData(
const QVector<double> &keys,
const QVector<double> &open,
const QVector<double> &high,
const QVector<double> &low,
const QVector<double> &close,
bool alreadySorted=
false);
5900 void setChartStyle(ChartStyle style);
5901 void setWidth(
double width);
5902 void setWidthType(WidthType widthType);
5903 void setTwoColored(
bool twoColored);
5904 void setBrushPositive(
const QBrush &brush);
5905 void setBrushNegative(
const QBrush &brush);
5906 void setPenPositive(
const QPen &pen);
5907 void setPenNegative(
const QPen &pen);
5910 void addData(
const QVector<double> &keys,
const QVector<double> &open,
const QVector<double> &high,
const QVector<double> &low,
const QVector<double> &close,
bool alreadySorted=
false);
5911 void addData(
double key,
double open,
double high,
double low,
double close);
5915 virtual double selectTest(
const QPointF &pos,
bool onlySelectable, QVariant *details=0) const Q_DECL_OVERRIDE;
5916 virtual
QCPRange getKeyRange(
bool &foundRange, QCP::
SignDomain inSignDomain=QCP::sdBoth) const Q_DECL_OVERRIDE;
5920 static
QCPFinancialDataContainer timeSeriesToOhlc(const QVector<
double> &time, const QVector<
double> &value,
double timeBinSize,
double timeBinOffset = 0);
5924 ChartStyle mChartStyle;
5926 WidthType mWidthType;
5928 QBrush mBrushPositive, mBrushNegative;
5929 QPen mPenPositive, mPenNegative;
5932 virtual
void draw(
QCPPainter *painter) Q_DECL_OVERRIDE;
5933 virtual
void drawLegendIcon(
QCPPainter *painter, const QRectF &rect) const Q_DECL_OVERRIDE;
5938 double getPixelWidth(
double key,
double keyPixel) const;
5944 friend class QCustomPlot;
5945 friend class QCPLegend;
5959 explicit QCPErrorBarsData(
double error);
5960 QCPErrorBarsData(
double errorMinus,
double errorPlus);
5962 double errorMinus, errorPlus;
5988 Q_PROPERTY(QSharedPointer<QCPErrorBarsDataContainer> data READ data WRITE setData)
5989 Q_PROPERTY(QCPAbstractPlottable* dataPlottable READ dataPlottable WRITE setDataPlottable)
5990 Q_PROPERTY(ErrorType errorType READ errorType WRITE setErrorType)
5991 Q_PROPERTY(
double whiskerWidth READ whiskerWidth WRITE setWhiskerWidth)
5992 Q_PROPERTY(
double symbolGap READ symbolGap WRITE setSymbolGap)
6007 explicit
QCPErrorBars(QCPAxis *keyAxis, QCPAxis *valueAxis);
6017 void setData(QSharedPointer<QCPErrorBarsDataContainer> data);
6018 void setData(
const QVector<double> &
error);
6019 void setData(
const QVector<double> &errorMinus,
const QVector<double> &errorPlus);
6020 void setDataPlottable(QCPAbstractPlottable* plottable);
6021 void setErrorType(ErrorType type);
6022 void setWhiskerWidth(
double pixels);
6023 void setSymbolGap(
double pixels);
6026 void addData(
const QVector<double> &
error);
6027 void addData(
const QVector<double> &errorMinus,
const QVector<double> &errorPlus);
6028 void addData(
double error);
6029 void addData(
double errorMinus,
double errorPlus);
6032 virtual int dataCount() const Q_DECL_OVERRIDE;
6033 virtual
double dataMainKey(
int index) const Q_DECL_OVERRIDE;
6034 virtual
double dataSortKey(
int index) const Q_DECL_OVERRIDE;
6035 virtual
double dataMainValue(
int index) const Q_DECL_OVERRIDE;
6036 virtual
QCPRange dataValueRange(
int index) const Q_DECL_OVERRIDE;
6037 virtual QPointF dataPixelPosition(
int index) const Q_DECL_OVERRIDE;
6038 virtual
bool sortKeyIsMainKey() const Q_DECL_OVERRIDE;
6039 virtual
QCPDataSelection selectTestRect(const QRectF &rect,
bool onlySelectable) const Q_DECL_OVERRIDE;
6040 virtual
int findBegin(
double sortKey,
bool expandedRange=true) const Q_DECL_OVERRIDE;
6041 virtual
int findEnd(
double sortKey,
bool expandedRange=true) const Q_DECL_OVERRIDE;
6044 virtual
double selectTest(const QPointF &pos,
bool onlySelectable, QVariant *details=0) const Q_DECL_OVERRIDE;
6049 QSharedPointer<QCPErrorBarsDataContainer> mDataContainer;
6050 QPointer<QCPAbstractPlottable> mDataPlottable;
6051 ErrorType mErrorType;
6052 double mWhiskerWidth;
6062 void getErrorBarLines(
QCPErrorBarsDataContainer::const_iterator it, QVector<QLineF> &backbones, QVector<QLineF> &whiskers) const;
6067 bool errorBarVisible(
int index) const;
6068 bool rectIntersectsLine(const QRectF &pixelRect, const QLineF &line) const;
6070 friend class QCustomPlot;
6071 friend class QCPLegend;
6084 Q_PROPERTY(QPen pen READ pen WRITE setPen)
6085 Q_PROPERTY(QPen selectedPen READ selectedPen WRITE setSelectedPen)
6092 QPen
pen()
const {
return mPen; }
6096 void setPen(
const QPen &pen);
6097 void setSelectedPen(
const QPen &pen);
6100 virtual double selectTest(
const QPointF &pos,
bool onlySelectable, QVariant *details=0) const Q_DECL_OVERRIDE;
6107 QPen mPen, mSelectedPen;
6110 virtual
void draw(
QCPPainter *painter) Q_DECL_OVERRIDE;
6113 QLineF getRectClippedStraightLine(const
QCPVector2D &point1, const
QCPVector2D &vec, const QRect &rect) const;
6114 QPen mainPen() const;
6127 Q_PROPERTY(QPen pen READ pen WRITE setPen)
6128 Q_PROPERTY(QPen selectedPen READ selectedPen WRITE setSelectedPen)
6137 QPen
pen()
const {
return mPen; }
6143 void setPen(
const QPen &pen);
6144 void setSelectedPen(
const QPen &pen);
6149 virtual double selectTest(
const QPointF &pos,
bool onlySelectable, QVariant *details=0) const Q_DECL_OVERRIDE;
6156 QPen mPen, mSelectedPen;
6160 virtual
void draw(
QCPPainter *painter) Q_DECL_OVERRIDE;
6164 QPen mainPen() const;
6177 Q_PROPERTY(QPen pen READ pen WRITE setPen)
6178 Q_PROPERTY(QPen selectedPen READ selectedPen WRITE setSelectedPen)
6187 QPen
pen()
const {
return mPen; }
6193 void setPen(
const QPen &pen);
6194 void setSelectedPen(
const QPen &pen);
6199 virtual double selectTest(
const QPointF &pos,
bool onlySelectable, QVariant *details=0) const Q_DECL_OVERRIDE;
6208 QPen mPen, mSelectedPen;
6212 virtual
void draw(
QCPPainter *painter) Q_DECL_OVERRIDE;
6215 QPen mainPen() const;
6228 Q_PROPERTY(QPen pen READ pen WRITE setPen)
6229 Q_PROPERTY(QPen selectedPen READ selectedPen WRITE setSelectedPen)
6230 Q_PROPERTY(QBrush brush READ brush WRITE setBrush)
6231 Q_PROPERTY(QBrush selectedBrush READ selectedBrush WRITE setSelectedBrush)
6238 QPen
pen()
const {
return mPen; }
6244 void setPen(
const QPen &pen);
6245 void setSelectedPen(
const QPen &pen);
6246 void setBrush(
const QBrush &brush);
6247 void setSelectedBrush(
const QBrush &brush);
6250 virtual double selectTest(
const QPointF &pos,
bool onlySelectable, QVariant *details=0) const Q_DECL_OVERRIDE;
6254 QCPItemAnchor * const top;
6255 QCPItemAnchor * const topRight;
6256 QCPItemAnchor * const right;
6257 QCPItemAnchor * const bottom;
6258 QCPItemAnchor * const bottomLeft;
6259 QCPItemAnchor * const left;
6265 QPen mPen, mSelectedPen;
6266 QBrush mBrush, mSelectedBrush;
6270 virtual QPointF anchorPixelPosition(
int anchorId)
const Q_DECL_OVERRIDE;
6273 QPen mainPen()
const;
6274 QBrush mainBrush()
const;
6287 Q_PROPERTY(QColor color READ color WRITE setColor)
6288 Q_PROPERTY(QColor selectedColor READ selectedColor WRITE setSelectedColor)
6289 Q_PROPERTY(QPen pen READ pen WRITE setPen)
6290 Q_PROPERTY(QPen selectedPen READ selectedPen WRITE setSelectedPen)
6291 Q_PROPERTY(QBrush brush READ brush WRITE setBrush)
6292 Q_PROPERTY(QBrush selectedBrush READ selectedBrush WRITE setSelectedBrush)
6293 Q_PROPERTY(QFont font READ font WRITE setFont)
6294 Q_PROPERTY(QFont selectedFont READ selectedFont WRITE setSelectedFont)
6295 Q_PROPERTY(QString text READ text WRITE setText)
6296 Q_PROPERTY(Qt::Alignment positionAlignment READ positionAlignment WRITE setPositionAlignment)
6297 Q_PROPERTY(Qt::Alignment textAlignment READ textAlignment WRITE setTextAlignment)
6298 Q_PROPERTY(
double rotation READ rotation WRITE setRotation)
6299 Q_PROPERTY(QMargins padding READ padding WRITE setPadding)
6308 QPen
pen()
const {
return mPen; }
6312 QFont
font()
const {
return mFont; }
6314 QString
text()
const {
return mText; }
6321 void setColor(
const QColor &color);
6322 void setSelectedColor(
const QColor &color);
6323 void setPen(
const QPen &pen);
6324 void setSelectedPen(
const QPen &pen);
6325 void setBrush(
const QBrush &brush);
6326 void setSelectedBrush(
const QBrush &brush);
6327 void setFont(
const QFont &font);
6328 void setSelectedFont(
const QFont &font);
6329 void setText(
const QString &text);
6330 void setPositionAlignment(Qt::Alignment alignment);
6331 void setTextAlignment(Qt::Alignment alignment);
6332 void setRotation(
double degrees);
6333 void setPadding(
const QMargins &padding);
6336 virtual double selectTest(
const QPointF &pos,
bool onlySelectable, QVariant *details=0) const Q_DECL_OVERRIDE;
6339 QCPItemAnchor * const topLeft;
6340 QCPItemAnchor * const top;
6341 QCPItemAnchor * const topRight;
6342 QCPItemAnchor * const right;
6343 QCPItemAnchor * const bottomRight;
6344 QCPItemAnchor * const bottom;
6345 QCPItemAnchor * const bottomLeft;
6346 QCPItemAnchor * const left;
6349 enum AnchorIndex {aiTopLeft, aiTop, aiTopRight, aiRight, aiBottomRight, aiBottom, aiBottomLeft, aiLeft};
6352 QColor mColor, mSelectedColor;
6353 QPen mPen, mSelectedPen;
6354 QBrush mBrush, mSelectedBrush;
6355 QFont mFont, mSelectedFont;
6357 Qt::Alignment mPositionAlignment;
6358 Qt::Alignment mTextAlignment;
6364 virtual QPointF anchorPixelPosition(
int anchorId)
const Q_DECL_OVERRIDE;
6367 QPointF getTextDrawPoint(
const QPointF &pos,
const QRectF &rect, Qt::Alignment positionAlignment)
const;
6368 QFont mainFont()
const;
6369 QColor mainColor()
const;
6370 QPen mainPen()
const;
6371 QBrush mainBrush()
const;
6384 Q_PROPERTY(QPen pen READ pen WRITE setPen)
6385 Q_PROPERTY(QPen selectedPen READ selectedPen WRITE setSelectedPen)
6386 Q_PROPERTY(QBrush brush READ brush WRITE setBrush)
6387 Q_PROPERTY(QBrush selectedBrush READ selectedBrush WRITE setSelectedBrush)
6394 QPen
pen()
const {
return mPen; }
6400 void setPen(
const QPen &pen);
6401 void setSelectedPen(
const QPen &pen);
6402 void setBrush(
const QBrush &brush);
6403 void setSelectedBrush(
const QBrush &brush);
6406 virtual double selectTest(
const QPointF &pos,
bool onlySelectable, QVariant *details=0) const Q_DECL_OVERRIDE;
6410 QCPItemAnchor * const topLeftRim;
6411 QCPItemAnchor * const top;
6412 QCPItemAnchor * const topRightRim;
6413 QCPItemAnchor * const right;
6414 QCPItemAnchor * const bottomRightRim;
6415 QCPItemAnchor * const bottom;
6416 QCPItemAnchor * const bottomLeftRim;
6417 QCPItemAnchor * const left;
6418 QCPItemAnchor * const center;
6421 enum AnchorIndex {aiTopLeftRim, aiTop, aiTopRightRim, aiRight, aiBottomRightRim, aiBottom, aiBottomLeftRim, aiLeft, aiCenter};
6424 QPen mPen, mSelectedPen;
6425 QBrush mBrush, mSelectedBrush;
6429 virtual QPointF anchorPixelPosition(
int anchorId)
const Q_DECL_OVERRIDE;
6432 QPen mainPen()
const;
6433 QBrush mainBrush()
const;
6446 Q_PROPERTY(QPixmap pixmap READ pixmap WRITE setPixmap)
6447 Q_PROPERTY(
bool scaled READ scaled WRITE setScaled)
6448 Q_PROPERTY(Qt::AspectRatioMode aspectRatioMode READ aspectRatioMode)
6449 Q_PROPERTY(Qt::TransformationMode transformationMode READ transformationMode)
6450 Q_PROPERTY(QPen pen READ pen WRITE setPen)
6451 Q_PROPERTY(QPen selectedPen READ selectedPen WRITE setSelectedPen)
6462 QPen
pen()
const {
return mPen; }
6466 void setPixmap(
const QPixmap &pixmap);
6467 void setScaled(
bool scaled, Qt::AspectRatioMode aspectRatioMode=Qt::KeepAspectRatio, Qt::TransformationMode transformationMode=Qt::SmoothTransformation);
6468 void setPen(
const QPen &pen);
6469 void setSelectedPen(
const QPen &pen);
6472 virtual double selectTest(
const QPointF &pos,
bool onlySelectable, QVariant *details=0) const Q_DECL_OVERRIDE;
6476 QCPItemAnchor * const top;
6477 QCPItemAnchor * const topRight;
6478 QCPItemAnchor * const right;
6479 QCPItemAnchor * const bottom;
6480 QCPItemAnchor * const bottomLeft;
6481 QCPItemAnchor * const left;
6488 QPixmap mScaledPixmap;
6490 bool mScaledPixmapInvalidated;
6491 Qt::AspectRatioMode mAspectRatioMode;
6492 Qt::TransformationMode mTransformationMode;
6493 QPen mPen, mSelectedPen;
6497 virtual QPointF anchorPixelPosition(
int anchorId)
const Q_DECL_OVERRIDE;
6500 void updateScaledPixmap(QRect finalRect=QRect(),
bool flipHorz=
false,
bool flipVert=
false);
6501 QRect getFinalRect(
bool *flippedHorz=0,
bool *flippedVert=0)
const;
6502 QPen mainPen()
const;
6515 Q_PROPERTY(QPen pen READ pen WRITE setPen)
6516 Q_PROPERTY(QPen selectedPen READ selectedPen WRITE setSelectedPen)
6517 Q_PROPERTY(QBrush brush READ brush WRITE setBrush)
6518 Q_PROPERTY(QBrush selectedBrush READ selectedBrush WRITE setSelectedBrush)
6519 Q_PROPERTY(
double size READ size WRITE setSize)
6520 Q_PROPERTY(TracerStyle style READ style WRITE setStyle)
6521 Q_PROPERTY(
QCPGraph* graph READ graph WRITE setGraph)
6522 Q_PROPERTY(
double graphKey READ graphKey WRITE setGraphKey)
6523 Q_PROPERTY(
bool interpolating READ interpolating WRITE setInterpolating)
6537 Q_ENUMS(TracerStyle)
6543 QPen pen()
const {
return mPen; }
6547 double size()
const {
return mSize; }
6554 void setPen(
const QPen &pen);
6555 void setSelectedPen(
const QPen &pen);
6556 void setBrush(
const QBrush &brush);
6557 void setSelectedBrush(
const QBrush &brush);
6558 void setSize(
double size);
6559 void setStyle(TracerStyle style);
6561 void setGraphKey(
double key);
6562 void setInterpolating(
bool enabled);
6565 virtual double selectTest(
const QPointF &pos,
bool onlySelectable, QVariant *details=0) const Q_DECL_OVERRIDE;
6568 void updatePosition();
6574 QPen mPen, mSelectedPen;
6575 QBrush mBrush, mSelectedBrush;
6580 bool mInterpolating;
6583 virtual
void draw(
QCPPainter *painter) Q_DECL_OVERRIDE;
6586 QPen mainPen() const;
6587 QBrush mainBrush() const;
6601 Q_PROPERTY(QPen pen READ pen WRITE setPen)
6602 Q_PROPERTY(QPen selectedPen READ selectedPen WRITE setSelectedPen)
6603 Q_PROPERTY(
double length READ length WRITE setLength)
6604 Q_PROPERTY(BracketStyle style READ style WRITE setStyle)
6618 Q_ENUMS(BracketStyle)
6624 QPen pen()
const {
return mPen; }
6630 void setPen(
const QPen &pen);
6631 void setSelectedPen(
const QPen &pen);
6632 void setLength(
double length);
6633 void setStyle(BracketStyle style);
6636 virtual double selectTest(
const QPointF &pos,
bool onlySelectable, QVariant *details=0) const Q_DECL_OVERRIDE;
6640 QCPItemAnchor * const center;
6645 QPen mPen, mSelectedPen;
6647 BracketStyle mStyle;
6651 virtual QPointF anchorPixelPosition(
int anchorId)
const Q_DECL_OVERRIDE;
6654 QPen mainPen()
const;
6661 #endif // QCUSTOMPLOT_H
virtual void donePainting()
Definition: qcustomPlot.h:533
One individual data point can be selected at a time.
Definition: qcustomplot.h:293
QCP::AntialiasedElements antialiasedElements() const
Definition: qcustomPlot.h:3630
bool isNull() const
Definition: qcustomPlot.h:406
0x01 The pen property, see setPen
Definition: qcustomplot.h:2301
ColorInterpolation
Definition: qcustomplot.h:4439
BracketStyle
Definition: qcustomplot.h:6613
QCPAxis::AxisType type() const
Definition: qcustomPlot.h:5057
QCPAxis * valueAxis() const
Definition: qcustomPlot.h:3313
QPen selectedPen() const
Definition: qcustomPlot.h:6544
0x0001 Axis base line and tick marks
Definition: qcustomplot.h:214
double value
Definition: easylogging++.h:814
int keySize() const
Definition: qcustomPlot.h:5689
QCPRange valueRange() const
Definition: qcustomPlot.h:5692
The base class tick generator used by QCPAxis to create tick positions and tick labels.
Definition: qcustomplot.h:1533
QFont selectedFont() const
Definition: qcustomPlot.h:4950
bool isNone() const
Definition: qcustomPlot.h:2365
QCPRange dataRange() const
Definition: qcustomPlot.h:5754
bool tightBoundary() const
Definition: qcustomPlot.h:5757
optional bool index
Definition: topics.proto:34
const_iterator constBegin() const
Definition: qcustomPlot.h:2434
Manages the position of an item.
Definition: qcustomplot.h:3435
EndingStyle
Definition: qcustomplot.h:1484
QColor labelColor() const
Definition: qcustomPlot.h:2032
QFont font() const
Definition: qcustomPlot.h:4725
Selection behaves like stMultipleDataRanges, but if there are any data points selected, the entire plottable is drawn as selected.
Definition: qcustomplot.h:292
void performAutoSqueeze()
Definition: qcustomplot.h:3211
virtual int findBegin(double sortKey, bool expandedRange=true) const Q_DECL_OVERRIDE
Definition: qcustomplot.h:4263
0x00 no margin
Definition: qcustomplot.h:201
bool isEmpty() const
Definition: qcustomPlot.h:5715
QPen selectedPen() const
Definition: qcustomPlot.h:6625
int size() const
Definition: qcustomPlot.h:5409
bool isEmpty() const
Definition: qcustomPlot.h:2414
A text label.
Definition: qcustomplot.h:6283
bool isEmpty() const
Definition: qcustomPlot.h:958
QPen pen() const
Definition: qcustomPlot.h:6308
QPoint bottomLeft() const
Definition: qcustomPlot.h:4653
QRect rect() const
Definition: qcustomPlot.h:1102
LineStyle lineStyle() const
Definition: qcustomPlot.h:5318
0x020 Legends are selectable (or their child items, see QCPLegend::setSelectableParts) ...
Definition: qcustomplot.h:256
void setX(double x)
Definition: qcustomPlot.h:397
The negative sign domain, i.e. numbers smaller than zero.
Definition: qcustomplot.h:186
QColor selectedTickLabelColor() const
Definition: qcustomPlot.h:2041
bool visible() const
Definition: qcustomPlot.h:707
WidthType widthType() const
Definition: qcustomPlot.h:5890
QSharedPointer< QCPAxisTicker > ticker() const
Definition: qcustomPlot.h:2011
QBrush bracketBrush() const
Definition: qcustomPlot.h:4537
The abstract base class for layouts.
Definition: qcustomplot.h:1282
QColor textColor() const
Definition: qcustomPlot.h:4949
QPointF toPointF() const
Definition: qcustomPlot.h:404
Specialized axis ticker to display ticks in units of an arbitrary constant, for example pi...
Definition: qcustomplot.h:1768
bool antialiasedScatters() const
Definition: qcustomPlot.h:3309
QPen pen() const
Definition: qcustomPlot.h:1878
void setBegin(int begin)
Definition: qcustomPlot.h:906
Cosmetic pens are exported normally (e.g. in PDF exports, cosmetic pens always appear as 1 pixel on s...
Definition: qcustomplot.h:176
QList< QCPLayerable * > children() const
Definition: qcustomPlot.h:655
bool backgroundScaled() const
Definition: qcustomPlot.h:4599
A curved line from one point to another.
Definition: qcustomplot.h:6173
int scatterSkip() const
Definition: qcustomPlot.h:5185
0xFF all margins
Definition: qcustomplot.h:200
const QCPRange range() const
Definition: qcustomPlot.h:2009
double graphKey() const
Definition: qcustomPlot.h:6550
QFont selectedFont() const
Definition: qcustomPlot.h:6313
double mainKey() const
Definition: qcustomPlot.h:5450
#define max(a, b)
Definition: clipm_math_correlation.c:57
QCPRange valueRange() const
Definition: qcustomPlot.h:5576
0x0100 Borders of fills (e.g. under or between graphs)
Definition: qcustomplot.h:222
Controls how a plottable's data selection is drawn.
Definition: qcustomplot.h:3240
void remove(double sortKeyFrom, double sortKeyTo)
Definition: qcustomplot.h:2789
double sortKey() const
Definition: qcustomPlot.h:5822
Represents the range an axis is encompassing.
Definition: qcustomplot.h:772
Multiple contiguous data points (a data range) can be selected.
Definition: qcustomplot.h:294
An arbitrary pixmap.
Definition: qcustomplot.h:6442
LineStyle
Definition: qcustomplot.h:5168
AnchorIndex
Definition: qcustomplot.h:6484
LayerMode
Definition: qcustomplot.h:643
int width() const
Definition: qcustomPlot.h:4648
double width() const
Definition: qcustomPlot.h:5619
QCPColorGradient gradient() const
Definition: qcustomPlot.h:5060
QPen pen() const
Definition: qcustomPlot.h:6238
QCPItemAnchor * parentAnchorX() const
Definition: qcustomPlot.h:3464
bool twoColored() const
Definition: qcustomPlot.h:5891
double value() const
Definition: qcustomPlot.h:3467
QCPBars * barBelow() const
Definition: qcustomPlot.h:5505
int selectionTolerance() const
Definition: qcustomPlot.h:3634
0x08 bottom margin
Definition: qcustomplot.h:199
QPen medianPen() const
Definition: qcustomPlot.h:5624
A straight line that spans infinitely in both directions.
Definition: qcustomplot.h:6080
virtual void mousePressEvent(QMouseEvent *event, const QVariant &details)
Definition: qcustomplot.cpp:1711
Qt::TransformationMode transformationMode() const
Definition: qcustomPlot.h:6461
QBrush brush() const
Definition: qcustomPlot.h:6240
bool isActive() const
Definition: qcustomPlot.h:1106
double whiskerWidth() const
Definition: qcustomPlot.h:5620
QCPVector2D perpendicular() const
Definition: qcustomPlot.h:409
QCPScatterStyle scatterStyle() const
Definition: qcustomPlot.h:3250
QCPLayoutInset * insetLayout() const
Definition: qcustomPlot.h:4634
void drawPolyline(QCPPainter *painter, const QVector< QPointF > &lineData) const
Definition: qcustomplot.h:4377
QCPLineEnding tail() const
Definition: qcustomPlot.h:6190
int numberPrecision() const
Definition: qcustomPlot.h:2020
double & rx()
Definition: qcustomPlot.h:393
QBrush brushNegative() const
Definition: qcustomPlot.h:5893
Holds the data of one single data point for QCPCurve.
Definition: qcustomplot.h:5260
QSize minimumSize() const
Definition: qcustomPlot.h:1226
QPen selectedPen() const
Definition: qcustomPlot.h:6239
QPen selectedSubTickPen() const
Definition: qcustomPlot.h:2045
QRect labelSelectionBox() const
Definition: qcustomPlot.h:2228
double length() const
Definition: qcustomPlot.h:6626
QCPRange valueRange() const
Definition: qcustomPlot.h:5273
bool rangeReversed() const
Definition: qcustomPlot.h:2010
QPen whiskerPen() const
Definition: qcustomPlot.h:5621
virtual QCPPlottableInterface1D * interface1D()
Definition: qcustomPlot.h:3333
The positive sign domain, i.e. numbers greater than zero.
Definition: qcustomplot.h:188
Any combination of data points/ranges can be selected.
Definition: qcustomplot.h:295
QCPDataContainer< QCPFinancialData > QCPFinancialDataContainer
Definition: qcustomplot.h:5845
bool whiskerAntialiased() const
Definition: qcustomPlot.h:5623
0x04 top margin
Definition: qcustomplot.h:198
QVector< DataType >::const_iterator const_iterator
Definition: qcustomPlot.h:2407
QCPBarsGroup * barsGroup() const
Definition: qcustomPlot.h:5502
Holds the data of one single data point (one bar) for QCPBars.
Definition: qcustomplot.h:5440
InsetPlacement
Definition: qcustomplot.h:1420
The selection rect is disabled, and all mouse events are forwarded to the underlying objects...
Definition: qcustomplot.h:267
double length() const
Definition: qcustomPlot.h:401
QCPRange valueRange(bool &foundRange, QCP::SignDomain signDomain=QCP::sdBoth, const QCPRange &inKeyRange=QCPRange())
Definition: qcustomplot.h:3075
Provides rect/rubber-band data selection and range zoom interaction.
Definition: qcustomplot.h:1094
QCPScatterStyle::ScatterProperties usedScatterProperties() const
Definition: qcustomPlot.h:3251
ErrorType
Definition: qcustomplot.h:6002
double devicePixelRatio() const
Definition: qcustomPlot.h:524
Definition: qcustomplot.h:5014
QSharedPointer< QCPStatisticalBoxDataContainer > data() const
Definition: qcustomPlot.h:5618
QString dateTimeFormat() const
Definition: qcustomPlot.h:1600
0x0000 No elements
Definition: qcustomplot.h:226
QCPAxis * keyAxis() const
Definition: qcustomPlot.h:3312
QPen pen() const
Definition: qcustomPlot.h:3310
FillOrder fillOrder() const
Definition: qcustomPlot.h:1360
QList< double > columnStretchFactors() const
Definition: qcustomPlot.h:1355
Represents the visual appearance of scatter points.
Definition: qcustomplot.h:2288
bool antialiased() const
Definition: qcustomPlot.h:711
DateStrategy
Definition: qcustomplot.h:1620
int columnSpacing() const
Definition: qcustomPlot.h:1357
static QCPStatisticalBoxData fromSortKey(double sortKey)
Definition: qcustomPlot.h:5570
QCPLayoutGrid * plotLayout() const
Definition: qcustomPlot.h:3629
double width() const
Definition: qcustomPlot.h:1502
ScaleType scaleType() const
Definition: qcustomPlot.h:2008
QPen selectedPen() const
Definition: qcustomPlot.h:6138
void removeBefore(double sortKey)
Definition: qcustomplot.h:2757
Qt::Alignment textAlignment() const
Definition: qcustomPlot.h:6316
bool backgroundScaled() const
Definition: qcustomPlot.h:3627
bool selectable() const
Definition: qcustomPlot.h:4952
class devmgr::@20 enum
{{cookiecutter.device_name|capitalize()}} Local Control System (LCS) Interface (IF) class ...
QCPAxisRect * axisRect() const
Definition: qcustomPlot.h:2007
void set(const QCPDataContainer< DataType > &data)
Definition: qcustomplot.h:2632
const QCPVector2D operator-(const QCPVector2D &vec1, const QCPVector2D &vec2)
Definition: qcustomplot.h:437
const QCPVector2D operator+(const QCPVector2D &vec1, const QCPVector2D &vec2)
Definition: qcustomplot.h:436
double mainKey() const
Definition: qcustomPlot.h:5573
Specialized axis ticker for calendar dates and times as axis ticks.
Definition: qcustomplot.h:1594
QRect axisSelectionBox() const
Definition: qcustomPlot.h:2226
SelectableParts selectedParts() const
Definition: qcustomPlot.h:2037
double rotation() const
Definition: qcustomPlot.h:6317
Defines an abstract interface for one-dimensional plottables.
Definition: qcustomplot.h:3850
ResolutionUnit
Definition: qcustomplot.h:165
double sortKey() const
Definition: qcustomPlot.h:5446
void getDataSegments(QList< QCPDataRange > &selectedSegments, QList< QCPDataRange > &unselectedSegments) const
Definition: qcustomplot.h:4347
double bufferDevicePixelRatio() const
Definition: qcustomPlot.h:3625
QBrush selectedBrush() const
Definition: qcustomPlot.h:6546
Qt::AspectRatioMode backgroundScaledMode() const
Definition: qcustomPlot.h:4600
Specialized axis ticker suited for logarithmic axes.
Definition: qcustomplot.h:1827
bool noAntialiasingOnDrag() const
Definition: qcustomPlot.h:3635
const QCP::Interactions interactions() const
Definition: qcustomPlot.h:3633
QCPSelectionRect * selectionRect() const
Definition: qcustomPlot.h:3639
const_iterator findEnd(double sortKey, bool expandedRange=true) const
Definition: qcustomplot.h:2925
A plottable representing a single statistical box in a plot.
Definition: qcustomplot.h:5602
SignDomain
Definition: qcustomplot.h:186
virtual void applyDefaultAntialiasingHint(QCPPainter *painter) const Q_DECL_OVERRIDE
Definition: qcustomplot.h:1268
QPen penNegative() const
Definition: qcustomPlot.h:5895
virtual void update(UpdatePhase phase) Q_DECL_OVERRIDE
Definition: qcustomplot.cpp:17221
double mainValue() const
Definition: qcustomPlot.h:5827
void simplify()
Definition: qcustomplot.cpp:2571
QColor tickLabelColor() const
Definition: qcustomPlot.h:2016
When dragging the mouse, a selection rect becomes active. Upon releasing, the axes that are currently...
Definition: qcustomplot.h:268
QPen pen() const
Definition: qcustomPlot.h:2350
A rectangle.
Definition: qcustomplot.h:6224
int right() const
Definition: qcustomPlot.h:4645
PositionType typeY() const
Definition: qcustomPlot.h:3462
virtual QCPRange dataValueRange(int index) const Q_DECL_OVERRIDE
Definition: qcustomplot.h:4168
QPointF coords() const
Definition: qcustomPlot.h:3468
QCPRange valueRange() const
Definition: qcustomPlot.h:5134
double upper
Definition: qcustomplot.h:775
QFont labelFont() const
Definition: qcustomPlot.h:2031
double tickOrigin() const
Definition: qcustomPlot.h:1555
RefreshPriority
Definition: qcustomplot.h:3613
double mainValue() const
Definition: qcustomPlot.h:5271
QCPDataRange bounded(const QCPDataRange &other) const
Definition: qcustomplot.cpp:2254
QBrush brush() const
Definition: qcustomPlot.h:6396
bool selected() const
Definition: qcustomPlot.h:4730
QCPAxis * keyAxis() const
Definition: qcustomPlot.h:3469
A layout element displaying a text.
Definition: qcustomplot.h:4926
PainterModes modes() const
Definition: qcustomPlot.h:478
int tickCount() const
Definition: qcustomPlot.h:1554
BracketStyle bracketStyle() const
Definition: qcustomPlot.h:4540
double symbolGap() const
Definition: qcustomPlot.h:6014
double mainKey() const
Definition: qcustomPlot.h:5270
double lengthSquared() const
Definition: qcustomPlot.h:402
QMap< double, QColor > colorStops() const
Definition: qcustomPlot.h:4470
virtual void wheelEvent(QWheelEvent *event) Q_DECL_OVERRIDE
Definition: qcustomplot.cpp:17891
DataType
Data types numeric representations.
Definition: defines.hpp:33
QBrush brush() const
Definition: qcustomPlot.h:6545
QPen selectedPen() const
Definition: qcustomPlot.h:6188
QMargins minimumMargins() const
Definition: qcustomPlot.h:1224
static bool sortKeyIsMainKey()
Definition: qcustomPlot.h:5268
double lower
Definition: qcustomplot.h:775
void setY(double y)
Definition: qcustomPlot.h:398
QBrush brush() const
Definition: qcustomPlot.h:6310
#define Q_DECL_OVERRIDE
Definition: qcustomPlot.h:129
A layer that may contain objects, to control the rendering order.
Definition: qcustomplot.h:623
double sortKey() const
Definition: qcustomPlot.h:5266
0x000 No hints are set
Definition: qcustomplot.h:235
bool selected() const
Definition: qcustomPlot.h:4953
0x004 The user can select multiple objects by holding the modifier set by QCustomPlot::setMultiSelect...
Definition: qcustomplot.h:253
QPen subTickPen() const
Definition: qcustomPlot.h:2030
QCPLegend * parentLegend() const
Definition: qcustomPlot.h:4724
0x080 All other objects are selectable (e.g. your own derived layerables, other layout elements...
Definition: qcustomplot.h:258
Handles the different ending decorations for line-like items.
Definition: qcustomplot.h:1469
virtual ~QCPPlottableInterface1D()
Definition: qcustomPlot.h:3853
QMap< double, QString > & ticks()
Definition: qcustomPlot.h:1735
void drawLine(const QPointF &p1, const QPointF &p2)
Definition: qcustomPlot.h:491
QString name() const
Definition: qcustomPlot.h:3405
Responsible for drawing the grid of a QCPAxis.
Definition: qcustomplot.h:1860
TickStepStrategy
Definition: qcustomplot.h:1542
QBrush selectedBrush() const
Definition: qcustomPlot.h:4844
int bracketHeight() const
Definition: qcustomPlot.h:4539
Resolution is given in dots per meter (dpm)
Definition: qcustomplot.h:165
const_iterator constBegin() const
Definition: qcustomplot.h:2434
virtual QCPItemPosition * toQCPItemPosition()
Definition: qcustomPlot.h:3419
QPen pen() const
Definition: qcustomPlot.h:6092
Describes a data set by holding multiple QCPDataRange instances.
Definition: qcustomplot.h:927
void sort()
Definition: qcustomplot.h:2850
iterator begin()
Definition: qcustomPlot.h:2436
0x0020 Main lines of plottables
Definition: qcustomplot.h:219
double dot(const QCPVector2D &vec) const
Definition: qcustomPlot.h:410
QBrush selectedBrush() const
Definition: qcustomPlot.h:6241
QFont font() const
Definition: qcustomPlot.h:4948
void expand(const QCPRange &otherRange)
Definition: qcustomplot.cpp:1930
QPen selectedPen() const
Definition: qcustomPlot.h:6093
QCPAxis * valueAxis() const
Definition: qcustomPlot.h:3470
ExportPen
Definition: qcustomplot.h:175
bool subTicks() const
Definition: qcustomPlot.h:2025
QPen iconBorderPen() const
Definition: qcustomPlot.h:4839
QPen basePen() const
Definition: qcustomPlot.h:2028
int levelCount() const
Definition: qcustomPlot.h:4469
virtual int dataCount() const Q_DECL_OVERRIDE
Definition: qcustomplot.h:4111
QCPSelectionDecorator * selectionDecorator() const
Definition: qcustomPlot.h:3317
Definition: qcustomplot.h:2216
Defines a color gradient for use with e.g. QCPColorMap.
Definition: qcustomplot.h:4430
ScatterShape
Definition: qcustomplot.h:2318
optional int32 step
Definition: topics.proto:55
AntialiasedElement
Definition: qcustomplot.h:214
QPen tickPen() const
Definition: qcustomPlot.h:2029
double length() const
Definition: qcustomPlot.h:1503
QCPRange valueRange() const
Definition: qcustomPlot.h:5453
0x004 axis (tick) labels will be cached as pixmaps, increasing replot performance.
Definition: qcustomplot.h:240
0x01 left margin
Definition: qcustomplot.h:196
QFont font() const
Definition: qcustomPlot.h:4835
SizeConstraintRect sizeConstraintRect() const
Definition: qcustomPlot.h:1228
An ellipse.
Definition: qcustomplot.h:6380
const_iterator findBegin(double sortKey, bool expandedRange=true) const
Definition: qcustomplot.h:2898
bool periodicity() const
Definition: qcustomPlot.h:1788
QCPRange & operator-=(const double &value)
Definition: qcustomPlot.h:784
int fieldWidth(TimeUnit unit) const
Definition: qcustomPlot.h:1656
Holds the data of one single data point for QCPStatisticalBox.
Definition: qcustomplot.h:5563
bool isValid() const
Definition: qcustomPlot.h:910
Both sign domains, including zero, i.e. all numbers.
Definition: qcustomplot.h:187
AnchorIndex
Definition: qcustomplot.h:6262
bool openGl() const
Definition: qcustomPlot.h:3640
bool selectable() const
Definition: qcustomPlot.h:4729
std::ostream & operator<<(std::ostream &dest, const ChannelData &obj)
Definition: sensorLcsIf.cpp:41
int height() const
Definition: qcustomPlot.h:4649
The central class of the library. This is the QWidget which displays the plot and interacts with the ...
Definition: qcustomplot.h:3582
QFont selectedTickLabelFont() const
Definition: qcustomPlot.h:2039
LabelSide
Definition: qcustomplot.h:1977
QCPMarginGroup * marginGroup(QCP::MarginSide side) const
Definition: qcustomPlot.h:1229
virtual double dataSortKey(int index) const Q_DECL_OVERRIDE
Definition: qcustomplot.h:4136
int iconTextPadding() const
Definition: qcustomPlot.h:4838
int left() const
Definition: qcustomPlot.h:4644
PositionType typeX() const
Definition: qcustomPlot.h:3461
void removeAfter(double sortKey)
Definition: qcustomplot.h:2772
int length() const
Definition: qcustomPlot.h:903
virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const Q_DECL_OVERRIDE
Definition: qcustomplot.h:4285
double whiskerWidth() const
Definition: qcustomPlot.h:6013
QCPDataContainer< QCPGraphData > QCPGraphDataContainer
Definition: qcustomplot.h:5150
SelectableParts selectableParts() const
Definition: qcustomPlot.h:2038
QPen pen() const
Definition: qcustomPlot.h:1104
void squeeze(bool preAllocation=true, bool postAllocation=true)
Definition: qcustomplot.h:2866
QCPRange valueRange() const
Definition: qcustomPlot.h:5829
int tangentAverage() const
Definition: qcustomPlot.h:4542
QCPAxis * axis() const
Definition: qcustomPlot.h:5056
Represents two doubles as a mathematical 2D vector.
Definition: qcustomplot.h:382
QString label() const
Definition: qcustomPlot.h:2033
void preallocateGrow(int minimumPreallocSize)
Definition: qcustomplot.h:3181
bool operator!=(const QCPRange &other) const
Definition: qcustomPlot.h:781
QPen selectedPen() const
Definition: qcustomPlot.h:6309
QPoint toPoint() const
Definition: qcustomPlot.h:403
int getMarginValue(const QMargins &margins, QCP::MarginSide side)
Definition: qcustomplot.h:345
bool contains(double value) const
Definition: qcustomPlot.h:804
double mainKey() const
Definition: qcustomPlot.h:5826
SelectablePart
Definition: qcustomplot.h:1993
QVector< QString > tickVectorLabels() const
Definition: qcustomPlot.h:2022
Qt::Alignment positionAlignment() const
Definition: qcustomPlot.h:6315
ScatterProperty
Definition: qcustomplot.h:2300
The generic data container for one-dimensional plottables.
Definition: qcustomplot.h:2404
BracketStyle
Definition: qcustomplot.h:4524
QPen pen() const
Definition: qcustomPlot.h:3248
Manages a legend inside a QCustomPlot.
Definition: qcustomplot.h:4796
QCPGraph * graph() const
Definition: qcustomPlot.h:6549
double mainValue() const
Definition: qcustomPlot.h:5574
Qt::Orientations rangeDrag() const
Definition: qcustomPlot.h:4601
int subTickCount() const
Definition: qcustomPlot.h:1834
bool inverted() const
Definition: qcustomPlot.h:1504
void setMarginValue(QMargins &margins, QCP::MarginSide side, int value)
Definition: qcustomplot.h:325
LayerMode mode() const
Definition: qcustomPlot.h:657
QSize maximumSize() const
Definition: qcustomPlot.h:1227
QColor color() const
Definition: qcustomPlot.h:6306
QCP::SelectionType selectable() const
Definition: qcustomPlot.h:3314
virtual void mouseReleaseEvent(QMouseEvent *event, const QPointF &startPos) Q_DECL_OVERRIDE
Definition: qcustomplot.cpp:17865
bool periodic() const
Definition: qcustomPlot.h:4472
QPainterPath customPath() const
Definition: qcustomPlot.h:2353
QCPAbstractPlottable * plottable()
Definition: qcustomPlot.h:4779
virtual void mousePressEvent(QMouseEvent *event, const QVariant &details) Q_DECL_OVERRIDE
Definition: qcustomplot.cpp:17773
A layout that arranges child elements in a grid.
Definition: qcustomplot.h:1322
QCPDataRange dataRange(int index=0) const
Definition: qcustomplot.cpp:2515
QPen selectedTickPen() const
Definition: qcustomPlot.h:2044
QCPColorGradient gradient() const
Definition: qcustomPlot.h:5758
static QCPGraphData fromSortKey(double sortKey)
Definition: qcustomPlot.h:5128
QPainter subclass used internally.
Definition: qcustomplot.h:456
The abstract base class for all objects that form the layout system.
Definition: qcustomplot.h:1179
QCP::MarginSides autoMargins() const
Definition: qcustomPlot.h:1225
QCP::PlottingHints plottingHints() const
Definition: qcustomPlot.h:3636
Holds the data of one single data point for QCPGraph.
Definition: qcustomplot.h:5121
bool autoAddPlottableToLegend() const
Definition: qcustomPlot.h:3632
bool tangentToData() const
Definition: qcustomPlot.h:4541
QVector< QCPErrorBarsData > QCPErrorBarsDataContainer
Definition: qcustomplot.h:5982
virtual void mouseReleaseEvent(QMouseEvent *event, const QPointF &startPos)
Definition: qcustomplot.cpp:1747
Holds multiple axes and arranges them in a rectangular shape.
Definition: qcustomplot.h:4582
AnchorIndex
Definition: qcustomplot.h:6644
QPixmap background() const
Definition: qcustomPlot.h:4597
QCPRange dataBounds() const
Definition: qcustomPlot.h:5693
Qt::AspectRatioMode backgroundScaledMode() const
Definition: qcustomPlot.h:3628
ColorInterpolation colorInterpolation() const
Definition: qcustomPlot.h:4471
virtual QCPDataSelection selectTestRect(const QRectF &rect, bool onlySelectable) const Q_DECL_OVERRIDE
Definition: qcustomplot.h:4214
BracketStyle style() const
Definition: qcustomPlot.h:6627
virtual double dataMainValue(int index) const Q_DECL_OVERRIDE
Definition: qcustomplot.h:4152
QColor selectedTextColor() const
Definition: qcustomPlot.h:4846
Resolution is given in dots per centimeter (dpcm)
Definition: qcustomplot.h:166
QVector< DataType >::iterator iterator
Definition: qcustomPlot.h:2408
double stackingGap() const
Definition: qcustomPlot.h:5504
bool subGridVisible() const
Definition: qcustomPlot.h:1875
QColor selectedTextColor() const
Definition: qcustomPlot.h:4728
A color scale for use with color coding data such as QCPColorMap.
Definition: qcustomplot.h:5038
virtual int findEnd(double sortKey, bool expandedRange=true) const Q_DECL_OVERRIDE
Definition: qcustomplot.h:4272
Groups multiple QCPBars together so they appear side by side.
Definition: qcustomplot.h:5375
QPen pen() const
Definition: qcustomPlot.h:6137
void clear()
Definition: qcustomplot.h:2831
class devmgr::@19 upper
{{cookiecutter.device_name}} Configuration class
SelectableParts selectableParts() const
Definition: qcustomPlot.h:4840
A bracket for referencing/highlighting certain parts in the plot.
Definition: qcustomplot.h:6597
QCPScatterStyle outlierStyle() const
Definition: qcustomPlot.h:5625
LayerInsertMode
Definition: qcustomplot.h:3603
The abstract base class for all entries in a QCPLegend.
Definition: qcustomplot.h:4708
SelectionRectMode
Definition: qcustomplot.h:267
WidthType
Definition: qcustomplot.h:5867
double sortKey() const
Definition: qcustomPlot.h:5127
bool autoSqueeze() const
Definition: qcustomPlot.h:2415
QCPItemAnchor * parentAnchor() const
Definition: qcustomPlot.h:3463
Describes a data range given by begin and end index.
Definition: qcustomplot.h:890
LineStyle lineStyle() const
Definition: qcustomPlot.h:5183
QCPRange & operator*=(const double &value)
Definition: qcustomPlot.h:785
0x0010 Legend items
Definition: qcustomplot.h:218
void normalize()
Definition: qcustomPlot.h:796
virtual double dataMainKey(int index) const Q_DECL_OVERRIDE
Definition: qcustomplot.h:4120
UpdatePhase
Definition: qcustomplot.h:1197
QCPLineEnding head() const
Definition: qcustomPlot.h:6139
static QCPCurveData fromSortKey(double sortKey)
Definition: qcustomPlot.h:5267
QCPRange & operator/=(const double &value)
Definition: qcustomPlot.h:786
PositionType
Definition: qcustomplot.h:3445
The abstract base class for paint buffers, which define the rendering backend.
Definition: qcustomplot.h:515
static QCPFinancialData fromSortKey(double sortKey)
Definition: qcustomPlot.h:5823
QCPRange & operator+=(const double &value)
Definition: qcustomPlot.h:783
QBrush brush() const
Definition: qcustomPlot.h:3311
A plottable representing a parametric curve in a plot.
Definition: qcustomplot.h:5292
QPen whiskerBarPen() const
Definition: qcustomPlot.h:5622
void addDataRange(const QCPDataRange &dataRange, bool simplify=true)
Definition: qcustomplot.cpp:2545
QCPRange keyRange() const
Definition: qcustomPlot.h:5691
0xFFFF All elements
Definition: qcustomplot.h:225
When dragging the mouse, a selection rect becomes active. It is the programmer's responsibility to co...
Definition: qcustomplot.h:270
#define QCP_LIB_DECL
Definition: qcustomPlot.h:124
A legend item representing a plottable with an icon and the plottable name.
Definition: qcustomplot.h:4772
const base::type::char_t * unit
Definition: easylogging++.h:815
QCPAbstractPlottable * dataPlottable() const
Definition: qcustomPlot.h:6011
QList< QCPItemAnchor * > anchors() const
Definition: qcustomPlot.h:3535
TracerStyle style() const
Definition: qcustomPlot.h:6548
QCustomPlot * parentPlot() const
Definition: qcustomPlot.h:708
Resolution is given in dots per inch (DPI/PPI)
Definition: qcustomplot.h:167
AnchorIndex
Definition: qcustomplot.h:6349
QBrush brush() const
Definition: qcustomPlot.h:2351
int textFlags() const
Definition: qcustomPlot.h:4947
int top() const
Definition: qcustomPlot.h:4646
Q_DECLARE_TYPEINFO(QCPVector2D, Q_MOVABLE_TYPE)
QList< QCPBars * > bars() const
Definition: qcustomPlot.h:5407
0x008 Plottables are selectable (e.g. graphs, curves, bars,... see QCPAbstractPlottable) ...
Definition: qcustomplot.h:254
bool isInvalidData(double value)
Definition: qcustomplot.h:304
QCPGrid * grid() const
Definition: qcustomPlot.h:2048
Whether to use immediate or queued refresh depends on whether the plotting hint QCP::phImmediateRefre...
Definition: qcustomplot.h:3615
bool clipToAxisRect() const
Definition: qcustomPlot.h:3519
Manages a single axis inside a QCustomPlot.
Definition: qcustomplot.h:1911
const QCPVector2D operator*(double factor, const QCPVector2D &vec)
Definition: qcustomplot.h:433
virtual ~QCPAbstractPlottable1D()
Definition: qcustomplot.h:4103
QFont selectedFont() const
Definition: qcustomPlot.h:4727
FractionStyle
Definition: qcustomplot.h:1777
The plottable is not selectable.
Definition: qcustomplot.h:291
TracerStyle
Definition: qcustomplot.h:6531
ErrorType errorType() const
Definition: qcustomPlot.h:6012
double y() const
Definition: qcustomPlot.h:392
QColor selectedColor() const
Definition: qcustomPlot.h:6307
0x8000 Other elements that don't fit into any of the existing categories
Definition: qcustomplot.h:224
QPoint topLeft() const
Definition: qcustomPlot.h:4651
A template base class for plottables with one-dimensional data.
Definition: qcustomplot.h:3868
0x0040 Main lines of items
Definition: qcustomplot.h:220
Item that sticks to QCPGraph data points.
Definition: qcustomplot.h:6511
QColor textColor() const
Definition: qcustomPlot.h:4726
QCPLineEnding head() const
Definition: qcustomPlot.h:6189
QCPLayerable * parentLayerable() const
Definition: qcustomPlot.h:709
void limitIteratorsToDataRange(const_iterator &begin, const_iterator &end, const QCPDataRange &dataRange) const
Definition: qcustomplot.h:3163
GradientPreset
Definition: qcustomplot.h:4448
QPen pen() const
Definition: qcustomPlot.h:6187
double logBase() const
Definition: qcustomPlot.h:1833
int size() const
Definition: qcustomPlot.h:902
0x0200 Zero-lines, see QCPGrid::setZeroLinePen
Definition: qcustomplot.h:223
0x010 Axes are selectable (or parts of them, see QCPAxis::setSelectableParts)
Definition: qcustomplot.h:255
0x001 Axis ranges are draggable (see QCPAxisRect::setRangeDrag, QCPAxisRect::setRangeDragAxes) ...
Definition: qcustomplot.h:251
QCPBars * barAbove() const
Definition: qcustomPlot.h:5506
QBrush brushPositive() const
Definition: qcustomPlot.h:5892
QColor selectedLabelColor() const
Definition: qcustomPlot.h:2042
QSharedPointer< QCPBarsDataContainer > data() const
Definition: qcustomPlot.h:5507
A margin group allows synchronization of margin sides if working with multiple layout elements...
Definition: qcustomplot.h:1148
int wrap() const
Definition: qcustomPlot.h:1359
0x0008 Legend box
Definition: qcustomplot.h:217
double & ry()
Definition: qcustomPlot.h:394
QRect rect() const
Definition: qcustomPlot.h:1221
static bool sortKeyIsMainKey()
Definition: qcustomPlot.h:5571
QFont tickLabelFont() const
Definition: qcustomPlot.h:2015
const_iterator at(int index) const
Definition: qcustomPlot.h:2440
virtual void mouseMoveEvent(QMouseEvent *event, const QPointF &startPos) Q_DECL_OVERRIDE
Definition: qcustomplot.cpp:17805
QCPRange keyRange(bool &foundRange, QCP::SignDomain signDomain=QCP::sdBoth)
Definition: qcustomplot.h:2952
WidthType widthType() const
Definition: qcustomPlot.h:5501
QCPLineEnding tail() const
Definition: qcustomPlot.h:6140
double key() const
Definition: qcustomPlot.h:3466
AnchorIndex
Definition: qcustomplot.h:6421
Cosmetic pens are converted to pens with pixel width 1 when exporting.
Definition: qcustomplot.h:175
QList< QCPDataRange > dataRanges() const
Definition: qcustomPlot.h:952
QSize size() const
Definition: qcustomPlot.h:522
QPen zeroLinePen() const
Definition: qcustomPlot.h:1880
An anchor of an item to which positions can be attached to.
Definition: qcustomplot.h:3397
QPixmap pixmap() const
Definition: qcustomPlot.h:2352
The abstract base class for all items in a plot.
Definition: qcustomplot.h:3505
bool antialiasedZeroLine() const
Definition: qcustomPlot.h:1877
QString name() const
Definition: qcustomPlot.h:653
QColor textColor() const
Definition: qcustomPlot.h:4836
bool selected() const
Definition: qcustomPlot.h:3522
WidthType
Definition: qcustomplot.h:5490
int size() const
Definition: qcustomPlot.h:2413
QCPItemAnchor * parentAnchorY() const
Definition: qcustomPlot.h:3465
QSharedPointer< QCPGraphDataContainer > data() const
Definition: qcustomplot.h:5182
double center() const
Definition: qcustomPlot.h:795
QSharedPointer< QCPBarsDataContainer > data() const
Definition: qcustomplot.h:5507
0x0002 Grid lines
Definition: qcustomplot.h:215
QList< double > rowStretchFactors() const
Definition: qcustomPlot.h:1356
SelectionType
Definition: qcustomplot.h:291
Definition: qcustomplot.h:236
bool ticks() const
Definition: qcustomPlot.h:2012
Specialized axis ticker for time spans in units of milliseconds to days.
Definition: qcustomplot.h:1635
0x0080 Scatter symbols of plottables (excluding scatter symbols of type ssPixmap) ...
Definition: qcustomplot.h:221
int padding() const
Definition: qcustomPlot.h:2035
A paint buffer based on QPixmap, using software raster rendering.
Definition: qcustomplot.h:550
0x0004 Sub grid lines
Definition: qcustomplot.h:216
ScaleStrategy
Definition: qcustomplot.h:1697
bool interpolating() const
Definition: qcustomPlot.h:6551
const_iterator constEnd() const
Definition: qcustomPlot.h:2435
double x() const
Definition: qcustomPlot.h:391
QBrush brush() const
Definition: qcustomPlot.h:3249
bool contains(QCPBars *bars) const
Definition: qcustomPlot.h:5412
static QCPBarsData fromSortKey(double sortKey)
Definition: qcustomPlot.h:5447
TimeUnit
Definition: qcustomplot.h:1644
QBrush brush() const
Definition: qcustomPlot.h:4834
When dragging the mouse, a selection rect becomes active. Upon releasing, plottable data points that ...
Definition: qcustomplot.h:269
QCPDataContainer< QCPStatisticalBoxData > QCPStatisticalBoxDataContainer
Definition: qcustomplot.h:5600
Specialized axis ticker which allows arbitrary labels at specified coordinates.
Definition: qcustomplot.h:1729
ScaleStrategy scaleStrategy() const
Definition: qcustomPlot.h:1707
QPen subGridPen() const
Definition: qcustomPlot.h:1879
QRect outerRect() const
Definition: qcustomPlot.h:1222
Qt::KeyboardModifier multiSelectModifier() const
Definition: qcustomPlot.h:3637
A layout that places child elements aligned to the border or arbitrarily positioned.
Definition: qcustomplot.h:1413
static bool sortKeyIsMainKey()
Definition: qcustomPlot.h:5129
bool antialiasedFill() const
Definition: qcustomPlot.h:3308
QBrush backgroundBrush() const
Definition: qcustomPlot.h:4598
QPoint bottomRight() const
Definition: qcustomPlot.h:4654
QVector< double > tickVector() const
Definition: qcustomPlot.h:2021
bool invalidated() const
Definition: qcustomPlot.h:523
QPen selectedBorderPen() const
Definition: qcustomPlot.h:4842
0x040 Items are selectable (Rectangles, Arrows, Textitems, etc. see QCPAbstractItem) ...
Definition: qcustomplot.h:257
QBrush selectedBrush() const
Definition: qcustomPlot.h:6397
virtual void draw(QCPPainter *painter) Q_DECL_OVERRIDE
Definition: qcustomPlot.h:1269
QCPDataContainer< QCPBarsData > QCPBarsDataContainer
Definition: qcustomplot.h:5469
QPen penPositive() const
Definition: qcustomPlot.h:5894
0x02 Mode for all sorts of exports (e.g. PNG, PDF,...). For example, this prevents using cached pixma...
Definition: qcustomplot.h:466
QMargins padding() const
Definition: qcustomPlot.h:6318
bool visible() const
Definition: qcustomPlot.h:656
QCPDataRange adjusted(int changeBegin, int changeEnd) const
Definition: qcustomPlot.h:915
ScatterShape shape() const
Definition: qcustomPlot.h:2349
double mainKey() const
Definition: qcustomPlot.h:5131
int bracketWidth() const
Definition: qcustomPlot.h:4538
int pixelOrientation() const
Definition: qcustomPlot.h:2101
A plottable representing a bar chart in a plot.
Definition: qcustomplot.h:5471
AxisType
Definition: qcustomplot.h:1964
optional bool enabled
Definition: topics.proto:41
QCPDataSelection selection() const
Definition: qcustomPlot.h:3316
bool isEmpty() const
Definition: qcustomPlot.h:5410
double spacing() const
Definition: qcustomPlot.h:5400
optional bool error
Definition: requests.proto:11
QCPLayer * layer() const
Definition: qcustomPlot.h:710
const QCPVector2D operator/(const QCPVector2D &vec, double divisor)
Definition: qcustomplot.h:435
QMargins margins() const
Definition: qcustomPlot.h:1223
void add(const QCPDataContainer< DataType > &data)
Definition: qcustomplot.h:2664
A selection decorator which draws brackets around each selected data segment.
Definition: qcustomplot.h:4513
ChartStyle chartStyle() const
Definition: qcustomPlot.h:5888
virtual QPointF dataPixelPosition(int index) const Q_DECL_OVERRIDE
Definition: qcustomplot.h:4184
Base class for all drawable objects.
Definition: qcustomplot.h:692
bool selected() const
Definition: qcustomPlot.h:3315
Specialized axis ticker with a fixed tick step.
Definition: qcustomplot.h:1687
bool isEmpty() const
Definition: qcustomPlot.h:911
iterator end()
Definition: qcustomPlot.h:2437
QSize iconSize() const
Definition: qcustomPlot.h:4837
QCPScatterStyle scatterStyle() const
Definition: qcustomPlot.h:5184
int begin() const
Definition: qcustomPlot.h:900
QPen selectedPen() const
Definition: qcustomPlot.h:6395
const_iterator constEnd() const
Definition: qcustomplot.h:2435
QPen selectedIconBorderPen() const
Definition: qcustomPlot.h:4843
QCPAbstractPlottable1D(QCPAxis *keyAxis, QCPAxis *valueAxis)
Definition: qcustomplot.h:4096
bool operator==(const QCPDataRange &other) const
Definition: qcustomPlot.h:896
0x01 Mode for vectorized painting (e.g. PDF export). For example, this prevents some antialiasing fix...
Definition: qcustomplot.h:465
QCPAxis::ScaleType dataScaleType() const
Definition: qcustomPlot.h:5755
SelectablePart
Definition: qcustomplot.h:4821
QCPDataRange dataRange() const
Definition: qcustomPlot.h:2443
Qt::TimeSpec dateTimeSpec() const
Definition: qcustomPlot.h:1601
static bool sortKeyIsMainKey()
Definition: qcustomPlot.h:5448
ScaleType
Definition: qcustomplot.h:1985
int scatterSkip() const
Definition: qcustomPlot.h:5317
bool antialiasedSubGrid() const
Definition: qcustomPlot.h:1876
bool operator!=(const QCPDataSelection &other) const
Definition: qcustomPlot.h:934
QCPDataContainer< QCPCurveData > QCPCurveDataContainer
Definition: qcustomplot.h:5290
QList< QCPLayoutElement * > elements(QCP::MarginSide side) const
Definition: qcustomPlot.h:1156
QBrush brush() const
Definition: qcustomPlot.h:1105
QSize size() const
Definition: qcustomPlot.h:4650
void setEnd(int end)
Definition: qcustomPlot.h:907
bool scaled() const
Definition: qcustomPlot.h:6459
bool operator==(const QCPRange &other) const
Definition: qcustomPlot.h:780
bool isPenDefined() const
Definition: qcustomPlot.h:2366
QFont font() const
Definition: qcustomPlot.h:6312
SizeConstraintRect
Definition: qcustomplot.h:1211
A plottable representing a graph in a plot.
Definition: qcustomplot.h:5152
QBrush selectedBrush() const
Definition: qcustomPlot.h:6311
QCP::SelectionRectMode selectionRectMode() const
Definition: qcustomPlot.h:3638
QCPAxis::ScaleType dataScaleType() const
Definition: qcustomPlot.h:5059
0x02 right margin
Definition: qcustomplot.h:197
bool tickLabels() const
Definition: qcustomPlot.h:2013
double mainValue() const
Definition: qcustomPlot.h:5451
FillOrder
Definition: qcustomplot.h:1344
bool interpolate() const
Definition: qcustomPlot.h:5756
QRect tickLabelsSelectionBox() const
Definition: qcustomPlot.h:2227
Holds the two-dimensional data of a QCPColorMap plottable.
Definition: qcustomplot.h:5680
int dataRangeCount() const
Definition: qcustomPlot.h:949
FractionStyle fractionStyle() const
Definition: qcustomPlot.h:1789
double baseValue() const
Definition: qcustomPlot.h:5503
QPen pen() const
Definition: qcustomPlot.h:6462
int bottom() const
Definition: qcustomPlot.h:4647
int subTickCount() const
Definition: qcustomPlot.h:1736
The abstract base class for all data representing objects in a plot.
Definition: qcustomplot.h:3287
bool selectable() const
Definition: qcustomPlot.h:3521
double piValue() const
Definition: qcustomPlot.h:1787
SpacingType
Definition: qcustomplot.h:5389
QCPDataContainer()
Definition: qcustomplot.h:2599
int valueSize() const
Definition: qcustomPlot.h:5690
QString text() const
Definition: qcustomPlot.h:6314
double size() const
Definition: qcustomPlot.h:794
QPen selectedBasePen() const
Definition: qcustomPlot.h:2043
double mainValue() const
Definition: qcustomPlot.h:5132
virtual int calculateAutoMargin(QCP::MarginSide side) Q_DECL_OVERRIDE
Definition: qcustomplot.cpp:17722
QString name() const
Definition: qcustomPlot.h:3307
void drawLine(const QLineF &line)
Definition: qcustomplot.cpp:363
ChartStyle
Definition: qcustomplot.h:5878
Definition: qcustomplot.h:238
PainterMode
Definition: qcustomplot.h:464
const QMetaObject staticMetaObject
Definition: qcustomPlot.h:359
static Qt::Orientation orientation(AxisType type)
Definition: qcustomPlot.h:2115
0x002 Axis ranges are zoomable with the mouse wheel (see QCPAxisRect::setRangeZoom, QCPAxisRect::setRangeZoomAxes)
Definition: qcustomplot.h:252
std::string const
Definition: Test{{cookiecutter.device_name}}.cpp:209
QCP::AntialiasedElements notAntialiasedElements() const
Definition: qcustomPlot.h:3631
QCPScatterStyle scatterStyle() const
Definition: qcustomPlot.h:5316
QCPColorScale * colorScale() const
Definition: qcustomPlot.h:5759
Holds the data of one single error bar for QCPErrorBars.
Definition: qcustomplot.h:5955
PlottingHint
Definition: qcustomplot.h:235
double width() const
Definition: qcustomPlot.h:5889
QPen selectedPen() const
Definition: qcustomPlot.h:6463
QPixmap background() const
Definition: qcustomPlot.h:3626
MarginSide
Definition: qcustomplot.h:196
A plottable representing a financial stock chart.
Definition: qcustomplot.h:5847
optional string name
Definition: topics.proto:50
void setAutoSqueeze(bool enabled)
Definition: qcustomplot.h:2615
QColor selectedTextColor() const
Definition: qcustomPlot.h:4951
QFont selectedFont() const
Definition: qcustomPlot.h:4845
A plottable representing a two-dimensional color map in a plot.
Definition: qcustomplot.h:5737
int barWidth() const
Definition: qcustomPlot.h:5062
QString text() const
Definition: qcustomPlot.h:4946
QPen pen() const
Definition: qcustomPlot.h:6394
bool operator!=(const QCPDataRange &other) const
Definition: qcustomPlot.h:897
Qt::Orientations rangeZoom() const
Definition: qcustomPlot.h:4602
QPixmap pixmap() const
Definition: qcustomPlot.h:6458
virtual bool sortKeyIsMainKey() const Q_DECL_OVERRIDE
Definition: qcustomplot.h:4201
LineStyle
Definition: qcustomplot.h:5306
QPoint center() const
Definition: qcustomPlot.h:4655
A line from one point to another.
Definition: qcustomplot.h:6123
static bool sortKeyIsMainKey()
Definition: qcustomPlot.h:5824
Holds the data of one single data point for QCPFinancial.
Definition: qcustomplot.h:5816
QCPRange dataRange() const
Definition: qcustomPlot.h:5058
double size() const
Definition: qcustomPlot.h:6547
virtual void update(UpdatePhase phase)
Definition: qcustomplot.cpp:3408
bool adaptiveSampling() const
Definition: qcustomPlot.h:5187
A plottable that adds a set of error bars to other plottables.
Definition: qcustomplot.h:5984
virtual void wheelEvent(QWheelEvent *event)
Definition: qcustomplot.cpp:1802
virtual void mouseMoveEvent(QMouseEvent *event, const QPointF &startPos)
Definition: qcustomplot.cpp:1729
QFont selectedLabelFont() const
Definition: qcustomPlot.h:2040
double sortKey() const
Definition: qcustomPlot.h:5569
int rowSpacing() const
Definition: qcustomPlot.h:1358
int index() const
Definition: qcustomPlot.h:654
QHash< QCP::MarginSide, QCPMarginGroup * > marginGroups() const
Definition: qcustomPlot.h:1230
int columnCount() const
Definition: qcustomPlot.h:1354
Interaction
Definition: qcustomplot.h:251
QCPColorMapData * data() const
Definition: qcustomPlot.h:5753
int end() const
Definition: qcustomPlot.h:901
QPoint topRight() const
Definition: qcustomPlot.h:4652
QCPGraph * channelFillGraph() const
Definition: qcustomPlot.h:5186
Qt::AspectRatioMode aspectRatioMode() const
Definition: qcustomPlot.h:6460