##// END OF EJS Templates
Fix multiline axis label positioning....
Fix multiline axis label positioning. Refactored axis label/title handling to not use QFontMetrics but a dummy graphics text item instead. Task-number: QTRD-2056 Change-Id: Ib24f26d214046f97f4fd2d3b2dd720e866561dbd Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>

File last commit:

r2506:59c477efbea1
r2534:ec1756baf233
Show More
declarativechart.h
229 lines | 8.3 KiB | text/x-c | CLexer
Jani Honkonen
Add/modify license headers
r830 /****************************************************************************
**
Miikka Heikkinen
More copyright year changes
r2433 ** Copyright (C) 2013 Digia Plc
Jani Honkonen
Add/modify license headers
r830 ** All rights reserved.
** For any questions to Digia, please use contact form at http://qt.digia.com
**
** This file is part of the Qt Commercial Charts Add-on.
**
** $QT_BEGIN_LICENSE$
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia.
**
** If you have questions regarding the use of this file, please use
** contact form at http://qt.digia.com
** $QT_END_LICENSE$
**
****************************************************************************/
Jani Honkonen
First draft of project structure
r1 #ifndef DECLARATIVECHART_H
#define DECLARATIVECHART_H
#include <QtCore/QtGlobal>
Miikka Heikkinen
Generate charts plugin for QtQuick2 as well as QtQuick1...
r2488 #include "shared_defines.h"
#ifdef CHARTS_FOR_QUICK2
#include <QtQuick/QQuickItem>
#include <QtQuick/QQuickPaintedItem>
#include <QtWidgets/QGraphicsScene>
Heikkinen Miikka
Fix quick2 support with multithreaded scenegraph rendering....
r2505 #include <QtCore/QMutex>
Miikka Heikkinen
Generate charts plugin for QtQuick2 as well as QtQuick1...
r2488 #else
Jani Honkonen
Fixing qml build for latest Qt5...
r2247 #include <QtDeclarative/QDeclarativeItem>
Miikka Heikkinen
Generate charts plugin for QtQuick2 as well as QtQuick1...
r2488 #endif
Jani Honkonen
Fixing qml build for latest Qt5...
r2247
Tero Ahola
Removed unneeded includes from declarative plugin
r1831 #include "qchart.h"
Tero Ahola
Proof-of-concept for QML api...
r120
QTCOMMERCIALCHART_BEGIN_NAMESPACE
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
Generate charts plugin for QtQuick2 as well as QtQuick1...
r2488 class DeclarativeChart : public QDECLARATIVE_PAINTED_ITEM
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)
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)
Tero Ahola
Qml ChartView properties; legend to use Qt alignments
r1357 Q_PROPERTY(QLegend *legend READ legend)
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)
Tero Ahola
Improved ChartView.minimuMargins implementation
r1946 Q_PROPERTY(qreal topMargin READ topMargin)
Q_PROPERTY(qreal bottomMargin READ bottomMargin)
Q_PROPERTY(qreal leftMargin READ leftMargin)
Q_PROPERTY(qreal rightMargin READ rightMargin)
Q_PROPERTY(DeclarativeMargins *minimumMargins READ minimumMargins NOTIFY minimumMarginsChanged REVISION 1)
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 #ifdef CHARTS_FOR_QUICK2
Q_PROPERTY(QQmlListProperty<QAbstractAxis> axes READ axes REVISION 2)
#else
Tero Ahola
Added axisXTop and axisYRight properties to QML series APIs
r2296 Q_PROPERTY(QDeclarativeListProperty<QAbstractAxis> axes READ axes REVISION 2)
Miikka Heikkinen
Generate charts plugin for QtQuick2 as well as QtQuick1...
r2488 #endif
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,
ChartThemeBlueIcy
};
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,
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:
Miikka Heikkinen
Generate charts plugin for QtQuick2 as well as QtQuick1...
r2488 DeclarativeChart(QDECLARATIVE_ITEM *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
Generate charts plugin for QtQuick2 as well as QtQuick1...
r2488 #ifdef CHARTS_FOR_QUICK2
void paint(QPainter *painter);
Miikka Heikkinen
Fix mouse events for QtQuick2...
r2495 protected:
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
void hoverMoveEvent(QHoverEvent *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();
Miikka Heikkinen
Generate charts plugin for QtQuick2 as well as QtQuick1...
r2488 #endif
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();
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
Add API to specify plot area background....
r2498 Q_REVISION(3) void setPlotAreaColor(QColor color);
Q_REVISION(3) QColor plotAreaColor();
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();
Tero Ahola
Fixed a bug in ChartView.axes property when no series added
r2300
// Margins & plotArea
Tero Ahola
Added property definitions to QChart
r1524 qreal topMargin();
qreal bottomMargin();
qreal leftMargin();
qreal rightMargin();
Michal Klocek
Rename minimumMargins to margins in QML plugin version 1.2
r2090 DeclarativeMargins *minimumMargins() { return m_margins; }
Q_REVISION(2) 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);
Miikka Heikkinen
Generate charts plugin for QtQuick2 as well as QtQuick1...
r2488 QDECLARATIVE_LIST_PROPERTY<QAbstractAxis> axes();
static void axesAppendFunc(QDECLARATIVE_LIST_PROPERTY<QAbstractAxis> *list, QAbstractAxis *element);
static int axesCountFunc(QDECLARATIVE_LIST_PROPERTY<QAbstractAxis> *list);
static QAbstractAxis *axesAtFunc(QDECLARATIVE_LIST_PROPERTY<QAbstractAxis> *list, int index);
static void axesClearFunc(QDECLARATIVE_LIST_PROPERTY<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
Adds axis to qml...
r1604 Q_INVOKABLE void createDefaultAxes();
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);
Q_INVOKABLE void scrollLeft(qreal pixels);
Q_INVOKABLE void scrollRight(qreal pixels);
Q_INVOKABLE void scrollUp(qreal pixels);
Q_INVOKABLE void scrollDown(qreal pixels);
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);
Tero Ahola
Improved ChartView.minimuMargins implementation
r1946 void minimumMarginsChanged();
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();
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:
Tero Ahola
Added ChartView.minimumMargins to QML properties
r1928 void changeMinimumMargins(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:
Miikka Heikkinen
Generate charts plugin for QtQuick2 as well as QtQuick1...
r2488 explicit DeclarativeChart(QChart::ChartType type, QDECLARATIVE_ITEM *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);
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 #ifdef CHARTS_FOR_QUICK2
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;
Heikkinen Miikka
Fix quick2 support with multithreaded scenegraph rendering....
r2505 QMutex m_sceneImageLock;
QImage *m_currentSceneImage;
bool m_updatePending;
Miikka Heikkinen
Further fixes to threaded rendering...
r2506 Qt::HANDLE m_paintThreadId;
Qt::HANDLE m_guiThreadId;
Miikka Heikkinen
Generate charts plugin for QtQuick2 as well as QtQuick1...
r2488 #endif
Michal Klocek
Rename minimumMargins to margins in QML plugin version 1.2
r2090 DeclarativeMargins *m_margins;
Jani Honkonen
First draft of project structure
r1 };
Tero Ahola
Proof-of-concept for QML api...
r120 QTCOMMERCIALCHART_END_NAMESPACE
Jani Honkonen
First draft of project structure
r1
#endif // DECLARATIVECHART_H