Files
pilotclient/src/blackmisc/aviation/heading.cpp
Lars Toenning bcc4bdd31e Add SPDX identifiers for REUSE compliance
Co-authored-by: Mat Sutcliffe <oktal3700@gmail.com>
2023-10-03 09:29:49 +02:00

59 lines
2.0 KiB
C++

// SPDX-FileCopyrightText: Copyright (C) 2013 swift Project Community / Contributors
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
#include "blackmisc/aviation/heading.h"
#include <QCoreApplication>
using BlackMisc::PhysicalQuantities::CAngle;
using BlackMisc::PhysicalQuantities::CAngleUnit;
namespace BlackMisc::Aviation
{
QString CHeading::convertToQString(bool i18n) const
{
return i18n ?
QStringLiteral("%1 %2").arg(CAngle::convertToQString(i18n),
this->isMagneticHeading() ?
QCoreApplication::translate("Aviation", "magnetic") :
QCoreApplication::translate("Aviation", "true")) :
QStringLiteral("%1 %2").arg(CAngle::convertToQString(i18n),
this->isMagneticHeading() ? "magnetic" : "true");
}
void CHeading::normalizeTo360Degrees()
{
const double v = normalizeDegrees360(this->value(CAngleUnit::deg()));
const CAngleUnit u = this->getUnit();
*this = CHeading(v, this->getReferenceNorth(), CAngleUnit::deg());
this->switchUnit(u);
}
void CHeading::normalizeToPlusMinus180Degrees()
{
const double v = normalizeDegrees180(this->value(CAngleUnit::deg()));
const CAngleUnit u = this->getUnit();
*this = CHeading(v, this->getReferenceNorth(), CAngleUnit::deg());
this->switchUnit(u);
}
CHeading CHeading::normalizedToPlusMinus180Degrees() const
{
CHeading copy(*this);
copy.normalizeToPlusMinus180Degrees();
return copy;
}
CHeading CHeading::normalizedTo360Degrees() const
{
CHeading copy(*this);
copy.normalizeTo360Degrees();
return copy;
}
void CHeading::registerMetadata()
{
Mixin::MetaType<CHeading>::registerMetadata();
qRegisterMetaType<CHeading::ReferenceNorth>();
}
} // namespace