MCPcopy Create free account
hub / github.com/cutechess/cutechess / getSubTickCount

Method getSubTickCount

projects/gui/3rdparty/qcustomplot/qcustomplot.cpp:6234–6284  ·  view source on GitHub ↗

! \internal Takes the \a tickStep, i.e. the distance between two consecutive ticks, and returns an appropriate number of sub ticks for that specific tick step. Note that a returned sub tick count of e.g. 4 will split each tick interval into 5 sections. */

Source from the content-addressed store, hash-verified

6232 Note that a returned sub tick count of e.g. 4 will split each tick interval into 5 sections.
6233*/
6234int QCPAxisTicker::getSubTickCount(double tickStep)
6235{
6236 int result = 1; // default to 1, if no proper value can be found
6237
6238 // separate integer and fractional part of mantissa:
6239 double epsilon = 0.01;
6240 double intPartf;
6241 int intPart;
6242 double fracPart = modf(getMantissa(tickStep), &intPartf);
6243 intPart = int(intPartf);
6244
6245 // handle cases with (almost) integer mantissa:
6246 if (fracPart < epsilon || 1.0-fracPart < epsilon)
6247 {
6248 if (1.0-fracPart < epsilon)
6249 ++intPart;
6250 switch (intPart)
6251 {
6252 case 1: result = 4; break; // 1.0 -> 0.2 substep
6253 case 2: result = 3; break; // 2.0 -> 0.5 substep
6254 case 3: result = 2; break; // 3.0 -> 1.0 substep
6255 case 4: result = 3; break; // 4.0 -> 1.0 substep
6256 case 5: result = 4; break; // 5.0 -> 1.0 substep
6257 case 6: result = 2; break; // 6.0 -> 2.0 substep
6258 case 7: result = 6; break; // 7.0 -> 1.0 substep
6259 case 8: result = 3; break; // 8.0 -> 2.0 substep
6260 case 9: result = 2; break; // 9.0 -> 3.0 substep
6261 }
6262 } else
6263 {
6264 // handle cases with significantly fractional mantissa:
6265 if (qAbs(fracPart-0.5) < epsilon) // *.5 mantissa
6266 {
6267 switch (intPart)
6268 {
6269 case 1: result = 2; break; // 1.5 -> 0.5 substep
6270 case 2: result = 4; break; // 2.5 -> 0.5 substep
6271 case 3: result = 4; break; // 3.5 -> 0.7 substep
6272 case 4: result = 2; break; // 4.5 -> 1.5 substep
6273 case 5: result = 4; break; // 5.5 -> 1.1 substep (won't occur with default getTickStep from here on)
6274 case 6: result = 4; break; // 6.5 -> 1.3 substep
6275 case 7: result = 2; break; // 7.5 -> 2.5 substep
6276 case 8: result = 4; break; // 8.5 -> 1.7 substep
6277 case 9: result = 4; break; // 9.5 -> 1.9 substep
6278 }
6279 }
6280 // if mantissa fraction isn't 0.0 or 0.5, don't bother finding good sub tick marks, leave default
6281 }
6282
6283 return result;
6284}
6285
6286/*! \internal
6287

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected