Specialized axis ticker to display ticks in units of an arbitrary constant, for example pi. More...
Public Types | |
enum | FractionStyle |
enum | FractionStyle |
![]() | |
enum | TickStepStrategy |
enum | TickStepStrategy |
Public Functions | |
QCPAxisTickerPi () | |
QString | piSymbol () const |
double | piValue () const |
bool | periodicity () const |
FractionStyle | fractionStyle () const |
void | setPiSymbol (QString symbol) |
void | setPiValue (double pi) |
void | setPeriodicity (int multiplesOfPi) |
void | setFractionStyle (FractionStyle style) |
QString | piSymbol () const |
double | piValue () const |
bool | periodicity () const |
FractionStyle | fractionStyle () const |
void | setPiSymbol (QString symbol) |
void | setPiValue (double pi) |
void | setPeriodicity (int multiplesOfPi) |
void | setFractionStyle (FractionStyle style) |
![]() | |
QCPAxisTicker () | |
TickStepStrategy | tickStepStrategy () const |
int | tickCount () const |
double | tickOrigin () const |
void | setTickStepStrategy (TickStepStrategy strategy) |
void | setTickCount (int count) |
void | setTickOrigin (double origin) |
virtual void | generate (const QCPRange &range, const QLocale &locale, QChar formatChar, int precision, QVector< double > &ticks, QVector< double > *subTicks, QVector< QString > *tickLabels) |
TickStepStrategy | tickStepStrategy () const |
int | tickCount () const |
double | tickOrigin () const |
void | setTickStepStrategy (TickStepStrategy strategy) |
void | setTickCount (int count) |
void | setTickOrigin (double origin) |
virtual void | generate (const QCPRange &range, const QLocale &locale, QChar formatChar, int precision, QVector< double > &ticks, QVector< double > *subTicks, QVector< QString > *tickLabels) |
Protected Functions | |
virtual double | getTickStep (const QCPRange &range) |
virtual int | getSubTickCount (double tickStep) |
virtual QString | getTickLabel (double tick, const QLocale &locale, QChar formatChar, int precision) |
void | simplifyFraction (int &numerator, int &denominator) const |
QString | fractionToString (int numerator, int denominator) const |
QString | unicodeFraction (int numerator, int denominator) const |
QString | unicodeSuperscript (int number) const |
QString | unicodeSubscript (int number) const |
virtual double | getTickStep (const QCPRange &range) |
virtual int | getSubTickCount (double tickStep) |
virtual QString | getTickLabel (double tick, const QLocale &locale, QChar formatChar, int precision) |
void | simplifyFraction (int &numerator, int &denominator) const |
QString | fractionToString (int numerator, int denominator) const |
QString | unicodeFraction (int numerator, int denominator) const |
QString | unicodeSuperscript (int number) const |
QString | unicodeSubscript (int number) const |
![]() | |
virtual QVector< double > | createTickVector (double tickStep, const QCPRange &range) |
virtual QVector< double > | createSubTickVector (int subTickCount, const QVector< double > &ticks) |
virtual QVector< QString > | createLabelVector (const QVector< double > &ticks, const QLocale &locale, QChar formatChar, int precision) |
void | trimTicks (const QCPRange &range, QVector< double > &ticks, bool keepOneOutlier) const |
double | pickClosest (double target, const QVector< double > &candidates) const |
double | getMantissa (double input, double *magnitude=0) const |
double | cleanMantissa (double input) const |
virtual QVector< double > | createTickVector (double tickStep, const QCPRange &range) |
virtual QVector< double > | createSubTickVector (int subTickCount, const QVector< double > &ticks) |
virtual QVector< QString > | createLabelVector (const QVector< double > &ticks, const QLocale &locale, QChar formatChar, int precision) |
void | trimTicks (const QCPRange &range, QVector< double > &ticks, bool keepOneOutlier) const |
double | pickClosest (double target, const QVector< double > &candidates) const |
double | getMantissa (double input, double *magnitude=0) const |
double | cleanMantissa (double input) const |
Specialized axis ticker to display ticks in units of an arbitrary constant, for example pi.
This QCPAxisTicker subclass generates ticks that are expressed with respect to a given symbolic constant with a numerical value specified with setPiValue and an appearance in the tick labels specified with setPiSymbol.
Ticks may be generated at fractions of the symbolic constant. How these fractions appear in the tick label can be configured with setFractionStyle.
The ticker can be created and assigned to an axis like this:
Defines how fractions should be displayed in tick labels.
Defines how fractions should be displayed in tick labels.
QCPAxisTickerPi::QCPAxisTickerPi | ( | ) |
Constructs the ticker and sets reasonable default values. Axis tickers are commonly created managed by a QSharedPointer, which then can be passed to QCPAxis::setTicker.
void QCPAxisTickerPi::setPiSymbol | ( | QString | symbol | ) |
Sets how the symbol part (which is always a suffix to the number) shall appear in the axis tick label.
If a space shall appear between the number and the symbol, make sure the space is contained in symbol.
void QCPAxisTickerPi::setPiValue | ( | double | pi | ) |
Sets the numerical value that the symbolic constant has.
This will be used to place the appropriate fractions of the symbol at the respective axis coordinates.
void QCPAxisTickerPi::setPeriodicity | ( | int | multiplesOfPi | ) |
Sets whether the axis labels shall appear periodicly and if so, at which multiplicity of the symbolic constant.
To disable periodicity, set multiplesOfPi to zero.
For example, an axis that identifies 0 with 2pi would set multiplesOfPi to two.
void QCPAxisTickerPi::setFractionStyle | ( | QCPAxisTickerPi::FractionStyle | style | ) |
Sets how the numerical/fractional part preceding the symbolic constant is displayed in tick labels. See FractionStyle for the various options.
|
protectedvirtual |
Returns the tick step, using the constant's value (setPiValue) as base unit. In consequence the numerical/fractional part preceding the symbolic constant is made to have a readable mantissa.
For general information about this virtual method, see the base class implementation.
Reimplemented from QCPAxisTicker.
|
protectedvirtual |
Returns the sub tick count, using the constant's value (setPiValue) as base unit. In consequence the sub ticks divide the numerical/fractional part preceding the symbolic constant reasonably, and not the total tick coordinate.
For general information about this virtual method, see the base class implementation.
Reimplemented from QCPAxisTicker.
|
protectedvirtual |
Returns the tick label as a fractional/numerical part and a symbolic string as suffix. The formatting of the fraction is done according to the specified setFractionStyle. The appended symbol is specified with setPiSymbol.
For general information about this virtual method, see the base class implementation.
Reimplemented from QCPAxisTicker.
|
protected |
Takes the fraction given by numerator and denominator and modifies the values to make sure the fraction is in irreducible form, i.e. numerator and denominator don't share any common factors which could be cancelled.
|
protected |
Takes the fraction given by numerator and denominator and returns a string representation. The result depends on the configured fraction style (setFractionStyle).
This method is used to format the numerical/fractional part when generating tick labels. It simplifies the passed fraction to an irreducible form using simplifyFraction and factors out any integer parts of the fraction (e.g. "10/4" becomes "2 1/2").
|
protected |
Returns the unicode string representation of the fraction given by numerator and denominator. This is the representation used in fractionToString when the fraction style (setFractionStyle) is fsUnicodeFractions.
This method doesn't use the single-character common fractions but builds each fraction from a superscript unicode number, the unicode fraction character, and a subscript unicode number.
|
protected |
Returns the unicode string representing number as superscript. This is used to build unicode fractions in unicodeFraction.
|
protected |
Returns the unicode string representing number as subscript. This is used to build unicode fractions in unicodeFraction.
|
protectedvirtual |
Takes the entire currently visible axis range and returns a sensible tick step in order to provide readable tick labels as well as a reasonable number of tick counts (see setTickCount, setTickStepStrategy).
If a QCPAxisTicker subclass only wants a different tick step behaviour than the default implementation, it should reimplement this method. See cleanMantissa for a possible helper function.
Reimplemented from QCPAxisTicker.
|
protectedvirtual |
Takes the 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.
Reimplemented from QCPAxisTicker.
|
protectedvirtual |
This method returns the tick label string as it should be printed under the tick coordinate. If a textual number is returned, it should respect the provided locale, formatChar and precision.
If the returned value contains exponentials of the form "2e5" and beautifully typeset powers is enabled in the QCPAxis number format (QCPAxis::setNumberFormat), the exponential part will be formatted accordingly using multiplication symbol and superscript during rendering of the label automatically.
Reimplemented from QCPAxisTicker.