From b759cc5483b3aa720879fac9a6a8fe612337f621 Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Tue, 9 Jun 2015 15:37:28 -0400 Subject: [PATCH] collapse some repeated code into a loop --- src/widgets/Ruler.cpp | 71 +++++++++++++++---------------------------- 1 file changed, 25 insertions(+), 46 deletions(-) diff --git a/src/widgets/Ruler.cpp b/src/widgets/Ruler.cpp index 81f0308c6..0c4455f0e 100644 --- a/src/widgets/Ruler.cpp +++ b/src/widgets/Ruler.cpp @@ -79,7 +79,7 @@ array of Ruler::Label. #include "../Prefs.h" #include "../Snap.h" -#define max(a,b) ( (a 0.0? 1.0: -1.0; - // Major ticks - double d, warpedD; - d = mMin - UPP/2; - if(timetrack) - warpedD = timetrack->ComputeWarpedLength(0.0, d); - else - warpedD = d; - // using ints for majorint doesn't work, as - // majorint will overflow and be negative at high zoom. - double majorInt = floor(sg * warpedD / mMajor); - i = -1; - while(i <= mLength) { - i++; - if(timetrack) - warpedD += timetrack->ComputeWarpedLength(d, d + UPP); + // Major and minor ticks + for (int jj = 0; jj < 2; ++jj) { + const double denom = jj == 0 ? mMajor : mMinor; + double d, warpedD; + d = mMin - UPP / 2; + if (timetrack) + warpedD = timetrack->ComputeWarpedLength(0.0, d); else - warpedD += UPP; - d += UPP; + warpedD = d; + // using ints doesn't work, as + // this will overflow and be negative at high zoom. + double step = floor(sg * warpedD / denom); + i = -1; + while (i <= mLength) { + i++; + if (timetrack) + warpedD += timetrack->ComputeWarpedLength(d, d + UPP); + else + warpedD += UPP; + d += UPP; - if (floor(sg * warpedD / mMajor) > majorInt) { - majorInt = floor(sg * warpedD / mMajor); - Tick(i, sg * majorInt * mMajor, true, false); - } - } - - // Minor ticks - d = mMin - UPP/2; - if(timetrack) - warpedD = timetrack->ComputeWarpedLength(0.0, d); - else - warpedD = d; - // using ints for majorint doesn't work, as - // majorint will overflow and be negative at high zoom. - // MB: I assume the same applies to minorInt - double minorInt = floor(sg * warpedD / mMinor); - i = -1; - while(i <= mLength) { - i++; - if(timetrack) - warpedD += timetrack->ComputeWarpedLength(d, d + UPP); - else - warpedD += UPP; - d += UPP; - - if (floor(sg * warpedD / mMinor) > minorInt) { - minorInt = floor(sg * warpedD / mMinor); - Tick(i, sg * minorInt * mMinor, false, true); + if (floor(sg * warpedD / denom) > step) { + step = floor(sg * warpedD / denom); + bool major = jj == 0; + Tick(i, sg * step * denom, major, !major); + } } }