2015-07-11 18:56:02 +08:00
/*
2019-01-12 23:01:55 +08:00
Copyright ( c ) 2008 - 2019 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/>.
*/
2018-12-19 00:13:18 +08:00
/** \file jkqtpgraphs.h
2019-01-19 16:40:52 +08:00
* \ ingroup jkqtplotter_linesymbolgraphs
2015-07-11 18:56:02 +08:00
*/
# include <QString>
# include <QPainter>
# include <QPair>
2018-11-26 03:25:44 +08:00
# include "jkqtplottertools/jkqtptools.h"
# include "jkqtplottertools/jkqtp_imexport.h"
2018-12-19 00:13:18 +08:00
# include "jkqtplottertools/jkqtpdrawingtools.h"
# include "jkqtplotter/jkqtpgraphsbase.h"
# include "jkqtplottertools/jkqtpenhancedpainter.h"
2015-07-11 18:56:02 +08:00
2018-12-19 00:13:18 +08:00
# ifndef jkqtpgraphs_H
# define jkqtpgraphs_H
2015-07-11 18:56:02 +08:00
// forward declarations
2019-01-20 17:49:29 +08:00
class JKQTBasePlotter ;
2019-01-20 23:15:10 +08:00
class JKQTPlotter ;
2019-01-20 17:49:29 +08:00
class JKQTPCoordinateAxis ;
class JKQTPDatastore ;
2015-07-11 18:56:02 +08:00
//class JKQTPColorPaletteTools;
/*! \brief This implements xy line plots. This also alows to draw symbols at the data points.
2019-01-13 01:53:16 +08:00
\ ingroup jkqtplotter_linesymbolgraphs
2015-07-11 18:56:02 +08:00
\ image html plot_lineplots . png
*/
2019-01-20 17:49:29 +08:00
class LIB_EXPORT JKQTPXYLineGraph : public JKQTPXYGraph {
2015-07-11 18:56:02 +08:00
Q_OBJECT
public :
/** \brief class constructor */
2019-01-20 17:49:29 +08:00
JKQTPXYLineGraph ( JKQTBasePlotter * parent = nullptr ) ;
2015-08-02 19:36:54 +08:00
/** \brief class constructor */
2019-01-20 23:15:10 +08:00
JKQTPXYLineGraph ( JKQTPlotter * parent ) ;
2015-07-11 18:56:02 +08:00
/** \brief plots the graph to the plotter object specified as parent */
2018-12-28 05:52:00 +08:00
virtual void draw ( JKQTPEnhancedPainter & painter ) override ;
2015-07-11 18:56:02 +08:00
/** \brief plots a key marker inside the specified rectangle \a rect */
2018-12-28 05:52:00 +08:00
virtual void drawKeyMarker ( JKQTPEnhancedPainter & painter , QRectF & rect ) override ;
2015-07-11 18:56:02 +08:00
/** \brief returns the color to be used for the key label */
2018-12-28 05:52:00 +08:00
virtual QColor getKeyLabelColor ( ) override ;
2015-07-11 18:56:02 +08:00
2019-01-10 04:23:24 +08:00
/*! \brief sets the property color to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter color is : < BLOCKQUOTE > \ copydoc color < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see color for more information */
inline virtual void set_color ( const QColor & __value )
{
this - > color = __value ;
}
/*! \brief returns the property color.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter color is : < BLOCKQUOTE > \ copydoc color < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see color for more information */
inline virtual QColor get_color ( ) const
{
return this - > color ;
}
/*! \brief sets the property fillColor to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter fillColor is : < BLOCKQUOTE > \ copydoc fillColor < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see fillColor for more information */
inline virtual void set_fillColor ( const QColor & __value )
{
this - > fillColor = __value ;
}
/*! \brief returns the property fillColor.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter fillColor is : < BLOCKQUOTE > \ copydoc fillColor < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see fillColor for more information */
inline virtual QColor get_fillColor ( ) const
{
return this - > fillColor ;
}
/*! \brief sets the property style to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter style is : < BLOCKQUOTE > \ copydoc style < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see style for more information */
inline virtual void set_style ( const Qt : : PenStyle & __value )
{
this - > style = __value ;
}
/*! \brief returns the property style.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter style is : < BLOCKQUOTE > \ copydoc style < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see style for more information */
inline virtual Qt : : PenStyle get_style ( ) const
{
return this - > style ;
}
/*! \brief sets the property lineWidth to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter lineWidth is : < BLOCKQUOTE > \ copydoc lineWidth < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see lineWidth for more information */
2019-01-26 03:16:04 +08:00
inline virtual void setLineWidth ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > lineWidth = __value ;
}
/*! \brief returns the property lineWidth.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter lineWidth is : < BLOCKQUOTE > \ copydoc lineWidth < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see lineWidth for more information */
2019-01-26 03:16:04 +08:00
inline virtual double getLineWidth ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > lineWidth ;
}
/*! \brief sets the property symbol to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter symbol is : < BLOCKQUOTE > \ copydoc symbol < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see symbol for more information */
2019-01-20 17:49:29 +08:00
inline virtual void set_symbol ( const JKQTPGraphSymbols & __value )
2019-01-10 04:23:24 +08:00
{
this - > symbol = __value ;
}
/*! \brief returns the property symbol.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter symbol is : < BLOCKQUOTE > \ copydoc symbol < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see symbol for more information */
2019-01-20 17:49:29 +08:00
inline virtual JKQTPGraphSymbols get_symbol ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > symbol ;
}
/*! \brief sets the property symbolWidth to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter symbolWidth is : < BLOCKQUOTE > \ copydoc symbolWidth < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see symbolWidth for more information */
inline virtual void set_symbolWidth ( double __value )
{
this - > symbolWidth = __value ;
}
/*! \brief returns the property symbolWidth.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter symbolWidth is : < BLOCKQUOTE > \ copydoc symbolWidth < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see symbolWidth for more information */
inline virtual double get_symbolWidth ( ) const
{
return this - > symbolWidth ;
}
/*! \brief sets the property symbolSize to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter symbolSize is : < BLOCKQUOTE > \ copydoc symbolSize < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see symbolSize for more information */
inline virtual void set_symbolSize ( double __value )
{
this - > symbolSize = __value ;
}
/*! \brief returns the property symbolSize.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter symbolSize is : < BLOCKQUOTE > \ copydoc symbolSize < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see symbolSize for more information */
inline virtual double get_symbolSize ( ) const
{
return this - > symbolSize ;
}
/*! \brief sets the property drawLine to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter drawLine is : < BLOCKQUOTE > \ copydoc drawLine < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see drawLine for more information */
inline virtual void set_drawLine ( bool __value )
{
this - > drawLine = __value ;
}
/*! \brief returns the property drawLine.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter drawLine is : < BLOCKQUOTE > \ copydoc drawLine < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see drawLine for more information */
inline virtual bool get_drawLine ( ) const
{
return this - > drawLine ;
}
/*! \brief sets the property drawSelectionLine to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter drawSelectionLine is : < BLOCKQUOTE > \ copydoc drawSelectionLine < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see drawSelectionLine for more information */
inline virtual void set_drawSelectionLine ( bool __value )
{
this - > drawSelectionLine = __value ;
}
/*! \brief returns the property drawSelectionLine.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter drawSelectionLine is : < BLOCKQUOTE > \ copydoc drawSelectionLine < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see drawSelectionLine for more information */
inline virtual bool get_drawSelectionLine ( ) const
{
return this - > drawSelectionLine ;
}
/*! \brief sets the property selectionLineColor to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter selectionLineColor is : < BLOCKQUOTE > \ copydoc selectionLineColor < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see selectionLineColor for more information */
inline virtual void set_selectionLineColor ( const QColor & __value )
{
this - > selectionLineColor = __value ;
}
/*! \brief returns the property selectionLineColor.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter selectionLineColor is : < BLOCKQUOTE > \ copydoc selectionLineColor < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see selectionLineColor for more information */
inline virtual QColor get_selectionLineColor ( ) const
{
return this - > selectionLineColor ;
}
2015-07-11 18:56:02 +08:00
protected :
/** \brief if \c true, draws a thick shadow around the line*/
bool drawSelectionLine ;
/** \brief color for the shadow, or a lighter version of the line color, if transparent (default) */
QColor selectionLineColor ;
2019-01-26 03:16:04 +08:00
/** \brief which plot style to use from the parent plotter (via JKQTBasePlotter::getPlotStyle() and JKQTBasePlotter::getNextStyle() ) */
2015-07-11 18:56:02 +08:00
int parentPlotStyle ;
/** \brief color of the graph */
QColor color ;
/** \brief color of the graph fill */
QColor fillColor ;
/** \brief linestyle of the graph lines */
Qt : : PenStyle style ;
2019-01-20 23:15:10 +08:00
/** \brief width (pixels) of the graph, given in pt */
2015-07-11 18:56:02 +08:00
double lineWidth ;
/** \brief which symbol to use for the datapoints */
2019-01-20 17:49:29 +08:00
JKQTPGraphSymbols symbol ;
2019-01-20 23:15:10 +08:00
/** \brief size (diameter in pt) of the symbol for the data points, given in pt */
2015-07-11 18:56:02 +08:00
double symbolSize ;
2019-01-20 23:15:10 +08:00
/** \brief width (in pt) of the lines used to plot the symbol for the data points, given in pt */
2015-07-11 18:56:02 +08:00
double symbolWidth ;
/** \brief indicates whether to draw a line or not */
bool drawLine ;
QPen getLinePen ( JKQTPEnhancedPainter & painter ) const ;
QPen getSymbolPen ( JKQTPEnhancedPainter & painter ) const ;
QBrush getBrush ( JKQTPEnhancedPainter & painter ) const ;
} ;
2019-01-20 17:49:29 +08:00
/*! \brief This implements xy scatter plots (like JKQTPXYLineGraph), but the color and size of the symbols may be taken from a column.
2019-01-13 01:53:16 +08:00
\ ingroup jkqtplotter_linesymbolgraphs
2015-07-11 18:56:02 +08:00
set the properties sizeColumn and / or colorColumn to change the size and / or color of the symbols according to the values in the column .
*/
2019-01-20 17:49:29 +08:00
class LIB_EXPORT JKQTPXYParametrizedScatterGraph : public JKQTPXYLineGraph , public JKQTPColorPaletteTools {
2015-07-11 18:56:02 +08:00
Q_OBJECT
public :
/** \brief class constructor */
2019-01-20 17:49:29 +08:00
JKQTPXYParametrizedScatterGraph ( JKQTBasePlotter * parent = nullptr ) ;
2015-08-02 19:36:54 +08:00
/** \brief class constructor */
2019-01-20 23:15:10 +08:00
JKQTPXYParametrizedScatterGraph ( JKQTPlotter * parent ) ;
2015-07-11 18:56:02 +08:00
/** \brief plots the graph to the plotter object specified as parent */
2018-12-28 05:52:00 +08:00
virtual void draw ( JKQTPEnhancedPainter & painter ) override ;
2018-12-16 21:59:39 +08:00
/** \brief plots a key marker inside the specified rectangle \a rect */
2018-12-28 05:52:00 +08:00
virtual void drawKeyMarker ( JKQTPEnhancedPainter & painter , QRectF & rect ) override ;
2015-07-11 18:56:02 +08:00
/** \brief returns the color to be used for the key label */
2018-12-28 05:52:00 +08:00
virtual QColor getKeyLabelColor ( ) override ;
2015-07-11 18:56:02 +08:00
2019-01-10 04:23:24 +08:00
/*! \brief sets the property sizeColumn to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter sizeColumn is : < BLOCKQUOTE > \ copydoc sizeColumn < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see sizeColumn for more information */
inline virtual void set_sizeColumn ( int __value )
{
this - > sizeColumn = __value ;
}
/*! \brief returns the property sizeColumn.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter sizeColumn is : < BLOCKQUOTE > \ copydoc sizeColumn < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see sizeColumn for more information */
inline virtual int get_sizeColumn ( ) const
{
return this - > sizeColumn ;
}
/*! \brief sets the property sizeColumn to the specified \a __value, where __value is static_cast'ed from size_t to int.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter sizeColumn is : < BLOCKQUOTE > \ copydoc sizeColumn < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see sizeColumn for more information */
inline virtual void set_sizeColumn ( size_t __value ) { this - > sizeColumn = static_cast < int > ( __value ) ; }
/*! \brief sets the property colorColumn to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter colorColumn is : < BLOCKQUOTE > \ copydoc colorColumn < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see colorColumn for more information */
inline virtual void set_colorColumn ( int __value )
{
this - > colorColumn = __value ;
}
/*! \brief returns the property colorColumn.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter colorColumn is : < BLOCKQUOTE > \ copydoc colorColumn < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see colorColumn for more information */
inline virtual int get_colorColumn ( ) const
{
return this - > colorColumn ;
}
/*! \brief sets the property colorColumn to the specified \a __value, where __value is static_cast'ed from size_t to int.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter colorColumn is : < BLOCKQUOTE > \ copydoc colorColumn < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see colorColumn for more information */
inline virtual void set_colorColumn ( size_t __value ) { this - > colorColumn = static_cast < int > ( __value ) ; }
/*! \brief sets the property symbolColumn to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter symbolColumn is : < BLOCKQUOTE > \ copydoc symbolColumn < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see symbolColumn for more information */
inline virtual void set_symbolColumn ( int __value )
{
this - > symbolColumn = __value ;
}
/*! \brief returns the property symbolColumn.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter symbolColumn is : < BLOCKQUOTE > \ copydoc symbolColumn < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see symbolColumn for more information */
inline virtual int get_symbolColumn ( ) const
{
return this - > symbolColumn ;
}
/*! \brief sets the property symbolColumn to the specified \a __value, where __value is static_cast'ed from size_t to int.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter symbolColumn is : < BLOCKQUOTE > \ copydoc symbolColumn < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see symbolColumn for more information */
inline virtual void set_symbolColumn ( size_t __value ) { this - > symbolColumn = static_cast < int > ( __value ) ; }
/*! \brief sets the property linewidthColumn to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter linewidthColumn is : < BLOCKQUOTE > \ copydoc linewidthColumn < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see linewidthColumn for more information */
2019-01-26 03:16:04 +08:00
inline virtual void setLinewidthColumn ( int __value )
2019-01-10 04:23:24 +08:00
{
this - > linewidthColumn = __value ;
}
/*! \brief returns the property linewidthColumn.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter linewidthColumn is : < BLOCKQUOTE > \ copydoc linewidthColumn < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see linewidthColumn for more information */
2019-01-26 03:16:04 +08:00
inline virtual int getLinewidthColumn ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > linewidthColumn ;
}
/*! \brief sets the property linewidthColumn to the specified \a __value, where __value is static_cast'ed from size_t to int.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter linewidthColumn is : < BLOCKQUOTE > \ copydoc linewidthColumn < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see linewidthColumn for more information */
2019-01-26 03:16:04 +08:00
inline virtual void setLinewidthColumn ( size_t __value ) { this - > linewidthColumn = static_cast < int > ( __value ) ; }
2019-01-10 04:23:24 +08:00
/*! \brief sets the property colorColumnContainsRGB to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter colorColumnContainsRGB is : < BLOCKQUOTE > \ copydoc colorColumnContainsRGB < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see colorColumnContainsRGB for more information */
inline virtual void set_colorColumnContainsRGB ( bool __value )
{
this - > colorColumnContainsRGB = __value ;
}
/*! \brief returns the property colorColumnContainsRGB.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter colorColumnContainsRGB is : < BLOCKQUOTE > \ copydoc colorColumnContainsRGB < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see colorColumnContainsRGB for more information */
inline virtual bool get_colorColumnContainsRGB ( ) const
{
return this - > colorColumnContainsRGB ;
}
/*! \brief sets the property gridModeForSymbolSize to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter gridModeForSymbolSize is : < BLOCKQUOTE > \ copydoc gridModeForSymbolSize < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see gridModeForSymbolSize for more information */
2019-01-26 03:16:04 +08:00
inline virtual void setGridModeForSymbolSize ( bool __value )
2019-01-10 04:23:24 +08:00
{
this - > gridModeForSymbolSize = __value ;
}
/*! \brief returns the property gridModeForSymbolSize.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter gridModeForSymbolSize is : < BLOCKQUOTE > \ copydoc gridModeForSymbolSize < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see gridModeForSymbolSize for more information */
2019-01-26 03:16:04 +08:00
inline virtual bool getGridModeForSymbolSize ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > gridModeForSymbolSize ;
}
/*! \brief sets the property gridDeltaX to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter gridDeltaX is : < BLOCKQUOTE > \ copydoc gridDeltaX < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see gridDeltaX for more information */
2019-01-26 03:16:04 +08:00
inline virtual void setGridDeltaX ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > gridDeltaX = __value ;
}
/*! \brief returns the property gridDeltaX.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter gridDeltaX is : < BLOCKQUOTE > \ copydoc gridDeltaX < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see gridDeltaX for more information */
2019-01-26 03:16:04 +08:00
inline virtual double getGridDeltaX ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > gridDeltaX ;
}
/*! \brief sets the property gridDeltaY to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter gridDeltaY is : < BLOCKQUOTE > \ copydoc gridDeltaY < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see gridDeltaY for more information */
2019-01-26 03:16:04 +08:00
inline virtual void setGridDeltaY ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > gridDeltaY = __value ;
}
/*! \brief returns the property gridDeltaY.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter gridDeltaY is : < BLOCKQUOTE > \ copydoc gridDeltaY < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see gridDeltaY for more information */
2019-01-26 03:16:04 +08:00
inline virtual double getGridDeltaY ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > gridDeltaY ;
}
/*! \brief sets the property gridSymbolFractionSize to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter gridSymbolFractionSize is : < BLOCKQUOTE > \ copydoc gridSymbolFractionSize < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see gridSymbolFractionSize for more information */
2019-01-26 03:16:04 +08:00
inline virtual void setGridSymbolFractionSize ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > gridSymbolFractionSize = __value ;
}
/*! \brief returns the property gridSymbolFractionSize.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter gridSymbolFractionSize is : < BLOCKQUOTE > \ copydoc gridSymbolFractionSize < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see gridSymbolFractionSize for more information */
2019-01-26 03:16:04 +08:00
inline virtual double getGridSymbolFractionSize ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > gridSymbolFractionSize ;
}
2015-07-11 18:56:02 +08:00
2019-01-20 17:49:29 +08:00
virtual void setParent ( JKQTBasePlotter * parent ) override ;
2015-07-11 18:56:02 +08:00
/*! \brief if the graph plots outside the actual plot field of view (e.g. color bars, scale bars, ...)
\ note If you want to draw outside , then you ' ll also have to implement drawOutside ( )
*/
2018-12-28 05:52:00 +08:00
virtual void getOutsideSize ( JKQTPEnhancedPainter & painter , int & leftSpace , int & rightSpace , int & topSpace , int & bottomSpace ) override ;
2015-07-11 18:56:02 +08:00
/*! \brief plots outside the actual plot field of view (e.g. color bars, scale bars, ...)
\ note If you want to draw outside , then you ' ll also have to implement getOutsideSize ( ) , so enough space is reserved
The four value supplied tell the method where to draw ( inside one of the rectangles ) .
*/
2018-12-28 05:52:00 +08:00
virtual void drawOutside ( JKQTPEnhancedPainter & painter , QRect leftSpace , QRect rightSpace , QRect topSpace , QRect bottomSpace ) override ;
2015-07-11 18:56:02 +08:00
/** \brief determine min/max data value of the image */
2018-12-28 05:52:00 +08:00
virtual void cbGetDataMinMax ( double & imin , double & imax ) override ;
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 ;
2015-07-11 18:56:02 +08:00
2018-12-28 05:52:00 +08:00
virtual double getInternalDataMin ( ) const override ;
virtual double getInternalDataMax ( ) const override ;
2015-07-11 18:56:02 +08:00
protected :
/** \brief this column contains the symbol size in pt */
int sizeColumn ;
/** \brief this column contains the symbol color */
int colorColumn ;
/** \brief this column contains the symbol type */
int symbolColumn ;
2018-12-16 21:59:39 +08:00
/** \brief this column contains the line width */
int linewidthColumn ;
2015-07-11 18:56:02 +08:00
2018-12-25 04:39:37 +08:00
/** \brief if the gridModeForSymbolSize mode is actiavted (true), the plot assumes that the scatter symbols are ordered in a grid. It the uses the given griDeltaX and gridDeltaY to calculate the symbol size, so they fill the available space to a fraction gridSymbolFractionSize. */
2015-07-11 18:56:02 +08:00
bool gridModeForSymbolSize ;
2018-12-25 04:39:37 +08:00
/** \brief if the gridModeForSymbolSize mode is actiavted (true), the plot assumes that the scatter symbols are ordered in a grid. It the uses the given griDeltaX and gridDeltaY to calculate the symbol size, so they fill the available space to a fraction gridSymbolFractionSize. */
2015-07-11 18:56:02 +08:00
double gridDeltaX ;
2018-12-25 04:39:37 +08:00
/** \brief if the gridModeForSymbolSize mode is actiavted (true), the plot assumes that the scatter symbols are ordered in a grid. It the uses the given griDeltaX and gridDeltaY to calculate the symbol size, so they fill the available space to a fraction gridSymbolFractionSize. */
2015-07-11 18:56:02 +08:00
double gridDeltaY ;
2018-12-25 04:39:37 +08:00
/** \brief if the gridModeForSymbolSize mode is actiavted (true), the plot assumes that the scatter symbols are ordered in a grid. It the uses the given griDeltaX and gridDeltaY to calculate the symbol size, so they fill the available space to a fraction gridSymbolFractionSize. */
2015-07-11 18:56:02 +08:00
double gridSymbolFractionSize ;
/** \brief if this is true, the value in the colorColumn is converted to an integer, representing a color in ARGB format (as in QRgb) */
bool colorColumnContainsRGB ;
2018-12-16 21:59:39 +08:00
double getLocalLineWidth ( int i ) ;
2015-07-11 18:56:02 +08:00
double getLocalSymbolSize ( int i ) ;
QColor getLocalColor ( int i ) ;
2019-01-20 17:49:29 +08:00
JKQTPGraphSymbols getLocalSymbolType ( int i ) ;
2015-07-11 18:56:02 +08:00
/** \brief internally used to store the range of the color column */
double intColMin ;
/** \brief internally used to store the range of the color column */
double intColMax ;
} ;
/*! \brief This implements xy line plots with x and y error indicators.
2019-01-13 01:53:16 +08:00
\ ingroup jkqtplotter_linesymbolgraphs
2015-07-11 18:56:02 +08:00
\ image html plot_errorbarlineplots . png
\ image html plot_errorlinelineplots . png
\ image html plot_errorpolygonlineplots . png
*/
2019-01-20 17:49:29 +08:00
class LIB_EXPORT JKQTPXYLineErrorGraph : public JKQTPXYLineGraph , public JKQTPXYGraphErrors {
2015-07-11 18:56:02 +08:00
Q_OBJECT
public :
/** \brief class constructor */
2019-01-20 17:49:29 +08:00
JKQTPXYLineErrorGraph ( JKQTBasePlotter * parent = nullptr ) ;
2015-08-02 19:36:54 +08:00
/** \brief class constructor */
2019-01-20 23:15:10 +08:00
JKQTPXYLineErrorGraph ( JKQTPlotter * parent ) ;
2015-07-11 18:56:02 +08:00
/** \brief get the maximum and minimum x-value of the graph
*
* The result is given in the two parameters which are call - by - reference parameters !
*/
2018-12-28 05:52:00 +08:00
virtual bool getXMinMax ( double & minx , double & maxx , double & smallestGreaterZero ) override ;
2015-07-11 18:56:02 +08:00
/** \brief get the maximum and minimum y-value of the graph
*
* The result is given in the two parameters which are call - by - reference parameters !
*/
2018-12-28 05:52:00 +08:00
virtual bool getYMinMax ( double & miny , double & maxy , double & smallestGreaterZero ) override ;
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 ;
2015-07-11 18:56:02 +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 drawErrorsBefore ( JKQTPEnhancedPainter & painter ) override ;
2015-07-11 18:56:02 +08:00
} ;
2019-01-20 17:49:29 +08:00
/*! \brief This implements xy scatter plots (like JKQTPXYLineGraph), but the color and size of the symbols may be taken from a column. with errorbars
2019-01-13 01:53:16 +08:00
\ ingroup jkqtplotter_linesymbolgraphs
2015-07-11 18:56:02 +08:00
set the properties sizeColumn and / or colorColumn to change the size and / or color of the symbols according to the values in the column .
*/
2019-01-20 17:49:29 +08:00
class LIB_EXPORT JKQTPXYParametrizedErrorScatterGraph : public JKQTPXYParametrizedScatterGraph , public JKQTPXYGraphErrors {
2015-07-11 18:56:02 +08:00
Q_OBJECT
public :
2019-01-20 17:49:29 +08:00
JKQTPXYParametrizedErrorScatterGraph ( JKQTBasePlotter * parent = nullptr ) ;
2019-01-20 23:15:10 +08:00
JKQTPXYParametrizedErrorScatterGraph ( JKQTPlotter * parent ) ;
2015-07-11 18:56:02 +08:00
/** \brief get the maximum and minimum x-value of the graph
*
* The result is given in the two parameters which are call - by - reference parameters !
*/
2018-12-28 05:52:00 +08:00
virtual bool getXMinMax ( double & minx , double & maxx , double & smallestGreaterZero ) override ;
2015-07-11 18:56:02 +08:00
/** \brief get the maximum and minimum y-value of the graph
*
* The result is given in the two parameters which are call - by - reference parameters !
*/
2018-12-28 05:52:00 +08:00
virtual bool getYMinMax ( double & miny , double & maxy , double & smallestGreaterZero ) override ;
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 ;
2015-07-11 18:56:02 +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 drawErrorsBefore ( JKQTPEnhancedPainter & painter ) override ;
2015-07-11 18:56:02 +08:00
/** \brief this function can be used to set the color of the error indicators automatically
*
* return \ c true and the colors to use , if applicable , the default implementation returns false */
2019-01-20 17:49:29 +08:00
virtual bool intPlotXYErrorIndicatorsGetColor ( JKQTPEnhancedPainter & painter , JKQTBasePlotter * parent , JKQTPGraph * parentGraph , int xColumn , int yColumn , int xErrorColumn , int yErrorColumn , JKQTPErrorPlotstyle xErrorStyle , JKQTPErrorPlotstyle yErrorStyle , int index , QColor & errorColor , QColor & errorFillColor ) override ;
2015-07-11 18:56:02 +08:00
} ;
2018-12-01 23:02:04 +08:00
2018-11-25 21:53:26 +08:00
/*! \brief This implements a step plot with values \f$ \left(x, f(x) \right) \f$
2019-01-13 01:53:16 +08:00
\ ingroup jkqtplotter_linesymbolgraphs
2015-07-11 18:56:02 +08:00
2018-11-25 21:53:26 +08:00
A step plot starts at \ f $ \ left ( x_ { i - 1 } , f ( x_ { i - 1 } ) \ right ) \ f $ and then goes on to
\ f $ \ left ( x_ { i } , f ( x_ { i - 1 } ) \ right ) \ f $ . There it raises immediately to
\ f $ \ left ( x_i , f ( x_i ) \ right ) \ f $ .
2015-07-11 18:56:02 +08:00
2018-11-25 21:53:26 +08:00
If you want the \ f $ x_i \ f $ values in the center of the steps , use
2019-01-20 17:49:29 +08:00
\ code JKQTPStepHorizontalGraph : : set_xCentered ( true ) \ endcode . In that case the steps
2018-11-25 21:53:26 +08:00
go from \ f $ \ left ( x_ { i - 1 } , f ( x_ { i - 1 } ) \ right ) \ f $ to \ f $ \ left ( x_ { i } - \ delta / 2 , f ( x_ { i - 1 } ) \ right ) \ f $ ,
then to \ f $ \ left ( x_ { i } - \ delta / 2 , f ( x_ { i } ) \ right ) \ f $ and finally
to \ f $ \ left ( x_ { i } , f ( x_ { i } ) \ right ) \ f $ where \ f $ \ delta = ( x_ { i } - x_ { i - 1 } ) \ f $ .
2015-07-11 18:56:02 +08:00
2019-01-20 17:49:29 +08:00
This diagram shows a plot with \ code JKQTPStepHorizontalGraph : : set_valuesCentered ( false ) \ endcode :
2018-11-25 21:53:26 +08:00
\ image html plot_stephorplot1 . png
2015-07-11 18:56:02 +08:00
2019-01-20 17:49:29 +08:00
This diagram shows a plot with \ code JKQTPStepHorizontalGraph : : set_valuesCentered ( true ) \ endcode :
2018-11-25 21:53:26 +08:00
\ image html plot_stephorplot2 . png
*/
2019-01-20 17:49:29 +08:00
class LIB_EXPORT JKQTPStepHorizontalGraph : public JKQTPXYGraph {
2018-11-25 21:53:26 +08:00
Q_OBJECT
public :
2015-07-11 18:56:02 +08:00
/** \brief class constructor */
2019-01-20 17:49:29 +08:00
JKQTPStepHorizontalGraph ( JKQTBasePlotter * parent = nullptr ) ;
2015-08-02 19:36:54 +08:00
/** \brief class constructor */
2019-01-20 23:15:10 +08:00
JKQTPStepHorizontalGraph ( JKQTPlotter * parent ) ;
2015-07-11 18:56:02 +08:00
/** \brief plots the graph to the plotter object specified as parent */
2018-12-28 05:52:00 +08:00
virtual void draw ( JKQTPEnhancedPainter & painter ) override ;
2015-07-11 18:56:02 +08:00
/** \brief plots a key marker inside the specified rectangle \a rect */
2018-12-28 05:52:00 +08:00
virtual void drawKeyMarker ( JKQTPEnhancedPainter & painter , QRectF & rect ) override ;
2015-07-11 18:56:02 +08:00
/** \brief returns the color to be used for the key label */
2018-12-28 05:52:00 +08:00
virtual QColor getKeyLabelColor ( ) override ;
2015-07-11 18:56:02 +08:00
2019-01-10 04:23:24 +08:00
/*! \brief sets the property color to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter color is : < BLOCKQUOTE > \ copydoc color < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see color for more information */
inline virtual void set_color ( const QColor & __value )
{
this - > color = __value ;
}
/*! \brief returns the property color.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter color is : < BLOCKQUOTE > \ copydoc color < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see color for more information */
inline virtual QColor get_color ( ) const
{
return this - > color ;
}
/*! \brief sets the property fillColor to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter fillColor is : < BLOCKQUOTE > \ copydoc fillColor < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see fillColor for more information */
inline virtual void set_fillColor ( const QColor & __value )
{
this - > fillColor = __value ;
}
/*! \brief returns the property fillColor.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter fillColor is : < BLOCKQUOTE > \ copydoc fillColor < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see fillColor for more information */
inline virtual QColor get_fillColor ( ) const
{
return this - > fillColor ;
}
/*! \brief sets the property fillStyle to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter fillStyle is : < BLOCKQUOTE > \ copydoc fillStyle < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see fillStyle for more information */
inline virtual void set_fillStyle ( const Qt : : BrushStyle & __value )
{
this - > fillStyle = __value ;
}
/*! \brief returns the property fillStyle.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter fillStyle is : < BLOCKQUOTE > \ copydoc fillStyle < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see fillStyle for more information */
inline virtual Qt : : BrushStyle get_fillStyle ( ) const
{
return this - > fillStyle ;
}
/*! \brief sets the property style to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter style is : < BLOCKQUOTE > \ copydoc style < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see style for more information */
inline virtual void set_style ( const Qt : : PenStyle & __value )
{
this - > style = __value ;
}
/*! \brief returns the property style.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter style is : < BLOCKQUOTE > \ copydoc style < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see style for more information */
inline virtual Qt : : PenStyle get_style ( ) const
{
return this - > style ;
}
/*! \brief sets the property lineWidth to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter lineWidth is : < BLOCKQUOTE > \ copydoc lineWidth < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see lineWidth for more information */
2019-01-26 03:16:04 +08:00
inline virtual void setLineWidth ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > lineWidth = __value ;
}
/*! \brief returns the property lineWidth.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter lineWidth is : < BLOCKQUOTE > \ copydoc lineWidth < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see lineWidth for more information */
2019-01-26 03:16:04 +08:00
inline virtual double getLineWidth ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > lineWidth ;
}
/*! \brief sets the property drawLine to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter drawLine is : < BLOCKQUOTE > \ copydoc drawLine < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see drawLine for more information */
inline virtual void set_drawLine ( bool __value )
{
this - > drawLine = __value ;
}
/*! \brief returns the property drawLine.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter drawLine is : < BLOCKQUOTE > \ copydoc drawLine < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see drawLine for more information */
inline virtual bool get_drawLine ( ) const
{
return this - > drawLine ;
}
/*! \brief sets the property fillCurve to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter fillCurve is : < BLOCKQUOTE > \ copydoc fillCurve < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see fillCurve for more information */
inline virtual void set_fillCurve ( bool __value )
{
this - > fillCurve = __value ;
}
/*! \brief returns the property fillCurve.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter fillCurve is : < BLOCKQUOTE > \ copydoc fillCurve < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see fillCurve for more information */
inline virtual bool get_fillCurve ( ) const
{
return this - > fillCurve ;
}
/*! \brief sets the property stepType to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter stepType is : < BLOCKQUOTE > \ copydoc stepType < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see stepType for more information */
2019-01-20 17:49:29 +08:00
inline virtual void set_stepType ( const JKQTPStepType & __value )
2019-01-10 04:23:24 +08:00
{
this - > stepType = __value ;
}
/*! \brief returns the property stepType.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter stepType is : < BLOCKQUOTE > \ copydoc stepType < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see stepType for more information */
2019-01-20 17:49:29 +08:00
inline virtual JKQTPStepType get_stepType ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > stepType ;
}
2015-07-11 18:56:02 +08:00
protected :
/** \brief color of the graph */
QColor color ;
/** \brief color of the graph fill */
QColor fillColor ;
/** \brief linestyle of the graph lines */
Qt : : PenStyle style ;
2019-01-20 23:15:10 +08:00
/** \brief width (pixels) of the graph, given in pt */
2015-07-11 18:56:02 +08:00
double lineWidth ;
/** \brief fill style, if the curve should be filled */
Qt : : BrushStyle fillStyle ;
/** \brief indicates whether to draw a line or not */
bool drawLine ;
/** \brief indicates whether to fill the space between the curve and the x-axis */
bool fillCurve ;
2018-12-07 04:41:35 +08:00
/** \brief specifies whether the steps elongate to the left, the right, or are centered around the \f$ x_i \f$ values. */
2019-01-20 17:49:29 +08:00
JKQTPStepType stepType ;
2015-07-11 18:56:02 +08:00
2019-01-26 03:16:04 +08:00
/** \brief which plot style to use from the parent plotter (via JKQTBasePlotter::getPlotStyle() and JKQTBasePlotter::getNextStyle() ) */
2015-07-11 18:56:02 +08:00
int parentPlotStyle ;
QBrush getBrush ( JKQTPEnhancedPainter & painter ) const ;
QPen getLinePen ( JKQTPEnhancedPainter & painter ) const ;
} ;
/*! \brief This implements a step plot with values \f$ \left(f(y), y \right) \f$
2019-01-13 01:53:16 +08:00
\ ingroup jkqtplotter_linesymbolgraphs
2015-07-11 18:56:02 +08:00
A step plot starts at \ f $ \ left ( f ( y_ { i - 1 } ) , x_ { i - 1 } \ right ) \ f $ and then goes on to
\ f $ \ left ( f ( y_ { i - 1 } ) , y_ { i } \ right ) \ f $ . There it raises immediately to
\ f $ \ left ( f ( y_i ) , y_i \ right ) \ f $ .
If you want the \ f $ y_i \ f $ values in the center of the steps , use
2019-01-20 17:49:29 +08:00
\ code JKQTPStepHorizontalGraph : : set_valuesCentered ( true ) \ endcode . In that case the steps
2015-07-11 18:56:02 +08:00
go from \ f $ \ left ( f ( y_ { i - 1 } ) , y_ { i - 1 } ) \ right ) \ f $ to \ f $ \ left ( f ( y_ { i - 1 } ) , y_ { i } - \ delta / 2 \ right ) \ f $ ,
then to \ f $ \ left ( f ( y_ { i } , y_ { i } - \ delta / 2 \ right ) \ f $ and finally
to \ f $ \ left ( f ( y_ { i } ) , y_ { i } \ right ) \ f $ where \ f $ \ delta = ( y_ { i } - y_ { i - 1 } ) \ f $ .
2019-01-20 17:49:29 +08:00
This diagram shows a plot with \ code JKQTPStepHorizontalGraph : : set_xCentered ( false ) \ endcode :
2015-07-11 18:56:02 +08:00
\ image html plot_stepverplot1 . png
2019-01-20 17:49:29 +08:00
This diagram shows a plot with \ code JKQTPStepHorizontalGraph : : set_xCentered ( true ) \ endcode :
2015-07-11 18:56:02 +08:00
\ image html plot_stepverplot2 . png
*/
2019-01-20 17:49:29 +08:00
class LIB_EXPORT JKQTPStepVerticalGraph : public JKQTPStepHorizontalGraph {
2015-07-11 18:56:02 +08:00
Q_OBJECT
public :
/** \brief class constructor */
2019-01-20 17:49:29 +08:00
JKQTPStepVerticalGraph ( JKQTBasePlotter * parent = nullptr ) ;
2015-08-02 19:36:54 +08:00
/** \brief class constructor */
2019-01-20 23:15:10 +08:00
JKQTPStepVerticalGraph ( JKQTPlotter * parent ) ;
2015-07-11 18:56:02 +08:00
/** \brief plots the graph to the plotter object specified as parent */
2018-12-28 05:52:00 +08:00
virtual void draw ( JKQTPEnhancedPainter & painter ) override ;
2015-07-11 18:56:02 +08:00
} ;
/*! \brief simply marks a range (and possibly a centerline) in a plot. This may be used to display e.g. mean +/- stddev
or a range of interest , or the range of good values , . . .
2019-01-13 01:53:16 +08:00
\ ingroup jkqtplotter_diverse
2015-07-11 18:56:02 +08:00
*/
2019-01-20 17:49:29 +08:00
class LIB_EXPORT JKQTPHorizontalRange : public JKQTPGraph {
2015-07-11 18:56:02 +08:00
Q_OBJECT
public :
/** \brief class constructor */
2019-01-20 17:49:29 +08:00
JKQTPHorizontalRange ( JKQTBasePlotter * parent = nullptr ) ;
2015-08-02 19:36:54 +08:00
/** \brief class constructor */
2019-01-20 23:15:10 +08:00
JKQTPHorizontalRange ( JKQTPlotter * parent ) ;
2015-07-11 18:56:02 +08:00
/** \brief plots the graph to the plotter object specified as parent */
2018-12-28 05:52:00 +08:00
virtual void draw ( JKQTPEnhancedPainter & painter ) override ;
2015-07-11 18:56:02 +08:00
/** \brief plots a key marker inside the specified rectangle \a rect */
2018-12-28 05:52:00 +08:00
virtual void drawKeyMarker ( JKQTPEnhancedPainter & painter , QRectF & rect ) override ;
2015-07-11 18:56:02 +08:00
/** \brief get the maximum and minimum x-value of the graph
*
* The result is given in the two parameters which are call - by - reference parameters !
*/
2018-12-28 05:52:00 +08:00
virtual bool getXMinMax ( double & minx , double & maxx , double & smallestGreaterZero ) override ;
2015-07-11 18:56:02 +08:00
/** \brief get the maximum and minimum y-value of the graph
*
* The result is given in the two parameters which are call - by - reference parameters !
*/
2018-12-28 05:52:00 +08:00
virtual bool getYMinMax ( double & miny , double & maxy , double & smallestGreaterZero ) override ;
2015-07-11 18:56:02 +08:00
/** \brief returns the color to be used for the key label */
2018-12-28 05:52:00 +08:00
virtual QColor getKeyLabelColor ( ) override ;
2015-07-11 18:56:02 +08:00
void setDrawCenterLineOnly ( ) ;
2019-01-10 04:23:24 +08:00
/*! \brief sets the property color to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter color is : < BLOCKQUOTE > \ copydoc color < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see color for more information */
inline virtual void set_color ( const QColor & __value )
{
this - > color = __value ;
}
/*! \brief returns the property color.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter color is : < BLOCKQUOTE > \ copydoc color < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see color for more information */
inline virtual QColor get_color ( ) const
{
return this - > color ;
}
/*! \brief sets the property fillColor to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter fillColor is : < BLOCKQUOTE > \ copydoc fillColor < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see fillColor for more information */
inline virtual void set_fillColor ( const QColor & __value )
{
this - > fillColor = __value ;
}
/*! \brief returns the property fillColor.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter fillColor is : < BLOCKQUOTE > \ copydoc fillColor < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see fillColor for more information */
inline virtual QColor get_fillColor ( ) const
{
return this - > fillColor ;
}
/*! \brief sets the property fillStyle to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter fillStyle is : < BLOCKQUOTE > \ copydoc fillStyle < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see fillStyle for more information */
inline virtual void set_fillStyle ( const Qt : : BrushStyle & __value )
{
this - > fillStyle = __value ;
}
/*! \brief returns the property fillStyle.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter fillStyle is : < BLOCKQUOTE > \ copydoc fillStyle < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see fillStyle for more information */
inline virtual Qt : : BrushStyle get_fillStyle ( ) const
{
return this - > fillStyle ;
}
/*! \brief sets the property style to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter style is : < BLOCKQUOTE > \ copydoc style < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see style for more information */
inline virtual void set_style ( const Qt : : PenStyle & __value )
{
this - > style = __value ;
}
/*! \brief returns the property style.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter style is : < BLOCKQUOTE > \ copydoc style < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see style for more information */
inline virtual Qt : : PenStyle get_style ( ) const
{
return this - > style ;
}
/*! \brief sets the property lineWidth to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter lineWidth is : < BLOCKQUOTE > \ copydoc lineWidth < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see lineWidth for more information */
2019-01-26 03:16:04 +08:00
inline virtual void setLineWidth ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > lineWidth = __value ;
}
/*! \brief returns the property lineWidth.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter lineWidth is : < BLOCKQUOTE > \ copydoc lineWidth < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see lineWidth for more information */
2019-01-26 03:16:04 +08:00
inline virtual double getLineWidth ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > lineWidth ;
}
/*! \brief sets the property centerColor to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter centerColor is : < BLOCKQUOTE > \ copydoc centerColor < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see centerColor for more information */
inline virtual void set_centerColor ( const QColor & __value )
{
this - > centerColor = __value ;
}
/*! \brief returns the property centerColor.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter centerColor is : < BLOCKQUOTE > \ copydoc centerColor < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see centerColor for more information */
inline virtual QColor get_centerColor ( ) const
{
return this - > centerColor ;
}
/*! \brief sets the property centerStyle to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter centerStyle is : < BLOCKQUOTE > \ copydoc centerStyle < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see centerStyle for more information */
inline virtual void set_centerStyle ( const Qt : : PenStyle & __value )
{
this - > centerStyle = __value ;
}
/*! \brief returns the property centerStyle.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter centerStyle is : < BLOCKQUOTE > \ copydoc centerStyle < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see centerStyle for more information */
inline virtual Qt : : PenStyle get_centerStyle ( ) const
{
return this - > centerStyle ;
}
/*! \brief sets the property centerLineWidth to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter centerLineWidth is : < BLOCKQUOTE > \ copydoc centerLineWidth < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see centerLineWidth for more information */
inline virtual void set_centerLineWidth ( double __value )
{
this - > centerLineWidth = __value ;
}
/*! \brief returns the property centerLineWidth.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter centerLineWidth is : < BLOCKQUOTE > \ copydoc centerLineWidth < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see centerLineWidth for more information */
inline virtual double get_centerLineWidth ( ) const
{
return this - > centerLineWidth ;
}
/*! \brief sets the property rangeMin to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter rangeMin is : < BLOCKQUOTE > \ copydoc rangeMin < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see rangeMin for more information */
inline virtual void set_rangeMin ( double __value )
{
this - > rangeMin = __value ;
}
/*! \brief returns the property rangeMin.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter rangeMin is : < BLOCKQUOTE > \ copydoc rangeMin < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see rangeMin for more information */
inline virtual double get_rangeMin ( ) const
{
return this - > rangeMin ;
}
/*! \brief sets the property rangeMax to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter rangeMax is : < BLOCKQUOTE > \ copydoc rangeMax < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see rangeMax for more information */
inline virtual void set_rangeMax ( double __value )
{
this - > rangeMax = __value ;
}
/*! \brief returns the property rangeMax.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter rangeMax is : < BLOCKQUOTE > \ copydoc rangeMax < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see rangeMax for more information */
inline virtual double get_rangeMax ( ) const
{
return this - > rangeMax ;
}
/*! \brief sets the property sizeMin to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter sizeMin is : < BLOCKQUOTE > \ copydoc sizeMin < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see sizeMin for more information */
inline virtual void set_sizeMin ( double __value )
{
this - > sizeMin = __value ;
}
/*! \brief returns the property sizeMin.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter sizeMin is : < BLOCKQUOTE > \ copydoc sizeMin < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see sizeMin for more information */
inline virtual double get_sizeMin ( ) const
{
return this - > sizeMin ;
}
/*! \brief sets the property sizeMax to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter sizeMax is : < BLOCKQUOTE > \ copydoc sizeMax < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see sizeMax for more information */
inline virtual void set_sizeMax ( double __value )
{
this - > sizeMax = __value ;
}
/*! \brief returns the property sizeMax.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter sizeMax is : < BLOCKQUOTE > \ copydoc sizeMax < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see sizeMax for more information */
inline virtual double get_sizeMax ( ) const
{
return this - > sizeMax ;
}
/*! \brief sets the property unlimitedSizeMin to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter unlimitedSizeMin is : < BLOCKQUOTE > \ copydoc unlimitedSizeMin < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see unlimitedSizeMin for more information */
inline virtual void set_unlimitedSizeMin ( bool __value )
{
this - > unlimitedSizeMin = __value ;
}
/*! \brief returns the property unlimitedSizeMin.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter unlimitedSizeMin is : < BLOCKQUOTE > \ copydoc unlimitedSizeMin < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see unlimitedSizeMin for more information */
inline virtual bool get_unlimitedSizeMin ( ) const
{
return this - > unlimitedSizeMin ;
}
/*! \brief sets the property unlimitedSizeMax to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter unlimitedSizeMax is : < BLOCKQUOTE > \ copydoc unlimitedSizeMax < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see unlimitedSizeMax for more information */
inline virtual void set_unlimitedSizeMax ( bool __value )
{
this - > unlimitedSizeMax = __value ;
}
/*! \brief returns the property unlimitedSizeMax.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter unlimitedSizeMax is : < BLOCKQUOTE > \ copydoc unlimitedSizeMax < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see unlimitedSizeMax for more information */
inline virtual bool get_unlimitedSizeMax ( ) const
{
return this - > unlimitedSizeMax ;
}
/*! \brief sets the property rangeCenter to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter rangeCenter is : < BLOCKQUOTE > \ copydoc rangeCenter < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see rangeCenter for more information */
inline virtual void set_rangeCenter ( double __value )
{
this - > rangeCenter = __value ;
}
/*! \brief returns the property rangeCenter.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter rangeCenter is : < BLOCKQUOTE > \ copydoc rangeCenter < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see rangeCenter for more information */
inline virtual double get_rangeCenter ( ) const
{
return this - > rangeCenter ;
}
/*! \brief sets the property plotCenterLine to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter plotCenterLine is : < BLOCKQUOTE > \ copydoc plotCenterLine < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see plotCenterLine for more information */
2019-01-26 03:16:04 +08:00
inline virtual void setPlotCenterLine ( bool __value )
2019-01-10 04:23:24 +08:00
{
this - > plotCenterLine = __value ;
}
/*! \brief returns the property plotCenterLine.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter plotCenterLine is : < BLOCKQUOTE > \ copydoc plotCenterLine < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see plotCenterLine for more information */
2019-01-26 03:16:04 +08:00
inline virtual bool getPlotCenterLine ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > plotCenterLine ;
}
/*! \brief sets the property invertedRange to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter invertedRange is : < BLOCKQUOTE > \ copydoc invertedRange < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see invertedRange for more information */
inline virtual void set_invertedRange ( bool __value )
{
this - > invertedRange = __value ;
}
/*! \brief returns the property invertedRange.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter invertedRange is : < BLOCKQUOTE > \ copydoc invertedRange < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see invertedRange for more information */
inline virtual bool get_invertedRange ( ) const
{
return this - > invertedRange ;
}
/*! \brief sets the property plotRange to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter plotRange is : < BLOCKQUOTE > \ copydoc plotRange < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see plotRange for more information */
2019-01-26 03:16:04 +08:00
inline virtual void setPlotRange ( bool __value )
2019-01-10 04:23:24 +08:00
{
this - > plotRange = __value ;
}
/*! \brief returns the property plotRange.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter plotRange is : < BLOCKQUOTE > \ copydoc plotRange < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see plotRange for more information */
2019-01-26 03:16:04 +08:00
inline virtual bool getPlotRange ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > plotRange ;
}
/*! \brief sets the property fillRange to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter fillRange is : < BLOCKQUOTE > \ copydoc fillRange < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see fillRange for more information */
inline virtual void set_fillRange ( bool __value )
{
this - > fillRange = __value ;
}
/*! \brief returns the property fillRange.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter fillRange is : < BLOCKQUOTE > \ copydoc fillRange < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see fillRange for more information */
inline virtual bool get_fillRange ( ) const
{
return this - > fillRange ;
}
/*! \brief sets the property plotRangeLines to the specified \a __value.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter plotRangeLines is : < BLOCKQUOTE > \ copydoc plotRangeLines < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see plotRangeLines for more information */
2019-01-26 03:16:04 +08:00
inline virtual void setPlotRangeLines ( bool __value )
2019-01-10 04:23:24 +08:00
{
this - > plotRangeLines = __value ;
}
/*! \brief returns the property plotRangeLines.
2019-01-25 05:49:10 +08:00
\ details Description of the parameter plotRangeLines is : < BLOCKQUOTE > \ copydoc plotRangeLines < / BLOCKQUOTE >
2019-01-10 04:23:24 +08:00
\ see plotRangeLines for more information */
2019-01-26 03:16:04 +08:00
inline virtual bool getPlotRangeLines ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > plotRangeLines ;
}
2015-07-11 18:56:02 +08:00
protected :
/** \brief min-value of range */
double rangeMin ;
/** \brief max-value of range */
double rangeMax ;
/** \brief where to plot the center line */
double rangeCenter ;
double sizeMin ;
double sizeMax ;
bool unlimitedSizeMin ;
bool unlimitedSizeMax ;
/** \brief indicates whether to plot a center line */
bool plotCenterLine ;
/** \brief if \c true, fills the parts outside the given range */
bool invertedRange ;
/** \brief if \c true, the range is plotted, if \c false, only the center line is plotted (if \a plotCenterLine is \c true ) */
bool plotRange ;
/** \brief if \c true, draws lines at the range borders \a color */
bool plotRangeLines ;
2019-01-08 04:00:56 +08:00
/** \brief if \c true, this fills the range with \a fillColor */
2015-07-11 18:56:02 +08:00
bool fillRange ;
/** \brief color of the graph */
QColor color ;
/** \brief color of the center line graph */
QColor centerColor ;
/** \brief color of the graph fill */
QColor fillColor ;
/** \brief linestyle of the graph lines */
Qt : : PenStyle style ;
/** \brief linestyle of the center line graph lines */
Qt : : PenStyle centerStyle ;
2019-01-20 23:15:10 +08:00
/** \brief width (pt) of the graph, given in pt */
2015-07-11 18:56:02 +08:00
double lineWidth ;
2019-01-20 23:15:10 +08:00
/** \brief width (pt) of the center line graph, given in pt */
2015-07-11 18:56:02 +08:00
double centerLineWidth ;
/** \brief fill style, if the curve should be filled */
Qt : : BrushStyle fillStyle ;
2019-01-26 03:16:04 +08:00
/** \brief which plot style to use from the parent plotter (via JKQTBasePlotter::getPlotStyle() and JKQTBasePlotter::getNextStyle() ) */
2015-07-11 18:56:02 +08:00
int parentPlotStyle ;
QBrush getBrush ( JKQTPEnhancedPainter & painter ) const ;
QPen getLinePen ( JKQTPEnhancedPainter & painter ) const ;
} ;
/*! \brief simply marks a range (and possibly a centerline) in a plot. This may be used to display e.g. mean +/- stddev
or a range of interest , or the range of good values , . . .
2019-01-13 01:53:16 +08:00
\ ingroup jkqtplotter_diverse
2015-07-11 18:56:02 +08:00
*/
2019-01-20 17:49:29 +08:00
class LIB_EXPORT JKQTPVerticalRange : public JKQTPHorizontalRange {
2015-07-11 18:56:02 +08:00
Q_OBJECT
public :
/** \brief class constructor */
2019-01-20 17:49:29 +08:00
JKQTPVerticalRange ( JKQTBasePlotter * parent = nullptr ) ;
2015-08-02 19:36:54 +08:00
/** \brief class constructor */
2019-01-20 23:15:10 +08:00
JKQTPVerticalRange ( JKQTPlotter * parent ) ;
2015-07-11 18:56:02 +08:00
/** \brief plots the graph to the plotter object specified as parent */
2018-12-28 05:52:00 +08:00
virtual void draw ( JKQTPEnhancedPainter & painter ) override ;
2015-07-11 18:56:02 +08:00
/** \brief plots a key marker inside the specified rectangle \a rect */
2018-12-28 05:52:00 +08:00
virtual void drawKeyMarker ( JKQTPEnhancedPainter & painter , QRectF & rect ) override ;
2015-07-11 18:56:02 +08:00
/** \brief get the maximum and minimum x-value of the graph
*
* The result is given in the two parameters which are call - by - reference parameters !
*/
2018-12-28 05:52:00 +08:00
virtual bool getXMinMax ( double & minx , double & maxx , double & smallestGreaterZero ) override ;
2015-07-11 18:56:02 +08:00
/** \brief get the maximum and minimum y-value of the graph
*
* The result is given in the two parameters which are call - by - reference parameters !
*/
2018-12-28 05:52:00 +08:00
virtual bool getYMinMax ( double & miny , double & maxy , double & smallestGreaterZero ) override ;
2015-07-11 18:56:02 +08:00
} ;
2018-12-19 00:13:18 +08:00
# endif // jkqtpgraphs_H