From 1dca7a61130615da20f8c7205abd62db721e61d0 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Thu, 7 Nov 2013 14:57:48 +0200 Subject: Gradient support part 2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Scatter gradients. Task-number: QTRD-2200 Change-Id: Ia6ac271440d0d26b7cae9332ef2ba4e7bf1a11fe Reviewed-by: Tomi Korpipää --- .../data/qitemmodelscatterdataproxy.cpp | 2 +- .../data/qitemmodelsurfacedataproxy.cpp | 2 +- src/datavisualization/data/qscatterdataproxy.cpp | 2 +- .../engine/abstract3dcontroller.cpp | 5 ++- src/datavisualization/engine/bars3drenderer.cpp | 22 +++++----- src/datavisualization/engine/q3dscatter.cpp | 25 ----------- src/datavisualization/engine/q3dscatter.h | 3 -- src/datavisualization/engine/scatter3drenderer.cpp | 44 +++++++++++++------ src/datavisualization/engine/selectionpointer.cpp | 2 +- src/datavisualization/engine/surface3drenderer.cpp | 5 +-- src/datavisualization/engine/theme.cpp | 50 +++++++++------------- src/datavisualization/engine/theme_p.h | 5 +-- .../global/datavisualizationglobal_p.h | 2 - .../global/qtdatavisualizationenums.qdoc | 3 +- src/datavisualization/utils/texturehelper.cpp | 6 ++- src/datavisualization/utils/texturehelper_p.h | 2 +- 16 files changed, 77 insertions(+), 103 deletions(-) (limited to 'src/datavisualization') diff --git a/src/datavisualization/data/qitemmodelscatterdataproxy.cpp b/src/datavisualization/data/qitemmodelscatterdataproxy.cpp index 66a0a63b..5536a105 100644 --- a/src/datavisualization/data/qitemmodelscatterdataproxy.cpp +++ b/src/datavisualization/data/qitemmodelscatterdataproxy.cpp @@ -34,7 +34,7 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE * The data is resolved asynchronously whenever the mapping or the model changes. * QScatterDataProxy::arrayReset() is emitted when the data has been resolved. * - * /sa {Qt Data Visualization Data Handling} + * \sa {Qt Data Visualization Data Handling} */ /*! diff --git a/src/datavisualization/data/qitemmodelsurfacedataproxy.cpp b/src/datavisualization/data/qitemmodelsurfacedataproxy.cpp index d3f0f076..75032930 100644 --- a/src/datavisualization/data/qitemmodelsurfacedataproxy.cpp +++ b/src/datavisualization/data/qitemmodelsurfacedataproxy.cpp @@ -36,7 +36,7 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE * Data is resolved asynchronously whenever the mapping or the model changes. * QSurfaceDataProxy::arrayReset() is emitted when the data has been resolved. * - * /sa {Qt Data Visualization Data Handling} + * \sa {Qt Data Visualization Data Handling} */ /*! diff --git a/src/datavisualization/data/qscatterdataproxy.cpp b/src/datavisualization/data/qscatterdataproxy.cpp index c5559e9c..85cbb4eb 100644 --- a/src/datavisualization/data/qscatterdataproxy.cpp +++ b/src/datavisualization/data/qscatterdataproxy.cpp @@ -53,7 +53,7 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE * For example: * \snippet doc_src_qtdatavisualization.cpp 2 * - * /sa {Qt Data Visualization Data Handling} + * \sa {Qt Data Visualization Data Handling} */ /*! diff --git a/src/datavisualization/engine/abstract3dcontroller.cpp b/src/datavisualization/engine/abstract3dcontroller.cpp index 44a9e8b2..c62fe097 100644 --- a/src/datavisualization/engine/abstract3dcontroller.cpp +++ b/src/datavisualization/engine/abstract3dcontroller.cpp @@ -827,8 +827,9 @@ void Abstract3DController::setTheme(QDataVis::Theme theme) // TODO: set all colors/styles here (QTRD-2538) setColorStyle(QDataVis::ColorStyleUniform); setObjectColor(m_theme.m_baseColor); - setSingleHighlightColor(m_theme.m_highlightBarColor); - setMultiHighlightColor(m_theme.m_highlightRowColor); + setSingleHighlightColor(m_theme.m_singleHighlightColor); + setMultiHighlightColor(m_theme.m_multiHighlightColor); + emit themeChanged(theme); emitNeedRender(); } diff --git a/src/datavisualization/engine/bars3drenderer.cpp b/src/datavisualization/engine/bars3drenderer.cpp index e0910880..d8c01b02 100644 --- a/src/datavisualization/engine/bars3drenderer.cpp +++ b/src/datavisualization/engine/bars3drenderer.cpp @@ -314,9 +314,9 @@ void Bars3DRenderer::drawSlicedScene(const LabelItem &xLabel, m_cachedTheme.m_ambientStrength * 2.0f); if (m_cachedColorStyle != QDataVis::ColorStyleUniform) { // Round the gradient off a bit to avoid it looping over - m_barShader->setUniformValue(m_barShader->gradientMin(), gradientMargin); + m_barShader->setUniformValue(m_barShader->gradientMin(), 0.0f); if (m_cachedColorStyle == QDataVis::ColorStyleObjectGradient) - m_barShader->setUniformValue(m_barShader->gradientHeight(), 0.5f - gradientMargin); + m_barShader->setUniformValue(m_barShader->gradientHeight(), 0.5f); gradientTexture = m_objectGradientTexture; } @@ -331,8 +331,8 @@ void Bars3DRenderer::drawSlicedScene(const LabelItem &xLabel, } QVector3D modelMatrixScaler(m_scaleX, 0.0f, m_scaleZ); QMatrix4x4 projectionViewMatrix = projectionMatrix * viewMatrix; - QVector3D barHighlightColor(Utils::vectorFromColor(m_cachedTheme.m_highlightBarColor)); - QVector3D rowHighlightColor(Utils::vectorFromColor(m_cachedTheme.m_highlightRowColor)); + QVector3D barHighlightColor(Utils::vectorFromColor(m_cachedSingleHighlightColor)); + QVector3D rowHighlightColor(Utils::vectorFromColor(m_cachedMultiHighlightColor)); bool rowMode = m_cachedSelectionMode.testFlag(QDataVis::SelectionRow); bool itemMode = m_cachedSelectionMode.testFlag(QDataVis::SelectionItem); @@ -386,8 +386,7 @@ void Bars3DRenderer::drawSlicedScene(const LabelItem &xLabel, m_barShader->setUniformValue(m_barShader->color(), barColor); } else if (m_cachedColorStyle == QDataVis::ColorStyleRangeGradient) { m_barShader->setUniformValue(m_barShader->gradientHeight(), - ((qAbs(item->height()) / m_gradientFraction)) - - gradientMargin); + (qAbs(item->height()) / m_gradientFraction)); } // Draw the object @@ -801,9 +800,9 @@ void Bars3DRenderer::drawScene(GLuint defaultFboHandle) m_cachedTheme.m_ambientStrength); if (m_cachedColorStyle != QDataVis::ColorStyleUniform) { // Round the gradient off a bit to avoid it looping over - m_barShader->setUniformValue(m_barShader->gradientMin(), gradientMargin); + m_barShader->setUniformValue(m_barShader->gradientMin(), 0.0f); if (m_cachedColorStyle == QDataVis::ColorStyleObjectGradient) - m_barShader->setUniformValue(m_barShader->gradientHeight(), 0.5f - gradientMargin); + m_barShader->setUniformValue(m_barShader->gradientHeight(), 0.5f); gradientTexture = m_objectGradientTexture; } @@ -825,8 +824,8 @@ void Bars3DRenderer::drawScene(GLuint defaultFboHandle) } // Draw bars - QVector3D barHighlightColor(Utils::vectorFromColor(m_cachedTheme.m_highlightBarColor)); - QVector3D rowHighlightColor(Utils::vectorFromColor(m_cachedTheme.m_highlightRowColor)); + QVector3D barHighlightColor(Utils::vectorFromColor(m_cachedSingleHighlightColor)); + QVector3D rowHighlightColor(Utils::vectorFromColor(m_cachedMultiHighlightColor)); QVector3D baseColor(Utils::vectorFromColor(m_cachedObjectColor)); QVector3D barColor = baseColor; @@ -961,8 +960,7 @@ void Bars3DRenderer::drawScene(GLuint defaultFboHandle) m_barShader->setUniformValue(m_barShader->color(), barColor); } else if (m_cachedColorStyle == QDataVis::ColorStyleRangeGradient) { m_barShader->setUniformValue(m_barShader->gradientHeight(), - ((qAbs(item.height()) / m_gradientFraction)) - - gradientMargin); + qAbs(item.height()) / m_gradientFraction); } #if !defined(QT_OPENGL_ES_2) diff --git a/src/datavisualization/engine/q3dscatter.cpp b/src/datavisualization/engine/q3dscatter.cpp index 0893990b..195660a9 100644 --- a/src/datavisualization/engine/q3dscatter.cpp +++ b/src/datavisualization/engine/q3dscatter.cpp @@ -237,31 +237,6 @@ QDataVis::Theme Q3DScatter::theme() const return d_ptr->m_shared->theme().theme(); } -/*! - * Set item color using your own colors. \a baseColor sets the base color of a item. The \a uniform - * -flag is used to define if color needs to be uniform throughout item's length, or will the colors - * be applied by height. It is \c true by default. - * - * Calling this method overrides colors from theme. - * - * \sa setTheme() - * - * \preliminary - */ -void Q3DScatter::setObjectColor(const QColor &baseColor, bool uniform) -{ - //TODO - d_ptr->m_shared->setObjectColor(baseColor); -} - -/*! - * \return item color in use. - */ -QColor Q3DScatter::objectColor() const -{ - return d_ptr->m_shared->objectColor(); -} - /*! * \property Q3DScatter::selectionMode * diff --git a/src/datavisualization/engine/q3dscatter.h b/src/datavisualization/engine/q3dscatter.h index 2cc6bfd9..49397a56 100644 --- a/src/datavisualization/engine/q3dscatter.h +++ b/src/datavisualization/engine/q3dscatter.h @@ -63,9 +63,6 @@ public: void setTheme(QDataVis::Theme theme); QDataVis::Theme theme() const; - void setObjectColor(const QColor &baseColor, bool uniform = true); - QColor objectColor() const; - void setMeshFileName(const QString &objFileName); QString meshFileName() const; diff --git a/src/datavisualization/engine/scatter3drenderer.cpp b/src/datavisualization/engine/scatter3drenderer.cpp index 3ebbbf74..02c5d51a 100644 --- a/src/datavisualization/engine/scatter3drenderer.cpp +++ b/src/datavisualization/engine/scatter3drenderer.cpp @@ -507,6 +507,7 @@ void Scatter3DRenderer::drawScene(const GLuint defaultFboHandle) // Bind dot shader ShaderHelper *dotShader = 0; + GLuint gradientTexture = 0; if (!m_drawingPoints) { // Set default shader @@ -517,6 +518,17 @@ void Scatter3DRenderer::drawScene(const GLuint defaultFboHandle) dotShader->setUniformValue(dotShader->lightP(), lightPos); dotShader->setUniformValue(dotShader->view(), viewMatrix); dotShader->setUniformValue(dotShader->ambientS(), m_cachedTheme.m_ambientStrength); + if (m_cachedColorStyle != QDataVis::ColorStyleUniform && !m_drawingPoints) { + if (m_cachedColorStyle == QDataVis::ColorStyleObjectGradient) { + // Round the gradient off a bit to avoid it looping over + dotShader->setUniformValue(dotShader->gradientMin(), 0.0f); + dotShader->setUniformValue(dotShader->gradientHeight(), 0.5f); + } else { + // Each ball is of uniform color according to its Y-coordinate + dotShader->setUniformValue(dotShader->gradientHeight(), 0.0f); + } + gradientTexture = m_objectGradientTexture; + } // Enable texture glEnable(GL_TEXTURE_2D); @@ -534,7 +546,8 @@ void Scatter3DRenderer::drawScene(const GLuint defaultFboHandle) bool dotSelectionFound = false; ScatterRenderItem *selectedItem(0); - QVector3D baseColor = Utils::vectorFromColor(m_cachedTheme.m_baseColor); + QVector3D baseColor = Utils::vectorFromColor(m_cachedObjectColor); + QVector3D dotColor = baseColor; for (int dot = 0; dot < m_renderItemArray.size(); dot++) { ScatterRenderItem &item = m_renderItemArray[dot]; @@ -562,18 +575,17 @@ void Scatter3DRenderer::drawScene(const GLuint defaultFboHandle) MVPMatrix = projectionViewMatrix * modelMatrix; #endif -#if 0 - QVector3D heightColor = - Utils::vectorFromColor(m_cachedTheme.m_heightColor) * item.translation().y(); - - QVector3D dotColor = baseColor + heightColor; -#else - QVector3D dotColor = baseColor; -#endif + if (m_cachedColorStyle == QDataVis::ColorStyleUniform || m_drawingPoints) + dotColor = baseColor; + else + gradientTexture = m_objectGradientTexture; GLfloat lightStrength = m_cachedTheme.m_lightStrength; if (m_cachedSelectionMode > QDataVis::SelectionNone && (m_selectedItemIndex == dot)) { - dotColor = Utils::vectorFromColor(m_cachedTheme.m_highlightBarColor); + if (m_cachedColorStyle == QDataVis::ColorStyleUniform || m_drawingPoints) + dotColor = Utils::vectorFromColor(m_cachedSingleHighlightColor); + else + gradientTexture = m_singleHighlightGradientTexture; lightStrength = m_cachedTheme.m_highlightLightStrength; // Insert data to ScatterRenderItem. We have no ownership, don't delete the previous one selectedItem = &item; @@ -587,8 +599,12 @@ void Scatter3DRenderer::drawScene(const GLuint defaultFboHandle) itModelMatrix.inverted().transposed()); } dotShader->setUniformValue(dotShader->MVP(), MVPMatrix); - dotShader->setUniformValue(dotShader->color(), dotColor); - + if (m_cachedColorStyle == QDataVis::ColorStyleUniform || m_drawingPoints) { + dotShader->setUniformValue(dotShader->color(), dotColor); + } else if (m_cachedColorStyle == QDataVis::ColorStyleRangeGradient) { + dotShader->setUniformValue(dotShader->gradientMin(), + (item.position().y() + 1.0f) / 2.0f); + } #if !defined(QT_OPENGL_ES_2) if (m_cachedShadowQuality > QDataVis::ShadowQualityNone) { if (!m_drawingPoints) { @@ -599,7 +615,7 @@ void Scatter3DRenderer::drawScene(const GLuint defaultFboHandle) dotShader->setUniformValue(dotShader->lightS(), lightStrength / 10.0f); // Draw the object - m_drawer->drawObject(dotShader, m_dotObj, 0, m_depthTexture); + m_drawer->drawObject(dotShader, m_dotObj, gradientTexture, m_depthTexture); } else { // Draw the object m_drawer->drawPoint(dotShader); @@ -612,7 +628,7 @@ void Scatter3DRenderer::drawScene(const GLuint defaultFboHandle) // Set shadowless shader bindings dotShader->setUniformValue(dotShader->lightS(), lightStrength); // Draw the object - m_drawer->drawObject(dotShader, m_dotObj); + m_drawer->drawObject(dotShader, m_dotObj, gradientTexture); } else { // Draw the object m_drawer->drawPoint(dotShader); diff --git a/src/datavisualization/engine/selectionpointer.cpp b/src/datavisualization/engine/selectionpointer.cpp index 0b415df2..5aa1d3eb 100644 --- a/src/datavisualization/engine/selectionpointer.cpp +++ b/src/datavisualization/engine/selectionpointer.cpp @@ -143,7 +143,7 @@ void SelectionPointer::render(GLuint defaultFboHandle) m_pointShader->setUniformValue(m_pointShader->model(), modelMatrix); m_pointShader->setUniformValue(m_pointShader->nModel(), itModelMatrix.inverted().transposed()); m_pointShader->setUniformValue(m_pointShader->color(), - Utils::vectorFromColor(m_cachedTheme.m_highlightBarColor)); + Utils::vectorFromColor(m_cachedTheme.m_singleHighlightColor)); m_pointShader->setUniformValue(m_pointShader->MVP(), MVPMatrix); m_pointShader->setUniformValue(m_pointShader->ambientS(), m_cachedTheme.m_ambientStrength); m_pointShader->setUniformValue(m_pointShader->lightS(), m_cachedTheme.m_lightStrength * 2.0f); diff --git a/src/datavisualization/engine/surface3drenderer.cpp b/src/datavisualization/engine/surface3drenderer.cpp index 0a33fb57..148d311f 100644 --- a/src/datavisualization/engine/surface3drenderer.cpp +++ b/src/datavisualization/engine/surface3drenderer.cpp @@ -536,10 +536,7 @@ void Surface3DRenderer::drawSlicedScene() surfaceShader->bind(); QVector3D color; - if (rowMode) - color = Utils::vectorFromColor(m_cachedTheme.m_highlightRowColor); - else - color = Utils::vectorFromColor(m_cachedTheme.m_highlightColumnColor); + color = Utils::vectorFromColor(m_cachedTheme.m_multiHighlightColor); // Set shader bindings surfaceShader->setUniformValue(surfaceShader->lightP(), lightPos); diff --git a/src/datavisualization/engine/theme.cpp b/src/datavisualization/engine/theme.cpp index 2892f500..78a61637 100644 --- a/src/datavisualization/engine/theme.cpp +++ b/src/datavisualization/engine/theme.cpp @@ -34,9 +34,8 @@ Theme::Theme() m_textColor(QColor(Qt::white)), m_textBackgroundColor(QColor(0x00, 0x00, 0x00, 0xa0)), m_gridLine(QColor(Qt::black)), - m_highlightBarColor(QColor(Qt::red)), - m_highlightRowColor(QColor(Qt::darkRed)), - m_highlightColumnColor(QColor(Qt::darkMagenta)), + m_singleHighlightColor(QColor(Qt::red)), + m_multiHighlightColor(QColor(Qt::darkRed)), m_surfaceGradient(QLinearGradient(qreal(gradientTextureWidth), qreal(gradientTextureHeight), 0.0, 0.0)), m_lightStrength(4.0f), @@ -70,9 +69,8 @@ void Theme::useTheme(QDataVis::Theme theme) m_textColor = QColor(QRgb(0x35322f)); m_textBackgroundColor = QColor(0xff, 0xff, 0xff, 0x99); m_gridLine = QColor(QRgb(0xd7d6d5)); - m_highlightBarColor = QColor(QRgb(0x14aaff)); - m_highlightRowColor = QColor(QRgb(0x6400aa)); - m_highlightColumnColor = QColor(QRgb(0x6400aa)); + m_singleHighlightColor = QColor(QRgb(0x14aaff)); + m_multiHighlightColor = QColor(QRgb(0x6400aa)); m_lightStrength = 5.0f; m_ambientStrength = 0.5f; m_highlightLightStrength = 5.0f; @@ -89,9 +87,8 @@ void Theme::useTheme(QDataVis::Theme theme) m_textColor = QColor(QRgb(0x000000)); m_textBackgroundColor = QColor(0xff, 0xff, 0xff, 0x99); m_gridLine = QColor(QRgb(0xd7d6d5)); - m_highlightBarColor = QColor(QRgb(0x27beee)); - m_highlightRowColor = QColor(QRgb(0xee1414)); - m_highlightColumnColor = QColor(QRgb(0xee1414)); + m_singleHighlightColor = QColor(QRgb(0x27beee)); + m_multiHighlightColor = QColor(QRgb(0xee1414)); m_lightStrength = 5.0f; m_ambientStrength = 0.5f; m_highlightLightStrength = 5.0f; @@ -108,9 +105,8 @@ void Theme::useTheme(QDataVis::Theme theme) m_textColor = QColor(QRgb(0x000000)); m_textBackgroundColor = QColor(0xff, 0xff, 0xff, 0x80); m_gridLine = QColor(QRgb(0xd7d6d5)); - m_highlightBarColor = QColor(QRgb(0xfa0000)); - m_highlightRowColor = QColor(QRgb(0x555555)); - m_highlightColumnColor = QColor(QRgb(0x555555)); + m_singleHighlightColor = QColor(QRgb(0xfa0000)); + m_multiHighlightColor = QColor(QRgb(0x555555)); m_lightStrength = 5.0f; m_ambientStrength = 0.5f; m_highlightLightStrength = 5.0f; @@ -127,9 +123,8 @@ void Theme::useTheme(QDataVis::Theme theme) m_textColor = QColor(QRgb(0xffffff)); m_textBackgroundColor = QColor(0x4d, 0x4d, 0x4f, 0xcd); m_gridLine = QColor(QRgb(0x3e3e40)); - m_highlightBarColor = QColor(QRgb(0xfbf6d6)); - m_highlightRowColor = QColor(QRgb(0x442f20)); - m_highlightColumnColor = QColor(QRgb(0x442f20)); + m_singleHighlightColor = QColor(QRgb(0xfbf6d6)); + m_multiHighlightColor = QColor(QRgb(0x442f20)); m_lightStrength = 5.0f; m_ambientStrength = 0.5f; m_highlightLightStrength = 5.0f; @@ -146,9 +141,8 @@ void Theme::useTheme(QDataVis::Theme theme) m_textColor = QColor(QRgb(0x000000)); m_textBackgroundColor = QColor(0xd5, 0xd6, 0xd7, 0xcd); m_gridLine = QColor(QRgb(0xaeadac)); - m_highlightBarColor = QColor(QRgb(0x2aa2f9)); - m_highlightRowColor = QColor(QRgb(0x103753)); - m_highlightColumnColor = QColor(QRgb(0x103753)); + m_singleHighlightColor = QColor(QRgb(0x2aa2f9)); + m_multiHighlightColor = QColor(QRgb(0x103753)); m_lightStrength = 5.0f; m_ambientStrength = 0.5f; m_highlightLightStrength = 5.0f; @@ -165,9 +159,8 @@ void Theme::useTheme(QDataVis::Theme theme) m_textColor = QColor(QRgb(0x000000)); m_textBackgroundColor = QColor(0xe9, 0xe2, 0xce, 0xc0); m_gridLine = QColor(QRgb(0xd0c0b0)); - m_highlightBarColor = QColor(QRgb(0x8ea317)); - m_highlightRowColor = QColor(QRgb(0xc25708)); - m_highlightColumnColor = QColor(QRgb(0xc25708)); + m_singleHighlightColor = QColor(QRgb(0x8ea317)); + m_multiHighlightColor = QColor(QRgb(0xc25708)); m_lightStrength = 5.0f; m_ambientStrength = 0.5f; m_highlightLightStrength = 5.0f; @@ -184,9 +177,8 @@ void Theme::useTheme(QDataVis::Theme theme) m_textColor = QColor(QRgb(0xaeadac)); m_textBackgroundColor = QColor(0x00, 0x00, 0x00, 0xcd); m_gridLine = QColor(QRgb(0x35322f)); - m_highlightBarColor = QColor(QRgb(0xf5dc0d)); - m_highlightRowColor = QColor(QRgb(0xd72222)); - m_highlightColumnColor = QColor(QRgb(0xd72222)); + m_singleHighlightColor = QColor(QRgb(0xf5dc0d)); + m_multiHighlightColor = QColor(QRgb(0xd72222)); m_lightStrength = 5.0f; m_ambientStrength = 0.5f; m_highlightLightStrength = 5.0f; @@ -203,9 +195,8 @@ void Theme::useTheme(QDataVis::Theme theme) m_textColor = QColor(QRgb(0xaeadac)); m_textBackgroundColor = QColor(0x00, 0x00, 0x00, 0xc0); m_gridLine = QColor(QRgb(0x35322f)); - m_highlightBarColor = QColor(QRgb(0xfff7cc)); - m_highlightRowColor = QColor(QRgb(0xde0a0a)); - m_highlightColumnColor = QColor(QRgb(0xde0a0a)); + m_singleHighlightColor = QColor(QRgb(0xfff7cc)); + m_multiHighlightColor = QColor(QRgb(0xde0a0a)); m_lightStrength = 5.0f; m_ambientStrength = 0.5f; m_highlightLightStrength = 5.0f; @@ -237,9 +228,8 @@ void Theme::setFromTheme(Theme &theme) m_textColor = theme.m_textColor; m_textBackgroundColor = theme.m_textBackgroundColor; m_gridLine = theme.m_gridLine; - m_highlightBarColor = theme.m_highlightBarColor; - m_highlightRowColor = theme.m_highlightRowColor; - m_highlightColumnColor = theme.m_highlightColumnColor; + m_singleHighlightColor = theme.m_singleHighlightColor; + m_multiHighlightColor = theme.m_multiHighlightColor; m_surfaceGradient = theme.m_surfaceGradient; m_lightStrength = theme.m_lightStrength; m_ambientStrength = theme.m_ambientStrength; diff --git a/src/datavisualization/engine/theme_p.h b/src/datavisualization/engine/theme_p.h index ec689f63..e0012f82 100644 --- a/src/datavisualization/engine/theme_p.h +++ b/src/datavisualization/engine/theme_p.h @@ -66,9 +66,8 @@ private: QColor m_textColor; QColor m_textBackgroundColor; QColor m_gridLine; - QColor m_highlightBarColor; - QColor m_highlightRowColor; - QColor m_highlightColumnColor; + QColor m_singleHighlightColor; + QColor m_multiHighlightColor; QLinearGradient m_surfaceGradient; float m_lightStrength; float m_ambientStrength; diff --git a/src/datavisualization/global/datavisualizationglobal_p.h b/src/datavisualization/global/datavisualizationglobal_p.h index cd1450f4..86b454c9 100644 --- a/src/datavisualization/global/datavisualizationglobal_p.h +++ b/src/datavisualization/global/datavisualizationglobal_p.h @@ -56,8 +56,6 @@ static const QVector3D selectionSkipColor = QVector3D(255.0f, 255.0f, 255.0f); static const QVector3D invalidColorVector = QVector3D(-1.0f, -1.0f, -1.0f); static const GLfloat gradientTextureHeight = 1024.0f; static const GLfloat gradientTextureWidth = 2.0f; -// Relative margin for avoiding gradient overflow -static const GLfloat gradientMargin = 1.0f / gradientTextureHeight; QT_DATAVISUALIZATION_END_NAMESPACE diff --git a/src/datavisualization/global/qtdatavisualizationenums.qdoc b/src/datavisualization/global/qtdatavisualizationenums.qdoc index 94db4835..22645767 100644 --- a/src/datavisualization/global/qtdatavisualizationenums.qdoc +++ b/src/datavisualization/global/qtdatavisualizationenums.qdoc @@ -75,7 +75,8 @@ \value MeshStyleDots Triangular pyramid. Usable only with Q3DScatter. \value MeshStylePoints - 2D spots. Usable only with Q3DScatter. \b Note: Shadows do not affect this style. + 2D spots. Usable only with Q3DScatter. + \b Note: Shadows and color gradients do not affect this style. */ /*! diff --git a/src/datavisualization/utils/texturehelper.cpp b/src/datavisualization/utils/texturehelper.cpp index 8e556b44..fd5061f2 100644 --- a/src/datavisualization/utils/texturehelper.cpp +++ b/src/datavisualization/utils/texturehelper.cpp @@ -36,7 +36,7 @@ TextureHelper::~TextureHelper() } GLuint TextureHelper::create2DTexture(const QImage &image, bool useTrilinearFiltering, - bool convert, bool smoothScale) + bool convert, bool smoothScale, bool clampY) { if (image.isNull()) return 0; @@ -74,6 +74,8 @@ GLuint TextureHelper::create2DTexture(const QImage &image, bool useTrilinearFilt } else { glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); } + if (clampY) + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glBindTexture(GL_TEXTURE_2D, 0); return textureId; } @@ -162,7 +164,7 @@ GLuint TextureHelper::createGradientTexture(const QLinearGradient &gradient) pmp.setPen(Qt::NoPen); pmp.drawRect(0, 0, int(gradientTextureWidth), int(gradientTextureHeight)); - return create2DTexture(image, false, true); + return create2DTexture(image, false, true, false, true); } #if !defined(QT_OPENGL_ES_2) diff --git a/src/datavisualization/utils/texturehelper_p.h b/src/datavisualization/utils/texturehelper_p.h index b2657083..97bd9e3d 100644 --- a/src/datavisualization/utils/texturehelper_p.h +++ b/src/datavisualization/utils/texturehelper_p.h @@ -44,7 +44,7 @@ class TextureHelper : protected QOpenGLFunctions // Ownership of created texture is transferred to caller GLuint create2DTexture(const QImage &image, bool useTrilinearFiltering = false, - bool convert = true, bool smoothScale = true); + bool convert = true, bool smoothScale = true, bool clampY = false); GLuint createCubeMapTexture(const QImage &image, bool useTrilinearFiltering = false); // Returns selection texture and inserts generated framebuffers to framebuffer parameters GLuint createSelectionTexture(const QSize &size, GLuint &frameBuffer, GLuint &depthBuffer); -- cgit v1.2.3