2015-07-11 18:56:02 +08:00
/*
2018-11-25 21:53:26 +08:00
Copyright ( c ) 2008 - 2018 Jan W . Krieger ( < jan @ jkrieger . de > )
2015-07-11 18:56:02 +08:00
2015-07-12 22:34:27 +08:00
2015-07-11 18:56:02 +08:00
This software is free software : you can redistribute it and / or modify
it under the terms of the GNU Lesser General Public License ( LGPL ) as published by
the Free Software Foundation , either version 2 of the License , or
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU Lesser General Public License ( LGPL ) for more details .
You should have received a copy of the GNU Lesser General Public License ( LGPL )
along with this program . If not , see < http : //www.gnu.org/licenses/>.
*/
/**
* \ defgroup jkqtpbaseplotter_elements Basic Plot Elements
* \ ingroup jkqtplotter_elements
*
* This group contains some tool classes that implement basic elements of the plot ( coordinate axes , key , . . . ) .
* These classes are used by JKQtPlotterBase to output the plot
*/
2018-12-19 00:13:18 +08:00
/** \file jkqtpgraphs.h
2015-07-11 18:56:02 +08:00
* \ ingroup jkqtpbaseplotter_elements
*/
# ifndef JKQTPBASEELEMENTS_H
# define JKQTPBASEELEMENTS_H
# include <QString>
# include <QPainter>
# include <QPair>
# include <QSettings>
2018-11-26 03:25:44 +08:00
# include "jkqtplottertools/jkqtptools.h"
# include "jkqtmathtext/jkqtmathtext.h"
# include "jkqtplottertools/jkqtp_imexport.h"
2015-07-11 18:56:02 +08:00
// forward declarations
class JKQtBasePlotter ;
/*! \brief this virtual class is the base for any type of coordinate axis, to be drawn by JKQTplotterBase.
\ ingroup jkqtpbaseplotter_elements
This class implements all the functionality needed for a coordinate axis :
- transform world to screen coordinates and vice versa
- draw the axis ( implemented by child classes ! ) with these elements : axis lines , ticks , tick labels , axis label , x / y = 0 axis
- measure the axes in screen coordinates
- load and save the settings to an ini file
.
Most of the actual draw and measure functions have to be implemented in descendents of this class ( namely
JKQTPhorizontalAxis and JKQTPverticalAxis , as they are specific to whether the axis is drawn horizontally or
vertically .
Each axis is split up into several parts , as depicted in this image :
\ image html jkqtpcoordinateaxis1 . png
Which parts to actually draw is set by the diverse properties .
\ section jkqtplotter_base_systems Coordinate Systems and Transformations
The plot itself is positioned inside the widget . You simply supply the widget dimensions and the border
widths between the plot and the widget . The Object then calculates the size of the plot :
\ image html plot_widget_orientation . png
The plot shows the parameter range xmin . . . xmax and ymin . . . ymax . Note that if you plot logarithmic plots
you may only plot positive ( > 0 ) values . Any other value may lead to an error or unpredictable behaviour .
From these parameters the object calculates the scaling laws for plotting pints to the screen . The next paragraphs
show all calculations for x - and y - coordinates , ahough this class only implements a generic form . The actual calculation
is also influenced by the parameters set in the child classes !
- # < tt > width = xmax - xmin < / tt >
- # < tt > height = ymax - ymin < / tt >
- # < tt > plotWidth = widgetWidth - plotBorderLeft - plotBorderRight < / tt >
- # < tt > plotHeight = widgetHeight - plotBorderTop - plotBorderBottom < / tt >
- # < tt > xPlotOffset = plotBorderLeft < / tt >
- # < tt > yPlotOffset = plotBorderTop < / tt >
.
These parameters are common to all scaling laws . The next image explains these formulas :
\ image html plot_coordinates . png
The actual scaling laws \ f $ ( x_p ( x ) , y_p ( y ) ) \ f $ may be derived from these equations :
\ f [ x_p ( \ mbox { xmin } ) = \ mbox { xPlotOffset } , \ \ \ \ \ x_p ( \ mbox { xmax } ) = \ mbox { xPlotOffset } + \ mbox { plotWidth } \ f ]
\ f [ y_p ( \ mbox { ymax } ) = \ mbox { yPlotOffset } , \ \ \ \ \ y_p ( \ mbox { ymin } ) = \ mbox { yPlotOffset } + \ mbox { plotHeight } \ f ]
Here \ f $ ( x_p , y_p ) \ f $ denotes a point in pixel coordinates ( green coordinate system ) and \ f $ ( x , y ) \ f $ denotes a point in the
plotting coordinate system .
If you assume a < b > linear scaling law < / b > . \ f [ x_p ( x ) = \ mbox { xoffset } + x \ cdot \ mbox { xscale } \ \ \ \ \ \ \ \ \ y_p ( y ) = \ mbox { yoffset } - y \ cdot \ mbox { yscale } \ f ]
you can derive :
\ f [ \ mbox { xscale } = \ frac { \ mbox { plotWidth } } { \ mbox { xwidth } } , \ \ \ \ \ \ \ mbox { xoffset } = \ mbox { xPlotOffset } - \ mbox { xmin } \ cdot \ mbox { xscale } \ f ]
\ f [ \ mbox { yscale } = \ frac { \ mbox { plotHeight } } { \ mbox { ywidth } } , \ \ \ \ \ \ \ mbox { yoffset } = \ mbox { yPlotOffset } + \ mbox { ymax } \ cdot \ mbox { yscale } \ f ]
If you have a < b > logarithmic axis < / b > ( i . e . we plot \ f $ \ log_b ( x ) \ f $ insetad of \ f $ x \ f $ for a given base \ f $ b \ f $ ) we get the same
formulas , but with \ f $ x \ f $ exchanged by \ f $ \ log_b ( x ) \ f $ . If we use the equation \ f $ \ log_b ( x ) = \ log ( x ) / \ log ( b ) \ f $ we finally get
the scaling laws :
\ f [ x_p ( x ) = \ mbox { xoffset } + \ frac { \ log ( x ) } { \ log ( \ mbox { logXAxisBase } ) } \ cdot \ mbox { xscale } \ \ \ \ \ \ \ \ \ y_p ( y ) = \ mbox { yoffset } - \ frac { \ log ( y ) } { \ log ( \ mbox { logYAxisBase } ) } \ cdot \ mbox { yscale } \ f ]
From these we can calculate their parameters with the same defining equations as above :
\ f [ \ mbox { xscale } = \ frac { \ mbox { plotWidth } \ cdot \ log ( \ mbox { logXAxisBase } ) } { \ log ( \ mbox { xmax } ) - \ log ( \ mbox { xmin } ) } , \ \ \ \ \ \ \ mbox { xoffset } = \ mbox { xPlotOffset } - \ frac { \ log ( \ mbox { xmin } ) } { \ log ( \ mbox { logXAxisBase } ) } \ cdot \ mbox { xscale } \ f ]
\ f [ \ mbox { yscale } = \ frac { \ mbox { plotHeight } \ cdot \ log ( \ mbox { logYAxisBase } ) } { \ log ( \ mbox { ymax } ) - \ log ( \ mbox { ymin } ) } , \ \ \ \ \ \ \ mbox { yoffset } = \ mbox { yPlotOffset } + \ frac { \ log ( \ mbox { ymax } ) } { \ log ( \ mbox { logYAxisBase } ) } \ cdot \ mbox { yscale } \ f ]
The object implements the above coordinate transformations in the ( inline ) method x2p ( ) . The inverse transformations
are implemented in p2x ( ) . They can be used to show the system coordinates of the current mouse position .
\ section jkqtplotter_base_grids Axis Ticks and Grids
This section explains how this component draws the ticks on coordinate axes and the grids that may be drawn below
the plots . In principle both - grids and axes - are drawn the same way , i . e . with the same step widths . There are
two types of ticks and grids : The major and the minor ticks / grids . The major ticks also show a label that denotes the
value they represent . Between two major ticks the axis shows \ a minorTicks small ticks that are not
accompanied by a label . The next image shows an example of an axis :
\ image html plot_axis_ticksandlabels . png
For the labels this class also uses an algorithm that extimates the number of valid digits ( after the comma ) that are
needed so that two adjacent labels do not show the same text , so if you plot the range 1.10 . . 1.15 The algorithm will
show at least two valid digits , as with one digit the labels would be 1.1 , 1.1 , 1.1 , 1.1 , 1.1 , 1.1 . With two digits they
are 1.10 , 1.11 , 1.12 , 1.13 , 1.14 , 1.15 . The class may also use a method that can write \ c 1 m instead of \ c 0.001 and \ c 1 k
instead of \ c 1000 ( the algorithm supports the " exponent letters " f , p , n , u , m , k , M , G , T , P . The latter option may
( de ) activated by using showXExponentCharacter and showYExponentCharacter .
For grids applies the same . There are two grids that are drawn in different styles ( often the major grid is drawn
thicker and darker than the minor grid ) .
The minor ticks and grid lines are generated automatically , depending in the setting of \ a minorTicks .
These properties give the number of minor ticks between two major ticks , so if the major ticks are at 1 , 2 , 3 , . . . and you
want minor ticks at 1.1 , 1.2 , 1.3 , . . . then you will have to set \ c minorTicks = 9 as there are nine ticks between two major
ticks . So the minor tick spacing is calculated as : \ f [ \ Delta \ mbox { MinorTicks } = \ frac { \ Delta \ mbox { ticks } } { \ mbox { minorTicks } + 1 } \ f ]
The same applies for logarithmic axes . If the major ticks are at 1 , 10 , 100 , . . . and you set \ c minorTicks = 9 the program will
generate 9 equally spaced minor ticks in between , so you have minor ticks at 2 , 3 , 4 , . . . , 11 , 12 , 13 , . . . This results in a standard
logarithmic axis . If you set \ c minorTicks = 1 then you will get minor ticks at 5 , 15 , 150 , . . .
\ image html plot_logaxis_ticksandlabels . png
The major tick - tick distances of linear axes may be calculated automatically in a way that the axis shows at least a given
number of ticks \ c minTicks . The algorithm takes that tick spacing that will give a number of ticks per axis
nearest but \ c " >= " to the given \ c minTicks . The Algorithm is described in detail with the function
calcLinearTickSpacing ( ) . To activate this automatic tick spacing you have to set < code > autoAxisSpacing = true < / code > .
*/
class LIB_EXPORT JKQTPcoordinateAxis : public QObject {
Q_OBJECT
protected :
public :
/** \brief class constructor */
explicit JKQTPcoordinateAxis ( JKQtBasePlotter * parent ) ;
/** \brief class destructor */
virtual ~ JKQTPcoordinateAxis ( ) ;
virtual void set_parent ( JKQtBasePlotter * parent ) ;
/** \brief loads the plot properties from a QSettings object */
virtual void loadSettings ( QSettings & settings , QString group = QString ( " plots " ) ) ;
/** \brief saves the plot properties into a QSettings object.
*
* This method only saves those properties that differ from their default value .
*/
virtual void saveSettings ( QSettings & settings , QString group = QString ( " plots " ) ) ;
/** \brief load settings from other axis */
virtual void loadSettings ( JKQTPcoordinateAxis * settings ) ;
/** \brief return x-pixel coordinate from time coordinate */
inline double x2p ( double x ) const {
double r = 0 ;
if ( logAxis ) {
if ( x < = 0 ) r = offset + scaleSign * log ( axismin ) / log ( logAxisBase ) * scale ;
else r = offset + scaleSign * log ( x ) / log ( logAxisBase ) * scale ;
} else {
r = offset + scaleSign * x * scale ;
}
if ( inverted ) {
return 2.0 * get_parent_plotoffset ( ) + get_parent_plotwidth ( ) - r ; //get_parent_plotoffset()+get_parent_plotwidth()-(r-get_parent_plotoffset());
} else {
return r ;
}
2018-11-25 21:53:26 +08:00
}
2015-07-11 18:56:02 +08:00
/** \brief return time coordinate coordinate from x-pixel */
2018-12-28 05:52:00 +08:00
inline double p2x ( double x ) const {
2015-07-11 18:56:02 +08:00
double xx = x ;
if ( inverted ) {
xx = 2.0 * get_parent_plotoffset ( ) + get_parent_plotwidth ( ) - x ;
}
xx = xx - offset ;
if ( logAxis ) {
return exp ( log ( logAxisBase ) * ( xx ) / ( scaleSign * scale ) ) ;
} else {
return xx / ( scaleSign * scale ) ;
}
2015-08-02 21:04:37 +08:00
}
2015-07-11 18:56:02 +08:00
/** \brief clear axis tick labels. This switches back to automatic labels mode for the axis. */
2018-11-25 21:53:26 +08:00
void clearAxisTickLabels ( ) ;
2015-07-11 18:56:02 +08:00
/** \brief add a new tick label to the axis */
2018-11-25 21:53:26 +08:00
void addAxisTickLabel ( double x , QString label ) ;
2015-08-02 21:04:37 +08:00
/** \brief add a new tick label to the axis */
2018-11-25 21:53:26 +08:00
void addAxisTickLabels ( const QVector < double > & x , const QStringList & label ) ;
2015-08-02 21:04:37 +08:00
/** \brief add a new tick label to the axis */
2018-11-25 21:53:26 +08:00
void addAxisTickLabels ( const double * x , const QStringList & label ) ;
2015-08-02 21:04:37 +08:00
/** \brief add a new tick label to the axis */
2018-11-25 21:53:26 +08:00
void addAxisTickLabels ( const QVector < double > & x , const QString * label ) ;
2015-08-02 21:04:37 +08:00
/** \brief add a new tick label to the axis */
2018-11-25 21:53:26 +08:00
void addAxisTickLabels ( const double * x , const QString * label , int items ) ;
2015-07-11 18:56:02 +08:00
/** \brief returns the size of the left/bottom axis in pixels */
virtual QSize getSize1 ( JKQTPEnhancedPainter & painter ) = 0 ;
/** \brief returns the size of the right/top axis in pixels */
virtual QSize getSize2 ( JKQTPEnhancedPainter & painter ) = 0 ;
/** \brief draw axes */
virtual void drawAxes ( JKQTPEnhancedPainter & painter ) = 0 ;
/** \brief draw grids */
virtual void drawGrids ( JKQTPEnhancedPainter & painter ) = 0 ;
2019-01-10 04:23:24 +08:00
/*! \brief returns the property tickSpacing. \details Description of the parameter tickSpacing is: <CENTER>\copybrief tickSpacing.</CENTER>. \see tickSpacing for more information */
2019-01-09 04:00:25 +08:00
inline double get_tickSpacing ( ) const { return this - > tickSpacing ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property labelDigits. \details Description of the parameter labelDigits is: <CENTER>\copybrief labelDigits.</CENTER>. \see labelDigits for more information */
2019-01-09 04:00:25 +08:00
inline int get_labelDigits ( ) const { return this - > labelDigits ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property autoAxisSpacing. \details Description of the parameter autoAxisSpacing is: <CENTER>\copybrief autoAxisSpacing.</CENTER>. \see autoAxisSpacing for more information */
2019-01-09 04:00:25 +08:00
inline bool get_autoAxisSpacing ( ) const { return this - > autoAxisSpacing ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property minorTickLabelsEnabled. \details Description of the parameter minorTickLabelsEnabled is: <CENTER>\copybrief minorTickLabelsEnabled.</CENTER>. \see minorTickLabelsEnabled for more information */
2019-01-09 04:00:25 +08:00
inline bool get_minorTickLabelsEnabled ( ) const { return this - > minorTickLabelsEnabled ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property logAxis. \details Description of the parameter logAxis is: <CENTER>\copybrief logAxis.</CENTER>. \see logAxis for more information */
2019-01-09 04:00:25 +08:00
inline bool get_logAxis ( ) const { return this - > logAxis ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property inverted. \details Description of the parameter inverted is: <CENTER>\copybrief inverted.</CENTER>. \see inverted for more information */
2019-01-09 04:00:25 +08:00
inline bool get_inverted ( ) const { return this - > inverted ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property logAxisBase. \details Description of the parameter logAxisBase is: <CENTER>\copybrief logAxisBase.</CENTER>. \see logAxisBase for more information */
2019-01-09 04:00:25 +08:00
inline double get_logAxisBase ( ) const { return this - > logAxisBase ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property userTickSpacing. \details Description of the parameter userTickSpacing is: <CENTER>\copybrief userTickSpacing.</CENTER>. \see userTickSpacing for more information */
2019-01-09 04:00:25 +08:00
inline double get_userTickSpacing ( ) const { return this - > userTickSpacing ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property userLogTickSpacing. \details Description of the parameter userLogTickSpacing is: <CENTER>\copybrief userLogTickSpacing.</CENTER>. \see userLogTickSpacing for more information */
2019-01-09 04:00:25 +08:00
inline double get_userLogTickSpacing ( ) const { return this - > userLogTickSpacing ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property labelType. \details Description of the parameter labelType is: <CENTER>\copybrief labelType.</CENTER>. \see labelType for more information */
2019-01-09 04:00:25 +08:00
inline JKQTPCAlabelType get_labelType ( ) const { return this - > labelType ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property axisLabel. \details Description of the parameter axisLabel is: <CENTER>\copybrief axisLabel.</CENTER>. \see axisLabel for more information */
2019-01-09 04:00:25 +08:00
inline QString get_axisLabel ( ) const { return this - > axisLabel ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property labelPosition. \details Description of the parameter labelPosition is: <CENTER>\copybrief labelPosition.</CENTER>. \see labelPosition for more information */
2019-01-09 04:00:25 +08:00
inline JKQTPlabelPosition get_labelPosition ( ) const { return this - > labelPosition ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property labelFont. \details Description of the parameter labelFont is: <CENTER>\copybrief labelFont.</CENTER>. \see labelFont for more information */
2019-01-09 04:00:25 +08:00
inline QString get_labelFont ( ) const { return this - > labelFont ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property labelFontSize. \details Description of the parameter labelFontSize is: <CENTER>\copybrief labelFontSize.</CENTER>. \see labelFontSize for more information */
2019-01-09 04:00:25 +08:00
inline double get_labelFontSize ( ) const { return this - > labelFontSize ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property tickLabelFont. \details Description of the parameter tickLabelFont is: <CENTER>\copybrief tickLabelFont.</CENTER>. \see tickLabelFont for more information */
2019-01-09 04:00:25 +08:00
inline QString get_tickLabelFont ( ) const { return this - > tickLabelFont ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property tickLabelFontSize. \details Description of the parameter tickLabelFontSize is: <CENTER>\copybrief tickLabelFontSize.</CENTER>. \see tickLabelFontSize for more information */
2019-01-09 04:00:25 +08:00
inline double get_tickLabelFontSize ( ) const { return this - > tickLabelFontSize ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property minorTickLabelFontSize. \details Description of the parameter minorTickLabelFontSize is: <CENTER>\copybrief minorTickLabelFontSize.</CENTER>. \see minorTickLabelFontSize for more information */
2019-01-09 04:00:25 +08:00
inline double get_minorTickLabelFontSize ( ) const { return this - > minorTickLabelFontSize ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property minorTickLabelFullNumber. \details Description of the parameter minorTickLabelFullNumber is: <CENTER>\copybrief minorTickLabelFullNumber.</CENTER>. \see minorTickLabelFullNumber for more information */
2019-01-09 04:00:25 +08:00
inline bool get_minorTickLabelFullNumber ( ) const { return this - > minorTickLabelFullNumber ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property tickLabelAngle. \details Description of the parameter tickLabelAngle is: <CENTER>\copybrief tickLabelAngle.</CENTER>. \see tickLabelAngle for more information */
2019-01-09 04:00:25 +08:00
inline double get_tickLabelAngle ( ) const { return this - > tickLabelAngle ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property minTicks. \details Description of the parameter minTicks is: <CENTER>\copybrief minTicks.</CENTER>. \see minTicks for more information */
2019-01-09 04:00:25 +08:00
inline unsigned int get_minTicks ( ) const { return this - > minTicks ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property minorTicks. \details Description of the parameter minorTicks is: <CENTER>\copybrief minorTicks.</CENTER>. \see minorTicks for more information */
2019-01-09 04:00:25 +08:00
inline unsigned int get_minorTicks ( ) const { return this - > minorTicks ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property tickOutsideLength. \details Description of the parameter tickOutsideLength is: <CENTER>\copybrief tickOutsideLength.</CENTER>. \see tickOutsideLength for more information */
2019-01-09 04:00:25 +08:00
inline double get_tickOutsideLength ( ) const { return this - > tickOutsideLength ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property minorTickOutsideLength. \details Description of the parameter minorTickOutsideLength is: <CENTER>\copybrief minorTickOutsideLength.</CENTER>. \see minorTickOutsideLength for more information */
2019-01-09 04:00:25 +08:00
inline double get_minorTickOutsideLength ( ) const { return this - > minorTickOutsideLength ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property axisColor. \details Description of the parameter axisColor is: <CENTER>\copybrief axisColor.</CENTER>. \see axisColor for more information */
2019-01-09 04:00:25 +08:00
inline QColor get_axisColor ( ) const { return this - > axisColor ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property showZeroAxis. \details Description of the parameter showZeroAxis is: <CENTER>\copybrief showZeroAxis.</CENTER>. \see showZeroAxis for more information */
2019-01-09 04:00:25 +08:00
inline bool get_showZeroAxis ( ) const { return this - > showZeroAxis ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property gridColor. \details Description of the parameter gridColor is: <CENTER>\copybrief gridColor.</CENTER>. \see gridColor for more information */
2019-01-09 04:00:25 +08:00
inline QColor get_gridColor ( ) const { return this - > gridColor ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property minorGridColor. \details Description of the parameter minorGridColor is: <CENTER>\copybrief minorGridColor.</CENTER>. \see minorGridColor for more information */
2019-01-09 04:00:25 +08:00
inline QColor get_minorGridColor ( ) const { return this - > minorGridColor ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property gridWidth. \details Description of the parameter gridWidth is: <CENTER>\copybrief gridWidth.</CENTER>. \see gridWidth for more information */
2019-01-09 04:00:25 +08:00
inline double get_gridWidth ( ) const { return this - > gridWidth ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property gridStyle. \details Description of the parameter gridStyle is: <CENTER>\copybrief gridStyle.</CENTER>. \see gridStyle for more information */
2019-01-09 04:00:25 +08:00
inline Qt : : PenStyle get_gridStyle ( ) const { return this - > gridStyle ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property minorGridWidth. \details Description of the parameter minorGridWidth is: <CENTER>\copybrief minorGridWidth.</CENTER>. \see minorGridWidth for more information */
2019-01-09 04:00:25 +08:00
inline double get_minorGridWidth ( ) const { return this - > minorGridWidth ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property minorGridStyle. \details Description of the parameter minorGridStyle is: <CENTER>\copybrief minorGridStyle.</CENTER>. \see minorGridStyle for more information */
2019-01-09 04:00:25 +08:00
inline Qt : : PenStyle get_minorGridStyle ( ) const { return this - > minorGridStyle ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property tickTimeFormat. \details Description of the parameter tickTimeFormat is: <CENTER>\copybrief tickTimeFormat.</CENTER>. \see tickTimeFormat for more information */
2019-01-09 04:00:25 +08:00
inline QString get_tickTimeFormat ( ) const { return this - > tickTimeFormat ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property tickDateFormat. \details Description of the parameter tickDateFormat is: <CENTER>\copybrief tickDateFormat.</CENTER>. \see tickDateFormat for more information */
2019-01-09 04:00:25 +08:00
inline QString get_tickDateFormat ( ) const { return this - > tickDateFormat ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property tickDateTimeFormat. \details Description of the parameter tickDateTimeFormat is: <CENTER>\copybrief tickDateTimeFormat.</CENTER>. \see tickDateTimeFormat for more information */
2019-01-09 04:00:25 +08:00
inline QString get_tickDateTimeFormat ( ) const { return this - > tickDateTimeFormat ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property tickMode. \details Description of the parameter tickMode is: <CENTER>\copybrief tickMode.</CENTER>. \see tickMode for more information */
2019-01-09 04:00:25 +08:00
inline JKQTPLabelTickMode get_tickMode ( ) const { return this - > tickMode ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property drawMode1. \details Description of the parameter drawMode1 is: <CENTER>\copybrief drawMode1.</CENTER>. \see drawMode1 for more information */
2019-01-09 04:00:25 +08:00
inline JKQTPCAdrawMode get_drawMode1 ( ) const { return this - > drawMode1 ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property drawMode2. \details Description of the parameter drawMode2 is: <CENTER>\copybrief drawMode2.</CENTER>. \see drawMode2 for more information */
2019-01-09 04:00:25 +08:00
inline JKQTPCAdrawMode get_drawMode2 ( ) const { return this - > drawMode2 ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property minorTickWidth. \details Description of the parameter minorTickWidth is: <CENTER>\copybrief minorTickWidth.</CENTER>. \see minorTickWidth for more information */
2019-01-09 04:00:25 +08:00
inline double get_minorTickWidth ( ) const { return this - > minorTickWidth ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property tickWidth. \details Description of the parameter tickWidth is: <CENTER>\copybrief tickWidth.</CENTER>. \see tickWidth for more information */
2019-01-09 04:00:25 +08:00
inline double get_tickWidth ( ) const { return this - > tickWidth ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property lineWidth. \details Description of the parameter lineWidth is: <CENTER>\copybrief lineWidth.</CENTER>. \see lineWidth for more information */
2019-01-09 04:00:25 +08:00
inline double get_lineWidth ( ) const { return this - > lineWidth ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property lineWidthZeroAxis. \details Description of the parameter lineWidthZeroAxis is: <CENTER>\copybrief lineWidthZeroAxis.</CENTER>. \see lineWidthZeroAxis for more information */
2019-01-09 04:00:25 +08:00
inline double get_lineWidthZeroAxis ( ) const { return this - > lineWidthZeroAxis ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property tickLabelDistance. \details Description of the parameter tickLabelDistance is: <CENTER>\copybrief tickLabelDistance.</CENTER>. \see tickLabelDistance for more information */
2019-01-09 04:00:25 +08:00
inline double get_tickLabelDistance ( ) const { return this - > tickLabelDistance ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property labelDistance. \details Description of the parameter labelDistance is: <CENTER>\copybrief labelDistance.</CENTER>. \see labelDistance for more information */
2019-01-09 04:00:25 +08:00
inline double get_labelDistance ( ) const { return this - > labelDistance ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property drawGrid. \details Description of the parameter drawGrid is: <CENTER>\copybrief drawGrid.</CENTER>. \see drawGrid for more information */
2019-01-09 04:00:25 +08:00
inline bool get_drawGrid ( ) const { return this - > drawGrid ; }
2019-01-10 04:23:24 +08:00
/*! \brief returns the property drawMinorGrid. \details Description of the parameter drawMinorGrid is: <CENTER>\copybrief drawMinorGrid.</CENTER>. \see drawMinorGrid for more information */
2019-01-09 04:00:25 +08:00
inline bool get_drawMinorGrid ( ) const { return this - > drawMinorGrid ; }
2019-01-10 04:23:24 +08:00
/*! \brief sets the property autoLabelDigits to the specified \a __value.
\ details Description of the parameter autoLabelDigits is : < CENTER > \ copybrief autoLabelDigits . < / CENTER >
\ see autoLabelDigits for more information */
inline virtual void set_autoLabelDigits ( bool __value )
{
this - > autoLabelDigits = __value ;
}
/*! \brief returns the property autoLabelDigits.
\ details Description of the parameter autoLabelDigits is : < CENTER > \ copybrief autoLabelDigits . < / CENTER >
\ see autoLabelDigits for more information */
inline virtual bool get_autoLabelDigits ( ) const
{
return this - > autoLabelDigits ;
}
/*! \brief returns the property parent. \details Description of the parameter parent is: <CENTER>\copybrief parent.</CENTER>. \see parent for more information */
2019-01-09 04:00:25 +08:00
inline JKQtBasePlotter * get_parent ( ) const { return this - > parent ; }
2019-01-10 04:23:24 +08:00
/*! \brief sets the property doUpdateScaling to the specified \a __value.
\ details Description of the parameter doUpdateScaling is : < CENTER > \ copybrief doUpdateScaling . < / CENTER >
\ see doUpdateScaling for more information */
inline virtual void set_doUpdateScaling ( bool __value )
{
this - > doUpdateScaling = __value ;
}
/*! \brief returns the property doUpdateScaling.
\ details Description of the parameter doUpdateScaling is : < CENTER > \ copybrief doUpdateScaling . < / CENTER >
\ see doUpdateScaling for more information */
inline virtual bool get_doUpdateScaling ( ) const
{
return this - > doUpdateScaling ;
}
2015-07-11 18:56:02 +08:00
/** \brief returns the current min */
2018-11-25 21:53:26 +08:00
inline double getMin ( ) const { return axismin ; }
2015-07-11 18:56:02 +08:00
/** \brief returns the current max */
2018-11-25 21:53:26 +08:00
inline double getMax ( ) const { return axismax ; }
2015-07-11 18:56:02 +08:00
/** \brief returns the current absolute min */
2018-11-25 21:53:26 +08:00
inline double getAbsoluteMin ( ) const { return axisabsoultemin ; }
2015-07-11 18:56:02 +08:00
/** \brief returns the current absolute max */
2018-11-25 21:53:26 +08:00
inline double getAbsoluteMax ( ) const { return axisabsoultemax ; }
2015-07-11 18:56:02 +08:00
/** \brief calculate the scaling and offset values from axis min/max values
*
* This is only executed when \ c paramChanged = = true , as otherwise the data has to be still
* correct . recalculating may be forced by caling calcPlotScaing ( true ) ;
*/
void calcPlotScaling ( bool force = false ) ;
2018-11-25 21:53:26 +08:00
bool isLogAxis ( ) const ;
2015-07-11 18:56:02 +08:00
public slots :
/** \brief set range of plot axis */
void setRange ( double amin , double amax ) ;
/** \brief set absolute range of plot axis */
void setAbsoluteRange ( double aamin , double aamax ) ;
/** \brief do not use an absolute range of plot axis */
void setNoAbsoluteRange ( ) ;
/** \brief sets the property tickSpacing to the specified \a __value.
* \ details Description of the parameter tickSpacing is : < CENTER > \ copybrief tickSpacing . < / CENTER >
* \ see tickSpacing for more information */
2018-11-25 21:53:26 +08:00
virtual void set_tickSpacing ( double __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property axisMinWidth to the specified \a __value.
* \ details Description of the parameter tickSpacing is : < CENTER > \ copybrief axisMinWidth . < / CENTER >
* \ see axisMinWidth for more information */
2018-11-25 21:53:26 +08:00
virtual void set_axisMinWidth ( double __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property autoAxisSpacing to the specified \a __value.
* \ details Description of the parameter autoAxisSpacing is : < CENTER > \ copybrief autoAxisSpacing . < / CENTER >
* \ see autoAxisSpacing for more information */
2018-11-25 21:53:26 +08:00
virtual void set_autoAxisSpacing ( bool __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property minorTickLabelsEnabled to the specified \a __value.
* \ details Description of the parameter minorTickLabelsEnabled is : < CENTER > \ copybrief minorTickLabelsEnabled . < / CENTER >
* \ see autoAxisSpacing for more information */
2018-11-25 21:53:26 +08:00
virtual void set_minorTickLabelsEnabled ( bool __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property logAxis to the specified \a __value.
* \ details Description of the parameter logAxis is : < CENTER > \ copybrief logAxis . < / CENTER >
* \ see logAxis for more information */
virtual void set_logAxis ( bool __value ) ;
/** \brief sets the property logAxisBase to the specified \a __value.
* \ details Description of the parameter logAxisBase is : < CENTER > \ copybrief logAxisBase . < / CENTER >
* \ see logAxisBase for more information */
2018-11-25 21:53:26 +08:00
virtual void set_logAxisBase ( double __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property userTickSpacing to the specified \a __value.
* \ details Description of the parameter userTickSpacing is : < CENTER > \ copybrief userTickSpacing . < / CENTER >
* \ see userTickSpacing for more information */
2018-11-25 21:53:26 +08:00
virtual void set_userTickSpacing ( double __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property userLogTickSpacing to the specified \a __value.
* \ details Description of the parameter userLogTickSpacing is : < CENTER > \ copybrief userLogTickSpacing . < / CENTER >
* \ see userLogTickSpacing for more information */
2018-11-25 21:53:26 +08:00
virtual void set_userLogTickSpacing ( double __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property labelType to the specified \a __value.
* \ details Description of the parameter labelType is : < CENTER > \ copybrief labelType . < / CENTER >
* \ see labelType for more information */
2018-11-25 21:53:26 +08:00
virtual void set_labelType ( JKQTPCAlabelType __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property tickMode to the specified \a __value.
* \ details Description of the parameter tickMode is : < CENTER > \ copybrief tickMode . < / CENTER >
* \ see tickMode for more information */
virtual void set_tickMode ( JKQTPLabelTickMode __value ) ;
/** \brief sets the property tickMode to the specified \a __value.
* \ details Description of the parameter tickMode is : < CENTER > \ copybrief tickMode . < / CENTER >
* \ see tickMode for more information */
2018-11-25 21:53:26 +08:00
virtual void set_tickMode ( int __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property axisLabel to the specified \a __value.
* \ details Description of the parameter axisLabel is : < CENTER > \ copybrief axisLabel . < / CENTER >
* \ see axisLabel for more information */
2018-11-25 21:53:26 +08:00
virtual void set_axisLabel ( QString __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property labelPosition to the specified \a __value.
* \ details Description of the parameter labelPosition is : < CENTER > \ copybrief labelPosition . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_labelPosition ( JKQTPlabelPosition __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property labelFont to the specified \a __value.
* \ details Description of the parameter labelFont is : < CENTER > \ copybrief labelFont . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_labelFont ( QString __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property labelFontSize to the specified \a __value.
* \ details Description of the parameter labelFontSize is : < CENTER > \ copybrief labelFontSize . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_labelFontSize ( double __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property tickLabelFont to the specified \a __value.
* \ details Description of the parameter tickLabelFont is : < CENTER > \ copybrief tickLabelFont . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_tickLabelFont ( QString __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property tickTimeFormat to the specified \a __value.
* \ details Description of the parameter tickTimeFormat is : < CENTER > \ copybrief tickTimeFormat . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_tickTimeFormat ( QString __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property tickDateFormat to the specified \a __value.
* \ details Description of the parameter tickDateFormat is : < CENTER > \ copybrief tickDateFormat . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_tickDateFormat ( QString __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property tickDateTimeFormat to the specified \a __value.
* \ details Description of the parameter tickDateTimeFormat is : < CENTER > \ copybrief tickDateTimeFormat . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_tickDateTimeFormat ( QString __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property tickLabelFontSize to the specified \a __value.
* \ details Description of the parameter tickLabelFontSize is : < CENTER > \ copybrief tickLabelFontSize . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_tickLabelFontSize ( double __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property minorTickLabelFontSize to the specified \a __value.
* \ details Description of the parameter minorTickLabelFontSize is : < CENTER > \ copybrief minorTickLabelFontSize . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_minorTickLabelFontSize ( double __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property minorTickLabelFullNumber to the specified \a __value.
* \ details Description of the parameter minorTickLabelFullNumber is : < CENTER > \ copybrief minorTickLabelFullNumber . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_minorTickLabelFullNumber ( bool __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property minTicks to the specified \a __value.
* \ details Description of the parameter minTicks is : < CENTER > \ copybrief minTicks . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_minTicks ( unsigned int __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property minorTicks to the specified \a __value.
* \ details Description of the parameter minorTicks is : < CENTER > \ copybrief minorTicks . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_minorTicks ( unsigned int __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property minorTicks to the specified \a __value.
* \ details Description of the parameter minorTicks is : < CENTER > \ copybrief minorTicks . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_minorTicks ( int __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property tickOutsideLength to the specified \a __value.
* \ details Description of the parameter tickOutsideLength is : < CENTER > \ copybrief tickOutsideLength . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_tickOutsideLength ( double __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property minorTickOutsideLength to the specified \a __value.
* \ details Description of the parameter minorTickOutsideLength is : < CENTER > \ copybrief minorTickOutsideLength . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_minorTickOutsideLength ( double __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property tickInsideLength to the specified \a __value.
* \ details Description of the parameter tickInsideLength is : < CENTER > \ copybrief tickInsideLength . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_tickInsideLength ( double __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property minorTickInsideLength to the specified \a __value.
* \ details Description of the parameter minorTickInsideLength is : < CENTER > \ copybrief minorTickInsideLength . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_minorTickInsideLength ( double __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property axisColor to the specified \a __value.
* \ details Description of the parameter axisColor is : < CENTER > \ copybrief axisColor . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_axisColor ( QColor __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property showZeroAxis to the specified \a __value.
* \ details Description of the parameter showZeroAxis is : < CENTER > \ copybrief showZeroAxis . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_showZeroAxis ( bool __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property inverted to the specified \a __value.
* \ details Description of the parameter inverted is : < CENTER > \ copybrief inverted . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_inverted ( bool __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property gridColor to the specified \a __value.
* \ details Description of the parameter gridColor is : < CENTER > \ copybrief gridColor . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_gridColor ( QColor __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property minorGridColor to the specified \a __value.
* \ details Description of the parameter minorGridColor is : < CENTER > \ copybrief minorGridColor . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_minorGridColor ( QColor __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property gridWidth to the specified \a __value.
* \ details Description of the parameter gridWidth is : < CENTER > \ copybrief gridWidth . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_gridWidth ( double __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property gridStyle to the specified \a __value.
* \ details Description of the parameter gridStyle is : < CENTER > \ copybrief gridStyle . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_gridStyle ( Qt : : PenStyle __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property minorGridWidth to the specified \a __value.
* \ details Description of the parameter minorGridWidth is : < CENTER > \ copybrief minorGridWidth . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_minorGridWidth ( double __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property minorGridStyle to the specified \a __value.
* \ details Description of the parameter minorGridStyle is : < CENTER > \ copybrief minorGridStyle . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_minorGridStyle ( Qt : : PenStyle __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property drawMode1 to the specified \a __value.
* \ details Description of the parameter drawMode1 is : < CENTER > \ copybrief drawMode1 . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_drawMode1 ( JKQTPCAdrawMode __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property drawMode2 to the specified \a __value.
* \ details Description of the parameter drawMode2 is : < CENTER > \ copybrief drawMode2 . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_drawMode2 ( JKQTPCAdrawMode __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property minorTickWidth to the specified \a __value.
* \ details Description of the parameter minorTickWidth is : < CENTER > \ copybrief minorTickWidth . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_minorTickWidth ( double __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property tickWidth to the specified \a __value.
* \ details Description of the parameter tickWidth is : < CENTER > \ copybrief tickWidth . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_tickWidth ( double __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property lineWidth to the specified \a __value.
* \ details Description of the parameter lineWidth is : < CENTER > \ copybrief lineWidth . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_lineWidth ( double __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property lineWidthZeroAxis to the specified \a __value.
* \ details Description of the parameter lineWidthZeroAxis is : < CENTER > \ copybrief lineWidthZeroAxis . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_lineWidthZeroAxis ( double __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property tickLabelDistance to the specified \a __value.
* \ details Description of the parameter tickLabelDistance is : < CENTER > \ copybrief tickLabelDistance . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_tickLabelDistance ( double __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property labelDistance to the specified \a __value.
* \ details Description of the parameter labelDistance is : < CENTER > \ copybrief labelDistance . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_labelDistance ( double __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property labelDigits to the specified \a __value.
* \ details Description of the parameter labelDistance is : < CENTER > \ copybrief labelDigits . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_labelDigits ( int __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property drawGrid to the specified \a __value.
* \ details Description of the parameter drawGrid is : < CENTER > \ copybrief drawGrid . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_drawGrid ( bool __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property drawMinorGrid to the specified \a __value.
* \ details Description of the parameter drawMinorGrid is : < CENTER > \ copybrief drawMinorGrid . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_drawMinorGrid ( bool __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief sets the property tickLabelAngle to the specified \a __value.
* \ details Description of the parameter tickLabelAngle is : < CENTER > \ copybrief tickLabelAngle . < / CENTER > */
2018-11-25 21:53:26 +08:00
virtual void set_tickLabelAngle ( double __value ) ;
2015-07-11 18:56:02 +08:00
protected :
/** \brief indicates whether one of the parameters has changed sinse the last recalculation of tickspacing ... */
bool paramsChanged ;
bool doUpdateScaling ;
/** \brief simply calls the update_plot method of the parent plotter class */
void update_plot ( ) ;
/** \brief a list of tick labels.
*
* If this list contains items , this class will NOT plot a standard x - axis ,
* but only mark the positions in this list . Every item is a x - position together with
* the label to be plotted there . The label may contain LaTeX markup .
*/
QVector < QPair < double , QString > > tickLabels ;
/** \brief width of the plot in the direction of the axis */
virtual double get_parent_plotwidth ( ) const = 0 ;
/** \brief offset of the plot in the direction of the axis */
virtual double get_parent_plotoffset ( ) const = 0 ;
/** \brief width of other (perpendicular) axis (needed for grids) */
virtual double get_parent_otheraxis_width ( ) const = 0 ;
/** \brief is other (perpendicular) axis inverted (needed for grids) */
virtual bool get_parent_otheraxis_inverted ( ) const = 0 ;
/** \brief pixel offset of (perpendicular) other axis (needed for grids) */
virtual double get_parent_otheraxis_offset ( ) const = 0 ;
/** \brief retun parents JKQTmathText* object */
virtual JKQTmathText * get_parent_mathText ( ) ;
/** \brief convert a float to a tick label string */
QString floattolabel ( double data ) ;
/** \brief convert a float to a tick label string with a given precision */
QString floattolabel ( double data , int past_comma ) ;
/** \brief parent plotter class */
JKQtBasePlotter * parent ;
/** \brief current view: minimum of time axis */
double axismin ;
/** \brief current view: maximum of time axis */
double axismax ;
/** \brief absoulte minimum of axis (axismin/axismax xan not be set below this) */
double axisabsoultemin ;
/** \brief absoulte maximum of axis (axismin/axismax xan not be set above this) */
double axisabsoultemax ;
/** \brief absolute minimum range width, feature switched off when <0 */
double axisMinWidth ;
/** \brief width of plot on time axis (calculated by calcPlotScaling() ) */
double width ;
/** \brief time axis scaling factor (calculated by calcPlotScaling() ) */
double scale ;
/** \brief time axis offset (calculated by calcPlotScaling() ) */
double offset ;
/** \brief indicates whether the axis is to be inverted or not */
bool inverted ;
/** \brief axis tick spacing (calculated by calcPlotScaling() and calcTickSpacing() ) for logarithmic/linear axes.
*/
double tickSpacing ;
/** \brief axis tick spacing for logarithmic ticks (calculated by calcPlotScaling() and calcTickSpacing() ) axes.
*/
double tickSpacingLog ;
/** \brief digits used for tick labels */
int labelDigits ;
/** \brief x position of the first tick (calculated by calcPlotScaling() ). Given in system coordinates, not pixel coordinates. */
double tickStart ;
/** \brief when \c true, the digits of the labels are calculated automatically */
bool autoLabelDigits ;
/** \brief indicates whether the object should use automatic tick spacing for the x axis (calculated by calcPlotScaling() ) */
2019-01-09 04:00:25 +08:00
bool autoAxisSpacing ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see autoAxisSpacing for more information */
2019-01-09 04:00:25 +08:00
bool def_autoAxisSpacing ;
2015-07-11 18:56:02 +08:00
/** \brief if \c true, the plotter displays minor axis labels as number between 1 and 10 in some cases */
2019-01-09 04:00:25 +08:00
bool minorTickLabelsEnabled ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see minorTickLabelsEnabled for more information */
2019-01-09 04:00:25 +08:00
bool def_minorTickLabelsEnabled ;
2015-07-11 18:56:02 +08:00
/** \brief indicates whether the y axis has a logarithmic scale */
2019-01-09 04:00:25 +08:00
bool logAxis ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see logAxis for more information */
2019-01-09 04:00:25 +08:00
bool def_logAxis ;
2015-07-11 18:56:02 +08:00
/** \brief the base for a logarithmic x axis */
2019-01-09 04:00:25 +08:00
double logAxisBase ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see logAxisBase for more information */
2019-01-09 04:00:25 +08:00
double def_logAxisBase ;
2015-07-11 18:56:02 +08:00
/** \brief if autoXAxisSpacing is \c false then this value is used for xTickSpacing. So this is the property which
* is editable by use of public access methods .
*/
2019-01-09 04:00:25 +08:00
double userTickSpacing ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see userTickSpacing for more information */
2019-01-09 04:00:25 +08:00
double def_userTickSpacing ;
2015-07-11 18:56:02 +08:00
/** \brief if autoXAxisSpacing is \c false then this value is used for xTickSpacing. So this is the property which
* is editable by use of public access methods .
*/
2019-01-09 04:00:25 +08:00
double userLogTickSpacing ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see userLogTickSpacing for more information */
2019-01-09 04:00:25 +08:00
double def_userLogTickSpacing ;
2015-07-11 18:56:02 +08:00
/** \brief indicates how to draw the labels */
2019-01-09 04:00:25 +08:00
JKQTPCAlabelType labelType ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see labelType for more information */
2019-01-09 04:00:25 +08:00
JKQTPCAlabelType def_labelType ;
2015-07-11 18:56:02 +08:00
/** \brief mode of the major ticks */
2019-01-09 04:00:25 +08:00
JKQTPLabelTickMode tickMode ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see tickMode for more information */
2019-01-09 04:00:25 +08:00
JKQTPLabelTickMode def_tickMode ;
2015-07-11 18:56:02 +08:00
/** \brief axis label of the axis */
QString axisLabel ;
/** \brief position of the axis label */
2019-01-09 04:00:25 +08:00
JKQTPlabelPosition labelPosition ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see labelPosition for more information */
2019-01-09 04:00:25 +08:00
JKQTPlabelPosition def_labelPosition ;
2015-07-11 18:56:02 +08:00
/** \brief font of the axis labels */
2019-01-09 04:00:25 +08:00
QString labelFont ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see labelFont for more information */
2019-01-09 04:00:25 +08:00
QString def_labelFont ;
2015-07-11 18:56:02 +08:00
/** \brief fontsize of the axis labels */
2019-01-09 04:00:25 +08:00
double labelFontSize ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see labelFontSize for more information */
2019-01-09 04:00:25 +08:00
double def_labelFontSize ;
2015-07-11 18:56:02 +08:00
/** \brief font of the axis tick labels */
2019-01-09 04:00:25 +08:00
QString tickLabelFont ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see tickLabelFont for more information */
2019-01-09 04:00:25 +08:00
QString def_tickLabelFont ;
2015-07-11 18:56:02 +08:00
/** \brief fontsize of the axis tick labels */
2019-01-09 04:00:25 +08:00
double tickLabelFontSize ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see tickLabelFontSize for more information */
2019-01-09 04:00:25 +08:00
double def_tickLabelFontSize ;
2015-07-11 18:56:02 +08:00
/** \brief fontsize of the minor axis tick labels */
2019-01-09 04:00:25 +08:00
double minorTickLabelFontSize ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see minorTickLabelFontSize for more information */
2019-01-09 04:00:25 +08:00
double def_minorTickLabelFontSize ;
2015-07-11 18:56:02 +08:00
/** \brief indicates whether to draw a thick axis line at x=0 (zero axis) */
2019-01-09 04:00:25 +08:00
bool showZeroAxis ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see showZeroAxis for more information */
2019-01-09 04:00:25 +08:00
bool def_showZeroAxis ;
2015-07-11 18:56:02 +08:00
/** \brief indicates whether the minor tick labels should be full numbers, or just a number between 0..10 */
2019-01-09 04:00:25 +08:00
bool minorTickLabelFullNumber ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see minorTickLabelFullNumber for more information */
2019-01-09 04:00:25 +08:00
bool def_minorTickLabelFullNumber ;
2015-07-11 18:56:02 +08:00
/** \brief draw mode of the main (left/bottom) axis */
2019-01-09 04:00:25 +08:00
JKQTPCAdrawMode drawMode1 ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see drawMode1 for more information */
2019-01-09 04:00:25 +08:00
JKQTPCAdrawMode def_drawMode1 ;
2015-07-11 18:56:02 +08:00
/** \brief draw mode of the secondary (right/top) axis */
2019-01-09 04:00:25 +08:00
JKQTPCAdrawMode drawMode2 ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see drawMode2 for more information */
2019-01-09 04:00:25 +08:00
JKQTPCAdrawMode def_drawMode2 ;
2015-07-11 18:56:02 +08:00
/** \brief line width of minor ticks in pixels */
2019-01-09 04:00:25 +08:00
double minorTickWidth ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see minorTickWidth for more information */
2019-01-09 04:00:25 +08:00
double def_minorTickWidth ;
2015-07-11 18:56:02 +08:00
/** \brief line width of ticks in pixels */
2019-01-09 04:00:25 +08:00
double tickWidth ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see tickWidth for more information */
2019-01-09 04:00:25 +08:00
double def_tickWidth ;
2015-07-11 18:56:02 +08:00
/** \brief line width of axis in pixels */
2019-01-09 04:00:25 +08:00
double lineWidth ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see lineWidth for more information */
2019-01-09 04:00:25 +08:00
double def_lineWidth ;
2015-07-11 18:56:02 +08:00
/** \brief line width of 0-line in pixels */
2019-01-09 04:00:25 +08:00
double lineWidthZeroAxis ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see lineWidthZeroAxis for more information */
2019-01-09 04:00:25 +08:00
double def_lineWidthZeroAxis ;
2015-07-11 18:56:02 +08:00
2018-12-01 23:02:04 +08:00
/** \brief format string for time tick labels, see see QDateTime::toString() documentation for details on format strings */
2019-01-09 04:00:25 +08:00
QString tickTimeFormat ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see tickTimeFormat for more information */
2019-01-09 04:00:25 +08:00
QString def_tickTimeFormat ;
2018-12-01 23:02:04 +08:00
/** \brief format string for date tick labels, see see QDateTime::toString() documentation for details on format strings */
2019-01-09 04:00:25 +08:00
QString tickDateFormat ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see tickDateFormat for more information */
2019-01-09 04:00:25 +08:00
QString def_tickDateFormat ;
2018-12-01 23:02:04 +08:00
/** \brief format string for datetime tick labels, see see QDateTime::toString() documentation for details on format strings */
2019-01-09 04:00:25 +08:00
QString tickDateTimeFormat ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see tickDateTimeFormat for more information */
2019-01-09 04:00:25 +08:00
QString def_tickDateTimeFormat ;
2015-07-11 18:56:02 +08:00
/** \brief calculates the tick spacing for a linear axis that spans \a awidth and that should
* show at least \ a minTicks ticks .
*
* The < b > algorithm < / b > used in here works as follows :
*
* There is only a limited subset of allowed tick distances . These distances are 1 ( resulting in 10 ticks per decade , i . e . 0 , 1 , 2 , 3 , 4 , . . . ) ,
* 2 ( 5 ticks / decade , i . e . 0 , 2 , 4 , . . . ) , 2.5 ( 4 ticks / decade , i . e . 0 , 2.5 , 5 , . . . ) and 5 ( 2 ticks / decade , i . e . 0 , 5 , 10 , 15 , . . . ) . So the
* axis is divided into decades that each is divided into ticks , as defined above . With these preconditions the algorithm tries
* to find a tick increment \ f $ \ Delta \ mbox { tick } \ f $ which is one of the above distances multiplied by a power \ f $ \ rho \ f $ of 10.
* This increment is determined in a way , that the axis contains at least \ a minTicks ticks :
* \ f [ \ Delta \ mbox { tick } = f \ cdot10 ^ \ rho , \ \ \ \ \ f \ in \ { 1 , 2 , 2.5 , 5 \ } \ f ]
*
* - # The algorithm starts by finding a start exponent \ f $ \ rho_s = \ left \ lfloor \ log_ { 10 } ( \ mbox { awidth } ) \ right \ rfloor + 3 \ f $ . This
* is a good ( over ) estimate for the biggest possible power \ f $ \ rho \ f $ .
* - # now we set \ f $ \ rho = \ rho_0 \ f $ and \ f $ f = 10 \ f $ .
* - # now the algorithm cycles through all possible factors \ f $ f \ in \ { 1 , 2 , 2.5 , 5 , 10 \ } \ f $ ( starting from 10 ) and calculates
* \ f $ \ Delta \ mbox { tick } = f \ cdot10 ^ \ rho \ f $ . Then it checks whether \ f $ \ mbox { tickcount } = \ mbox { round } \ left ( \ frac { \ mbox { awidth } } { \ Delta \ mbox { tick } } \ right ) \ f $
* is smaller than \ a minTicks ( if yes the algorithm reached its end and \ f $ \ Delta \ mbox { tick } \ f $ can be used .
* - # if \ f $ f = 1 \ f $ is reached and checked \ c false , then the algorithm decreases the exponent \ f $ \ rho \ leftarrow \ rho - 1 \ f $ and returns to step 3.
*
*/
double calcLinearTickSpacing ( ) ;
double calcLogTickSpacing ( ) ;
/** \brief Calculate the number of digits needed for the labels of an axis that starts at
* \ a minval and where the tick spacing is \ a tickSpacing .
*
* This method determines how many digits to output for the labels on a coordinate axis .
* This is done by testing different digit numbers and comparing subsequent labels . If two labels
* are equal , then we need more valid digits to distinguish them .
*/
int calcLinearUnitDigits ( ) ;
/** \brief minimum number of axis ticks */
2019-01-09 04:00:25 +08:00
unsigned int minTicks ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see minTicks for more information */
2019-01-09 04:00:25 +08:00
unsigned int def_minTicks ;
2015-07-11 18:56:02 +08:00
/** \brief number of minor grid lines per axis tick interval */
2019-01-09 04:00:25 +08:00
unsigned int minorTicks ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see minorTicks for more information */
2019-01-09 04:00:25 +08:00
unsigned int def_minorTicks ;
2015-07-11 18:56:02 +08:00
/** \brief length of an axis tick outside the plot border in pt */
2019-01-09 04:00:25 +08:00
double tickOutsideLength ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see tickOutsideLength for more information */
2019-01-09 04:00:25 +08:00
double def_tickOutsideLength ;
2015-07-11 18:56:02 +08:00
/** \brief length of a minor axis tick outside the plot border in pt */
2019-01-09 04:00:25 +08:00
double minorTickOutsideLength ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see minorTickOutsideLength for more information */
2019-01-09 04:00:25 +08:00
double def_minorTickOutsideLength ;
2015-07-11 18:56:02 +08:00
/** \brief length of an axis tick inside the plot border in pt */
2019-01-09 04:00:25 +08:00
double tickInsideLength ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see tickInsideLength for more information */
2019-01-09 04:00:25 +08:00
double def_tickInsideLength ;
2015-07-11 18:56:02 +08:00
/** \brief length of a minor axis tick inside the plot border in pt */
2019-01-09 04:00:25 +08:00
double minorTickInsideLength ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see minorTickInsideLength for more information */
2019-01-09 04:00:25 +08:00
double def_minorTickInsideLength ;
2015-07-11 18:56:02 +08:00
/** \brief color of the axis (labels, ticks, axis itself ...) */
2019-01-09 04:00:25 +08:00
QColor axisColor ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see axisColor for more information */
2019-01-09 04:00:25 +08:00
QColor def_axisColor ;
2015-07-11 18:56:02 +08:00
/** \brief distance between tick end and label start in pt */
2019-01-09 04:00:25 +08:00
double tickLabelDistance ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see tickLabelDistance for more information */
2019-01-09 04:00:25 +08:00
double def_tickLabelDistance ;
2015-07-11 18:56:02 +08:00
/** \brief distance between tick label and axis label in pt */
2019-01-09 04:00:25 +08:00
double labelDistance ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see labelDistance for more information */
2019-01-09 04:00:25 +08:00
double def_labelDistance ;
2015-07-11 18:56:02 +08:00
/** \brief rotation angle of tick labels [-180..180], i.e. given in degrees, default is 0 (horizontal) */
2019-01-09 04:00:25 +08:00
double tickLabelAngle ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see tickLabelAngle for more information */
2019-01-09 04:00:25 +08:00
double def_tickLabelAngle ;
2015-07-11 18:56:02 +08:00
/** \brief indicates whether to draw the major grid lines */
2019-01-09 04:00:25 +08:00
bool drawGrid ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see drawGrid for more information */
2019-01-09 04:00:25 +08:00
bool def_drawGrid ;
2015-07-11 18:56:02 +08:00
/** \brief indicates whether to draw the minor grid lines */
2019-01-09 04:00:25 +08:00
bool drawMinorGrid ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see drawMinorGrid for more information */
2019-01-09 04:00:25 +08:00
bool def_drawMinorGrid ;
2015-07-11 18:56:02 +08:00
/** \brief color of the grid*/
2019-01-09 04:00:25 +08:00
QColor gridColor ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see gridColor for more information */
2019-01-09 04:00:25 +08:00
QColor def_gridColor ;
2015-07-11 18:56:02 +08:00
/** \brief color of the minor grid lines */
2019-01-09 04:00:25 +08:00
QColor minorGridColor ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see minorGridColor for more information */
2019-01-09 04:00:25 +08:00
QColor def_minorGridColor ;
2015-07-11 18:56:02 +08:00
/** \brief width of the grid lines (in pixel) */
2019-01-09 04:00:25 +08:00
double gridWidth ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see gridWidth for more information */
2019-01-09 04:00:25 +08:00
double def_gridWidth ;
2015-07-11 18:56:02 +08:00
/** \brief line stye of the grid lines */
2019-01-09 04:00:25 +08:00
Qt : : PenStyle gridStyle ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see gridStyle for more information */
2019-01-09 04:00:25 +08:00
Qt : : PenStyle def_gridStyle ;
2015-07-11 18:56:02 +08:00
/** \brief width of the minor grid lines (in pixel) */
2019-01-09 04:00:25 +08:00
double minorGridWidth ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see minorGridWidth for more information */
2019-01-09 04:00:25 +08:00
double def_minorGridWidth ;
2015-07-11 18:56:02 +08:00
/** \brief line stye of the minor grid lines */
2019-01-09 04:00:25 +08:00
Qt : : PenStyle minorGridStyle ;
2019-01-10 04:23:24 +08:00
/*! \brief default value for property property varname. \see minorGridStyle for more information */
2019-01-09 04:00:25 +08:00
Qt : : PenStyle def_minorGridStyle ;
2015-07-11 18:56:02 +08:00
/** \brief axis prefix for storage of parameters */
QString axisPrefix ;
/** \brief this is used by x2p() and p2x() to determine the sign */
double scaleSign ;
/** \brief calculates the next label from the given parameters.
*
* \ return \ c true on success and \ c false if there is no more label
* \ param x \ b before \ b call : the position of the label for which the text should be returned ( or tickStart for first call ) ,
* \ b after \ b call : position of the next label ( given in world coordinates ! )
* \ param label \ b after \ b call : text of the ( input ) tick label This is an empty string , if the label is not visible !
* \ param init call this function with \ c init = true to obtain the first label ( at tickStart )
*/
bool getNextLabel ( double & x , QString & label , bool init = false ) ;
/** \brief returns the distance from the current tick position (x before call) to the next tick position */
double getNextLabelDistance ( double x ) ;
/** \brief calculates the maximum width and height (returned as QSize) of all tick labels.
* Ascent and descent may also be returned in the two additional pointer arguments - */
2018-11-18 18:59:30 +08:00
QSizeF getMaxTickLabelSize ( JKQTPEnhancedPainter & painter , double * ascent = nullptr , double * descent = nullptr ) ;
2015-07-11 18:56:02 +08:00
} ;
/*! \brief implements a vertical axis, based on JKQTPcoordinateAxis (for most of documentation: see JKQTPcoordinateAxis).
\ ingroup jkqtpbaseplotter_elements
*/
class LIB_EXPORT JKQTPverticalAxis : public JKQTPcoordinateAxis {
Q_OBJECT
protected :
public :
/** \brief class constructor */
JKQTPverticalAxis ( JKQtBasePlotter * parent ) ;
/** \brief returns the size of the left/bottom axis in pixels */
2018-12-28 05:52:00 +08:00
virtual QSize getSize1 ( JKQTPEnhancedPainter & painter ) override ;
2015-07-11 18:56:02 +08:00
/** \brief returns the size of the right/top axis in pixels */
2018-12-28 05:52:00 +08:00
virtual QSize getSize2 ( JKQTPEnhancedPainter & painter ) override ;
2015-07-11 18:56:02 +08:00
/** \brief draw axes */
2018-12-28 05:52:00 +08:00
virtual void drawAxes ( JKQTPEnhancedPainter & painter ) override ;
2015-07-11 18:56:02 +08:00
/** \brief draw grids */
2018-12-28 05:52:00 +08:00
virtual void drawGrids ( JKQTPEnhancedPainter & painter ) override ;
2015-07-11 18:56:02 +08:00
protected :
/** \brief width of the plot in the direction of the axis */
2018-12-28 05:52:00 +08:00
virtual double get_parent_plotwidth ( ) const override ;
2015-07-11 18:56:02 +08:00
/** \brief offset of the plot in the direction of the axis */
2018-12-28 05:52:00 +08:00
virtual double get_parent_plotoffset ( ) const override ;
2015-07-11 18:56:02 +08:00
/** \brief pixel of other (perpendicular) axis (needed for grids) */
2018-12-28 05:52:00 +08:00
virtual double get_parent_otheraxis_width ( ) const override ;
virtual bool get_parent_otheraxis_inverted ( ) const override ;
2015-07-11 18:56:02 +08:00
/** \brief pixel offset of (perpendicular) other axis (needed for grids) */
2018-12-28 05:52:00 +08:00
virtual double get_parent_otheraxis_offset ( ) const override ;
2015-07-11 18:56:02 +08:00
2018-12-28 05:52:00 +08:00
virtual void drawTickLabel1 ( JKQTPEnhancedPainter & painter , double xx , double yy , const QString & label , double fontSize ) ;
virtual void drawTickLabel2 ( JKQTPEnhancedPainter & painter , double xx , double yy , const QString & label , double fontSize ) ;
2015-07-11 18:56:02 +08:00
} ;
/*! \brief implements a position-indipendent vertical axis, based on JKQTPcoordinateAxis (for most of documentation: see JKQTPcoordinateAxis).
\ ingroup jkqtpbaseplotter_elements
This axis may be draw at a user - supplied position ( used e . g . for color bar axes )
*/
class LIB_EXPORT JKQTPverticalIndependentAxis : public JKQTPverticalAxis {
Q_OBJECT
protected :
public :
/** \brief class constructor */
JKQTPverticalIndependentAxis ( double axisOffset , double axisWidth , double otherAxisOffset , double otherAxisWidth , JKQtBasePlotter * parent ) ;
/** \brief set the axis offset */
2018-12-28 05:52:00 +08:00
virtual void set_axisOffset ( double __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief set the axis width */
2018-12-28 05:52:00 +08:00
virtual void set_axisWidth ( double __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief set the other axis offset */
2018-12-28 05:52:00 +08:00
virtual void set_otherAxisOffset ( double __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief set the other axis width */
2018-12-28 05:52:00 +08:00
virtual void set_otherAxisWidth ( double __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief set the other axis width */
2018-12-28 05:52:00 +08:00
virtual void set_otherAxisInverted ( bool __value ) ;
2015-07-11 18:56:02 +08:00
protected :
/** \brief width of the plot in the direction of the axis */
2018-12-28 05:52:00 +08:00
virtual double get_parent_plotwidth ( ) const override ;
2015-07-11 18:56:02 +08:00
/** \brief offset of the plot in the direction of the axis */
2018-12-28 05:52:00 +08:00
virtual double get_parent_plotoffset ( ) const override ;
2015-07-11 18:56:02 +08:00
/** \brief pixel of other (perpendicular) axis (needed for grids) */
2018-12-28 05:52:00 +08:00
virtual double get_parent_otheraxis_width ( ) const override ;
virtual bool get_parent_otheraxis_inverted ( ) const override ;
2015-07-11 18:56:02 +08:00
/** \brief pixel offset of (perpendicular) other axis (needed for grids) */
2018-12-28 05:52:00 +08:00
virtual double get_parent_otheraxis_offset ( ) const override ;
2015-07-11 18:56:02 +08:00
double axisOffset ;
double axisWidth ;
double otherAxisWidth ;
double otherAxisOffset ;
bool otherAxisInverted ;
} ;
/*! \brief implements a horizontal axis, based on JKQTPcoordinateAxis (for most of documentation: see JKQTPcoordinateAxis).
\ ingroup jkqtpbaseplotter_elements
*/
class LIB_EXPORT JKQTPhorizontalAxis : public JKQTPcoordinateAxis {
Q_OBJECT
protected :
public :
/** \brief class constructor */
JKQTPhorizontalAxis ( JKQtBasePlotter * parent ) ;
/** \brief returns the size of the left/bottom axis in pixels */
2018-12-28 05:52:00 +08:00
virtual QSize getSize1 ( JKQTPEnhancedPainter & painter ) override ;
2015-07-11 18:56:02 +08:00
/** \brief returns the size of the right/top axis in pixels */
2018-12-28 05:52:00 +08:00
virtual QSize getSize2 ( JKQTPEnhancedPainter & painter ) override ;
2015-07-11 18:56:02 +08:00
/** \brief draw axes */
2018-12-28 05:52:00 +08:00
virtual void drawAxes ( JKQTPEnhancedPainter & painter ) override ;
2015-07-11 18:56:02 +08:00
/** \brief draw grids */
2018-12-28 05:52:00 +08:00
virtual void drawGrids ( JKQTPEnhancedPainter & painter ) override ;
2015-07-11 18:56:02 +08:00
protected :
/** \brief width of the plot in the direction of the axis */
2018-12-28 05:52:00 +08:00
virtual double get_parent_plotwidth ( ) const override ;
2015-07-11 18:56:02 +08:00
/** \brief offset of the plot in the direction of the axis */
2018-12-28 05:52:00 +08:00
virtual double get_parent_plotoffset ( ) const override ;
2015-07-11 18:56:02 +08:00
/** \brief pixel of other (perpendicular) axis (needed for grids) */
2018-12-28 05:52:00 +08:00
virtual double get_parent_otheraxis_width ( ) const override ;
virtual bool get_parent_otheraxis_inverted ( ) const override ;
2015-07-11 18:56:02 +08:00
/** \brief pixel offset of (perpendicular) other axis (needed for grids) */
2018-12-28 05:52:00 +08:00
virtual double get_parent_otheraxis_offset ( ) const override ;
2015-07-11 18:56:02 +08:00
2018-12-28 05:52:00 +08:00
virtual void drawTickLabel1 ( JKQTPEnhancedPainter & painter , double xx , double yy , const QString & label , double fontSize , double ascentMax , double descentMax ) ;
virtual void drawTickLabel2 ( JKQTPEnhancedPainter & painter , double xx , double yy , const QString & label , double fontSize , double ascentMax , double descentMax ) ;
2015-07-11 18:56:02 +08:00
} ;
/*! \brief implements a position-indipendent horizontal axis, based on JKQTPcoordinateAxis (for most of documentation: see JKQTPcoordinateAxis).
\ ingroup jkqtpbaseplotter_elements
This axis may be draw at a user - supplied position ( used e . g . for color bar axes )
*/
class LIB_EXPORT JKQTPhorizontalIndependentAxis : public JKQTPhorizontalAxis {
Q_OBJECT
protected :
public :
/** \brief class constructor */
JKQTPhorizontalIndependentAxis ( double axisOffset , double axisWidth , double otherAxisOffset , double otherAxisWidth , JKQtBasePlotter * parent ) ;
/** \brief se the axis offset */
2018-11-25 21:53:26 +08:00
virtual void set_axisOffset ( double __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief se the axis width */
2018-11-25 21:53:26 +08:00
virtual void set_axisWidth ( double __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief set the other axis offset */
2018-11-25 21:53:26 +08:00
virtual void set_otherAxisOffset ( double __value ) ;
2015-07-11 18:56:02 +08:00
/** \brief set the other axis width */
2018-11-25 21:53:26 +08:00
virtual void set_otherAxisWidth ( double __value ) ;
virtual void set_otherAxisInverted ( bool __value ) ;
2015-07-11 18:56:02 +08:00
protected :
/** \brief width of the plot in the direction of the axis */
2018-12-28 05:52:00 +08:00
virtual double get_parent_plotwidth ( ) const override ;
2015-07-11 18:56:02 +08:00
/** \brief offset of the plot in the direction of the axis */
2018-12-28 05:52:00 +08:00
virtual double get_parent_plotoffset ( ) const override ;
2015-07-11 18:56:02 +08:00
/** \brief pixel of other (perpendicular) axis (needed for grids) */
2018-12-28 05:52:00 +08:00
virtual double get_parent_otheraxis_width ( ) const override ;
virtual bool get_parent_otheraxis_inverted ( ) const override ;
2015-07-11 18:56:02 +08:00
/** \brief pixel offset of (perpendicular) other axis (needed for grids) */
2018-12-28 05:52:00 +08:00
virtual double get_parent_otheraxis_offset ( ) const override ;
2015-07-11 18:56:02 +08:00
double axisOffset ;
double axisWidth ;
double otherAxisWidth ;
double otherAxisOffset ;
bool otherAxisInverted ;
} ;
# endif // JKQTPBASEELEMENTS_H