Using std::copysign

This commit is contained in:
Klaus Basan
2017-08-08 18:41:48 +02:00
committed by Mathew Sutcliffe
parent 0117558ea7
commit 58b5dd1278
2 changed files with 10 additions and 28 deletions

View File

@@ -38,39 +38,21 @@ namespace BlackMisc
Q_FUNC_INFO, "Same sign required");
}
void CAngle::unifySign(int &degrees, int &minutes, double &seconds)
void CAngle::unifySign(int degrees, int &minutes, double &seconds)
{
if (degrees < 0)
{
if (minutes > 0) minutes *= -1;
if (seconds > 0) seconds *= -1.0;
}
else if (degrees > 0)
{
if (minutes < 0) minutes *= -1;
if (seconds < 0) seconds *= -1.0;
}
else
{
// degrees was 0
if ((minutes > 0 && seconds < 0) || (minutes < 0 && seconds > 0))
{
seconds *= -1.0;
}
}
minutes = std::copysign(minutes, degrees == 0 ? minutes : degrees);
seconds = std::copysign(seconds, degrees == 0 ? minutes : degrees);
}
void CAngle::unifySign(int &degrees, int &minutes)
void CAngle::unifySign(int degrees, int &minutes)
{
if ((degrees > 0 && minutes < 0) || (degrees < 0 && minutes > 0))
{
minutes *= -1.0;
}
if (degrees == 0) { return; }
minutes = std::copysign(minutes, degrees);
}
BlackMisc::CIcon CAngle::toIcon() const
CIcon CAngle::toIcon() const
{
BlackMisc::CIcon i = CIcon::iconByIndex(CIcons::StandardIconArrowMediumNorth16);
CIcon i = CIcon::iconByIndex(CIcons::StandardIconArrowMediumNorth16);
i.setRotation(*this);
return i;
}

View File

@@ -71,10 +71,10 @@ namespace BlackMisc
CAngle(int degrees, double minutes);
//! Minutes and secods will get same sign as degrees
void static unifySign(int &degrees, int &minutes, double &seconds);
void static unifySign(int degrees, int &minutes, double &seconds);
//! Minutes will get same sign as degrees
void static unifySign(int &degrees, int &minutes);
void static unifySign(int degrees, int &minutes);
//! \copydoc BlackMisc::Mixin::Icon::toIcon
BlackMisc::CIcon toIcon() const;