diff options
Diffstat (limited to 'src/datavisualization/utils')
-rw-r--r-- | src/datavisualization/utils/surfaceobject.cpp | 7 | ||||
-rw-r--r-- | src/datavisualization/utils/surfaceobject_p.h | 13 | ||||
-rw-r--r-- | src/datavisualization/utils/texturehelper.cpp | 12 | ||||
-rw-r--r-- | src/datavisualization/utils/texturehelper_p.h | 1 |
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); |