From 58b5dd12784f4f80a96fb56f135c780a31625abe Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Tue, 8 Aug 2017 18:41:48 +0200 Subject: [PATCH] Using std::copysign --- src/blackmisc/pq/angle.cpp | 34 ++++++++-------------------------- src/blackmisc/pq/angle.h | 4 ++-- 2 files changed, 10 insertions(+), 28 deletions(-) diff --git a/src/blackmisc/pq/angle.cpp b/src/blackmisc/pq/angle.cpp index 6ca2c7fd6..c0b3c4836 100644 --- a/src/blackmisc/pq/angle.cpp +++ b/src/blackmisc/pq/angle.cpp @@ -38,39 +38,21 @@ namespace BlackMisc Q_FUNC_INFO, "Same sign required"); } - void CAngle::unifySign(int °rees, 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 °rees, 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; } diff --git a/src/blackmisc/pq/angle.h b/src/blackmisc/pq/angle.h index c04f126eb..7f7bd994d 100644 --- a/src/blackmisc/pq/angle.h +++ b/src/blackmisc/pq/angle.h @@ -71,10 +71,10 @@ namespace BlackMisc CAngle(int degrees, double minutes); //! Minutes and secods will get same sign as degrees - void static unifySign(int °rees, int &minutes, double &seconds); + void static unifySign(int degrees, int &minutes, double &seconds); //! Minutes will get same sign as degrees - void static unifySign(int °rees, int &minutes); + void static unifySign(int degrees, int &minutes); //! \copydoc BlackMisc::Mixin::Icon::toIcon BlackMisc::CIcon toIcon() const;