MCPcopy Create free account
hub / github.com/CieNTi/serial_port_plotter / getSubTickCount

Method getSubTickCount

qcustomplot/qcustomplot.cpp:5607–5657  ·  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

5605 Note that a returned sub tick count of e.g. 4 will split each tick interval into 5 sections.
5606*/
5607int QCPAxisTicker::getSubTickCount(double tickStep)
5608{
5609 int result = 1; // default to 1, if no proper value can be found
5610
5611 // separate integer and fractional part of mantissa:
5612 double epsilon = 0.01;
5613 double intPartf;
5614 int intPart;
5615 double fracPart = modf(getMantissa(tickStep), &intPartf);
5616 intPart = intPartf;
5617
5618 // handle cases with (almost) integer mantissa:
5619 if (fracPart < epsilon || 1.0-fracPart < epsilon)
5620 {
5621 if (1.0-fracPart < epsilon)
5622 ++intPart;
5623 switch (intPart)
5624 {
5625 case 1: result = 4; break; // 1.0 -> 0.2 substep
5626 case 2: result = 3; break; // 2.0 -> 0.5 substep
5627 case 3: result = 2; break; // 3.0 -> 1.0 substep
5628 case 4: result = 3; break; // 4.0 -> 1.0 substep
5629 case 5: result = 4; break; // 5.0 -> 1.0 substep
5630 case 6: result = 2; break; // 6.0 -> 2.0 substep
5631 case 7: result = 6; break; // 7.0 -> 1.0 substep
5632 case 8: result = 3; break; // 8.0 -> 2.0 substep
5633 case 9: result = 2; break; // 9.0 -> 3.0 substep
5634 }
5635 } else
5636 {
5637 // handle cases with significantly fractional mantissa:
5638 if (qAbs(fracPart-0.5) < epsilon) // *.5 mantissa
5639 {
5640 switch (intPart)
5641 {
5642 case 1: result = 2; break; // 1.5 -> 0.5 substep
5643 case 2: result = 4; break; // 2.5 -> 0.5 substep
5644 case 3: result = 4; break; // 3.5 -> 0.7 substep
5645 case 4: result = 2; break; // 4.5 -> 1.5 substep
5646 case 5: result = 4; break; // 5.5 -> 1.1 substep (won't occur with default getTickStep from here on)
5647 case 6: result = 4; break; // 6.5 -> 1.3 substep
5648 case 7: result = 2; break; // 7.5 -> 2.5 substep
5649 case 8: result = 4; break; // 8.5 -> 1.7 substep
5650 case 9: result = 4; break; // 9.5 -> 1.9 substep
5651 }
5652 }
5653 // if mantissa fraction isn't 0.0 or 0.5, don't bother finding good sub tick marks, leave default
5654 }
5655
5656 return result;
5657}
5658
5659/*! \internal
5660

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected