summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/utils
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2013-11-05 13:57:18 +0200
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2013-11-07 09:43:46 +0200
commita61c6ee6533dca6723320c3955773cc5ccbfe2fa (patch)
treee459aa85f88da5f2a0e23c34266baecd2db5d1b8 /src/datavisualization/utils
parent9266f124979fa8a4fe7d8b2fb2db496b26aeeda9 (diff)
Gradient support Part 1
TODO: - Finish scatter - QML (maybe left until data set is sorted, though) Change-Id: I87a8117cb29f147080e0662c55b1098cb2e71689 Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'src/datavisualization/utils')
-rw-r--r--src/datavisualization/utils/shaderhelper.cpp17
-rw-r--r--src/datavisualization/utils/shaderhelper_p.h4
-rw-r--r--src/datavisualization/utils/texturehelper.cpp13
-rw-r--r--src/datavisualization/utils/texturehelper_p.h2
4 files changed, 35 insertions, 1 deletions
diff --git a/src/datavisualization/utils/shaderhelper.cpp b/src/datavisualization/utils/shaderhelper.cpp
index e27103af..7eb48945 100644
--- a/src/datavisualization/utils/shaderhelper.cpp
+++ b/src/datavisualization/utils/shaderhelper.cpp
@@ -90,7 +90,8 @@ void ShaderHelper::initialize()
m_colorUniform = m_program->uniformLocation("color_mdl");
m_textureUniform = m_program->uniformLocation("textureSampler");
m_shadowUniform = m_program->uniformLocation("shadowMap");
-
+ m_gradientMinUniform = m_program->uniformLocation("gradMin");
+ m_gradientHeightUniform = m_program->uniformLocation("gradHeight");
m_initialized = true;
}
@@ -230,6 +231,20 @@ GLuint ShaderHelper::shadow()
return m_shadowUniform;
}
+GLuint ShaderHelper::gradientMin()
+{
+ if (!m_initialized)
+ qFatal("Shader not initialized");
+ return m_gradientMinUniform;
+}
+
+GLuint ShaderHelper::gradientHeight()
+{
+ if (!m_initialized)
+ qFatal("Shader not initialized");
+ return m_gradientHeightUniform;
+}
+
GLuint ShaderHelper::posAtt()
{
if (!m_initialized)
diff --git a/src/datavisualization/utils/shaderhelper_p.h b/src/datavisualization/utils/shaderhelper_p.h
index 73e5b9ee..191b7bf6 100644
--- a/src/datavisualization/utils/shaderhelper_p.h
+++ b/src/datavisualization/utils/shaderhelper_p.h
@@ -71,6 +71,8 @@ class ShaderHelper
GLuint color();
GLuint texture();
GLuint shadow();
+ GLuint gradientMin();
+ GLuint gradientHeight();
GLuint posAtt();
GLuint uvAtt();
@@ -102,6 +104,8 @@ class ShaderHelper
GLuint m_shadowQualityUniform;
GLuint m_textureUniform;
GLuint m_shadowUniform;
+ GLuint m_gradientMinUniform;
+ GLuint m_gradientHeightUniform;
GLboolean m_initialized;
};
diff --git a/src/datavisualization/utils/texturehelper.cpp b/src/datavisualization/utils/texturehelper.cpp
index 9e2b9811..8e556b44 100644
--- a/src/datavisualization/utils/texturehelper.cpp
+++ b/src/datavisualization/utils/texturehelper.cpp
@@ -20,6 +20,7 @@
#include "utils_p.h"
#include <QImage>
+#include <QPainter>
#include <QDebug>
@@ -152,6 +153,18 @@ GLuint TextureHelper::createSelectionTexture(const QSize &size, GLuint &frameBuf
return textureid;
}
+GLuint TextureHelper::createGradientTexture(const QLinearGradient &gradient)
+{
+ QImage image(QSize(int(gradientTextureWidth), int(gradientTextureHeight)),
+ QImage::Format_RGB32);
+ QPainter pmp(&image);
+ pmp.setBrush(QBrush(gradient));
+ pmp.setPen(Qt::NoPen);
+ pmp.drawRect(0, 0, int(gradientTextureWidth), int(gradientTextureHeight));
+
+ return create2DTexture(image, false, true);
+}
+
#if !defined(QT_OPENGL_ES_2)
GLuint TextureHelper::createDepthTexture(const QSize &size, GLuint &frameBuffer, GLuint textureSize)
{
diff --git a/src/datavisualization/utils/texturehelper_p.h b/src/datavisualization/utils/texturehelper_p.h
index 8371825e..b2657083 100644
--- a/src/datavisualization/utils/texturehelper_p.h
+++ b/src/datavisualization/utils/texturehelper_p.h
@@ -32,6 +32,7 @@
#include "datavisualizationglobal_p.h"
#include <QOpenGLFunctions>
#include <QRgb>
+#include <QLinearGradient>
QT_DATAVISUALIZATION_BEGIN_NAMESPACE
@@ -47,6 +48,7 @@ class TextureHelper : protected QOpenGLFunctions
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);
+ GLuint createGradientTexture(const QLinearGradient &gradient);
#if !defined(QT_OPENGL_ES_2)
// Returns depth texture and inserts generated framebuffer to parameter
GLuint createDepthTexture(const QSize &size, GLuint &frameBuffer, GLuint textureSize = 1);