2018-12-02 21:08:43 +08:00
/*
2020-08-26 18:58:23 +08:00
Copyright ( c ) 2008 - 2020 Jan W . Krieger ( < jan @ jkrieger . de > )
2018-12-02 21:08:43 +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
2019-02-08 00:24:46 +08:00
the Free Software Foundation , either version 2.1 of the License , or
2018-12-02 21:08:43 +08:00
( 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/>.
*/
2019-06-22 20:21:32 +08:00
# include "jkqtplotter/jkqtplotter_imexport.h"
2018-12-19 00:13:18 +08:00
# include "jkqtplotter/jkqtpgraphsbase.h"
2019-02-08 00:24:46 +08:00
# include "jkqtplotter/jkqtpgraphsbaseerrors.h"
2019-06-20 22:06:31 +08:00
# include "jkqtplotter/graphs/jkqtpspecialline.h"
2018-12-02 21:08:43 +08:00
2018-12-19 00:13:18 +08:00
# ifndef jkqtpgraphsfilledcurve_H
# define jkqtpgraphsfilledcurve_H
2018-12-02 21:08:43 +08:00
/*! \brief This implements filled curve plots where the area is filled between the plot line and the x-Axis.
2019-02-03 21:04:48 +08:00
\ ingroup jkqtplotter_filledgraphs
2018-12-02 21:08:43 +08:00
2019-06-21 04:24:47 +08:00
\ image html filledgraphs . png
2019-01-29 05:14:27 +08:00
\ see \ ref JKQTPlotterFilledGraphs
2018-12-02 21:08:43 +08:00
*/
2019-06-22 20:21:32 +08:00
class JKQTPLOTTER_LIB_EXPORT JKQTPFilledCurveXGraph : public JKQTPSpecialLineHorizontalGraph {
2018-12-02 21:08:43 +08:00
Q_OBJECT
public :
/** \brief class constructor */
2019-01-20 17:49:29 +08:00
JKQTPFilledCurveXGraph ( JKQTBasePlotter * parent = nullptr ) ;
2018-12-02 21:08:43 +08:00
/** \brief class constructor */
2019-01-20 23:15:10 +08:00
JKQTPFilledCurveXGraph ( JKQTPlotter * parent ) ;
2018-12-02 21:08:43 +08:00
} ;
/*! \brief This implements filled curve plots with y errors where the area is filled between the plot line and the x-Axis.
2019-02-03 21:04:48 +08:00
\ ingroup jkqtplotter_filledgraphs
2018-12-02 21:08:43 +08:00
\ image html plot_filledcurvexerrorplots . png
2019-01-29 05:14:27 +08:00
2019-06-13 16:27:06 +08:00
\ see \ ref JKQTPlotterFilledGraphs , jkqtpstatAddXErrorFilledCurveGraph ( )
2018-12-02 21:08:43 +08:00
*/
2019-06-22 20:21:32 +08:00
class JKQTPLOTTER_LIB_EXPORT JKQTPFilledCurveXErrorGraph : public JKQTPFilledCurveXGraph , public JKQTPYGraphErrors {
2018-12-02 21:08:43 +08:00
Q_OBJECT
public :
/** \brief class constructor */
2019-01-20 17:49:29 +08:00
JKQTPFilledCurveXErrorGraph ( JKQTBasePlotter * parent = nullptr ) ;
2018-12-02 21:08:43 +08:00
/** \brief class constructor */
2019-01-20 23:15:10 +08:00
JKQTPFilledCurveXErrorGraph ( JKQTPlotter * parent ) ;
2019-01-20 17:49:29 +08:00
/** \copydoc JKQTPGraph::usesColumn() */
2018-12-28 05:52:00 +08:00
virtual bool usesColumn ( int c ) const override ;
2018-12-02 21:08:43 +08:00
protected :
/** \brief this function is used to plot error inidcators before plotting the graphs. */
2018-12-28 05:52:00 +08:00
virtual void drawErrorsAfter ( JKQTPEnhancedPainter & painter ) override ;
2018-12-02 21:08:43 +08:00
} ;
/*! \brief This implements filled curve plots where the area is filled between the plot line and y-Axis
2019-02-03 21:04:48 +08:00
\ ingroup jkqtplotter_filledgraphs
2018-12-02 21:08:43 +08:00
2019-06-21 04:24:47 +08:00
\ image html filledgraphs_yaxis . png
2019-01-29 05:14:27 +08:00
\ see \ ref JKQTPlotterFilledGraphs
2018-12-02 21:08:43 +08:00
*/
2019-06-22 20:21:32 +08:00
class JKQTPLOTTER_LIB_EXPORT JKQTPFilledCurveYGraph : public JKQTPSpecialLineVerticalGraph {
2018-12-02 21:08:43 +08:00
Q_OBJECT
public :
/** \brief class constructor */
2019-01-20 17:49:29 +08:00
JKQTPFilledCurveYGraph ( JKQTBasePlotter * parent = nullptr ) ;
2018-12-02 21:08:43 +08:00
/** \brief class constructor */
2019-01-20 23:15:10 +08:00
JKQTPFilledCurveYGraph ( JKQTPlotter * parent ) ;
2018-12-02 21:08:43 +08:00
2019-04-22 19:27:50 +08:00
2018-12-02 21:08:43 +08:00
} ;
/*! \brief This implements filled curve plots with y errors where the area is filled between the plot line and the x-Axis.
2019-02-03 21:04:48 +08:00
\ ingroup jkqtplotter_filledgraphs
2018-12-02 21:08:43 +08:00
\ image html plot_filledcurveyerrorplots . png
2019-01-29 05:14:27 +08:00
2019-06-13 16:27:06 +08:00
\ see \ ref JKQTPlotterFilledGraphs , jkqtpstatAddYErrorFilledCurveGraph ( )
2018-12-02 21:08:43 +08:00
*/
2019-06-22 20:21:32 +08:00
class JKQTPLOTTER_LIB_EXPORT JKQTPFilledCurveYErrorGraph : public JKQTPFilledCurveYGraph , public JKQTPXGraphErrors {
2018-12-02 21:08:43 +08:00
Q_OBJECT
public :
/** \brief class constructor */
2019-01-20 17:49:29 +08:00
JKQTPFilledCurveYErrorGraph ( JKQTBasePlotter * parent = nullptr ) ;
2019-01-20 23:15:10 +08:00
JKQTPFilledCurveYErrorGraph ( JKQTPlotter * parent ) ;
2019-01-20 17:49:29 +08:00
/** \copydoc JKQTPGraph::usesColumn() */
2018-12-28 05:52:00 +08:00
virtual bool usesColumn ( int c ) const override ;
2018-12-02 21:08:43 +08:00
protected :
/** \brief this function is used to plot error inidcators before plotting the graphs. */
2018-12-28 05:52:00 +08:00
virtual void drawErrorsAfter ( JKQTPEnhancedPainter & painter ) override ;
2018-12-02 21:08:43 +08:00
} ;
2020-09-18 18:24:12 +08:00
/** \brief This implements filled curve plots where the area is filled between two data columns for each x-value
* \ ingroup jkqtplotter_filledgraphs
*
* With \ c setDrawlines ( false ) :
*
* \ image html JKQTPfilledVerticalRangeGraph . png
*
* With \ c setDrawlines ( true ) :
*
* \ image html JKQTPfilledVerticalRangeGraph_WithLines . png
*
* \ see \ ref JKQTPlotterDateTimeAxes
2018-12-02 21:08:43 +08:00
*/
2019-06-22 20:21:32 +08:00
class JKQTPLOTTER_LIB_EXPORT JKQTPFilledVerticalRangeGraph : public JKQTPXYGraph , public JKQTPGraphLineStyleMixin , public JKQTPGraphFillStyleMixin {
2020-09-18 18:24:12 +08:00
Q_OBJECT
public :
/** \brief class constructor */
JKQTPFilledVerticalRangeGraph ( JKQTBasePlotter * parent = nullptr ) ;
/** \brief class constructor */
JKQTPFilledVerticalRangeGraph ( JKQTPlotter * parent ) ;
/** \brief get the maximum and minimum y-value of the graph
2018-12-02 21:08:43 +08:00
*
* The result is given in the two parameters which are call - by - reference parameters !
*/
2020-09-18 18:24:12 +08:00
virtual bool getYMinMax ( double & miny , double & maxy , double & smallestGreaterZero ) override ;
2018-12-02 21:08:43 +08:00
2020-09-18 18:24:12 +08:00
/** \copydoc JKQTPGraph::usesColumn() */
virtual bool usesColumn ( int column ) const override ;
2018-12-02 21:08:43 +08:00
2020-09-18 18:24:12 +08:00
/** \brief plots the graph to the plotter object specified as parent */
virtual void draw ( JKQTPEnhancedPainter & painter ) override ;
/** \brief plots a key marker inside the specified rectangle \a rect */
virtual void drawKeyMarker ( JKQTPEnhancedPainter & painter , QRectF & rect ) override ;
/** \brief returns the color to be used for the key label */
virtual QColor getKeyLabelColor ( ) const override ;
2018-12-02 21:08:43 +08:00
2020-09-18 18:24:12 +08:00
/*! \copydoc yColumn2 */
2019-04-22 19:27:50 +08:00
void setYColumn2 ( int __value ) ;
2020-09-18 18:24:12 +08:00
/*! \copydoc yColumn2 */
2019-04-22 19:27:50 +08:00
int getYColumn2 ( ) const ;
2020-09-18 18:24:12 +08:00
/*! \copydoc yColumn2 */
2019-04-22 19:27:50 +08:00
void setYColumn2 ( size_t __value ) ;
2020-09-18 18:24:12 +08:00
/*! \copydoc drawLine */
void setDrawLine ( bool __value ) ;
/*! \copydoc drawLine */
bool getDrawLine ( ) const ;
2019-04-22 19:27:50 +08:00
2018-12-02 21:08:43 +08:00
2020-09-18 18:24:12 +08:00
protected :
2018-12-02 21:08:43 +08:00
2020-09-18 18:24:12 +08:00
/** \brief the column that contains the second y-component of the range */
int yColumn2 ;
2019-04-22 19:27:50 +08:00
2020-09-18 18:24:12 +08:00
/** \brief indicates whether to draw a line on the circumference of the described area (i.e. along the data points from \c xColumn and \c yColumn as well as \c xColumn and \c yColumn2 or not */
bool drawLine ;
2018-12-02 21:08:43 +08:00
} ;
2018-12-19 00:13:18 +08:00
# endif // jkqtpgraphsfilledcurve_H