summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/utils/surfaceobject_p.h
diff options
context:
space:
mode:
authorMika Salmela <mika.salmela@digia.com>2014-10-03 16:47:44 +0300
committerTomi Korpipää <tomi.korpipaa@digia.com>2014-10-06 11:34:27 +0300
commit90ac955006749ecf6ea021bc7cf736a6c21095af (patch)
tree690bf1af7e0bce7287ab2b240b857a66dbd33742 /src/datavisualization/utils/surfaceobject_p.h
parent2788e9f7412fa650f41b25fad1f4b02efb0e5e89 (diff)
Fix surface normals on ascending/descending
Normals and triangles are generated according to data direction. Task-number: QTRD-3160 Change-Id: Ia4286467682628930da3d82b204fd1ec078a396a Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com> Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'src/datavisualization/utils/surfaceobject_p.h')
-rw-r--r--src/datavisualization/utils/surfaceobject_p.h24
1 files changed, 19 insertions, 5 deletions
diff --git a/src/datavisualization/utils/surfaceobject_p.h b/src/datavisualization/utils/surfaceobject_p.h
index f373eb5d..39d10445 100644
--- a/src/datavisualization/utils/surfaceobject_p.h
+++ b/src/datavisualization/utils/surfaceobject_p.h
@@ -49,6 +49,13 @@ public:
Undefined
};
+ enum DataDimensions {
+ BothAscending = 0,
+ XDescending = 1,
+ ZDescending = 2,
+ BothDescending = XDescending | ZDescending
+ };
+
public:
SurfaceObject(Surface3DRenderer *renderer);
virtual ~SurfaceObject();
@@ -64,7 +71,7 @@ public:
void updateSmoothItem(const QSurfaceDataArray &dataArray, int row, int column, bool polar);
void updateCoarseItem(const QSurfaceDataArray &dataArray, int row, int column, bool polar);
void createSmoothIndices(int x, int y, int endX, int endY);
- void createCoarseIndices(int x, int y, int columns, int rows);
+ void createCoarseSubSection(int x, int y, int columns, int rows);
void createSmoothGridlineIndices(int x, int y, int endX, int endY);
void createCoarseGridlineIndices(int x, int y, int endX, int endY);
void uploadBuffers();
@@ -78,11 +85,16 @@ public:
inline void activateSurfaceTexture(bool value) { m_returnTextureBuffer = value; }
private:
- QVector3D normal(const QVector3D &a, const QVector3D &b, const QVector3D &c, bool flipNormal);
+ void createCoarseIndices(GLint *indices, int &p, int row, int upperRow, int j);
+ void createNormals(int &p, int row, int upperRow, int j);
+ void createSmoothNormalBodyLine(int &totalIndex, int column);
+ void createSmoothNormalUpperLine(int &totalIndex);
+ QVector3D createSmoothNormalBodyLineItem(int x, int y);
+ QVector3D createSmoothNormalUpperLineItem(int x, int y);
+ QVector3D normal(const QVector3D &a, const QVector3D &b, const QVector3D &c);
void createBuffers(const QVector<QVector3D> &vertices, const QVector<QVector2D> &uvs,
- const QVector<QVector3D> &normals, const GLint *indices,
- bool changeGeometry);
- bool checkFlipNormal(const QSurfaceDataArray &array);
+ const QVector<QVector3D> &normals, const GLint *indices);
+ void checkDirections(const QSurfaceDataArray &array);
inline void getNormalizedVertex(const QSurfaceDataItem &data, QVector3D &vertex, bool polar,
bool flipXZ);
@@ -103,6 +115,8 @@ private:
float m_maxY;
GLuint m_uvTextureBuffer;
bool m_returnTextureBuffer;
+ int m_dataDimension;
+ int m_oldDataDimension;
};
QT_END_NAMESPACE_DATAVISUALIZATION