summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/engine
diff options
context:
space:
mode:
Diffstat (limited to 'src/datavisualization/engine')
-rw-r--r--src/datavisualization/engine/abstract3dcontroller.cpp91
-rw-r--r--src/datavisualization/engine/abstract3dcontroller_p.h11
-rw-r--r--src/datavisualization/engine/abstract3drenderer.cpp49
-rw-r--r--src/datavisualization/engine/abstract3drenderer_p.h8
-rw-r--r--src/datavisualization/engine/bars3drenderer.cpp18
-rw-r--r--src/datavisualization/engine/bars3drenderer_p.h2
-rw-r--r--src/datavisualization/engine/drawer.cpp12
-rw-r--r--src/datavisualization/engine/drawer_p.h2
-rw-r--r--src/datavisualization/engine/scatter3drenderer.cpp12
-rw-r--r--src/datavisualization/engine/scatter3drenderer_p.h2
-rw-r--r--src/datavisualization/engine/surface3drenderer.cpp6
11 files changed, 43 insertions, 170 deletions
diff --git a/src/datavisualization/engine/abstract3dcontroller.cpp b/src/datavisualization/engine/abstract3dcontroller.cpp
index d06a2609..302b74ad 100644
--- a/src/datavisualization/engine/abstract3dcontroller.cpp
+++ b/src/datavisualization/engine/abstract3dcontroller.cpp
@@ -141,13 +141,9 @@ void Abstract3DController::synchDataToRenderer()
m_renderer->updateScene(m_scene);
- // TODO: Renderer doesn't need to know the theme, so remove this bit entirely (QTRD-2538)
- if (m_changeTracker.themeChanged) {
- m_renderer->updateTheme(m_themeManager->theme());
- m_changeTracker.themeChanged = false;
- }
+ m_renderer->updateTheme(m_themeManager->theme());
- // TODO: Move to a sync function to clean this up a bit (make a separate task)
+ // TODO: Rethink these after color api has been moveed to series (QTRD-2200/2557)
if (m_changeTracker.colorStyleChanged) {
m_renderer->updateColorStyle(m_colorStyle);
m_changeTracker.colorStyleChanged = false;
@@ -183,26 +179,6 @@ void Abstract3DController::synchDataToRenderer()
m_changeTracker.multiHighlightGradientChanged = false;
}
- if (m_changeTracker.fontChanged) {
- m_renderer->updateFont(m_font);
- m_changeTracker.fontChanged = false;
- }
-
- if (m_changeTracker.labelBackgroundEnabledChanged) {
- m_renderer->updateLabelBackgroundEnabled(m_labelBackground);
- m_changeTracker.labelBackgroundEnabledChanged = false;
- }
-
- if (m_changeTracker.gridEnabledChanged) {
- m_renderer->updateGridEnabled(m_isGridEnabled);
- m_changeTracker.gridEnabledChanged = false;
- }
-
- if (m_changeTracker.backgroundEnabledChanged) {
- m_renderer->updateBackgroundEnabled(m_isBackgroundEnabled);
- m_changeTracker.backgroundEnabledChanged = false;
- }
-
if (m_changeTracker.shadowQualityChanged) {
m_renderer->updateShadowQuality(m_shadowQuality);
m_changeTracker.shadowQualityChanged = false;
@@ -805,13 +781,8 @@ void Abstract3DController::setTheme(Q3DTheme *theme)
if (theme != m_themeManager->theme()) {
m_themeManager->setTheme(theme);
m_changeTracker.themeChanged = true;
- // TODO: set all colors/styles here (QTRD-2538)
+ // TODO: Rethink this once color api has been moved to series (QTRD-2200/2557)
setColorStyle(theme->colorStyle());
- // Set all other theme properties
- setBackgroundEnabled(theme->isBackgroundEnabled());
- setFont(theme->font());
- setGridEnabled(theme->isGridEnabled());
- setLabelBackgroundEnabled(theme->isLabelBackgroundEnabled());
emit themeChanged(theme);
}
}
@@ -821,20 +792,6 @@ Q3DTheme *Abstract3DController::theme() const
return m_themeManager->theme();
}
-void Abstract3DController::setFont(const QFont &font)
-{
- if (font != m_font) {
- m_font = font;
- m_changeTracker.fontChanged = true;
- emitNeedRender();
- }
-}
-
-QFont Abstract3DController::font() const
-{
- return m_font;
-}
-
void Abstract3DController::setSelectionMode(QDataVis::SelectionFlags mode)
{
if (mode != m_selectionMode) {
@@ -865,48 +822,6 @@ QDataVis::ShadowQuality Abstract3DController::shadowQuality() const
return m_shadowQuality;
}
-void Abstract3DController::setLabelBackgroundEnabled(bool enable)
-{
- if (enable != m_labelBackground) {
- m_labelBackground = enable;
- m_changeTracker.labelBackgroundEnabledChanged = true;
- emitNeedRender();
- }
-}
-
-bool Abstract3DController::isLabelBackgroundEnabled() const
-{
- return m_labelBackground;
-}
-
-void Abstract3DController::setBackgroundEnabled(bool enable)
-{
- if (enable != m_isBackgroundEnabled) {
- m_isBackgroundEnabled = enable;
- m_changeTracker.backgroundEnabledChanged = true;
- emitNeedRender();
- }
-}
-
-bool Abstract3DController::backgroundEnabled() const
-{
- return m_isBackgroundEnabled;
-}
-
-void Abstract3DController::setGridEnabled(bool enable)
-{
- if (enable != m_isGridEnabled) {
- m_isGridEnabled = enable;
- m_changeTracker.gridEnabledChanged = true;
- emitNeedRender();
- }
-}
-
-bool Abstract3DController::gridEnabled() const
-{
- return m_isGridEnabled;
-}
-
bool Abstract3DController::isSlicingActive() const
{
return m_scene->isSlicingActive();
diff --git a/src/datavisualization/engine/abstract3dcontroller_p.h b/src/datavisualization/engine/abstract3dcontroller_p.h
index 0180623c..556d1ea5 100644
--- a/src/datavisualization/engine/abstract3dcontroller_p.h
+++ b/src/datavisualization/engine/abstract3dcontroller_p.h
@@ -256,7 +256,8 @@ public:
virtual void setTheme(Q3DTheme *theme);
virtual Q3DTheme *theme() const;
- // Properties from theme
+ // Properties from color api
+ // TODO: Rethink these after color api has been moveed to series (QTRD-2200/2557)
virtual void setColorStyle(QDataVis::ColorStyle style);
virtual QDataVis::ColorStyle colorStyle() const;
virtual void setBaseColor(const QColor &color);
@@ -271,14 +272,6 @@ public:
virtual QColor multiHighlightColor() const;
virtual void setMultiHighlightGradient(const QLinearGradient &gradient);
virtual QLinearGradient multiHighlightGradient() const;
- virtual void setFont(const QFont &font);
- virtual QFont font() const;
- virtual void setLabelBackgroundEnabled(bool enable);
- virtual bool isLabelBackgroundEnabled() const;
- virtual void setBackgroundEnabled(bool enable);
- virtual bool backgroundEnabled() const;
- virtual void setGridEnabled(bool enable);
- virtual bool gridEnabled() const;
virtual void setSelectionMode(QDataVis::SelectionFlags mode);
virtual QDataVis::SelectionFlags selectionMode() const;
diff --git a/src/datavisualization/engine/abstract3drenderer.cpp b/src/datavisualization/engine/abstract3drenderer.cpp
index 118f7b13..50e56ce5 100644
--- a/src/datavisualization/engine/abstract3drenderer.cpp
+++ b/src/datavisualization/engine/abstract3drenderer.cpp
@@ -24,6 +24,7 @@
#include "q3dcamera_p.h"
#include "q3dlight_p.h"
#include "qabstract3dseries_p.h"
+#include "q3dtheme_p.h"
Q_DECLARE_METATYPE(QtDataVisualization::QDataVis::ShadowQuality)
@@ -32,16 +33,12 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE
Abstract3DRenderer::Abstract3DRenderer(Abstract3DController *controller)
: QObject(0),
m_hasNegativeValues(false),
- m_cachedTheme(),
- m_cachedFont(QFont(QStringLiteral("Arial"))),
- m_cachedLabelBackground(false),
- m_drawer(new Drawer(m_cachedTheme, m_cachedFont, m_cachedLabelBackground)),
+ m_cachedTheme(new Q3DTheme()),
+ m_drawer(new Drawer(m_cachedTheme)),
m_cachedBoundingRect(QRect(0, 0, 0, 0)),
m_cachedShadowQuality(QDataVis::ShadowQualityMedium),
m_autoScaleAdjustment(1.0f),
m_cachedSelectionMode(QDataVis::SelectionNone),
- m_cachedIsGridEnabled(false),
- m_cachedIsBackgroundEnabled(false),
m_cachedColorStyle(QDataVis::ColorStyleUniform),
m_objectGradientTexture(0),
m_singleHighlightGradientTexture(0),
@@ -166,12 +163,15 @@ void Abstract3DRenderer::updatePosition(const QRect &boundingRect)
void Abstract3DRenderer::updateTheme(Q3DTheme *theme)
{
- m_cachedTheme = theme;
+ // Synchronize the controller theme with renderer
+ bool changed = theme->d_ptr->sync(*m_cachedTheme->d_ptr);
- m_drawer->setTheme(m_cachedTheme);
-
- // Re-initialize shaders
- reInitShaders();
+ if (changed) {
+ // Update drawer if sync changed something
+ m_drawer->setTheme(m_cachedTheme);
+ // Re-initialize shaders
+ reInitShaders();
+ }
}
void Abstract3DRenderer::updateScene(Q3DScene *scene)
@@ -196,10 +196,8 @@ void Abstract3DRenderer::updateScene(Q3DScene *scene)
}
}
- // Synchronize the controller scene to that of the renderer, and vice versa.
- // Controller scene had priority if both have changed same values.
+ // Synchronize the controller scene with renderer
scene->d_ptr->sync(*m_cachedScene->d_ptr);
- m_cachedScene->d_ptr->sync(*scene->d_ptr);
}
void Abstract3DRenderer::reInitShaders()
@@ -252,19 +250,6 @@ void Abstract3DRenderer::handleShadowQualityChange()
#endif
}
-void Abstract3DRenderer::updateFont(const QFont &font)
-{
- m_cachedFont = font;
- m_drawer->setFont(font);
-}
-
-void Abstract3DRenderer::updateLabelBackgroundEnabled(bool enabled)
-{
- qDebug() << __FUNCTION__ << enabled;
- m_cachedLabelBackground = enabled;
- m_drawer->setLabelBackground(enabled);
-}
-
void Abstract3DRenderer::updateMeshFileName(const QString &objFileName)
{
if (objFileName != m_cachedObjFile) {
@@ -279,16 +264,6 @@ void Abstract3DRenderer::updateSelectionMode(QDataVis::SelectionFlags mode)
m_selectionDirty = true;
}
-void Abstract3DRenderer::updateGridEnabled(bool enable)
-{
- m_cachedIsGridEnabled = enable;
-}
-
-void Abstract3DRenderer::updateBackgroundEnabled(bool enable)
-{
- m_cachedIsBackgroundEnabled = enable;
-}
-
void Abstract3DRenderer::handleResize()
{
if (m_cachedBoundingRect.width() == 0 || m_cachedBoundingRect.height() == 0)
diff --git a/src/datavisualization/engine/abstract3drenderer_p.h b/src/datavisualization/engine/abstract3drenderer_p.h
index ea659524..6582fbc3 100644
--- a/src/datavisualization/engine/abstract3drenderer_p.h
+++ b/src/datavisualization/engine/abstract3drenderer_p.h
@@ -61,8 +61,6 @@ protected:
bool m_hasNegativeValues;
Q3DTheme *m_cachedTheme;
- QFont m_cachedFont;
- bool m_cachedLabelBackground;
Drawer *m_drawer;
QRect m_cachedBoundingRect;
QDataVis::ShadowQuality m_cachedShadowQuality;
@@ -70,8 +68,6 @@ protected:
QString m_cachedObjFile;
QDataVis::SelectionFlags m_cachedSelectionMode;
- bool m_cachedIsGridEnabled;
- bool m_cachedIsBackgroundEnabled;
QDataVis::ColorStyle m_cachedColorStyle;
QColor m_cachedObjectColor;
@@ -116,11 +112,7 @@ public:
virtual void updatePosition(const QRect &boundingRect);
virtual void updateTheme(Q3DTheme *theme);
- virtual void updateFont(const QFont &font);
- virtual void updateLabelBackgroundEnabled(bool enabled);
virtual void updateSelectionMode(QDataVis::SelectionFlags newMode);
- virtual void updateGridEnabled(bool enable);
- virtual void updateBackgroundEnabled(bool enable);
virtual void updateMeshFileName(const QString &objFileName);
virtual void updateScene(Q3DScene *scene);
virtual void updateTextures() = 0;
diff --git a/src/datavisualization/engine/bars3drenderer.cpp b/src/datavisualization/engine/bars3drenderer.cpp
index 29215eb0..142640b3 100644
--- a/src/datavisualization/engine/bars3drenderer.cpp
+++ b/src/datavisualization/engine/bars3drenderer.cpp
@@ -339,7 +339,7 @@ void Bars3DRenderer::drawSlicedScene(const LabelItem &xLabel,
bool itemMode = m_cachedSelectionMode.testFlag(QDataVis::SelectionItem);
// Draw grid lines
- if (m_cachedIsGridEnabled) {
+ if (m_cachedTheme->isGridEnabled()) {
glDisable(GL_DEPTH_TEST);
ShaderHelper *lineShader = m_backgroundShader;
// Bind line shader
@@ -1205,7 +1205,7 @@ void Bars3DRenderer::drawScene(GLuint defaultFboHandle)
GLfloat rowScaleFactor = m_rowWidth / m_scaleFactor;
GLfloat columnScaleFactor = m_columnDepth / m_scaleFactor;
- if (m_cachedIsBackgroundEnabled && m_backgroundObj) {
+ if (m_cachedTheme->isBackgroundEnabled() && m_backgroundObj) {
QMatrix4x4 modelMatrix;
QMatrix4x4 MVPMatrix;
QMatrix4x4 itModelMatrix;
@@ -1311,7 +1311,7 @@ void Bars3DRenderer::drawScene(GLuint defaultFboHandle)
glDisable(GL_TEXTURE_2D);
// Draw grid lines
- if (m_cachedIsGridEnabled && m_heightNormalizer) {
+ if (m_cachedTheme->isGridEnabled() && m_heightNormalizer) {
ShaderHelper *lineShader = m_backgroundShader;
QQuaternion lineRotation = QQuaternion();
@@ -1829,12 +1829,14 @@ void Bars3DRenderer::updateAxisRange(Q3DAbstractAxis::AxisOrientation orientatio
}
}
-void Bars3DRenderer::updateBackgroundEnabled(bool enable)
+void Bars3DRenderer::updateTheme(Q3DTheme *theme)
{
- if (enable != m_cachedIsBackgroundEnabled) {
- Abstract3DRenderer::updateBackgroundEnabled(enable);
+ bool wasEnabled = m_cachedTheme->isBackgroundEnabled();
+
+ Abstract3DRenderer::updateTheme(theme);
+
+ if (theme->isBackgroundEnabled() != wasEnabled)
loadMeshFile(); // Load changed bar type
- }
}
void Bars3DRenderer::updateSelectedBar(const QPoint &position, const QBar3DSeries *series)
@@ -1921,7 +1923,7 @@ void Bars3DRenderer::loadMeshFile()
if (m_barObj)
delete m_barObj;
// If background is disabled, load full version of bar mesh
- if (!m_cachedIsBackgroundEnabled)
+ if (!m_cachedTheme->isBackgroundEnabled())
objectFileName.append(QStringLiteral("Full"));
m_barObj = new ObjectHelper(objectFileName);
m_barObj->load();
diff --git a/src/datavisualization/engine/bars3drenderer_p.h b/src/datavisualization/engine/bars3drenderer_p.h
index fa2e1268..f3e9103b 100644
--- a/src/datavisualization/engine/bars3drenderer_p.h
+++ b/src/datavisualization/engine/bars3drenderer_p.h
@@ -129,7 +129,6 @@ public slots:
const QSizeF &spacing = QSizeF(1.0, 1.0),
bool relative = true);
void updateSlicingActive(bool isSlicing);
- void updateBackgroundEnabled(bool enable);
void updateSelectedBar(const QPoint &position, const QBar3DSeries *series);
// Overloaded from abstract renderer
@@ -142,6 +141,7 @@ private:
virtual void initShaders(const QString &vertexShader, const QString &fragmentShader);
virtual void updateShadowQuality(QDataVis::ShadowQuality quality);
virtual void updateTextures();
+ virtual void updateTheme(Q3DTheme *theme);
void drawSlicedScene(const LabelItem &xLabel, const LabelItem &yLabel, const LabelItem &zLabel);
void drawScene(GLuint defaultFboHandle);
diff --git a/src/datavisualization/engine/drawer.cpp b/src/datavisualization/engine/drawer.cpp
index 4cb5511a..87f64e4f 100644
--- a/src/datavisualization/engine/drawer.cpp
+++ b/src/datavisualization/engine/drawer.cpp
@@ -44,10 +44,10 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE
// Vertex array buffer for point
const GLfloat point_data[] = {0.0f, 0.0f, 0.0f};
-Drawer::Drawer(Q3DTheme *theme, const QFont &font, bool labelBackground)
+Drawer::Drawer(Q3DTheme *theme)
: m_theme(theme),
- m_font(font),
- m_labelBackground(labelBackground),
+ m_font(theme->font()),
+ m_labelBackground(theme->isLabelBackgroundEnabled()),
m_textureHelper(0),
m_pointbuffer(0)
{
@@ -70,6 +70,8 @@ void Drawer::initializeOpenGL()
void Drawer::setTheme(Q3DTheme *theme)
{
m_theme = theme;
+ m_font = m_theme->font();
+ m_labelBackground = m_theme->isLabelBackgroundEnabled();
emit drawerChanged();
}
@@ -80,6 +82,8 @@ Q3DTheme *Drawer::theme() const
void Drawer::setFont(const QFont &font)
{
+ // We need to be able to override theme's font for drawer
+ // TODO: (or do we?)
m_font = font;
emit drawerChanged();
}
@@ -91,6 +95,8 @@ QFont Drawer::font() const
void Drawer::setLabelBackground(bool enabled)
{
+ // We need to be able to override theme's label background for drawer
+ // TODO: (or do we?)
m_labelBackground = enabled;
emit drawerChanged();
}
diff --git a/src/datavisualization/engine/drawer_p.h b/src/datavisualization/engine/drawer_p.h
index c3f92380..8bc62209 100644
--- a/src/datavisualization/engine/drawer_p.h
+++ b/src/datavisualization/engine/drawer_p.h
@@ -63,7 +63,7 @@ public:
};
public:
- explicit Drawer(Q3DTheme *theme, const QFont &font, bool labelBackground);
+ explicit Drawer(Q3DTheme *theme);
~Drawer();
void initializeOpenGL();
diff --git a/src/datavisualization/engine/scatter3drenderer.cpp b/src/datavisualization/engine/scatter3drenderer.cpp
index 73864643..24e33ba6 100644
--- a/src/datavisualization/engine/scatter3drenderer.cpp
+++ b/src/datavisualization/engine/scatter3drenderer.cpp
@@ -679,7 +679,7 @@ void Scatter3DRenderer::drawScene(const GLuint defaultFboHandle)
glCullFace(GL_BACK);
// Draw background
- if (m_cachedIsBackgroundEnabled && m_backgroundObj) {
+ if (m_cachedTheme->isBackgroundEnabled() && m_backgroundObj) {
QMatrix4x4 modelMatrix;
QMatrix4x4 MVPMatrix;
QMatrix4x4 itModelMatrix;
@@ -760,7 +760,7 @@ void Scatter3DRenderer::drawScene(const GLuint defaultFboHandle)
axisCacheMax = &m_axisCacheX;
#endif
- if (m_cachedIsGridEnabled && m_heightNormalizer) {
+ if (m_cachedTheme->isGridEnabled() && m_heightNormalizer) {
ShaderHelper *lineShader = m_backgroundShader;
// Bind line shader
@@ -1455,14 +1455,6 @@ void Scatter3DRenderer::handleResize()
Abstract3DRenderer::handleResize();
}
-void Scatter3DRenderer::updateBackgroundEnabled(bool enable)
-{
- if (enable != m_cachedIsBackgroundEnabled) {
- Abstract3DRenderer::updateBackgroundEnabled(enable);
- loadMeshFile(); // Load changed dot type
- }
-}
-
void Scatter3DRenderer::updateShadowQuality(QDataVis::ShadowQuality quality)
{
m_cachedShadowQuality = quality;
diff --git a/src/datavisualization/engine/scatter3drenderer_p.h b/src/datavisualization/engine/scatter3drenderer_p.h
index 31ed08a9..6a0bbbec 100644
--- a/src/datavisualization/engine/scatter3drenderer_p.h
+++ b/src/datavisualization/engine/scatter3drenderer_p.h
@@ -137,8 +137,6 @@ private:
friend class ScatterRenderItem;
public slots:
- void updateBackgroundEnabled(bool enable);
-
// Overloaded from abstract renderer
virtual void updateAxisRange(Q3DAbstractAxis::AxisOrientation orientation, float min, float max);
diff --git a/src/datavisualization/engine/surface3drenderer.cpp b/src/datavisualization/engine/surface3drenderer.cpp
index 4c1de83f..df4a12f0 100644
--- a/src/datavisualization/engine/surface3drenderer.cpp
+++ b/src/datavisualization/engine/surface3drenderer.cpp
@@ -591,7 +591,7 @@ void Surface3DRenderer::drawSlicedScene()
glDisable(GL_TEXTURE_2D);
// Grid lines
- if (m_cachedIsGridEnabled && m_heightNormalizer) {
+ if (m_cachedTheme->isGridEnabled() && m_heightNormalizer) {
ShaderHelper *lineShader = m_backgroundShader;
// Bind line shader
lineShader->bind();
@@ -1050,7 +1050,7 @@ void Surface3DRenderer::drawScene(GLuint defaultFboHandle)
glCullFace(GL_BACK);
// Draw background
- if (m_cachedIsBackgroundEnabled && m_backgroundObj) {
+ if (m_cachedTheme->isBackgroundEnabled() && m_backgroundObj) {
QMatrix4x4 modelMatrix;
QMatrix4x4 MVPMatrix;
QMatrix4x4 itModelMatrix;
@@ -1119,7 +1119,7 @@ void Surface3DRenderer::drawScene(GLuint defaultFboHandle)
QVector3D gridLineScaleZ(gridLineWidth, gridLineWidth, m_scaleZWithBackground);
QVector3D gridLineScaleY(gridLineWidth, backgroundMargin, gridLineWidth);
- if (m_cachedIsGridEnabled && m_heightNormalizer) {
+ if (m_cachedTheme->isGridEnabled() && m_heightNormalizer) {
ShaderHelper *lineShader = m_backgroundShader;
// Bind line shader