summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/utils/surfaceobject.cpp
diff options
context:
space:
mode:
authorMika Salmela <mika.salmela@digia.com>2014-10-07 00:04:03 +0300
committerMika Salmela <mika.salmela@digia.com>2014-10-07 12:09:29 +0300
commitaab6b4f77d408c523bd9335ffa48bcc552c00c62 (patch)
tree940d1e136f2344ace8a2de058c1548f8e27f6e78 /src/datavisualization/utils/surfaceobject.cpp
parent0e5b7fba379fe4e751bb2c609bb03d0c9bb01eaa (diff)
Texture UVs for surface to follow data dimension
Change texture UVs to be generated according to data dimension. Also utilise this change on texturesurface example. Change-Id: Ideacfba409dc2e7cf579fb38d897e08c9f9a1b71 Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src/datavisualization/utils/surfaceobject.cpp')
-rw-r--r--src/datavisualization/utils/surfaceobject.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/datavisualization/utils/surfaceobject.cpp b/src/datavisualization/utils/surfaceobject.cpp
index 8f75d666..86cd2789 100644
--- a/src/datavisualization/utils/surfaceobject.cpp
+++ b/src/datavisualization/utils/surfaceobject.cpp
@@ -307,15 +307,21 @@ void SurfaceObject::smoothUVs(const QSurfaceDataArray &dataArray,
float zRangeNormalizer = dataArray.at(rows - 1)->at(0).z() - dataArray.at(0)->at(0).z();
float xMin = dataArray.at(0)->at(0).x();
float zMin = dataArray.at(0)->at(0).z();
+ const bool zDescending = m_dataDimension.testFlag(SurfaceObject::ZDescending);
+ const bool xDescending = m_dataDimension.testFlag(SurfaceObject::XDescending);
QVector<QVector2D> uvs;
uvs.resize(m_rows * m_columns);
int index = 0;
for (int i = 0; i < m_rows; i++) {
float y = (modelArray.at(i)->at(0).z() - zMin) / zRangeNormalizer;
+ if (zDescending)
+ y = 1.0f - y;
const QSurfaceDataRow &p = *modelArray.at(i);
for (int j = 0; j < m_columns; j++) {
float x = (p.at(j).x() - xMin) / xRangeNormalizer;
+ if (xDescending)
+ x = 1.0f - x;
uvs[index] = QVector2D(x, y);
index++;
}
@@ -601,6 +607,8 @@ void SurfaceObject::coarseUVs(const QSurfaceDataArray &dataArray,
float zRangeNormalizer = dataArray.at(rows - 1)->at(0).z() - dataArray.at(0)->at(0).z();
float xMin = dataArray.at(0)->at(0).x();
float zMin = dataArray.at(0)->at(0).z();
+ const bool zDescending = m_dataDimension.testFlag(SurfaceObject::ZDescending);
+ const bool xDescending = m_dataDimension.testFlag(SurfaceObject::XDescending);
QVector<QVector2D> uvs;
uvs.resize(m_rows * m_columns * 2);
@@ -608,9 +616,13 @@ void SurfaceObject::coarseUVs(const QSurfaceDataArray &dataArray,
int colLimit = m_columns - 1;
for (int i = 0; i < m_rows; i++) {
float y = (modelArray.at(i)->at(0).z() - zMin) / zRangeNormalizer;
+ if (zDescending)
+ y = 1.0f - y;
const QSurfaceDataRow &p = *modelArray.at(i);
for (int j = 0; j < m_columns; j++) {
float x = (p.at(j).x() - xMin) / xRangeNormalizer;
+ if (xDescending)
+ x = 1.0f - x;
uvs[index] = QVector2D(x, y);
index++;
if (j > 0 && j < colLimit) {