summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/data/scatteritemmodelhandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/datavisualization/data/scatteritemmodelhandler.cpp')
-rw-r--r--src/datavisualization/data/scatteritemmodelhandler.cpp33
1 files changed, 17 insertions, 16 deletions
diff --git a/src/datavisualization/data/scatteritemmodelhandler.cpp b/src/datavisualization/data/scatteritemmodelhandler.cpp
index 1b1aaefe..a1158453 100644
--- a/src/datavisualization/data/scatteritemmodelhandler.cpp
+++ b/src/datavisualization/data/scatteritemmodelhandler.cpp
@@ -92,28 +92,26 @@ void ScatterItemModelHandler::handleRowsRemoved(const QModelIndex &parent, int s
}
}
-static inline QQuaternion toQuaternion(const QVariant &variant)
+static inline QVector3D toRotationAxis(const QVariant &variant)
{
- if (variant.canConvert<QQuaternion>()) {
- return variant.value<QQuaternion>();
+ if (variant.canConvert<QVector3D>()) {
+ return variant.value<QVector3D>();
} else if (variant.canConvert<QString>()) {
QString s = variant.toString();
- if (!s.isEmpty() && s.count(QLatin1Char(',')) == 3) {
+ if (!s.isEmpty() && s.count(QLatin1Char(',')) == 2) {
int index = s.indexOf(QLatin1Char(','));
int index2 = s.indexOf(QLatin1Char(','), index + 1);
- int index3 = s.indexOf(QLatin1Char(','), index2 + 1);
- bool sGood, xGood, yGood, zGood;
- float sCoord = s.left(index).toFloat(&sGood);
- float xCoord = s.mid(index + 1, index2 - index - 1).toFloat(&xGood);
- float yCoord = s.mid(index2 + 1, index3 - index2 - 1).toFloat(&yGood);
- float zCoord = s.mid(index3 + 1).toFloat(&zGood);
+ bool xGood, yGood, zGood;
+ float xCoord = s.left(index).toFloat(&xGood);
+ float yCoord = s.mid(index + 1, index2 - index - 1).toFloat(&yGood);
+ float zCoord = s.mid(index2 + 1).toFloat(&zGood);
- if (sGood && xGood && yGood && zGood)
- return QQuaternion(sCoord, xCoord, yCoord, zCoord);
+ if (xGood && yGood && zGood)
+ return QVector3D(xCoord, yCoord, zCoord);
}
}
- return QQuaternion();
+ return upVector;
}
void ScatterItemModelHandler::modelPosToScatterItem(int modelRow, int modelColumn,
@@ -129,8 +127,10 @@ void ScatterItemModelHandler::modelPosToScatterItem(int modelRow, int modelColum
yPos = index.data(m_yPosRole).toFloat();
if (m_zPosRole != noRoleIndex)
zPos = index.data(m_zPosRole).toFloat();
- if (m_rotationRole != noRoleIndex)
- item.setRotation(toQuaternion(index.data(m_rotationRole)));
+ if (m_rotationAxisRole != noRoleIndex)
+ item.setRotationAxis(toRotationAxis(index.data(m_rotationAxisRole)));
+ if (m_rotationAngleRole != noRoleIndex)
+ item.setRotationAngle(index.data(m_rotationAngleRole).toFloat());
item.setPosition(QVector3D(xPos, yPos, zPos));
}
@@ -147,7 +147,8 @@ void ScatterItemModelHandler::resolveModel()
m_xPosRole = roleHash.key(m_proxy->xPosRole().toLatin1(), noRoleIndex);
m_yPosRole = roleHash.key(m_proxy->yPosRole().toLatin1(), noRoleIndex);
m_zPosRole = roleHash.key(m_proxy->zPosRole().toLatin1(), noRoleIndex);
- m_rotationRole = roleHash.key(m_proxy->rotationRole().toLatin1(), noRoleIndex);
+ m_rotationAxisRole = roleHash.key(m_proxy->rotationAxisRole().toLatin1(), noRoleIndex);
+ m_rotationAngleRole = roleHash.key(m_proxy->rotationAngleRole().toLatin1(), noRoleIndex);
const int columnCount = m_itemModel->columnCount();
const int rowCount = m_itemModel->rowCount();
const int totalCount = rowCount * columnCount;