json_vec_utils.cpp 668 B

12345678910111213141516171819202122232425262728
  1. #include "json_vec_utils.h"
  2. namespace App {
  3. namespace JsonUtils {
  4. QJsonArray vec3ToJsonArray(const QVector3D &vec) {
  5. QJsonArray arr;
  6. arr.append(vec.x());
  7. arr.append(vec.y());
  8. arr.append(vec.z());
  9. return arr;
  10. }
  11. QVector3D jsonArrayToVec3(const QJsonValue &value, const QVector3D &fallback) {
  12. if (!value.isArray()) {
  13. return fallback;
  14. }
  15. const auto arr = value.toArray();
  16. if (arr.size() < 3) {
  17. return fallback;
  18. }
  19. return QVector3D(static_cast<float>(arr.at(0).toDouble(fallback.x())),
  20. static_cast<float>(arr.at(1).toDouble(fallback.y())),
  21. static_cast<float>(arr.at(2).toDouble(fallback.z())));
  22. }
  23. }
  24. }