From e91237b54c2f58eaa8a2ce36bf016e2d8e8588f2 Mon Sep 17 00:00:00 2001 From: Mika Salmela Date: Thu, 6 Feb 2014 12:56:54 +0200 Subject: Multiseries support for surface Task-number: QTRD-2767 Change-Id: Ifa7ca07f2afdb27974ad20819f0a4646293764b0 Reviewed-by: Miikka Heikkinen --- src/datavisualization/utils/surfaceobject.cpp | 7 +++++++ src/datavisualization/utils/surfaceobject_p.h | 13 ++++++++----- src/datavisualization/utils/texturehelper.cpp | 12 ++++++++++++ src/datavisualization/utils/texturehelper_p.h | 1 + 4 files changed, 28 insertions(+), 5 deletions(-) (limited to 'src/datavisualization/utils') 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 @@ -39,6 +39,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); -- cgit v1.2.3