json_vec_utils.cpp 738 B

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