diff options
author | Miikka Heikkinen <miikka.heikkinen@theqtcompany.com> | 2015-09-15 17:39:54 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@theqtcompany.com> | 2015-09-25 06:44:35 +0000 |
commit | 79a856530b6986ca6d6d7485b2e6cec810c3b7fe (patch) | |
tree | 6f3f8dfe76e64da9ec48909fef1d7cccb87c3fc0 /src/charts/glwidget_p.h | |
parent | 3a89e3fee61a52927f836f3b3de4c922c6b954e4 (diff) |
Accelerating lineseries with OpenGL
Added support for QAbstractSeries::useOpenGL property.
When true, the series in question is drawn on a separate
offscreen buffer using OpenGL and then superimposed on
the chart. Currently this property is only supported
for line and scatter series.
Change-Id: I174fec541f9f3c23464270c1fe08f824af16a0fb
Reviewed-by: Titta Heikkala <titta.heikkala@theqtcompany.com>
Reviewed-by: Tomi Korpipää <tomi.korpipaa@theqtcompany.com>
Diffstat (limited to 'src/charts/glwidget_p.h')
-rw-r--r-- | src/charts/glwidget_p.h | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/src/charts/glwidget_p.h b/src/charts/glwidget_p.h new file mode 100644 index 00000000..209c634f --- /dev/null +++ b/src/charts/glwidget_p.h @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd +** All rights reserved. +** For any questions to The Qt Company, please use contact form at http://qt.io +** +** This file is part of the Qt Charts module. +** +** Licensees holding valid commercial license for Qt may use this file in +** accordance with the Qt License Agreement provided with the Software +** or, alternatively, in accordance with the terms contained in a written +** agreement between you and The Qt Company. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.io +** +****************************************************************************/ + +// W A R N I N G +// ------------- +// +// This file is not part of the Qt Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. + +#ifndef GLWIDGET_H +#define GLWIDGET_H + +#ifndef QT_NO_OPENGL + +#include <QtWidgets/QOpenGLWidget> +#include <QtGui/QOpenGLFunctions> +#include <QtGui/QOpenGLVertexArrayObject> +#include <QtCore/QHash> +#include <QtCharts/QAbstractSeries> +#include <QtCharts/QXYSeries> + +QT_FORWARD_DECLARE_CLASS(QOpenGLShaderProgram) + +class QOpenGLBuffer; + +QT_CHARTS_BEGIN_NAMESPACE + +class GLXYSeriesDataManager; + +class GLWidget : public QOpenGLWidget, protected QOpenGLFunctions +{ + Q_OBJECT + +public: + GLWidget(GLXYSeriesDataManager *xyDataManager, QWidget *parent = 0); + ~GLWidget(); + +public Q_SLOTS: + void cleanup(); + void cleanXYSeriesResources(const QXYSeries *series); + +protected: + void initializeGL() Q_DECL_OVERRIDE; + void paintGL() Q_DECL_OVERRIDE; + void resizeGL(int width, int height) Q_DECL_OVERRIDE; + +private: + QOpenGLShaderProgram *m_program; + int m_shaderAttribLoc; + int m_colorUniformLoc; + int m_minUniformLoc; + int m_deltaUniformLoc; + int m_pointSizeUniformLoc; + QOpenGLVertexArrayObject m_vao; + + QHash<const QAbstractSeries *, QOpenGLBuffer *> m_seriesBufferMap; + GLXYSeriesDataManager *m_xyDataManager; +}; + +QT_CHARTS_END_NAMESPACE +#endif +#endif |