diff options
Diffstat (limited to 'src/datavisualization/engine')
-rw-r--r-- | src/datavisualization/engine/abstract3dcontroller.cpp | 91 | ||||
-rw-r--r-- | src/datavisualization/engine/abstract3dcontroller_p.h | 11 | ||||
-rw-r--r-- | src/datavisualization/engine/abstract3drenderer.cpp | 49 | ||||
-rw-r--r-- | src/datavisualization/engine/abstract3drenderer_p.h | 8 | ||||
-rw-r--r-- | src/datavisualization/engine/bars3drenderer.cpp | 18 | ||||
-rw-r--r-- | src/datavisualization/engine/bars3drenderer_p.h | 2 | ||||
-rw-r--r-- | src/datavisualization/engine/drawer.cpp | 12 | ||||
-rw-r--r-- | src/datavisualization/engine/drawer_p.h | 2 | ||||
-rw-r--r-- | src/datavisualization/engine/scatter3drenderer.cpp | 12 | ||||
-rw-r--r-- | src/datavisualization/engine/scatter3drenderer_p.h | 2 | ||||
-rw-r--r-- | src/datavisualization/engine/surface3drenderer.cpp | 6 |
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 |