summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/engine
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@digia.com>2014-03-25 09:06:33 +0200
committerTomi Korpipää <tomi.korpipaa@digia.com>2014-03-25 09:08:51 +0200
commitd56d7703ac755022f85634db98bd43db3ee31cd8 (patch)
treed1d0159800816f81a587b24ec7ca891569a17a0c /src/datavisualization/engine
parent724bcb35136ed1af699fe8631b9297deb07571ad (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.cpp7
-rw-r--r--src/datavisualization/engine/seriesrendercache.cpp2
-rw-r--r--src/datavisualization/engine/seriesrendercache_p.h2
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;