diff options
author | Tomi Korpipää <tomi.korpipaa@digia.com> | 2014-03-25 09:06:33 +0200 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@digia.com> | 2014-03-25 09:08:51 +0200 |
commit | d56d7703ac755022f85634db98bd43db3ee31cd8 (patch) | |
tree | d1d0159800816f81a587b24ec7ca891569a17a0c /src/datavisualization/engine | |
parent | 724bcb35136ed1af699fe8631b9297deb07571ad (diff) |
Added range gradient support for MeshPoints
Task-number: QTRD-2701
Change-Id: Id3f096099ef584a6feaaebcbecc084810ec27967
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src/datavisualization/engine')
-rw-r--r-- | src/datavisualization/engine/scatter3drenderer.cpp | 7 | ||||
-rw-r--r-- | src/datavisualization/engine/seriesrendercache.cpp | 2 | ||||
-rw-r--r-- | src/datavisualization/engine/seriesrendercache_p.h | 2 |
3 files changed, 11 insertions, 0 deletions
diff --git a/src/datavisualization/engine/scatter3drenderer.cpp b/src/datavisualization/engine/scatter3drenderer.cpp index ae4b3831..2c957f79 100644 --- a/src/datavisualization/engine/scatter3drenderer.cpp +++ b/src/datavisualization/engine/scatter3drenderer.cpp @@ -730,6 +730,13 @@ void Scatter3DRenderer::drawScene(const GLuint defaultFboHandle) dotShader->setUniformValue(dotShader->MVP(), MVPMatrix); if (useColor) { + if (colorStyle == Q3DTheme::ColorStyleRangeGradient) { + // Drawing points with range gradient + // Get color from gradient based on items y position converted to percents + int position = int(item.translation().y() * 50.0f) + 50; + dotColor = Utils::vectorFromColor( + currentSeries.gradientImage().pixel(0, position)); + } dotShader->setUniformValue(dotShader->color(), dotColor); } else if (colorStyle == Q3DTheme::ColorStyleRangeGradient) { dotShader->setUniformValue(dotShader->gradientMin(), diff --git a/src/datavisualization/engine/seriesrendercache.cpp b/src/datavisualization/engine/seriesrendercache.cpp index 896b3b28..8cfd9b08 100644 --- a/src/datavisualization/engine/seriesrendercache.cpp +++ b/src/datavisualization/engine/seriesrendercache.cpp @@ -32,6 +32,7 @@ SeriesRenderCache::SeriesRenderCache() m_mesh(QAbstract3DSeries::MeshCube), m_baseUniformTexture(0), m_baseGradientTexture(0), + m_gradientImage(0), m_singleHighlightGradientTexture(0), m_multiHighlightGradientTexture(0) { @@ -150,6 +151,7 @@ void SeriesRenderCache::populate(QAbstract3DSeries *series, Abstract3DRenderer * if (seriesChanged || changeTracker.baseGradientChanged) { QLinearGradient gradient = series->baseGradient(); + m_gradientImage = Utils::getGradientImage(gradient); renderer->fixGradientAndGenerateTexture(&gradient, &m_baseGradientTexture); changeTracker.baseGradientChanged = false; } diff --git a/src/datavisualization/engine/seriesrendercache_p.h b/src/datavisualization/engine/seriesrendercache_p.h index 77e050b0..1ef67c88 100644 --- a/src/datavisualization/engine/seriesrendercache_p.h +++ b/src/datavisualization/engine/seriesrendercache_p.h @@ -60,6 +60,7 @@ public: inline const QVector3D &baseColor() const { return m_baseColor; } inline const GLuint &baseUniformTexture() const { return m_baseUniformTexture; } inline const GLuint &baseGradientTexture() const { return m_baseGradientTexture; } + inline const QImage &gradientImage() const { return m_gradientImage; } inline const QVector3D &singleHighlightColor() const { return m_singleHighlightColor; } inline const GLuint &singleHighlightGradientTexture() const { return m_singleHighlightGradientTexture; } inline const QVector3D &multiHighlightColor() const { return m_multiHighlightColor; } @@ -77,6 +78,7 @@ protected: QVector3D m_baseColor; GLuint m_baseUniformTexture; GLuint m_baseGradientTexture; + QImage m_gradientImage; QVector3D m_singleHighlightColor; GLuint m_singleHighlightGradientTexture; QVector3D m_multiHighlightColor; |