diff options
Diffstat (limited to 'src/datavisualization/data/scatteritemmodelhandler.cpp')
-rw-r--r-- | src/datavisualization/data/scatteritemmodelhandler.cpp | 33 |
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; |