summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/utils
diff options
context:
space:
mode:
authorMika Salmela <mika.salmela@digia.com>2014-02-06 12:56:54 +0200
committerMika Salmela <mika.salmela@digia.com>2014-02-06 13:00:59 +0200
commite91237b54c2f58eaa8a2ce36bf016e2d8e8588f2 (patch)
treeec99b80a217b2e316a280c299fe5bc84edd7eb1b /src/datavisualization/utils
parent427e7f5f5c62f728e159462dd28ae1ef76761d75 (diff)
Multiseries support for surface
Task-number: QTRD-2767 Change-Id: Ifa7ca07f2afdb27974ad20819f0a4646293764b0 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src/datavisualization/utils')
-rw-r--r--src/datavisualization/utils/surfaceobject.cpp7
-rw-r--r--src/datavisualization/utils/surfaceobject_p.h13
-rw-r--r--src/datavisualization/utils/texturehelper.cpp12
-rw-r--r--src/datavisualization/utils/texturehelper_p.h1
4 files changed, 28 insertions, 5 deletions
diff --git a/src/datavisualization/utils/surfaceobject.cpp b/src/datavisualization/utils/surfaceobject.cpp
index b0cd6c82..cfaab09c 100644
--- a/src/datavisualization/utils/surfaceobject.cpp
+++ b/src/datavisualization/utils/surfaceobject.cpp
@@ -25,6 +25,10 @@
QT_BEGIN_NAMESPACE_DATAVISUALIZATION
SurfaceObject::SurfaceObject()
+ : m_surfaceType(Undefined),
+ m_columns(0),
+ m_rows(0),
+ m_gridIndexCount(0)
{
m_indicesType = GL_UNSIGNED_INT;
initializeOpenGLFunctions();
@@ -668,6 +672,9 @@ GLuint SurfaceObject::gridIndexCount()
QVector3D SurfaceObject::vertexAt(int column, int row)
{
int pos = 0;
+ if (m_surfaceType == Undefined || !m_vertices.size())
+ return zeroVector;
+
if (m_surfaceType == SurfaceFlat)
pos = row * (m_columns * 2 - 2) + column * 2 - (column > 0);
else
diff --git a/src/datavisualization/utils/surfaceobject_p.h b/src/datavisualization/utils/surfaceobject_p.h
index ec1a30bd..f51c2909 100644
--- a/src/datavisualization/utils/surfaceobject_p.h
+++ b/src/datavisualization/utils/surfaceobject_p.h
@@ -40,6 +40,13 @@ QT_BEGIN_NAMESPACE_DATAVISUALIZATION
class SurfaceObject : public AbstractObjectHelper
{
public:
+ enum SurfaceType {
+ SurfaceSmooth,
+ SurfaceFlat,
+ Undefined
+ };
+
+public:
SurfaceObject();
~SurfaceObject();
@@ -71,11 +78,7 @@ private:
bool changeGeometry);
private:
- enum SurfaceType {
- SurfaceSmooth,
- SurfaceFlat
- };
- int m_surfaceType;
+ SurfaceType m_surfaceType;
int m_columns;
int m_rows;
GLuint m_gridElementbuffer;
diff --git a/src/datavisualization/utils/texturehelper.cpp b/src/datavisualization/utils/texturehelper.cpp
index 91d70946..0f5c8313 100644
--- a/src/datavisualization/utils/texturehelper.cpp
+++ b/src/datavisualization/utils/texturehelper.cpp
@@ -151,6 +151,18 @@ GLuint TextureHelper::createSelectionTexture(const QSize &size, GLuint &frameBuf
return textureid;
}
+GLuint TextureHelper::createUniformTexture(const QColor &color)
+{
+ QImage image(QSize(int(uniformTextureWidth), int(uniformTextureHeight)),
+ QImage::Format_RGB32);
+ QPainter pmp(&image);
+ pmp.setBrush(QBrush(color));
+ pmp.setPen(Qt::NoPen);
+ pmp.drawRect(0, 0, int(uniformTextureWidth), int(uniformTextureHeight));
+
+ return create2DTexture(image, false, true, false, true);
+}
+
GLuint TextureHelper::createGradientTexture(const QLinearGradient &gradient)
{
QImage image(QSize(int(gradientTextureWidth), int(gradientTextureHeight)),
diff --git a/src/datavisualization/utils/texturehelper_p.h b/src/datavisualization/utils/texturehelper_p.h
index 17553f30..f9a23a08 100644
--- a/src/datavisualization/utils/texturehelper_p.h
+++ b/src/datavisualization/utils/texturehelper_p.h
@@ -48,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 createUniformTexture(const QColor &color);
GLuint createGradientTexture(const QLinearGradient &gradient);
#if !defined(QT_OPENGL_ES_2)
GLuint createDepthTexture(const QSize &size, GLuint textureSize);