Files
qt5-legatus-legacy/Lts/Plugins/BuildingViewer/Common/bdv_helper.h
T
2026-08-13 18:33:10 +02:00

69 lines
1.6 KiB
C++
Executable File

/**
* @RDE_HEADER@
* $Id$
* $HeadURL$
* $Author$
* Created by Philipp Last, SLSY, 2017-09-22
*/
#pragma once
#include <QString>
#include <QJsonObject>
#include <LtsUtilsCore/qpoint3d.h>
#include <Common/buildingviewercommon_export.h>
namespace BuildingViewer
{
struct BuildingTuple
{
QString buildingId;
QString description;
int entityId = 0;
bool isShown = false;
};
// merge with BuildingTuple?
struct BuildingInfo
{
QString name;
LtsUtils::QPoint3D position;
double angleDegree = 0;
int id = 0;
bool operator==(const BuildingInfo &o) const
{
return id == o.id; // id is the key so this is enough
}
static BuildingInfo fromJson(const QJsonObject &obj)
{
BuildingInfo ret;
ret.name = obj[QStringLiteral("name")].toString();
ret.position.rx() = obj[QStringLiteral("positionX")].toDouble();
ret.position.ry() = obj[QStringLiteral("positionY")].toDouble();
ret.position.rz() = obj[QStringLiteral("positionZ")].toDouble();
ret.angleDegree = obj[QStringLiteral("angleDegree")].toDouble();
ret.id = obj[QStringLiteral("id")].toInt();
return ret;
}
QJsonObject toJson() const
{
return {
{QStringLiteral("name"), name},
{QStringLiteral("positionX"), position.x()},
{QStringLiteral("positionY"), position.y()},
{QStringLiteral("positionZ"), position.z()},
{QStringLiteral("angleDegree"), angleDegree},
{QStringLiteral("id"), id},
};
}
bool isValid() const { return id > 0; }
};
QString BUILDINGVIEWERCOMMON_EXPORT databaseId2FeatureId(int32_t buildingDatabaseId);
int32_t BUILDINGVIEWERCOMMON_EXPORT featureId2DatabaseId(const QString& strFeatureId);
}