##// END OF EJS Templates
Merge remote-tracking branch 'origin/5.7' into dev...
Merge remote-tracking branch 'origin/5.7' into dev Change-Id: I3f2ec8fb552bbed786cb0f7f5a0433d2d15f1931

File last commit:

r2854:46147b040d06
r2879:d27b6b26880d merge
Show More
declarativechart.h
254 lines | 10.3 KiB | text/x-c | CLexer
Miikka Heikkinen
Updated license...
r2854 /****************************************************************************
Jani Honkonen
Add/modify license headers
r830 **
Miikka Heikkinen
Updated license...
r2854 ** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
Jani Honkonen
Add/modify license headers
r830 **
Miikka Heikkinen
Updated license...
r2854 ** This file is part of the Qt Charts module of the Qt Toolkit.
Jani Honkonen
Add/modify license headers
r830 **
Miikka Heikkinen
Updated license...
r2854 ** $QT_BEGIN_LICENSE:GPL$
Titta Heikkala
Updated license headers...
r2845 ** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
Miikka Heikkinen
Updated license...
r2854 ** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) any later version
** approved by the KDE Free Qt Foundation. The licenses are as published by
** the Free Software Foundation and appearing in the file LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
Jani Honkonen
Add/modify license headers
r830 **
Titta Heikkala
Updated license headers...
r2845 ** $QT_END_LICENSE$
**
Miikka Heikkinen
Updated license...
r2854 ****************************************************************************/
Jani Honkonen
Add/modify license headers
r830
Jani Honkonen
First draft of project structure
r1 #ifndef DECLARATIVECHART_H
#define DECLARATIVECHART_H
Miikka Heikkinen
Accelerating lineseries with OpenGL...
r2820 #include <private/glxyseriesdata_p.h>
Jani Honkonen
First draft of project structure
r1 #include <QtCore/QtGlobal>
Miikka Heikkinen
Generate charts plugin for QtQuick2 as well as QtQuick1...
r2488 #include <QtQuick/QQuickItem>
#include <QtWidgets/QGraphicsScene>
Jani Honkonen
Fixing qml build for latest Qt5...
r2247
Titta Heikkala
Fix include syntax...
r2714 #include <QtCharts/QChart>
Miikka Heikkinen
Misc fixes...
r2710 #include <QtCore/QLocale>
Tero Ahola
Proof-of-concept for QML api...
r120
Titta Heikkala
Qt Charts project file structure change...
r2712 QT_CHARTS_BEGIN_NAMESPACE
Tero Ahola
Proof-of-concept for QML api...
r120
Tero Ahola
Added ChartView.minimumMargins to QML properties
r1928 class DeclarativeMargins;
Tero Ahola
Added axisXTop and axisYRight properties to QML series APIs
r2296 class Domain;
class DeclarativeAxes;
Tero Ahola
Added ChartView.minimumMargins to QML properties
r1928
Miikka Heikkinen
Accelerating lineseries with OpenGL...
r2820 class DeclarativeChart : public QQuickItem
Jani Honkonen
First draft of project structure
r1 {
Q_OBJECT
Tero Ahola
color and borderColor properties to XY charts; removed unnecessary signals
r1481 Q_PROPERTY(Theme theme READ theme WRITE setTheme)
Q_PROPERTY(Animation animationOptions READ animationOptions WRITE setAnimationOptions)
Titta Heikkala
Added possibility to set duration and easing curve for chart animation...
r2804 Q_PROPERTY(int animationDuration READ animationDuration WRITE setAnimationDuration NOTIFY animationDurationChanged REVISION 5)
Q_PROPERTY(QEasingCurve animationEasingCurve READ animationEasingCurve WRITE setAnimationEasingCurve NOTIFY animationEasingCurveChanged REVISION 5)
Tero Ahola
color and borderColor properties to XY charts; removed unnecessary signals
r1481 Q_PROPERTY(QString title READ title WRITE setTitle)
Jani Honkonen
Add qml Font properties & docs
r1517 Q_PROPERTY(QFont titleFont READ titleFont WRITE setTitleFont)
Tero Ahola
QML ChartView scrolling, zooming, drop shadow
r1461 Q_PROPERTY(QColor titleColor READ titleColor WRITE setTitleColor NOTIFY titleColorChanged)
Titta Heikkala
Fix DeclarativeChart::legend property...
r2685 Q_PROPERTY(QLegend *legend READ legend CONSTANT)
Tero Ahola
QML demo with dynamic data
r1240 Q_PROPERTY(int count READ count)
Tero Ahola
Qml ChartView properties; legend to use Qt alignments
r1357 Q_PROPERTY(QColor backgroundColor READ backgroundColor WRITE setBackgroundColor NOTIFY backgroundColorChanged)
Tero Ahola
QML ChartView scrolling, zooming, drop shadow
r1461 Q_PROPERTY(bool dropShadowEnabled READ dropShadowEnabled WRITE setDropShadowEnabled NOTIFY dropShadowEnabledChanged)
Miikka Heikkinen
Added API to set chart background roundness...
r2549 Q_PROPERTY(qreal backgroundRoundness READ backgroundRoundness WRITE setBackgroundRoundness NOTIFY backgroundRoundnessChanged REVISION 3)
Michal Klocek
Rename minimumMargins to margins in QML plugin version 1.2
r2090 Q_PROPERTY(DeclarativeMargins *margins READ margins NOTIFY marginsChanged REVISION 2)
Tero Ahola
Added ChartView.plotArea to QML API
r1929 Q_PROPERTY(QRectF plotArea READ plotArea NOTIFY plotAreaChanged REVISION 1)
Miikka Heikkinen
Add API to specify plot area background....
r2498 Q_PROPERTY(QColor plotAreaColor READ plotAreaColor WRITE setPlotAreaColor NOTIFY plotAreaColorChanged REVISION 3)
Miikka Heikkinen
Generate charts plugin for QtQuick2 as well as QtQuick1...
r2488 Q_PROPERTY(QQmlListProperty<QAbstractAxis> axes READ axes REVISION 2)
Miikka Heikkinen
Added QChart::localizeNumbers...
r2707 Q_PROPERTY(bool localizeNumbers READ localizeNumbers WRITE setLocalizeNumbers NOTIFY localizeNumbersChanged REVISION 4)
Miikka Heikkinen
Misc fixes...
r2710 Q_PROPERTY(QLocale locale READ locale WRITE setLocale NOTIFY localeChanged REVISION 4)
Tero Ahola
QML demo with dynamic data
r1240 Q_ENUMS(Animation)
Q_ENUMS(Theme)
Q_ENUMS(SeriesType)
Tero Ahola
Legend to QML API
r1095
public:
Tero Ahola
QML demo with dynamic data
r1240 // duplicating enums from QChart to make the QML api namings 1-to-1 with the C++ api
enum Theme {
ChartThemeLight = 0,
ChartThemeBlueCerulean,
ChartThemeDark,
ChartThemeBrownSand,
ChartThemeBlueNcs,
ChartThemeHighContrast,
Titta Heikkala
Add new Qt theme template...
r2625 ChartThemeBlueIcy,
ChartThemeQt
Tero Ahola
QML demo with dynamic data
r1240 };
enum Animation {
NoAnimation = 0x0,
GridAxisAnimations = 0x1,
Jani Honkonen
coding style fixes for plugins
r2101 SeriesAnimations = 0x2,
Tero Ahola
QML demo with dynamic data
r1240 AllAnimations = 0x3
};
enum SeriesType {
SeriesTypeLine,
SeriesTypeArea,
SeriesTypeBar,
SeriesTypeStackedBar,
SeriesTypePercentBar,
Mika Salmela
A new box-and-whiskers series type added to charts....
r2548 SeriesTypeBoxPlot,
Tero Ahola
QML demo with dynamic data
r1240 SeriesTypePie,
SeriesTypeScatter,
sauimone
added horizontal barcharts to qmlchart demo
r1811 SeriesTypeSpline,
SeriesTypeHorizontalBar,
SeriesTypeHorizontalStackedBar,
SeriesTypeHorizontalPercentBar
Tero Ahola
QML demo with dynamic data
r1240 };
Jani Honkonen
First draft of project structure
r1 public:
Titta Heikkala
Qt Charts project file structure change...
r2712 DeclarativeChart(QQuickItem *parent = 0);
Tero Ahola
d
r722 ~DeclarativeChart();
Tero Ahola
Proof-of-concept for QML api...
r120
Miikka Heikkinen
Generate charts plugin for QtQuick2 as well as QtQuick1...
r2488 public: // From parent classes
Tero Ahola
Simplified declarative implementation
r1117 void childEvent(QChildEvent *event);
void componentComplete();
Tero Ahola
Proof-of-concept for QML api...
r120 void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry);
Miikka Heikkinen
Accelerating lineseries with OpenGL...
r2820 QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *);
Miikka Heikkinen
Fix mouse events for QtQuick2...
r2495 protected:
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
void hoverMoveEvent(QHoverEvent *event);
Titta Heikkala
Add pressed, released and doubleClicked signals...
r2739 void mouseDoubleClickEvent(QMouseEvent *event);
Miikka Heikkinen
Generate charts plugin for QtQuick2 as well as QtQuick1...
r2488 private Q_SLOTS:
void handleAntialiasingChanged(bool enable);
Heikkinen Miikka
Fix quick2 support with multithreaded scenegraph rendering....
r2505 void sceneChanged(QList<QRectF> region);
void renderScene();
Tero Ahola
Proof-of-concept for QML api...
r120
public:
Tero Ahola
QML demo with dynamic data
r1240 void setTheme(DeclarativeChart::Theme theme);
DeclarativeChart::Theme theme();
void setAnimationOptions(DeclarativeChart::Animation animations);
DeclarativeChart::Animation animationOptions();
Titta Heikkala
Added possibility to set duration and easing curve for chart animation...
r2804 void setAnimationDuration(int msecs);
int animationDuration() const;
void setAnimationEasingCurve(const QEasingCurve &curve);
QEasingCurve animationEasingCurve() const;
Tero Ahola
Qml ChartView properties; legend to use Qt alignments
r1357 void setTitle(QString title);
QString title();
QLegend *legend();
Jani Honkonen
Add qml Font properties & docs
r1517 QFont titleFont() const;
Jani Honkonen
coding style fixes for plugins
r2101 void setTitleFont(const QFont &font);
Tero Ahola
Qml ChartView properties; legend to use Qt alignments
r1357 void setTitleColor(QColor color);
QColor titleColor();
void setBackgroundColor(QColor color);
QColor backgroundColor();
Miikka Heikkinen
Removed unnecessary Q_REVISION(n) macros....
r2717 void setPlotAreaColor(QColor color);
QColor plotAreaColor();
void setLocalizeNumbers(bool localize);
bool localizeNumbers() const;
void setLocale(const QLocale &locale);
QLocale locale() const;
Miikka Heikkinen
Added QChart::localizeNumbers...
r2707
Tero Ahola
QML demo with dynamic data
r1240 int count();
Tero Ahola
QML ChartView scrolling, zooming, drop shadow
r1461 void setDropShadowEnabled(bool enabled);
bool dropShadowEnabled();
Miikka Heikkinen
Removed unnecessary Q_REVISION(n) macros....
r2717 qreal backgroundRoundness() const;
void setBackgroundRoundness(qreal diameter);
Tero Ahola
Fixed a bug in ChartView.axes property when no series added
r2300
// Margins & plotArea
Miikka Heikkinen
Removed unnecessary Q_REVISION(n) macros....
r2717 DeclarativeMargins *margins() { return m_margins; }
Tero Ahola
Added ChartView.plotArea to QML API
r1929 QRectF plotArea() { return m_chart->plotArea(); }
Michal Klocek
Adds axis to qml...
r1604
Tero Ahola
Fixed a bug in ChartView.axes property when no series added
r2300 // Axis handling
QAbstractAxis *defaultAxis(Qt::Orientation orientation, QAbstractSeries *series);
void initializeAxes(QAbstractSeries *series);
void doInitializeAxes(QAbstractSeries *series, DeclarativeAxes *axes);
Titta Heikkala
Qt Charts project file structure change...
r2712 QQmlListProperty<QAbstractAxis> axes();
static void axesAppendFunc(QQmlListProperty<QAbstractAxis> *list, QAbstractAxis *element);
static int axesCountFunc(QQmlListProperty<QAbstractAxis> *list);
static QAbstractAxis *axesAtFunc(QQmlListProperty<QAbstractAxis> *list, int index);
static void axesClearFunc(QQmlListProperty<QAbstractAxis> *list);
Tero Ahola
Added axisXTop and axisYRight properties to QML series APIs
r2296
Tero Ahola
QML methods of series: several fixes and documentation
r1521 public:
Q_INVOKABLE QAbstractSeries *series(int index);
Q_INVOKABLE QAbstractSeries *series(QString seriesName);
Tero Ahola
Fixed Qt5 specific issue with ChartView.createSeries series types
r2389 Q_INVOKABLE QAbstractSeries *createSeries(int type, QString name = "", QAbstractAxis *axisX = 0, QAbstractAxis *axisY = 0);
Tero Ahola
QML ChartView signals seriesAdded and seriesRemoved
r2068 Q_INVOKABLE void removeSeries(QAbstractSeries *series);
Tero Ahola
Added removeSeries and removeAllSeries to QML API
r1948 Q_INVOKABLE void removeAllSeries() { m_chart->removeAllSeries(); }
Tero Ahola
Refactored QML axis handling
r1813 Q_INVOKABLE void setAxisX(QAbstractAxis *axis, QAbstractSeries *series = 0);
Q_INVOKABLE void setAxisY(QAbstractAxis *axis, QAbstractSeries *series = 0);
Michal Klocek
Fixes missing update barcategory...
r1643 Q_INVOKABLE QAbstractAxis *axisX(QAbstractSeries *series = 0);
Q_INVOKABLE QAbstractAxis *axisY(QAbstractSeries *series = 0);
Tero Ahola
QML ChartView scrolling, zooming, drop shadow
r1461 Q_INVOKABLE void zoom(qreal factor);
Titta Heikkala
Added zooming functions to ChartView...
r2788 Q_REVISION(5) Q_INVOKABLE void zoomIn();
Q_REVISION(5) Q_INVOKABLE void zoomIn(const QRectF &rectangle);
Q_REVISION(5) Q_INVOKABLE void zoomOut();
Q_REVISION(5) Q_INVOKABLE void zoomReset();
Titta Heikkala
Added isZoomed method to ChartView...
r2813 Q_REVISION(5) Q_INVOKABLE bool isZoomed();
Tero Ahola
QML ChartView scrolling, zooming, drop shadow
r1461 Q_INVOKABLE void scrollLeft(qreal pixels);
Q_INVOKABLE void scrollRight(qreal pixels);
Q_INVOKABLE void scrollUp(qreal pixels);
Q_INVOKABLE void scrollDown(qreal pixels);
Titta Heikkala
Added mapToXxx methods to ChartView...
r2786 Q_REVISION(5) Q_INVOKABLE QPointF mapToValue(const QPointF &position,
QAbstractSeries *series = 0);
Q_REVISION(5) Q_INVOKABLE QPointF mapToPosition(const QPointF &value,
QAbstractSeries *series = 0);
Tero Ahola
Proof-of-concept for QML api...
r120
Tero Ahola
Qml ChartView properties; legend to use Qt alignments
r1357 Q_SIGNALS:
void axisLabelsChanged();
Tero Ahola
Added property definitions to QChart
r1524 void titleColorChanged(QColor color);
Tero Ahola
Qml ChartView properties; legend to use Qt alignments
r1357 void backgroundColorChanged();
Tero Ahola
QML ChartView scrolling, zooming, drop shadow
r1461 void dropShadowEnabledChanged(bool enabled);
Michal Klocek
Rename minimumMargins to margins in QML plugin version 1.2
r2090 Q_REVISION(2) void marginsChanged();
Tero Ahola
Added ChartView.plotArea to QML API
r1929 void plotAreaChanged(QRectF plotArea);
Jani Honkonen
coding style fixes for plugins
r2101 void seriesAdded(QAbstractSeries *series);
void seriesRemoved(QAbstractSeries *series);
Miikka Heikkinen
Add API to specify plot area background....
r2498 Q_REVISION(3) void plotAreaColorChanged();
Miikka Heikkinen
Added API to set chart background roundness...
r2549 Q_REVISION(3) void backgroundRoundnessChanged(qreal diameter);
Miikka Heikkinen
Added QChart::locale property...
r2708 Q_REVISION(4) void localizeNumbersChanged();
Miikka Heikkinen
Misc fixes...
r2710 Q_REVISION(4) void localeChanged();
Titta Heikkala
Added possibility to set duration and easing curve for chart animation...
r2804 Q_REVISION(5) void animationDurationChanged(int msecs);
Q_REVISION(5) void animationEasingCurveChanged(QEasingCurve curve);
Miikka Heikkinen
Accelerating lineseries with OpenGL...
r2820 void needRender();
Tero Ahola
Qml ChartView properties; legend to use Qt alignments
r1357
Tero Ahola
Added axisXTop and axisYRight properties to QML series APIs
r2296 private Q_SLOTS:
Miikka Heikkinen
Remove deprecated elements from APIs....
r2742 void changeMargins(int top, int bottom, int left, int right);
Tero Ahola
Refactored QML axis handling
r1813 void handleAxisXSet(QAbstractAxis *axis);
void handleAxisYSet(QAbstractAxis *axis);
Tero Ahola
Added axisXTop and axisYRight properties to QML series APIs
r2296 void handleAxisXTopSet(QAbstractAxis *axis);
void handleAxisYRightSet(QAbstractAxis *axis);
Jani Honkonen
Some fixes for Qt5, vs2010 build and qml
r2277 void handleSeriesAdded(QAbstractSeries *series);
Tero Ahola
Added property definitions to QChart
r1524
Miikka Heikkinen
Add Polar chart support...
r2483 protected:
Titta Heikkala
Qt Charts project file structure change...
r2712 explicit DeclarativeChart(QChart::ChartType type, QQuickItem *parent);
Miikka Heikkinen
Add Polar chart support...
r2483
Tero Ahola
Added property definitions to QChart
r1524 private:
Miikka Heikkinen
Add Polar chart support...
r2483 void initChart(QChart::ChartType type);
Miikka Heikkinen
Fix axis attachments in QML....
r2718 void seriesAxisAttachHelper(QAbstractSeries *series, QAbstractAxis *axis,
Qt::Orientations orientation, Qt::Alignment alignment);
Titta Heikkala
Fix default axis for DeclarativeChart...
r2789 void findMinMaxForSeries(QAbstractSeries *series,Qt::Orientations orientation,
qreal &min, qreal &max);
Tero Ahola
Proof-of-concept for QML api...
r120 // Extending QChart with DeclarativeChart is not possible because QObject does not support
// multi inheritance, so we now have a QChart as a member instead
QChart *m_chart;
Miikka Heikkinen
Generate charts plugin for QtQuick2 as well as QtQuick1...
r2488 QGraphicsScene *m_scene;
Miikka Heikkinen
Fix mouse events for QtQuick2...
r2495 QPointF m_mousePressScenePoint;
QPoint m_mousePressScreenPoint;
QPointF m_lastMouseMoveScenePoint;
QPoint m_lastMouseMoveScreenPoint;
Qt::MouseButton m_mousePressButton;
Qt::MouseButtons m_mousePressButtons;
Miikka Heikkinen
Accelerating lineseries with OpenGL...
r2820 QImage *m_sceneImage;
bool m_sceneImageDirty;
Heikkinen Miikka
Fix quick2 support with multithreaded scenegraph rendering....
r2505 bool m_updatePending;
Miikka Heikkinen
Further fixes to threaded rendering...
r2506 Qt::HANDLE m_paintThreadId;
Qt::HANDLE m_guiThreadId;
Michal Klocek
Rename minimumMargins to margins in QML plugin version 1.2
r2090 DeclarativeMargins *m_margins;
Miikka Heikkinen
Accelerating lineseries with OpenGL...
r2820 GLXYSeriesDataManager *m_glXYDataManager;
Miikka Heikkinen
Clear chart image to transparent when necessary....
r2850 bool m_sceneImageNeedsClear;
Jani Honkonen
First draft of project structure
r1 };
Titta Heikkala
Qt Charts project file structure change...
r2712 QT_CHARTS_END_NAMESPACE
Jani Honkonen
First draft of project structure
r1
#endif // DECLARATIVECHART_H