summaryrefslogtreecommitdiffstats
path: root/src/datavisualization
diff options
context:
space:
mode:
authorMika Salmela <mika.salmela@digia.com>2014-08-29 10:15:18 +0300
committerMika Salmela <mika.salmela@digia.com>2014-08-29 11:16:38 +0300
commitcd1a66a8fcdcc6870656a924bf55ffbcd6ea1162 (patch)
tree9a2e3576e005f626d4d0ecb17927807caac38f30 /src/datavisualization
parent9a40207d83b66072fff4aaa03eca15b02f8a11c1 (diff)
Unified gradient for points
Made gradient image same size as the texture and similar calculation for the pixel. Result should be more coherent for all. Task-number: QTRD-3295 Change-Id: I666dacc6f525258ccefda288e26cac480cb385cb Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com> Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'src/datavisualization')
-rw-r--r--src/datavisualization/engine/scatter3drenderer.cpp7
-rw-r--r--src/datavisualization/utils/utils.cpp9
-rw-r--r--src/datavisualization/utils/utils_p.h2
3 files changed, 11 insertions, 7 deletions
diff --git a/src/datavisualization/engine/scatter3drenderer.cpp b/src/datavisualization/engine/scatter3drenderer.cpp
index 0a670fe8..ca983dac 100644
--- a/src/datavisualization/engine/scatter3drenderer.cpp
+++ b/src/datavisualization/engine/scatter3drenderer.cpp
@@ -745,7 +745,6 @@ void Scatter3DRenderer::drawScene(const GLuint defaultFboHandle)
}
float rangeGradientYScaler = 0.5f / m_scaleY;
- float rangeGradientYScalerForPoints = rangeGradientYScaler * 100.0f;
foreach (SeriesRenderCache *baseCache, m_renderCacheList) {
if (baseCache->isVisible()) {
@@ -771,6 +770,8 @@ void Scatter3DRenderer::drawScene(const GLuint defaultFboHandle)
glPointSize(itemSize * activeCamera->zoomLevel()); // Scale points based on zoom
#endif
QVector3D modelScaler(itemSize, itemSize, itemSize);
+ int gradientImageHeight = cache->gradientImage().height();
+ int maxGradientPositition = gradientImageHeight - 1;
if (!optimizationDefault
&& ((drawingPoints && cache->bufferPoints()->indexCount() == 0)
@@ -848,8 +849,8 @@ void Scatter3DRenderer::drawScene(const GLuint defaultFboHandle)
if (rangeGradientPoints) {
// Drawing points with range gradient
// Get color from gradient based on items y position converted to percent
- int position = int(item.translation().y() * rangeGradientYScalerForPoints)
- + 50;
+ int position = ((item.translation().y() + m_scaleY) * rangeGradientYScaler) * gradientImageHeight;
+ position = qMin(maxGradientPositition, position); // clamp to edge
dotColor = Utils::vectorFromColor(
cache->gradientImage().pixel(0, position));
} else {
diff --git a/src/datavisualization/utils/utils.cpp b/src/datavisualization/utils/utils.cpp
index 2368d86a..d7b8dae8 100644
--- a/src/datavisualization/utils/utils.cpp
+++ b/src/datavisualization/utils/utils.cpp
@@ -139,13 +139,16 @@ QVector4D Utils::getSelection(QPoint mousepos, int height)
return selectedColor;
}
-QImage Utils::getGradientImage(const QLinearGradient &gradient)
+QImage Utils::getGradientImage(QLinearGradient &gradient)
{
- QImage image(QSize(1, 101), QImage::Format_RGB32);
+ QImage image(QSize(gradientTextureWidth, gradientTextureHeight), QImage::Format_RGB32);
+ gradient.setFinalStop(qreal(gradientTextureWidth), qreal(gradientTextureHeight));
+ gradient.setStart(0.0, 0.0);
+
QPainter pmp(&image);
pmp.setBrush(QBrush(gradient));
pmp.setPen(Qt::NoPen);
- pmp.drawRect(0, 0, 1, 101);
+ pmp.drawRect(0, 0, int(gradientTextureWidth), int(gradientTextureHeight));
return image;
}
diff --git a/src/datavisualization/utils/utils_p.h b/src/datavisualization/utils/utils_p.h
index d7187c16..55707fdb 100644
--- a/src/datavisualization/utils/utils_p.h
+++ b/src/datavisualization/utils/utils_p.h
@@ -57,7 +57,7 @@ public:
bool borders = false,
int maxLabelWidth = 0);
static QVector4D getSelection(QPoint mousepos, int height);
- static QImage getGradientImage(const QLinearGradient &gradient);
+ static QImage getGradientImage(QLinearGradient &gradient);
static ParamType findFormatParamType(const QString &format);
static QString formatLabel(const QByteArray &format, ParamType paramType, qreal value);