summaryrefslogtreecommitdiffstats
path: root/src/datavisualization
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2013-12-16 12:24:20 +0200
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2013-12-16 12:51:00 +0200
commitfe5205eb2ba54ea5aa6b8177fa58491b7b7e0523 (patch)
treecd4b9106a797d9b3d29f3305dd3597d57882b7ae /src/datavisualization
parenta39754cf88b03f1eb665082c16e0dea94c84089f (diff)
Move unnecessary public functionality to private in Q3DWindow
Task-number: QTRD-2222 Change-Id: Ie5456a26ad198611953fc8585c9136b997d39127 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src/datavisualization')
-rw-r--r--src/datavisualization/engine/q3dbars.cpp116
-rw-r--r--src/datavisualization/engine/q3dbars.h7
-rw-r--r--src/datavisualization/engine/q3dbars_p.h13
-rw-r--r--src/datavisualization/engine/q3dscatter.cpp105
-rw-r--r--src/datavisualization/engine/q3dscatter.h7
-rw-r--r--src/datavisualization/engine/q3dscatter_p.h13
-rw-r--r--src/datavisualization/engine/q3dsurface.cpp95
-rw-r--r--src/datavisualization/engine/q3dsurface.h7
-rw-r--r--src/datavisualization/engine/q3dsurface_p.h9
-rw-r--r--src/datavisualization/engine/q3dwindow.cpp116
-rw-r--r--src/datavisualization/engine/q3dwindow.h12
-rw-r--r--src/datavisualization/engine/q3dwindow_p.h18
12 files changed, 281 insertions, 237 deletions
diff --git a/src/datavisualization/engine/q3dbars.cpp b/src/datavisualization/engine/q3dbars.cpp
index 0a223099..85e52768 100644
--- a/src/datavisualization/engine/q3dbars.cpp
+++ b/src/datavisualization/engine/q3dbars.cpp
@@ -26,7 +26,6 @@
#include <QMouseEvent>
-#include <QDebug>
QT_DATAVISUALIZATION_BEGIN_NAMESPACE
@@ -95,21 +94,24 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE
*/
/*!
- * Constructs a new 3D bar graph.
+ * Constructs a new 3D bar graph with optional \a parent window.
*/
-Q3DBars::Q3DBars()
- : d_ptr(new Q3DBarsPrivate(this, geometry()))
+Q3DBars::Q3DBars(QWindow *parent)
+ : Q3DWindow(new Q3DBarsPrivate(this), parent)
{
- setVisualController(d_ptr->m_shared);
- d_ptr->m_shared->initializeOpenGL();
- QObject::connect(d_ptr->m_shared, &Abstract3DController::selectionModeChanged, this,
+ dptr()->m_shared = new Bars3DController(geometry());
+ d_ptr->setVisualController(dptr()->m_shared);
+ dptr()->m_shared->initializeOpenGL();
+ QObject::connect(dptr()->m_shared, &Abstract3DController::selectionModeChanged, this,
&Q3DBars::selectionModeChanged);
- QObject::connect(d_ptr->m_shared, &Abstract3DController::shadowQualityChanged, this,
+ QObject::connect(dptr()->m_shared, &Abstract3DController::shadowQualityChanged, this,
&Q3DBars::shadowQualityChanged);
- QObject::connect(d_ptr->m_shared, &Abstract3DController::themeChanged, this,
+ QObject::connect(dptr()->m_shared, &Abstract3DController::themeChanged, this,
&Q3DBars::themeChanged);
- QObject::connect(d_ptr->m_shared, &Abstract3DController::needRender, this,
- &Q3DWindow::renderLater);
+ QObject::connect(dptr()->m_shared, &Abstract3DController::needRender, d_ptr.data(),
+ &Q3DWindowPrivate::renderLater);
+ QObject::connect(dptr()->m_shared, &Abstract3DController::shadowQualityChanged, dptr(),
+ &Q3DBarsPrivate::handleShadowQualityUpdate);
}
/*!
@@ -129,7 +131,7 @@ Q3DBars::~Q3DBars()
*/
void Q3DBars::addSeries(QBar3DSeries *series)
{
- d_ptr->m_shared->addSeries(series);
+ dptr()->m_shared->addSeries(series);
}
/*!
@@ -137,7 +139,7 @@ void Q3DBars::addSeries(QBar3DSeries *series)
*/
void Q3DBars::removeSeries(QBar3DSeries *series)
{
- d_ptr->m_shared->removeSeries(series);
+ dptr()->m_shared->removeSeries(series);
}
/*!
@@ -145,7 +147,7 @@ void Q3DBars::removeSeries(QBar3DSeries *series)
*/
QList<QBar3DSeries *> Q3DBars::seriesList()
{
- return d_ptr->m_shared->barSeriesList();
+ return dptr()->m_shared->barSeriesList();
}
/*!
@@ -153,7 +155,7 @@ QList<QBar3DSeries *> Q3DBars::seriesList()
*/
void Q3DBars::mouseDoubleClickEvent(QMouseEvent *event)
{
- d_ptr->m_shared->mouseDoubleClickEvent(event);
+ dptr()->m_shared->mouseDoubleClickEvent(event);
}
/*!
@@ -161,7 +163,7 @@ void Q3DBars::mouseDoubleClickEvent(QMouseEvent *event)
*/
void Q3DBars::touchEvent(QTouchEvent *event)
{
- d_ptr->m_shared->touchEvent(event);
+ dptr()->m_shared->touchEvent(event);
}
/*!
@@ -169,7 +171,7 @@ void Q3DBars::touchEvent(QTouchEvent *event)
*/
void Q3DBars::mousePressEvent(QMouseEvent *event)
{
- d_ptr->m_shared->mousePressEvent(event, event->pos());
+ dptr()->m_shared->mousePressEvent(event, event->pos());
}
/*!
@@ -177,7 +179,7 @@ void Q3DBars::mousePressEvent(QMouseEvent *event)
*/
void Q3DBars::mouseReleaseEvent(QMouseEvent *event)
{
- d_ptr->m_shared->mouseReleaseEvent(event, event->pos());
+ dptr()->m_shared->mouseReleaseEvent(event, event->pos());
}
/*!
@@ -185,7 +187,7 @@ void Q3DBars::mouseReleaseEvent(QMouseEvent *event)
*/
void Q3DBars::mouseMoveEvent(QMouseEvent *event)
{
- d_ptr->m_shared->mouseMoveEvent(event, event->pos());
+ dptr()->m_shared->mouseMoveEvent(event, event->pos());
}
/*!
@@ -193,7 +195,7 @@ void Q3DBars::mouseMoveEvent(QMouseEvent *event)
*/
void Q3DBars::wheelEvent(QWheelEvent *event)
{
- d_ptr->m_shared->wheelEvent(event);
+ dptr()->m_shared->wheelEvent(event);
}
/*!
@@ -202,7 +204,17 @@ void Q3DBars::wheelEvent(QWheelEvent *event)
void Q3DBars::resizeEvent(QResizeEvent *event)
{
Q_UNUSED(event);
- d_ptr->m_shared->setSize(width(), height());
+ dptr()->m_shared->setSize(width(), height());
+}
+
+Q3DBarsPrivate *Q3DBars::dptr()
+{
+ return static_cast<Q3DBarsPrivate *>(d_ptr.data());
+}
+
+const Q3DBarsPrivate *Q3DBars::dptrc() const
+{
+ return static_cast<const Q3DBarsPrivate *>(d_ptr.data());
}
/*!
@@ -210,7 +222,7 @@ void Q3DBars::resizeEvent(QResizeEvent *event)
*/
void Q3DBars::setWidth(const int width)
{
- d_ptr->m_shared->setWidth(width);
+ dptr()->m_shared->setWidth(width);
QWindow::setWidth(width);
}
@@ -219,7 +231,7 @@ void Q3DBars::setWidth(const int width)
*/
void Q3DBars::setHeight(const int height)
{
- d_ptr->m_shared->setHeight(height);
+ dptr()->m_shared->setHeight(height);
QWindow::setHeight(height);
}
@@ -232,14 +244,14 @@ void Q3DBars::setHeight(const int height)
void Q3DBars::setBarThickness(float thicknessRatio)
{
if (thicknessRatio != barThickness()) {
- d_ptr->m_shared->setBarSpecs(GLfloat(thicknessRatio), barSpacing(), isBarSpacingRelative());
+ dptr()->m_shared->setBarSpecs(GLfloat(thicknessRatio), barSpacing(), isBarSpacingRelative());
emit barThicknessChanged(thicknessRatio);
}
}
float Q3DBars::barThickness()
{
- return d_ptr->m_shared->barThickness();
+ return dptr()->m_shared->barThickness();
}
/*!
@@ -253,14 +265,14 @@ float Q3DBars::barThickness()
void Q3DBars::setBarSpacing(QSizeF spacing)
{
if (spacing != barSpacing()) {
- d_ptr->m_shared->setBarSpecs(GLfloat(barThickness()), spacing, isBarSpacingRelative());
+ dptr()->m_shared->setBarSpecs(GLfloat(barThickness()), spacing, isBarSpacingRelative());
emit barSpacingChanged(spacing);
}
}
QSizeF Q3DBars::barSpacing()
{
- return d_ptr->m_shared->barSpacing();
+ return dptr()->m_shared->barSpacing();
}
/*!
@@ -273,14 +285,14 @@ QSizeF Q3DBars::barSpacing()
void Q3DBars::setBarSpacingRelative(bool relative)
{
if (relative != isBarSpacingRelative()) {
- d_ptr->m_shared->setBarSpecs(GLfloat(barThickness()), barSpacing(), relative);
+ dptr()->m_shared->setBarSpecs(GLfloat(barThickness()), barSpacing(), relative);
emit barSpacingRelativeChanged(relative);
}
}
bool Q3DBars::isBarSpacingRelative()
{
- return d_ptr->m_shared->isBarSpecRelative();
+ return dptr()->m_shared->isBarSpecRelative();
}
/*!
@@ -292,12 +304,12 @@ bool Q3DBars::isBarSpacingRelative()
*/
void Q3DBars::setTheme(Q3DTheme *theme)
{
- d_ptr->m_shared->setTheme(theme);
+ dptr()->m_shared->setTheme(theme);
}
Q3DTheme *Q3DBars::theme() const
{
- return d_ptr->m_shared->theme();
+ return dptrc()->m_shared->theme();
}
/*!
@@ -308,12 +320,12 @@ Q3DTheme *Q3DBars::theme() const
*/
void Q3DBars::setSelectionMode(QDataVis::SelectionFlags mode)
{
- d_ptr->m_shared->setSelectionMode(mode);
+ dptr()->m_shared->setSelectionMode(mode);
}
QDataVis::SelectionFlags Q3DBars::selectionMode() const
{
- return d_ptr->m_shared->selectionMode();
+ return dptrc()->m_shared->selectionMode();
}
/*!
@@ -323,7 +335,7 @@ QDataVis::SelectionFlags Q3DBars::selectionMode() const
*/
Q3DScene *Q3DBars::scene() const
{
- return d_ptr->m_shared->scene();
+ return dptrc()->m_shared->scene();
}
/*!
@@ -338,12 +350,12 @@ Q3DScene *Q3DBars::scene() const
*/
void Q3DBars::setShadowQuality(QDataVis::ShadowQuality quality)
{
- d_ptr->m_shared->setShadowQuality(quality);
+ dptr()->m_shared->setShadowQuality(quality);
}
QDataVis::ShadowQuality Q3DBars::shadowQuality() const
{
- return d_ptr->m_shared->shadowQuality();
+ return dptrc()->m_shared->shadowQuality();
}
/*!
@@ -357,7 +369,7 @@ QDataVis::ShadowQuality Q3DBars::shadowQuality() const
*/
void Q3DBars::setRowAxis(Q3DCategoryAxis *axis)
{
- d_ptr->m_shared->setAxisZ(axis);
+ dptr()->m_shared->setAxisZ(axis);
}
/*!
@@ -365,7 +377,7 @@ void Q3DBars::setRowAxis(Q3DCategoryAxis *axis)
*/
Q3DCategoryAxis *Q3DBars::rowAxis() const
{
- return static_cast<Q3DCategoryAxis *>(d_ptr->m_shared->axisZ());
+ return static_cast<Q3DCategoryAxis *>(dptrc()->m_shared->axisZ());
}
/*!
@@ -379,7 +391,7 @@ Q3DCategoryAxis *Q3DBars::rowAxis() const
*/
void Q3DBars::setColumnAxis(Q3DCategoryAxis *axis)
{
- d_ptr->m_shared->setAxisX(axis);
+ dptr()->m_shared->setAxisX(axis);
}
/*!
@@ -387,7 +399,7 @@ void Q3DBars::setColumnAxis(Q3DCategoryAxis *axis)
*/
Q3DCategoryAxis *Q3DBars::columnAxis() const
{
- return static_cast<Q3DCategoryAxis *>(d_ptr->m_shared->axisX());
+ return static_cast<Q3DCategoryAxis *>(dptrc()->m_shared->axisX());
}
/*!
@@ -402,7 +414,7 @@ Q3DCategoryAxis *Q3DBars::columnAxis() const
*/
void Q3DBars::setValueAxis(Q3DValueAxis *axis)
{
- d_ptr->m_shared->setAxisY(axis);
+ dptr()->m_shared->setAxisY(axis);
}
/*!
@@ -410,7 +422,7 @@ void Q3DBars::setValueAxis(Q3DValueAxis *axis)
*/
Q3DValueAxis *Q3DBars::valueAxis() const
{
- return static_cast<Q3DValueAxis *>(d_ptr->m_shared->axisY());
+ return static_cast<Q3DValueAxis *>(dptrc()->m_shared->axisY());
}
/*!
@@ -422,7 +434,7 @@ Q3DValueAxis *Q3DBars::valueAxis() const
*/
void Q3DBars::addAxis(Q3DAbstractAxis *axis)
{
- d_ptr->m_shared->addAxis(axis);
+ dptr()->m_shared->addAxis(axis);
}
/*!
@@ -435,7 +447,7 @@ void Q3DBars::addAxis(Q3DAbstractAxis *axis)
*/
void Q3DBars::releaseAxis(Q3DAbstractAxis *axis)
{
- d_ptr->m_shared->releaseAxis(axis);
+ dptr()->m_shared->releaseAxis(axis);
}
/*!
@@ -445,15 +457,12 @@ void Q3DBars::releaseAxis(Q3DAbstractAxis *axis)
*/
QList<Q3DAbstractAxis *> Q3DBars::axes() const
{
- return d_ptr->m_shared->axes();
+ return dptrc()->m_shared->axes();
}
-Q3DBarsPrivate::Q3DBarsPrivate(Q3DBars *q, QRect rect)
- : q_ptr(q),
- m_shared(new Bars3DController(rect))
+Q3DBarsPrivate::Q3DBarsPrivate(Q3DBars *q)
+ : Q3DWindowPrivate(q)
{
- QObject::connect(m_shared, &Abstract3DController::shadowQualityChanged, this,
- &Q3DBarsPrivate::handleShadowQualityUpdate);
}
Q3DBarsPrivate::~Q3DBarsPrivate()
@@ -463,7 +472,12 @@ Q3DBarsPrivate::~Q3DBarsPrivate()
void Q3DBarsPrivate::handleShadowQualityUpdate(QDataVis::ShadowQuality quality)
{
- emit q_ptr->shadowQualityChanged(quality);
+ emit qptr()->shadowQualityChanged(quality);
+}
+
+Q3DBars *Q3DBarsPrivate::qptr()
+{
+ return static_cast<Q3DBars *>(q_ptr);
}
QT_DATAVISUALIZATION_END_NAMESPACE
diff --git a/src/datavisualization/engine/q3dbars.h b/src/datavisualization/engine/q3dbars.h
index 25172993..1ad321eb 100644
--- a/src/datavisualization/engine/q3dbars.h
+++ b/src/datavisualization/engine/q3dbars.h
@@ -46,8 +46,8 @@ class QT_DATAVISUALIZATION_EXPORT Q3DBars : public Q3DWindow
Q_PROPERTY(Q3DScene* scene READ scene)
public:
- explicit Q3DBars();
- ~Q3DBars();
+ explicit Q3DBars(QWindow *parent = 0);
+ virtual ~Q3DBars();
void addSeries(QBar3DSeries *series);
void removeSeries(QBar3DSeries *series);
@@ -105,7 +105,8 @@ protected:
void resizeEvent(QResizeEvent *event);
private:
- QScopedPointer<Q3DBarsPrivate> d_ptr;
+ Q3DBarsPrivate *dptr();
+ const Q3DBarsPrivate *dptrc() const;
Q_DISABLE_COPY(Q3DBars)
};
diff --git a/src/datavisualization/engine/q3dbars_p.h b/src/datavisualization/engine/q3dbars_p.h
index 653db606..9a059d8d 100644
--- a/src/datavisualization/engine/q3dbars_p.h
+++ b/src/datavisualization/engine/q3dbars_p.h
@@ -26,26 +26,29 @@
//
// We mean it.
-#ifndef Q3DBARS_p_H
-#define Q3DBARS_p_H
+#ifndef Q3DBARS_P_H
+#define Q3DBARS_P_H
#include "bars3dcontroller_p.h"
#include "qdatavisualizationenums.h"
+#include "q3dwindow_p.h"
QT_DATAVISUALIZATION_BEGIN_NAMESPACE
class Q3DBars;
-class Q3DBarsPrivate : public QObject
+class Q3DBarsPrivate : public Q3DWindowPrivate
{
+ Q_OBJECT
public:
- Q3DBarsPrivate(Q3DBars *q, QRect rect);
+ Q3DBarsPrivate(Q3DBars *q);
~Q3DBarsPrivate();
// Used to detect when shadow quality changes autonomously due to e.g. resizing.
void handleShadowQualityUpdate(QDataVis::ShadowQuality quality);
- Q3DBars *q_ptr;
+ Q3DBars *qptr();
+
Bars3DController *m_shared;
};
diff --git a/src/datavisualization/engine/q3dscatter.cpp b/src/datavisualization/engine/q3dscatter.cpp
index c472eafd..03529b85 100644
--- a/src/datavisualization/engine/q3dscatter.cpp
+++ b/src/datavisualization/engine/q3dscatter.cpp
@@ -24,7 +24,6 @@
#include "qscatter3dseries_p.h"
#include <QMouseEvent>
-#include <QDebug>
QT_DATAVISUALIZATION_BEGIN_NAMESPACE
@@ -79,21 +78,24 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE
*/
/*!
- * Constructs a new 3D scatter graph.
+ * Constructs a new 3D scatter graph with optional \a parent window.
*/
-Q3DScatter::Q3DScatter()
- : d_ptr(new Q3DScatterPrivate(this, geometry()))
+Q3DScatter::Q3DScatter(QWindow *parent)
+ : Q3DWindow(new Q3DScatterPrivate(this), parent)
{
- setVisualController(d_ptr->m_shared);
- d_ptr->m_shared->initializeOpenGL();
- QObject::connect(d_ptr->m_shared, &Abstract3DController::selectionModeChanged, this,
+ dptr()->m_shared = new Scatter3DController(geometry());
+ d_ptr->setVisualController(dptr()->m_shared);
+ dptr()->m_shared->initializeOpenGL();
+ QObject::connect(dptr()->m_shared, &Abstract3DController::selectionModeChanged, this,
&Q3DScatter::selectionModeChanged);
- QObject::connect(d_ptr->m_shared, &Abstract3DController::shadowQualityChanged, this,
+ QObject::connect(dptr()->m_shared, &Abstract3DController::shadowQualityChanged, this,
&Q3DScatter::shadowQualityChanged);
- QObject::connect(d_ptr->m_shared, &Abstract3DController::themeChanged, this,
+ QObject::connect(dptr()->m_shared, &Abstract3DController::themeChanged, this,
&Q3DScatter::themeChanged);
- QObject::connect(d_ptr->m_shared, &Abstract3DController::needRender, this,
- &Q3DWindow::renderLater);
+ QObject::connect(dptr()->m_shared, &Abstract3DController::needRender, d_ptr.data(),
+ &Q3DWindowPrivate::renderLater);
+ QObject::connect(dptr()->m_shared, &Abstract3DController::shadowQualityChanged, dptr(),
+ &Q3DScatterPrivate::handleShadowQualityUpdate);
}
/*!
@@ -110,7 +112,7 @@ Q3DScatter::~Q3DScatter()
*/
void Q3DScatter::addSeries(QScatter3DSeries *series)
{
- d_ptr->m_shared->addSeries(series);
+ dptr()->m_shared->addSeries(series);
}
/*!
@@ -118,7 +120,7 @@ void Q3DScatter::addSeries(QScatter3DSeries *series)
*/
void Q3DScatter::removeSeries(QScatter3DSeries *series)
{
- d_ptr->m_shared->removeSeries(series);
+ dptr()->m_shared->removeSeries(series);
}
/*!
@@ -126,7 +128,7 @@ void Q3DScatter::removeSeries(QScatter3DSeries *series)
*/
QList<QScatter3DSeries *> Q3DScatter::seriesList()
{
- return d_ptr->m_shared->scatterSeriesList();
+ return dptr()->m_shared->scatterSeriesList();
}
/*!
@@ -134,7 +136,7 @@ QList<QScatter3DSeries *> Q3DScatter::seriesList()
*/
void Q3DScatter::mouseDoubleClickEvent(QMouseEvent *event)
{
- d_ptr->m_shared->mouseDoubleClickEvent(event);
+ dptr()->m_shared->mouseDoubleClickEvent(event);
}
/*!
@@ -142,7 +144,7 @@ void Q3DScatter::mouseDoubleClickEvent(QMouseEvent *event)
*/
void Q3DScatter::touchEvent(QTouchEvent *event)
{
- d_ptr->m_shared->touchEvent(event);
+ dptr()->m_shared->touchEvent(event);
}
/*!
@@ -150,7 +152,7 @@ void Q3DScatter::touchEvent(QTouchEvent *event)
*/
void Q3DScatter::mousePressEvent(QMouseEvent *event)
{
- d_ptr->m_shared->mousePressEvent(event, event->pos());
+ dptr()->m_shared->mousePressEvent(event, event->pos());
}
/*!
@@ -158,7 +160,7 @@ void Q3DScatter::mousePressEvent(QMouseEvent *event)
*/
void Q3DScatter::mouseReleaseEvent(QMouseEvent *event)
{
- d_ptr->m_shared->mouseReleaseEvent(event, event->pos());
+ dptr()->m_shared->mouseReleaseEvent(event, event->pos());
}
/*!
@@ -166,7 +168,7 @@ void Q3DScatter::mouseReleaseEvent(QMouseEvent *event)
*/
void Q3DScatter::mouseMoveEvent(QMouseEvent *event)
{
- d_ptr->m_shared->mouseMoveEvent(event, event->pos());
+ dptr()->m_shared->mouseMoveEvent(event, event->pos());
}
/*!
@@ -174,7 +176,7 @@ void Q3DScatter::mouseMoveEvent(QMouseEvent *event)
*/
void Q3DScatter::wheelEvent(QWheelEvent *event)
{
- d_ptr->m_shared->wheelEvent(event);
+ dptr()->m_shared->wheelEvent(event);
}
/*!
@@ -183,7 +185,17 @@ void Q3DScatter::wheelEvent(QWheelEvent *event)
void Q3DScatter::resizeEvent(QResizeEvent *event)
{
Q_UNUSED(event);
- d_ptr->m_shared->setSize(width(), height());
+ dptr()->m_shared->setSize(width(), height());
+}
+
+Q3DScatterPrivate *Q3DScatter::dptr()
+{
+ return static_cast<Q3DScatterPrivate *>(d_ptr.data());
+}
+
+const Q3DScatterPrivate *Q3DScatter::dptrc() const
+{
+ return static_cast<const Q3DScatterPrivate *>(d_ptr.data());
}
/*!
@@ -191,7 +203,7 @@ void Q3DScatter::resizeEvent(QResizeEvent *event)
*/
void Q3DScatter::setWidth(const int width)
{
- d_ptr->m_shared->setWidth(width);
+ dptr()->m_shared->setWidth(width);
QWindow::setWidth(width);
}
@@ -200,7 +212,7 @@ void Q3DScatter::setWidth(const int width)
*/
void Q3DScatter::setHeight(const int height)
{
- d_ptr->m_shared->setHeight(height);
+ dptr()->m_shared->setHeight(height);
QWindow::setHeight(height);
}
@@ -213,12 +225,12 @@ void Q3DScatter::setHeight(const int height)
*/
void Q3DScatter::setTheme(Q3DTheme *theme)
{
- d_ptr->m_shared->setTheme(theme);
+ dptr()->m_shared->setTheme(theme);
}
Q3DTheme *Q3DScatter::theme() const
{
- return d_ptr->m_shared->theme();
+ return dptrc()->m_shared->theme();
}
/*!
@@ -231,12 +243,12 @@ Q3DTheme *Q3DScatter::theme() const
*/
void Q3DScatter::setSelectionMode(QDataVis::SelectionFlags mode)
{
- d_ptr->m_shared->setSelectionMode(mode);
+ dptr()->m_shared->setSelectionMode(mode);
}
QDataVis::SelectionFlags Q3DScatter::selectionMode() const
{
- return d_ptr->m_shared->selectionMode();
+ return dptrc()->m_shared->selectionMode();
}
/*!
@@ -246,7 +258,7 @@ QDataVis::SelectionFlags Q3DScatter::selectionMode() const
*/
Q3DScene *Q3DScatter::scene() const
{
- return d_ptr->m_shared->scene();
+ return dptrc()->m_shared->scene();
}
/*!
@@ -261,12 +273,12 @@ Q3DScene *Q3DScatter::scene() const
*/
void Q3DScatter::setShadowQuality(QDataVis::ShadowQuality quality)
{
- return d_ptr->m_shared->setShadowQuality(quality);
+ return dptr()->m_shared->setShadowQuality(quality);
}
QDataVis::ShadowQuality Q3DScatter::shadowQuality() const
{
- return d_ptr->m_shared->shadowQuality();
+ return dptrc()->m_shared->shadowQuality();
}
/*!
@@ -281,7 +293,7 @@ QDataVis::ShadowQuality Q3DScatter::shadowQuality() const
*/
void Q3DScatter::setAxisX(Q3DValueAxis *axis)
{
- d_ptr->m_shared->setAxisX(axis);
+ dptr()->m_shared->setAxisX(axis);
}
/*!
@@ -289,7 +301,7 @@ void Q3DScatter::setAxisX(Q3DValueAxis *axis)
*/
Q3DValueAxis *Q3DScatter::axisX() const
{
- return static_cast<Q3DValueAxis *>(d_ptr->m_shared->axisX());
+ return static_cast<Q3DValueAxis *>(dptrc()->m_shared->axisX());
}
/*!
@@ -304,7 +316,7 @@ Q3DValueAxis *Q3DScatter::axisX() const
*/
void Q3DScatter::setAxisY(Q3DValueAxis *axis)
{
- d_ptr->m_shared->setAxisY(axis);
+ dptr()->m_shared->setAxisY(axis);
}
/*!
@@ -312,7 +324,7 @@ void Q3DScatter::setAxisY(Q3DValueAxis *axis)
*/
Q3DValueAxis *Q3DScatter::axisY() const
{
- return static_cast<Q3DValueAxis *>(d_ptr->m_shared->axisY());
+ return static_cast<Q3DValueAxis *>(dptrc()->m_shared->axisY());
}
/*!
@@ -327,7 +339,7 @@ Q3DValueAxis *Q3DScatter::axisY() const
*/
void Q3DScatter::setAxisZ(Q3DValueAxis *axis)
{
- d_ptr->m_shared->setAxisZ(axis);
+ dptr()->m_shared->setAxisZ(axis);
}
/*!
@@ -335,7 +347,7 @@ void Q3DScatter::setAxisZ(Q3DValueAxis *axis)
*/
Q3DValueAxis *Q3DScatter::axisZ() const
{
- return static_cast<Q3DValueAxis *>(d_ptr->m_shared->axisZ());
+ return static_cast<Q3DValueAxis *>(dptrc()->m_shared->axisZ());
}
/*!
@@ -347,7 +359,7 @@ Q3DValueAxis *Q3DScatter::axisZ() const
*/
void Q3DScatter::addAxis(Q3DValueAxis *axis)
{
- d_ptr->m_shared->addAxis(axis);
+ dptr()->m_shared->addAxis(axis);
}
/*!
@@ -360,7 +372,7 @@ void Q3DScatter::addAxis(Q3DValueAxis *axis)
*/
void Q3DScatter::releaseAxis(Q3DValueAxis *axis)
{
- d_ptr->m_shared->releaseAxis(axis);
+ dptr()->m_shared->releaseAxis(axis);
}
/*!
@@ -370,7 +382,7 @@ void Q3DScatter::releaseAxis(Q3DValueAxis *axis)
*/
QList<Q3DValueAxis *> Q3DScatter::axes() const
{
- QList<Q3DAbstractAxis *> abstractAxes = d_ptr->m_shared->axes();
+ QList<Q3DAbstractAxis *> abstractAxes = dptrc()->m_shared->axes();
QList<Q3DValueAxis *> retList;
foreach (Q3DAbstractAxis *axis, abstractAxes)
retList.append(static_cast<Q3DValueAxis *>(axis));
@@ -384,23 +396,24 @@ QList<Q3DValueAxis *> Q3DScatter::axes() const
* This signal is emitted when shadow \a quality changes.
*/
-Q3DScatterPrivate::Q3DScatterPrivate(Q3DScatter *q, QRect rect)
- : q_ptr(q),
- m_shared(new Scatter3DController(rect))
+Q3DScatterPrivate::Q3DScatterPrivate(Q3DScatter *q)
+ : Q3DWindowPrivate(q)
{
- QObject::connect(m_shared, &Abstract3DController::shadowQualityChanged, this,
- &Q3DScatterPrivate::handleShadowQualityUpdate);
}
Q3DScatterPrivate::~Q3DScatterPrivate()
{
- qDebug() << "Destroying Q3DScatterPrivate";
delete m_shared;
}
void Q3DScatterPrivate::handleShadowQualityUpdate(QDataVis::ShadowQuality quality)
{
- emit q_ptr->shadowQualityChanged(quality);
+ emit qptr()->shadowQualityChanged(quality);
+}
+
+Q3DScatter *Q3DScatterPrivate::qptr()
+{
+ return static_cast<Q3DScatter *>(q_ptr);
}
QT_DATAVISUALIZATION_END_NAMESPACE
diff --git a/src/datavisualization/engine/q3dscatter.h b/src/datavisualization/engine/q3dscatter.h
index ad0da053..205fd31b 100644
--- a/src/datavisualization/engine/q3dscatter.h
+++ b/src/datavisualization/engine/q3dscatter.h
@@ -44,8 +44,8 @@ class QT_DATAVISUALIZATION_EXPORT Q3DScatter : public Q3DWindow
Q_PROPERTY(Q3DScene* scene READ scene)
public:
- explicit Q3DScatter();
- ~Q3DScatter();
+ explicit Q3DScatter(QWindow *parent = 0);
+ virtual ~Q3DScatter();
void addSeries(QScatter3DSeries *series);
void removeSeries(QScatter3DSeries *series);
@@ -90,7 +90,8 @@ protected:
void resizeEvent(QResizeEvent *event);
private:
- QScopedPointer<Q3DScatterPrivate> d_ptr;
+ Q3DScatterPrivate *dptr();
+ const Q3DScatterPrivate *dptrc() const;
Q_DISABLE_COPY(Q3DScatter)
};
diff --git a/src/datavisualization/engine/q3dscatter_p.h b/src/datavisualization/engine/q3dscatter_p.h
index 775344d0..d65776c5 100644
--- a/src/datavisualization/engine/q3dscatter_p.h
+++ b/src/datavisualization/engine/q3dscatter_p.h
@@ -26,26 +26,29 @@
//
// We mean it.
-#ifndef Q3DSCATTER_p_H
-#define Q3DSCATTER_p_H
+#ifndef Q3DSCATTER_P_H
+#define Q3DSCATTER_P_H
#include "scatter3dcontroller_p.h"
#include "qdatavisualizationenums.h"
+#include "q3dwindow_p.h"
QT_DATAVISUALIZATION_BEGIN_NAMESPACE
class Q3DScatter;
-class Q3DScatterPrivate : public QObject
+class Q3DScatterPrivate : public Q3DWindowPrivate
{
+ Q_OBJECT
public:
- Q3DScatterPrivate(Q3DScatter *q, QRect rect);
+ Q3DScatterPrivate(Q3DScatter *q);
~Q3DScatterPrivate();
// Used to detect when shadow quality changes autonomously due to e.g. resizing.
void handleShadowQualityUpdate(QDataVis::ShadowQuality quality);
- Q3DScatter *q_ptr;
+ Q3DScatter *qptr();
+
Scatter3DController *m_shared;
};
diff --git a/src/datavisualization/engine/q3dsurface.cpp b/src/datavisualization/engine/q3dsurface.cpp
index 3c326b52..a772218b 100644
--- a/src/datavisualization/engine/q3dsurface.cpp
+++ b/src/datavisualization/engine/q3dsurface.cpp
@@ -91,21 +91,22 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE
*/
/*!
- * Constructs a new 3D surface graph.
+ * Constructs a new 3D surface graph with optional \a parent window.
*/
-Q3DSurface::Q3DSurface()
- : d_ptr(new Q3DSurfacePrivate(this, geometry()))
+Q3DSurface::Q3DSurface(QWindow *parent)
+ : Q3DWindow(new Q3DSurfacePrivate(this), parent)
{
- setVisualController(d_ptr->m_shared);
- d_ptr->m_shared->initializeOpenGL();
- QObject::connect(d_ptr->m_shared, &Abstract3DController::selectionModeChanged, this,
+ dptr()->m_shared = new Surface3DController(geometry());
+ d_ptr->setVisualController(dptr()->m_shared);
+ dptr()->m_shared->initializeOpenGL();
+ QObject::connect(dptr()->m_shared, &Abstract3DController::selectionModeChanged, this,
&Q3DSurface::selectionModeChanged);
- QObject::connect(d_ptr->m_shared, &Abstract3DController::themeChanged, this,
+ QObject::connect(dptr()->m_shared, &Abstract3DController::themeChanged, this,
&Q3DSurface::themeChanged);
- QObject::connect(d_ptr->m_shared, &Abstract3DController::shadowQualityChanged, this,
+ QObject::connect(dptr()->m_shared, &Abstract3DController::shadowQualityChanged, this,
&Q3DSurface::shadowQualityChanged);
- QObject::connect(d_ptr->m_shared, &Abstract3DController::needRender, this,
- &Q3DWindow::renderLater);
+ QObject::connect(dptr()->m_shared, &Abstract3DController::needRender, d_ptr.data(),
+ &Q3DWindowPrivate::renderLater);
}
/*!
@@ -122,7 +123,7 @@ Q3DSurface::~Q3DSurface()
*/
void Q3DSurface::addSeries(QSurface3DSeries *series)
{
- d_ptr->m_shared->addSeries(series);
+ dptr()->m_shared->addSeries(series);
}
/*!
@@ -130,7 +131,7 @@ void Q3DSurface::addSeries(QSurface3DSeries *series)
*/
void Q3DSurface::removeSeries(QSurface3DSeries *series)
{
- d_ptr->m_shared->removeSeries(series);
+ dptr()->m_shared->removeSeries(series);
}
/*!
@@ -140,7 +141,7 @@ void Q3DSurface::removeSeries(QSurface3DSeries *series)
*/
QList<QSurface3DSeries *> Q3DSurface::seriesList()
{
- return d_ptr->m_shared->surfaceSeriesList();
+ return dptr()->m_shared->surfaceSeriesList();
}
/*!
@@ -148,7 +149,7 @@ QList<QSurface3DSeries *> Q3DSurface::seriesList()
*/
void Q3DSurface::mouseDoubleClickEvent(QMouseEvent *event)
{
- d_ptr->m_shared->mouseDoubleClickEvent(event);
+ dptr()->m_shared->mouseDoubleClickEvent(event);
}
/*!
@@ -156,7 +157,7 @@ void Q3DSurface::mouseDoubleClickEvent(QMouseEvent *event)
*/
void Q3DSurface::touchEvent(QTouchEvent *event)
{
- d_ptr->m_shared->touchEvent(event);
+ dptr()->m_shared->touchEvent(event);
}
/*!
@@ -164,7 +165,7 @@ void Q3DSurface::touchEvent(QTouchEvent *event)
*/
void Q3DSurface::mousePressEvent(QMouseEvent *event)
{
- d_ptr->m_shared->mousePressEvent(event, event->pos());
+ dptr()->m_shared->mousePressEvent(event, event->pos());
}
/*!
@@ -172,7 +173,7 @@ void Q3DSurface::mousePressEvent(QMouseEvent *event)
*/
void Q3DSurface::mouseReleaseEvent(QMouseEvent *event)
{
- d_ptr->m_shared->mouseReleaseEvent(event, event->pos());
+ dptr()->m_shared->mouseReleaseEvent(event, event->pos());
}
/*!
@@ -180,7 +181,7 @@ void Q3DSurface::mouseReleaseEvent(QMouseEvent *event)
*/
void Q3DSurface::mouseMoveEvent(QMouseEvent *event)
{
- d_ptr->m_shared->mouseMoveEvent(event, event->pos());
+ dptr()->m_shared->mouseMoveEvent(event, event->pos());
}
/*!
@@ -188,7 +189,7 @@ void Q3DSurface::mouseMoveEvent(QMouseEvent *event)
*/
void Q3DSurface::wheelEvent(QWheelEvent *event)
{
- d_ptr->m_shared->wheelEvent(event);
+ dptr()->m_shared->wheelEvent(event);
}
/*!
@@ -197,8 +198,18 @@ void Q3DSurface::wheelEvent(QWheelEvent *event)
void Q3DSurface::resizeEvent(QResizeEvent *event)
{
Q_UNUSED(event);
- d_ptr->m_shared->setWidth(width());
- d_ptr->m_shared->setHeight(height());
+ dptr()->m_shared->setWidth(width());
+ dptr()->m_shared->setHeight(height());
+}
+
+Q3DSurfacePrivate *Q3DSurface::dptr()
+{
+ return static_cast<Q3DSurfacePrivate *>(d_ptr.data());
+}
+
+const Q3DSurfacePrivate *Q3DSurface::dptrc() const
+{
+ return static_cast<const Q3DSurfacePrivate *>(d_ptr.data());
}
/*!
@@ -210,12 +221,12 @@ void Q3DSurface::resizeEvent(QResizeEvent *event)
*/
void Q3DSurface::setTheme(Q3DTheme *theme)
{
- d_ptr->m_shared->setTheme(theme);
+ dptr()->m_shared->setTheme(theme);
}
Q3DTheme *Q3DSurface::theme() const
{
- return d_ptr->m_shared->theme();
+ return dptrc()->m_shared->theme();
}
/*!
@@ -230,12 +241,12 @@ Q3DTheme *Q3DSurface::theme() const
*/
void Q3DSurface::setShadowQuality(QDataVis::ShadowQuality quality)
{
- return d_ptr->m_shared->setShadowQuality(quality);
+ return dptr()->m_shared->setShadowQuality(quality);
}
QDataVis::ShadowQuality Q3DSurface::shadowQuality() const
{
- return d_ptr->m_shared->shadowQuality();
+ return dptrc()->m_shared->shadowQuality();
}
/*!
@@ -247,12 +258,12 @@ QDataVis::ShadowQuality Q3DSurface::shadowQuality() const
*/
void Q3DSurface::setSelectionMode(QDataVis::SelectionFlags mode)
{
- d_ptr->m_shared->setSelectionMode(mode);
+ dptr()->m_shared->setSelectionMode(mode);
}
QDataVis::SelectionFlags Q3DSurface::selectionMode() const
{
- return d_ptr->m_shared->selectionMode();
+ return dptrc()->m_shared->selectionMode();
}
/*!
@@ -262,7 +273,7 @@ QDataVis::SelectionFlags Q3DSurface::selectionMode() const
*/
Q3DScene *Q3DSurface::scene() const
{
- return d_ptr->m_shared->scene();
+ return dptrc()->m_shared->scene();
}
/*!
@@ -277,7 +288,7 @@ Q3DScene *Q3DSurface::scene() const
*/
void Q3DSurface::setAxisX(Q3DValueAxis *axis)
{
- d_ptr->m_shared->setAxisX(axis);
+ dptr()->m_shared->setAxisX(axis);
}
/*!
@@ -285,7 +296,7 @@ void Q3DSurface::setAxisX(Q3DValueAxis *axis)
*/
Q3DValueAxis *Q3DSurface::axisX() const
{
- return static_cast<Q3DValueAxis *>(d_ptr->m_shared->axisX());
+ return static_cast<Q3DValueAxis *>(dptrc()->m_shared->axisX());
}
/*!
@@ -300,7 +311,7 @@ Q3DValueAxis *Q3DSurface::axisX() const
*/
void Q3DSurface::setAxisY(Q3DValueAxis *axis)
{
- d_ptr->m_shared->setAxisY(axis);
+ dptr()->m_shared->setAxisY(axis);
}
/*!
@@ -308,7 +319,7 @@ void Q3DSurface::setAxisY(Q3DValueAxis *axis)
*/
Q3DValueAxis *Q3DSurface::axisY() const
{
- return static_cast<Q3DValueAxis *>(d_ptr->m_shared->axisY());
+ return static_cast<Q3DValueAxis *>(dptrc()->m_shared->axisY());
}
/*!
@@ -323,7 +334,7 @@ Q3DValueAxis *Q3DSurface::axisY() const
*/
void Q3DSurface::setAxisZ(Q3DValueAxis *axis)
{
- d_ptr->m_shared->setAxisZ(axis);
+ dptr()->m_shared->setAxisZ(axis);
}
/*!
@@ -331,7 +342,7 @@ void Q3DSurface::setAxisZ(Q3DValueAxis *axis)
*/
Q3DValueAxis *Q3DSurface::axisZ() const
{
- return static_cast<Q3DValueAxis *>(d_ptr->m_shared->axisZ());
+ return static_cast<Q3DValueAxis *>(dptrc()->m_shared->axisZ());
}
/*!
@@ -343,7 +354,7 @@ Q3DValueAxis *Q3DSurface::axisZ() const
*/
void Q3DSurface::addAxis(Q3DValueAxis *axis)
{
- d_ptr->m_shared->addAxis(axis);
+ dptr()->m_shared->addAxis(axis);
}
/*!
@@ -356,7 +367,7 @@ void Q3DSurface::addAxis(Q3DValueAxis *axis)
*/
void Q3DSurface::releaseAxis(Q3DValueAxis *axis)
{
- d_ptr->m_shared->releaseAxis(axis);
+ dptr()->m_shared->releaseAxis(axis);
}
/*!
@@ -366,7 +377,7 @@ void Q3DSurface::releaseAxis(Q3DValueAxis *axis)
*/
QList<Q3DValueAxis *> Q3DSurface::axes() const
{
- QList<Q3DAbstractAxis *> abstractAxes = d_ptr->m_shared->axes();
+ QList<Q3DAbstractAxis *> abstractAxes = dptrc()->m_shared->axes();
QList<Q3DValueAxis *> retList;
foreach (Q3DAbstractAxis *axis, abstractAxes)
retList.append(static_cast<Q3DValueAxis *>(axis));
@@ -376,9 +387,8 @@ QList<Q3DValueAxis *> Q3DSurface::axes() const
/////////////////// PRIVATE ///////////////////////////////////
-Q3DSurfacePrivate::Q3DSurfacePrivate(Q3DSurface *q, QRect rect)
- : q_ptr(q),
- m_shared(new Surface3DController(rect))
+Q3DSurfacePrivate::Q3DSurfacePrivate(Q3DSurface *q)
+ : Q3DWindowPrivate(q)
{
}
@@ -387,4 +397,9 @@ Q3DSurfacePrivate::~Q3DSurfacePrivate()
delete m_shared;
}
+Q3DSurface *Q3DSurfacePrivate::qptr()
+{
+ return static_cast<Q3DSurface *>(q_ptr);
+}
+
QT_DATAVISUALIZATION_END_NAMESPACE
diff --git a/src/datavisualization/engine/q3dsurface.h b/src/datavisualization/engine/q3dsurface.h
index f23841b7..da0022ee 100644
--- a/src/datavisualization/engine/q3dsurface.h
+++ b/src/datavisualization/engine/q3dsurface.h
@@ -40,8 +40,8 @@ class QT_DATAVISUALIZATION_EXPORT Q3DSurface : public Q3DWindow
Q_PROPERTY(Q3DScene* scene READ scene)
public:
- explicit Q3DSurface();
- ~Q3DSurface();
+ explicit Q3DSurface(QWindow *parent = 0);
+ virtual ~Q3DSurface();
void addSeries(QSurface3DSeries *series);
void removeSeries(QSurface3DSeries *series);
@@ -84,7 +84,8 @@ protected:
void resizeEvent(QResizeEvent *event);
private:
- QScopedPointer<Q3DSurfacePrivate> d_ptr;
+ Q3DSurfacePrivate *dptr();
+ const Q3DSurfacePrivate *dptrc() const;
Q_DISABLE_COPY(Q3DSurface)
};
diff --git a/src/datavisualization/engine/q3dsurface_p.h b/src/datavisualization/engine/q3dsurface_p.h
index 7c70d08c..de2a518c 100644
--- a/src/datavisualization/engine/q3dsurface_p.h
+++ b/src/datavisualization/engine/q3dsurface_p.h
@@ -31,6 +31,7 @@
#include "surface3dcontroller_p.h"
#include "qdatavisualizationenums.h"
+#include "q3dwindow_p.h"
#include <QList>
@@ -38,13 +39,15 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE
class Q3DSurface;
-class Q3DSurfacePrivate : public QObject
+class Q3DSurfacePrivate : public Q3DWindowPrivate
{
+ Q_OBJECT
public:
- Q3DSurfacePrivate(Q3DSurface *q, QRect rect);
+ Q3DSurfacePrivate(Q3DSurface *q);
~Q3DSurfacePrivate();
- Q3DSurface *q_ptr;
+ Q3DSurface *qptr();
+
Surface3DController *m_shared;
};
diff --git a/src/datavisualization/engine/q3dwindow.cpp b/src/datavisualization/engine/q3dwindow.cpp
index 32267a8d..61a7911d 100644
--- a/src/datavisualization/engine/q3dwindow.cpp
+++ b/src/datavisualization/engine/q3dwindow.cpp
@@ -37,7 +37,8 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE
* \since Qt Data Visualization 1.0
*
* This class creates a QWindow and provides render loop for visualization types inheriting it.
- * \warning This class is not intended to be used directly by developers.
+ *
+ * You should not need to use this class directly, but one of its subclasses instead.
*
* \note Q3DWindow sets window flag \c{Qt::FramelessWindowHint} on by default. If you want to display
* graph windows as standalone windows with regular window frame, clear this flag after constructing
@@ -52,13 +53,14 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE
*/
/*!
- * Constructs Q3DWindow with \a parent. It creates a QWindow and an OpenGL context. It also sets
- * surface format and initializes OpenGL functions for use.
+ * \internal
*/
-Q3DWindow::Q3DWindow(QWindow *parent)
+Q3DWindow::Q3DWindow(Q3DWindowPrivate *d, QWindow *parent)
: QWindow(parent),
- d_ptr(new Q3DWindowPrivate(this))
+ d_ptr(d)
{
+ d_ptr->m_context = new QOpenGLContext(this);
+
setFlags(flags() | Qt::FramelessWindowHint);
setSurfaceType(QWindow::OpenGLSurface);
QSurfaceFormat surfaceFormat;
@@ -90,7 +92,7 @@ Q3DWindow::Q3DWindow(QWindow *parent)
if (splitversionstr[0].toFloat() < 1.2)
qFatal("GLSL version must be 1.20 or higher. Try installing latest display drivers.");
#endif
- renderLater();
+ d_ptr->renderLater();
}
/*!
@@ -101,26 +103,6 @@ Q3DWindow::~Q3DWindow()
}
/*!
- * \internal
- */
-void Q3DWindow::setVisualController(Abstract3DController *controller)
-{
- d_ptr->m_visualController = controller;
-}
-
-/*!
- * \internal
- */
-void Q3DWindow::handleDevicePixelRatioChange()
-{
- if (QWindow::devicePixelRatio() == d_ptr->m_devicePixelRatio || !d_ptr->m_visualController)
- return;
-
- d_ptr->m_devicePixelRatio = QWindow::devicePixelRatio();
- d_ptr->m_visualController->scene()->setDevicePixelRatio(d_ptr->m_devicePixelRatio);
-}
-
-/*!
* Adds the given \a inputHandler to the graph. The input handlers added via addInputHandler
* are not taken in to use directly. Only the ownership of the a\ inputHandler is given to the graph.
* The \a inputHandler must not be null or already added to another graph.
@@ -169,33 +151,11 @@ QAbstract3DInputHandler *Q3DWindow::activeInputHandler()
/*!
* \internal
*/
-void Q3DWindow::render()
-{
- handleDevicePixelRatioChange();
- d_ptr->m_visualController->synchDataToRenderer();
- d_ptr->m_visualController->render();
-}
-
-
-/*!
- * \internal
- */
-void Q3DWindow::renderLater()
-{
- if (!d_ptr->m_updatePending) {
- d_ptr->m_updatePending = true;
- QCoreApplication::postEvent(this, new QEvent(QEvent::UpdateRequest));
- }
-}
-
-/*!
- * \internal
- */
bool Q3DWindow::event(QEvent *event)
{
switch (event->type()) {
case QEvent::UpdateRequest:
- renderNow();
+ d_ptr->renderNow();
return true;
case QEvent::TouchBegin:
case QEvent::TouchCancel:
@@ -216,37 +176,63 @@ void Q3DWindow::exposeEvent(QExposeEvent *event)
Q_UNUSED(event);
if (isExposed())
- renderNow();
+ d_ptr->renderNow();
}
-/*!
- * \internal
- */
-void Q3DWindow::renderNow()
+Q3DWindowPrivate::Q3DWindowPrivate(Q3DWindow *q)
+ : QObject(0),
+ q_ptr(q),
+ m_updatePending(false),
+ m_visualController(0),
+ m_devicePixelRatio(1.f)
{
- if (!isExposed())
+}
+
+Q3DWindowPrivate::~Q3DWindowPrivate()
+{
+}
+
+void Q3DWindowPrivate::render()
+{
+ handleDevicePixelRatioChange();
+ m_visualController->synchDataToRenderer();
+ m_visualController->render();
+}
+
+void Q3DWindowPrivate::renderLater()
+{
+ if (!m_updatePending) {
+ m_updatePending = true;
+ QCoreApplication::postEvent(q_ptr, new QEvent(QEvent::UpdateRequest));
+ }
+}
+
+void Q3DWindowPrivate::renderNow()
+{
+ if (!q_ptr->isExposed())
return;
- d_ptr->m_updatePending = false;
+ m_updatePending = false;
- d_ptr->m_context->makeCurrent(this);
+ m_context->makeCurrent(q_ptr);
render();
- d_ptr->m_context->swapBuffers(this);
+ m_context->swapBuffers(q_ptr);
}
-Q3DWindowPrivate::Q3DWindowPrivate(Q3DWindow *q)
- : q_ptr(q),
- m_updatePending(false),
- m_context(new QOpenGLContext(q)),
- m_visualController(0),
- m_devicePixelRatio(1.f)
+void Q3DWindowPrivate::setVisualController(Abstract3DController *controller)
{
+ m_visualController = controller;
}
-Q3DWindowPrivate::~Q3DWindowPrivate()
+void Q3DWindowPrivate::handleDevicePixelRatioChange()
{
+ if (q_ptr->devicePixelRatio() == m_devicePixelRatio || !m_visualController)
+ return;
+
+ m_devicePixelRatio = q_ptr->devicePixelRatio();
+ m_visualController->scene()->setDevicePixelRatio(m_devicePixelRatio);
}
QT_DATAVISUALIZATION_END_NAMESPACE
diff --git a/src/datavisualization/engine/q3dwindow.h b/src/datavisualization/engine/q3dwindow.h
index e185914f..bacc0976 100644
--- a/src/datavisualization/engine/q3dwindow.h
+++ b/src/datavisualization/engine/q3dwindow.h
@@ -37,8 +37,9 @@ class QT_DATAVISUALIZATION_EXPORT Q3DWindow : public QWindow, protected QOpenGLF
{
Q_OBJECT
+protected:
+ explicit Q3DWindow(Q3DWindowPrivate *d, QWindow *parent = 0);
public:
- explicit Q3DWindow(QWindow *parent = 0);
virtual ~Q3DWindow();
void addInputHandler(QAbstract3DInputHandler *inputHandler);
@@ -46,18 +47,9 @@ public:
void setActiveInputHandler(QAbstract3DInputHandler *inputHandler);
QAbstract3DInputHandler *activeInputHandler();
-protected slots:
- void renderLater();
- void renderNow();
-
protected:
- // TODO: Move to private unnecessarily exposed functionality when doing QTRD-2213
- virtual void render();
-
bool event(QEvent *event);
void exposeEvent(QExposeEvent *event);
- void setVisualController(Abstract3DController *controller);
- void handleDevicePixelRatioChange();
private:
QScopedPointer<Q3DWindowPrivate> d_ptr;
diff --git a/src/datavisualization/engine/q3dwindow_p.h b/src/datavisualization/engine/q3dwindow_p.h
index 85ff103a..ba8c67da 100644
--- a/src/datavisualization/engine/q3dwindow_p.h
+++ b/src/datavisualization/engine/q3dwindow_p.h
@@ -26,11 +26,13 @@
//
// We mean it.
-#ifndef Q3DWINDOW_p_H
-#define Q3DWINDOW_p_H
+#ifndef Q3DWINDOW_P_H
+#define Q3DWINDOW_P_H
#include "datavisualizationglobal_p.h"
+#include <QObject>
+
class QOpenGLContext;
class QOpenGLPaintDevice;
@@ -39,12 +41,22 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE
class Q3DWindow;
class Abstract3DController;
-class Q3DWindowPrivate
+class Q3DWindowPrivate : public QObject
{
+ Q_OBJECT
public:
Q3DWindowPrivate(Q3DWindow *q);
~Q3DWindowPrivate();
+ void render();
+
+ void setVisualController(Abstract3DController *controller);
+ void handleDevicePixelRatioChange();
+
+public slots:
+ void renderLater();
+ void renderNow();
+
public:
Q3DWindow *q_ptr;