69 lines
1.6 KiB
C++
Executable File
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);
|
|
}
|
|
|