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
2019-02-08 00:24:46 +08:00
the Free Software Foundation , either version 2.1 of the License , or
2015-07-11 18:56:02 +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/>.
*/
# include <QString>
# include <QPainter>
# include <QPair>
2018-12-19 00:13:18 +08:00
# include "jkqtplotter/jkqtpgraphs.h"
2018-11-26 03:25:44 +08:00
# include "jkqtplottertools/jkqtptools.h"
# include "jkqtplottertools/jkqtp_imexport.h"
# include "jkqtmathtext/jkqtmathtext.h"
2015-07-11 18:56:02 +08:00
2018-12-19 00:13:18 +08:00
# ifndef jkqtpgraphsgeometric_H_INCLUDED
# define jkqtpgraphsgeometric_H_INCLUDED
2015-07-11 18:56:02 +08:00
2019-01-20 17:49:29 +08:00
/*! \brief This JKQTPPlotObject is used as base class for geometric drawing
2015-07-11 18:56:02 +08:00
elements that only consist of lines ( i . e . no filling of any kind is done )
\ ingroup jkqtplotter_geoplots
*/
2019-02-03 21:04:48 +08:00
class JKQTP_LIB_EXPORT JKQTPGeoBaseLine : public JKQTPPlotObject {
2015-07-11 18:56:02 +08:00
Q_OBJECT
public :
/*! \brief class contructor
\ param color color of drawing
\ param style line style of drawing
\ param lineWidth lineWidth of drawing
*/
2019-01-20 17:49:29 +08:00
explicit JKQTPGeoBaseLine ( QColor color , double lineWidth , Qt : : PenStyle style = Qt : : SolidLine , JKQTBasePlotter * parent = nullptr ) ;
2015-08-02 19:36:54 +08:00
/*! \brief class contructor
\ param color color of drawing
\ param style line style of drawing
\ param lineWidth lineWidth of drawing
*/
2019-01-20 23:15:10 +08:00
explicit JKQTPGeoBaseLine ( QColor color , double lineWidth , Qt : : PenStyle style , JKQTPlotter * parent ) ;
2015-08-02 19:36:54 +08:00
2015-07-11 18:56:02 +08:00
2019-02-08 00:24:46 +08:00
/*! \copydoc color
\ see see color for details */
2019-01-26 20:00:40 +08:00
inline virtual void setColor ( const QColor & __value )
2019-01-10 04:23:24 +08:00
{
this - > color = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc color
\ see see color for details */
2019-01-26 20:00:40 +08:00
inline virtual QColor getColor ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > color ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc style
\ see see style for details */
2019-01-26 20:00:40 +08:00
inline virtual void setStyle ( const Qt : : PenStyle & __value )
2019-01-10 04:23:24 +08:00
{
this - > style = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc style
\ see see style for details */
2019-01-26 20:00:40 +08:00
inline virtual Qt : : PenStyle getStyle ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > style ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc lineWidth
\ see see lineWidth for details */
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 ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc lineWidth
\ see see lineWidth for details */
2019-01-26 03:16:04 +08:00
inline virtual double getLineWidth ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > lineWidth ;
}
2015-07-11 18:56:02 +08:00
2019-01-08 04:00:56 +08:00
/** \brief sets the alpha-channel of the \a color (i.e. its transparency) */
virtual void setAlpha ( float alpha ) ;
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
protected :
/** \brief color of the graph */
QColor color ;
/** \brief linestyle of the graph lines */
Qt : : PenStyle style ;
/** \brief width (pixels) of the graph */
double lineWidth ;
/** \brief return a pen, that may be used for drawing */
QPen getPen ( JKQTPEnhancedPainter & painter ) ;
} ;
2019-01-20 17:49:29 +08:00
/*! \brief This JKQTPPlotObject is used as base class for geometric drawing
2015-07-11 18:56:02 +08:00
elements that only consist of lines ( i . e . no filling of any kind is done )
\ ingroup jkqtplotter_geoplots
*/
2019-02-03 21:04:48 +08:00
class JKQTP_LIB_EXPORT JKQTPGeoBaseFilled : public JKQTPGeoBaseLine {
2015-07-11 18:56:02 +08:00
Q_OBJECT
public :
/*! \brief class contructor
\ param color color of drawing
2019-01-08 04:00:56 +08:00
\ param fillColor color of the filling in the drawing
2015-07-11 18:56:02 +08:00
\ param style line style of drawing
\ param fillStyle filling style of the graph
\ param lineWidth lineWidth of drawing
*/
2019-01-20 17:49:29 +08:00
JKQTPGeoBaseFilled ( QColor color , QColor fillColor , double lineWidth , Qt : : PenStyle style = Qt : : SolidLine , Qt : : BrushStyle fillStyle = Qt : : SolidPattern , JKQTBasePlotter * parent = nullptr ) ;
2015-08-02 19:36:54 +08:00
/*! \brief class contructor
\ param color color of drawing
2019-01-08 04:00:56 +08:00
\ param fillColor color of the filling in the drawing
2015-08-02 19:36:54 +08:00
\ param style line style of drawing
\ param fillStyle filling style of the graph
\ param lineWidth lineWidth of drawing
*/
2019-01-20 23:15:10 +08:00
JKQTPGeoBaseFilled ( QColor color , QColor fillColor , double lineWidth , Qt : : PenStyle style , Qt : : BrushStyle fillStyle , JKQTPlotter * parent ) ;
2015-08-02 19:36:54 +08:00
/*! \brief class contructor
\ param color color of drawing
2019-01-08 04:00:56 +08:00
\ param fillColor color of the filling in the drawing
2015-08-02 19:36:54 +08:00
\ param style line style of drawing
\ param lineWidth lineWidth of drawing
*/
2019-01-20 23:15:10 +08:00
JKQTPGeoBaseFilled ( QColor color , QColor fillColor , double lineWidth , Qt : : PenStyle style , JKQTPlotter * parent ) ;
2015-08-02 19:36:54 +08:00
/*! \brief class contructor
\ param color color of drawing
2019-01-08 04:00:56 +08:00
\ param fillColor color of the filling in the drawing
2015-08-02 19:36:54 +08:00
\ param lineWidth lineWidth of drawing
*/
2019-01-20 23:15:10 +08:00
JKQTPGeoBaseFilled ( QColor color , QColor fillColor , double lineWidth , JKQTPlotter * parent ) ;
2015-08-02 19:36:54 +08:00
/*! \brief class contructor
\ param color color of drawing
2019-01-08 04:00:56 +08:00
\ param fillColor color of the filling in the drawing
2015-08-02 19:36:54 +08:00
*/
2019-01-20 23:15:10 +08:00
JKQTPGeoBaseFilled ( QColor color , QColor fillColor , JKQTPlotter * parent ) ;
2015-07-11 18:56:02 +08:00
2019-02-08 00:24:46 +08:00
/*! \copydoc fillColor
\ see see fillColor for details */
2019-01-26 20:00:40 +08:00
inline virtual void setFillColor ( const QColor & __value )
2019-01-10 04:23:24 +08:00
{
this - > fillColor = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc fillColor
\ see see fillColor for details */
2019-01-26 20:00:40 +08:00
inline virtual QColor getFillColor ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > fillColor ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc fillStyle
\ see see fillStyle for details */
2019-01-26 20:00:40 +08:00
inline virtual void setFillStyle ( const Qt : : BrushStyle & __value )
2019-01-10 04:23:24 +08:00
{
this - > fillStyle = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc fillStyle
\ see see fillStyle for details */
2019-01-26 20:00:40 +08:00
inline virtual Qt : : BrushStyle getFillStyle ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > fillStyle ;
}
2015-07-11 18:56:02 +08:00
2019-01-08 04:00:56 +08:00
/** \brief sets the alpha-channel of the \a color and \a fillColor (i.e. its transparency) to the same value */
virtual void setAlpha ( float alpha ) override ;
/** \brief sets the alpha-channel of the \a color and \a fillColor (i.e. its transparency) */
virtual void setAlpha ( float alphaLine , float alphaFill ) ;
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
protected :
/** \brief filling color of the graph */
QColor fillColor ;
/** \brief fill style for the curve */
Qt : : BrushStyle fillStyle ;
/** \brief return a brush that may be used for drawing */
QBrush getBrush ( JKQTPEnhancedPainter & painter ) ;
} ;
2019-01-20 17:49:29 +08:00
/*! \brief This virtual JKQTPGraph descendent may be used to display a single symbol (marker).
2019-01-08 04:00:56 +08:00
\ ingroup jkqtplotter_geoplots
*/
2019-02-03 21:04:48 +08:00
class JKQTP_LIB_EXPORT JKQTPGeoSymbol : public JKQTPPlotObject {
2019-01-08 04:00:56 +08:00
Q_OBJECT
public :
/*! \brief class contructor
\ param parent parent plotter widget
\ param x x - coordinate of symbol center
\ param y y - coordinate of symbol center
\ param symbol symbol type
\ param symbolSize size of the symbol in pt
\ param color color of drawing
\ param fillColor fill color of the symbol ( if filled )
*/
2019-01-20 17:49:29 +08:00
JKQTPGeoSymbol ( JKQTBasePlotter * parent , double x , double y , JKQTPGraphSymbols symbol = JKQTPCross , double symbolSize = 10 , QColor color = QColor ( " black " ) , QColor fillColor = QColor ( " grey " ) ) ;
2019-01-08 04:00:56 +08:00
/*! \brief class contructor
\ param parent parent plotter widget
\ param x x - coordinate of symbol center
\ param y y - coordinate of symbol center
\ param symbol symbol type
\ param symbolSize size of the symbol in pt
\ param color color of drawing
\ param fillColor fill color of the symbol ( if filled )
*/
2019-01-20 23:15:10 +08:00
JKQTPGeoSymbol ( JKQTPlotter * parent , double x , double y , JKQTPGraphSymbols symbol = JKQTPCross , double symbolSize = 10 , QColor color = QColor ( " black " ) , QColor fillColor = QColor ( " grey " ) ) ;
2019-01-08 04:00:56 +08:00
2019-02-08 00:24:46 +08:00
/*! \copydoc color
\ see see color for details */
2019-01-26 20:00:40 +08:00
inline virtual void setColor ( const QColor & __value )
2019-01-10 04:23:24 +08:00
{
this - > color = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc color
\ see see color for details */
2019-01-26 20:00:40 +08:00
inline virtual QColor getColor ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > color ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc fillColor
\ see see fillColor for details */
2019-01-26 20:00:40 +08:00
inline virtual void setFillColor ( const QColor & __value )
2019-01-10 04:23:24 +08:00
{
this - > fillColor = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc fillColor
\ see see fillColor for details */
2019-01-26 20:00:40 +08:00
inline virtual QColor getFillColor ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > fillColor ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc symbol
\ see see symbol for details */
2019-01-26 20:00:40 +08:00
inline virtual void setSymbol ( const JKQTPGraphSymbols & __value )
2019-01-10 04:23:24 +08:00
{
this - > symbol = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc symbol
\ see see symbol for details */
2019-01-26 20:00:40 +08:00
inline virtual JKQTPGraphSymbols getSymbol ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > symbol ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc symbolSize
\ see see symbolSize for details */
2019-01-26 20:00:40 +08:00
inline virtual void setSymbolSize ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > symbolSize = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc symbolSize
\ see see symbolSize for details */
2019-01-26 20:00:40 +08:00
inline virtual double getSymbolSize ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > symbolSize ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc symbolWidth
\ see see symbolWidth for details */
2019-01-26 20:00:40 +08:00
inline virtual void setSymbolWidth ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > symbolWidth = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc symbolWidth
\ see see symbolWidth for details */
2019-01-26 20:00:40 +08:00
inline virtual double getSymbolWidth ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > symbolWidth ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc x
\ see see x for details */
2019-01-26 20:00:40 +08:00
inline virtual void setX ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > x = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc x
\ see see x for details */
2019-01-26 20:00:40 +08:00
inline virtual double getX ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > x ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc y
\ see see y for details */
2019-01-26 20:00:40 +08:00
inline virtual void setY ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > y = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc y
\ see see y for details */
2019-01-26 20:00:40 +08:00
inline virtual double getY ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > y ;
}
2019-01-08 04:00:56 +08:00
2019-01-20 17:49:29 +08:00
/** \copydoc JKQTPGraph::getXMinMax() */
2019-01-08 04:00:56 +08:00
virtual bool getXMinMax ( double & minx , double & maxx , double & smallestGreaterZero ) ;
2019-01-20 17:49:29 +08:00
/** \copydoc JKQTPGraph::getYMinMax() */
2019-01-08 04:00:56 +08:00
virtual bool getYMinMax ( double & miny , double & maxy , double & smallestGreaterZero ) ;
/** \brief plots the graph to the plotter object specified as parent */
virtual void draw ( JKQTPEnhancedPainter & painter ) ;
/** \brief plots a key marker inside the specified rectangle \a rect */
virtual void drawKeyMarker ( JKQTPEnhancedPainter & painter , QRectF & rect ) ;
/** \brief returns the color to be used for the key label */
2019-02-03 21:04:48 +08:00
virtual QColor getKeyLabelColor ( ) override ;
2019-01-08 04:00:56 +08:00
protected :
double x , y ;
/** \brief color of the graph */
QColor color ;
/** \brief fill-color of the graph */
QColor fillColor ;
/** \brief size of the symbol in pt */
double symbolSize ;
/** \brief width of the symbol lines in pt */
double symbolWidth ;
/** \brief type of the symbol */
2019-01-20 17:49:29 +08:00
JKQTPGraphSymbols symbol ;
2019-01-08 04:00:56 +08:00
} ;
2019-01-20 17:49:29 +08:00
/*! \brief This JKQTPPlotObject is used to display text. It uses the JKQTMathText
2015-07-11 18:56:02 +08:00
class in order to display LaTeX formulas .
\ ingroup jkqtplotter_geoplots
*/
2019-02-03 21:04:48 +08:00
class JKQTP_LIB_EXPORT JKQTPGeoText : public JKQTPPlotObject {
2015-07-11 18:56:02 +08:00
Q_OBJECT
public :
/*! \brief class contructor
\ param parent parent plotter widget
\ param x x - coordinate of text
\ param y y - coordinate of text
\ param text the text to display
\ param color color of drawing
\ param fontSize base font size of text
*/
2019-01-26 19:28:44 +08:00
JKQTPGeoText ( JKQTBasePlotter * parent , double x , double y , const QString & text , double fontSize = 10 , QColor color = QColor ( " black " ) ) ;
2015-08-02 19:36:54 +08:00
/*! \brief class contructor
\ param parent parent plotter widget
\ param x x - coordinate of text
\ param y y - coordinate of text
\ param text the text to display
\ param color color of drawing
\ param fontSize base font size of text
*/
2019-01-26 19:28:44 +08:00
JKQTPGeoText ( JKQTPlotter * parent , double x , double y , const QString & text , double fontSize = 10 , QColor color = QColor ( " black " ) ) ;
2015-07-11 18:56:02 +08:00
2019-02-08 00:24:46 +08:00
/*! \copydoc color
\ see see color for details */
2019-01-26 20:00:40 +08:00
inline virtual void setColor ( const QColor & __value )
2019-01-10 04:23:24 +08:00
{
this - > color = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc color
\ see see color for details */
2019-01-26 20:00:40 +08:00
inline virtual QColor getColor ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > color ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc text
\ see see text for details */
2019-01-26 20:00:40 +08:00
inline virtual void setText ( const QString & __value )
2019-01-10 04:23:24 +08:00
{
this - > text = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc fontName
\ see see fontName for details */
inline virtual void setFontName ( const QString & __value )
{
this - > fontName = __value ;
}
/*! \copydoc text
\ see see text for details */
2019-01-26 20:00:40 +08:00
inline virtual QString getText ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > text ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc fontName
\ see see fontName for details */
inline virtual QString getFontName ( ) const
{
return this - > fontName ;
}
/*! \copydoc fontSize
\ see see fontSize for details */
2019-01-26 03:16:04 +08:00
inline virtual void setFontSize ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > fontSize = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc fontSize
\ see see fontSize for details */
2019-01-26 03:16:04 +08:00
inline virtual double getFontSize ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > fontSize ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc x
\ see see x for details */
2019-01-26 20:00:40 +08:00
inline virtual void setX ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > x = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc x
\ see see x for details */
2019-01-26 20:00:40 +08:00
inline virtual double getX ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > x ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc y
\ see see y for details */
2019-01-26 20:00:40 +08:00
inline virtual void setY ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > y = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc y
\ see see y for details */
2019-01-26 20:00:40 +08:00
inline virtual double getY ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > y ;
}
2015-07-11 18:56:02 +08:00
2019-01-20 17:49:29 +08:00
/** \copydoc JKQTPPlotObject::getXMinMax() */
2018-12-28 05:52:00 +08:00
virtual bool getXMinMax ( double & minx , double & maxx , double & smallestGreaterZero ) override ;
2019-01-20 17:49:29 +08:00
/** \copydoc JKQTPPlotObject::getYMinMax() */
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 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
protected :
double x , y ;
/** \brief color of the graph */
QColor color ;
/** \brief base font size of text */
double fontSize ;
/** \brief the text to display */
2019-02-08 00:24:46 +08:00
QString fontName ;
/** \brief the text to display */
2015-07-11 18:56:02 +08:00
QString text ;
/** \brief return a pen, that may be used for drawing */
QPen getPen ( JKQTPEnhancedPainter & painter ) ;
} ;
2019-01-20 17:49:29 +08:00
/*! \brief This JKQTPPlotObject is used to draw a line
2015-07-11 18:56:02 +08:00
\ ingroup jkqtplotter_geoplots
\ image html plot_geoline . png
*/
2019-02-03 21:04:48 +08:00
class JKQTP_LIB_EXPORT JKQTPGeoLine : public JKQTPGeoBaseLine {
2015-07-11 18:56:02 +08:00
Q_OBJECT
public :
/*! \brief class constructor
\ param parent the parent plotter class
\ param x1 x - coordinate of first point of line
\ param y1 y - coordinate of first point of line
\ param x2 x - coordinate of second point of line
\ param y2 y - coordinate of second point of line
\ param color color of line
\ param lineWidth width of line
\ param style line style
*/
2019-01-20 17:49:29 +08:00
JKQTPGeoLine ( JKQTBasePlotter * parent , double x1 , double y1 , double x2 , double y2 , QColor color = QColor ( " black " ) , double lineWidth = 1 , Qt : : PenStyle style = Qt : : SolidLine ) ;
2015-08-02 19:36:54 +08:00
/*! \brief class constructor
\ param parent the parent plotter class
\ param x1 x - coordinate of first point of line
\ param y1 y - coordinate of first point of line
\ param x2 x - coordinate of second point of line
\ param y2 y - coordinate of second point of line
\ param color color of line
\ param lineWidth width of line
\ param style line style
*/
2019-01-20 23:15:10 +08:00
JKQTPGeoLine ( JKQTPlotter * parent , double x1 , double y1 , double x2 , double y2 , QColor color = QColor ( " black " ) , double lineWidth = 1 , Qt : : PenStyle style = Qt : : SolidLine ) ;
2015-07-11 18:56:02 +08:00
2019-01-20 17:49:29 +08:00
/** \copydoc JKQTPPlotObject::getXMinMax() */
2018-12-28 05:52:00 +08:00
virtual bool getXMinMax ( double & minx , double & maxx , double & smallestGreaterZero ) override ;
2019-01-20 17:49:29 +08:00
/** \copydoc JKQTPPlotObject::getYMinMax() */
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 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
2019-02-08 00:24:46 +08:00
/*! \copydoc x1
\ see see x1 for details */
2019-01-26 20:00:40 +08:00
inline virtual void setX1 ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > x1 = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc x1
\ see see x1 for details */
2019-01-26 20:00:40 +08:00
inline virtual double getX1 ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > x1 ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc y1
\ see see y1 for details */
2019-01-26 20:00:40 +08:00
inline virtual void setY1 ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > y1 = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc y1
\ see see y1 for details */
2019-01-26 20:00:40 +08:00
inline virtual double getY1 ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > y1 ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc x2
\ see see x2 for details */
2019-01-26 20:00:40 +08:00
inline virtual void setX2 ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > x2 = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc x2
\ see see x2 for details */
2019-01-26 20:00:40 +08:00
inline virtual double getX2 ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > x2 ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc y2
\ see see y2 for details */
2019-01-26 20:00:40 +08:00
inline virtual void setY2 ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > y2 = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc y2
\ see see y2 for details */
2019-01-26 20:00:40 +08:00
inline virtual double getY2 ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > y2 ;
}
2015-07-11 18:56:02 +08:00
protected :
double x1 , y1 , x2 , y2 ;
} ;
2019-01-20 17:49:29 +08:00
/*! \brief This JKQTPPlotObject is used to draw an infinite line
2015-07-11 18:56:02 +08:00
\ ingroup jkqtplotter_geoplots
an infinite line has a starting point and then goes on in a given direction
until the end of the plotting range .
\ image html plot_geoinfiniteline . png
*/
2019-02-03 21:04:48 +08:00
class JKQTP_LIB_EXPORT JKQTPGeoInfiniteLine : public JKQTPGeoBaseLine {
2015-07-11 18:56:02 +08:00
Q_OBJECT
public :
/*! \brief class constructor
\ param parent the parent plotter class
\ param x x - coordinate of start point of line
\ param y y - coordinate of start point of line
\ param dx x - direction of the line
\ param dy y - direction of the line
\ param color color of line
\ param lineWidth width of line
\ param style line style
*/
2019-01-20 17:49:29 +08:00
JKQTPGeoInfiniteLine ( JKQTBasePlotter * parent , double x , double y , double dx , double dy , QColor color = QColor ( " black " ) , double lineWidth = 1 , Qt : : PenStyle style = Qt : : SolidLine ) ;
2015-08-02 19:36:54 +08:00
/*! \brief class constructor
\ param parent the parent plotter class
\ param x x - coordinate of start point of line
\ param y y - coordinate of start point of line
\ param dx x - direction of the line
\ param dy y - direction of the line
\ param color color of line
\ param lineWidth width of line
\ param style line style
*/
2019-01-20 23:15:10 +08:00
JKQTPGeoInfiniteLine ( JKQTPlotter * parent , double x , double y , double dx , double dy , QColor color = QColor ( " black " ) , double lineWidth = 1 , Qt : : PenStyle style = Qt : : SolidLine ) ;
2015-07-11 18:56:02 +08:00
2019-01-20 17:49:29 +08:00
/** \copydoc JKQTPPlotObject::getXMinMax() */
2018-12-28 05:52:00 +08:00
virtual bool getXMinMax ( double & minx , double & maxx , double & smallestGreaterZero ) override ;
2019-01-20 17:49:29 +08:00
/** \copydoc JKQTPPlotObject::getYMinMax() */
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 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
2019-02-08 00:24:46 +08:00
/*! \copydoc x
\ see see x for details */
2019-01-26 20:00:40 +08:00
inline virtual void setX ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > x = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc x
\ see see x for details */
2019-01-26 20:00:40 +08:00
inline virtual double getX ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > x ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc y
\ see see y for details */
2019-01-26 20:00:40 +08:00
inline virtual void setY ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > y = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc y
\ see see y for details */
2019-01-26 20:00:40 +08:00
inline virtual double getY ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > y ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc dx
\ see see dx for details */
2019-01-26 20:00:40 +08:00
inline virtual void setDx ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > dx = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc dx
\ see see dx for details */
2019-01-26 20:00:40 +08:00
inline virtual double getDx ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > dx ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc dy
\ see see dy for details */
2019-01-26 20:00:40 +08:00
inline virtual void setDy ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > dy = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc dy
\ see see dy for details */
2019-01-26 20:00:40 +08:00
inline virtual double getDy ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > dy ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc two_sided
\ see see two_sided for details */
2019-01-26 20:00:40 +08:00
inline virtual void setTwoSided ( bool __value )
2019-01-10 04:23:24 +08:00
{
this - > two_sided = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc two_sided
\ see see two_sided for details */
2019-01-26 20:00:40 +08:00
inline virtual bool getTwoSided ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > two_sided ;
}
2015-07-11 18:56:02 +08:00
protected :
double x , y , dx , dy ;
/** \brief indicates whether the line ends at the given point \f$ (x,y) \f$ (false, default),
* or is infinite in both directions ( true ) */
bool two_sided ;
} ;
2019-01-20 17:49:29 +08:00
/*! \brief This JKQTPPlotObject is used to draw a poly line
2015-07-11 18:56:02 +08:00
\ ingroup jkqtplotter_geoplots
\ image html plot_geolines . png
*/
2019-02-03 21:04:48 +08:00
class JKQTP_LIB_EXPORT JKQTPGeoPolyLines : public JKQTPGeoBaseLine {
2015-07-11 18:56:02 +08:00
Q_OBJECT
public :
/*! \brief class constructor
\ param parent the parent plotter class
2019-01-08 04:00:56 +08:00
\ param points points on the polygon
2015-07-11 18:56:02 +08:00
\ param color color of line
\ param lineWidth width of line
\ param style line style
*/
2019-01-20 17:49:29 +08:00
JKQTPGeoPolyLines ( JKQTBasePlotter * parent , const QVector < QPointF > & points , QColor color = QColor ( " black " ) , double lineWidth = 1 , Qt : : PenStyle style = Qt : : SolidLine ) ;
2015-08-02 19:36:54 +08:00
/*! \brief class constructor
\ param parent the parent plotter class
2019-01-08 04:00:56 +08:00
\ param points points on the polygon
\ param color color of line
\ param lineWidth width of line
\ param style line style
*/
2019-01-20 23:15:10 +08:00
JKQTPGeoPolyLines ( JKQTPlotter * parent , const QVector < QPointF > & points , QColor color = QColor ( " black " ) , double lineWidth = 1 , Qt : : PenStyle style = Qt : : SolidLine ) ;
2019-01-08 04:00:56 +08:00
/*! \brief class constructor
\ param parent the parent plotter class
\ param points points on the polygon
\ param color color of line
\ param lineWidth width of line
\ param style line style
*/
2019-01-20 17:49:29 +08:00
JKQTPGeoPolyLines ( JKQTBasePlotter * parent , QColor color = QColor ( " black " ) , double lineWidth = 1 , Qt : : PenStyle style = Qt : : SolidLine ) ;
2019-01-08 04:00:56 +08:00
/*! \brief class constructor
\ param parent the parent plotter class
\ param points points on the polygon
2015-08-02 19:36:54 +08:00
\ param color color of line
\ param lineWidth width of line
\ param style line style
*/
2019-01-20 23:15:10 +08:00
JKQTPGeoPolyLines ( JKQTPlotter * parent , QColor color = QColor ( " black " ) , double lineWidth = 1 , Qt : : PenStyle style = Qt : : SolidLine ) ;
2015-07-11 18:56:02 +08:00
2019-01-20 17:49:29 +08:00
/** \copydoc JKQTPPlotObject::getXMinMax() */
2018-12-28 05:52:00 +08:00
virtual bool getXMinMax ( double & minx , double & maxx , double & smallestGreaterZero ) override ;
2019-01-20 17:49:29 +08:00
/** \copydoc JKQTPPlotObject::getYMinMax() */
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 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
2019-02-08 00:24:46 +08:00
/*! \copydoc points
\ see see points for details */
2019-01-26 20:00:40 +08:00
inline virtual void setPoints ( const QVector < QPointF > & __value )
2019-01-10 04:23:24 +08:00
{
this - > points = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc points
\ see see points for details */
2019-01-26 20:00:40 +08:00
inline virtual QVector < QPointF > getPoints ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > points ;
}
2015-07-11 18:56:02 +08:00
/** \brief append a point to the polygon */
inline void appendPoint ( const QPointF & p ) {
points . append ( p ) ;
2018-12-28 05:52:00 +08:00
}
2015-07-11 18:56:02 +08:00
/** \brief append a point to the polygon */
inline void appendPoint ( const double x , const double y ) {
points . append ( QPointF ( x , y ) ) ;
2018-12-28 05:52:00 +08:00
}
2015-07-11 18:56:02 +08:00
protected :
QVector < QPointF > points ;
} ;
2019-01-20 17:49:29 +08:00
/*! \brief This JKQTPPlotObject is used to draw a rectangle
2015-07-11 18:56:02 +08:00
\ ingroup jkqtplotter_geoplots
\ image html plot_georectangle . png
*/
2019-02-03 21:04:48 +08:00
class JKQTP_LIB_EXPORT JKQTPGeoRectangle : public JKQTPGeoBaseFilled {
2015-07-11 18:56:02 +08:00
Q_OBJECT
public :
/*! \brief class constructor
\ param parent the parent plotter class
\ param x x - coordinate of center of rectangle
\ param y y - coordinate of center of rectangle
\ param width width of rectangle
\ param height of rectangle
\ param color color of line
\ param lineWidth width of line
\ param style line style
\ param fillColor filling color of rectangle
\ param fillStyle filling style of rectangle
*/
2019-01-20 17:49:29 +08:00
JKQTPGeoRectangle ( JKQTBasePlotter * parent , double x , double y , double width , double height , QColor color = QColor ( " black " ) , double lineWidth = 1 , Qt : : PenStyle style = Qt : : SolidLine , QColor fillColor = QColor ( " transparent " ) , Qt : : BrushStyle fillStyle = Qt : : SolidPattern ) ;
2015-08-02 19:36:54 +08:00
/*! \brief class constructor
\ param parent the parent plotter class
\ param x x - coordinate of center of rectangle
\ param y y - coordinate of center of rectangle
\ param width width of rectangle
\ param height of rectangle
\ param color color of line
\ param lineWidth width of line
\ param style line style
\ param fillColor filling color of rectangle
\ param fillStyle filling style of rectangle
*/
2019-01-20 23:15:10 +08:00
JKQTPGeoRectangle ( JKQTPlotter * parent , double x , double y , double width , double height , QColor color = QColor ( " black " ) , double lineWidth = 1 , Qt : : PenStyle style = Qt : : SolidLine , QColor fillColor = QColor ( " transparent " ) , Qt : : BrushStyle fillStyle = Qt : : SolidPattern ) ;
2019-01-08 04:00:56 +08:00
/*! \brief class constructor
\ param parent the parent plotter class
\ param x x - coordinate of center of rectangle
\ param y y - coordinate of center of rectangle
\ param width width of rectangle
\ param height of rectangle
\ param angle rotation angle of the rectangle
\ param color color of line
\ param lineWidth width of line
\ param style line style
\ param fillColor filling color of rectangle
\ param fillStyle filling style of rectangle
*/
2019-01-20 17:49:29 +08:00
JKQTPGeoRectangle ( JKQTBasePlotter * parent , double x , double y , double width , double height , double angle , QColor color = QColor ( " black " ) , double lineWidth = 1 , Qt : : PenStyle style = Qt : : SolidLine , QColor fillColor = QColor ( " transparent " ) , Qt : : BrushStyle fillStyle = Qt : : SolidPattern ) ;
2019-01-08 04:00:56 +08:00
/*! \brief class constructor
\ param parent the parent plotter class
\ param x x - coordinate of center of rectangle
\ param y y - coordinate of center of rectangle
\ param width width of rectangle
\ param height of rectangle
\ param angle rotation angle of the rectangle
\ param color color of line
\ param lineWidth width of line
\ param style line style
\ param fillColor filling color of rectangle
\ param fillStyle filling style of rectangle
*/
2019-01-20 23:15:10 +08:00
JKQTPGeoRectangle ( JKQTPlotter * parent , double x , double y , double width , double height , double angle , QColor color = QColor ( " black " ) , double lineWidth = 1 , Qt : : PenStyle style = Qt : : SolidLine , QColor fillColor = QColor ( " transparent " ) , Qt : : BrushStyle fillStyle = Qt : : SolidPattern ) ;
2019-01-08 04:00:56 +08:00
/*! \brief class constructor
\ param parent the parent plotter class
\ param bottomleft bottom left corner of rectangle
\ param topright top right corner of rectangle
\ param color color of line
\ param lineWidth width of line
\ param style line style
\ param fillColor filling color of rectangle
\ param fillStyle filling style of rectangle
*/
2019-01-20 17:49:29 +08:00
JKQTPGeoRectangle ( JKQTBasePlotter * parent , QPointF bottomleft , QPointF topright , QColor color = QColor ( " black " ) , double lineWidth = 1 , Qt : : PenStyle style = Qt : : SolidLine , QColor fillColor = QColor ( " transparent " ) , Qt : : BrushStyle fillStyle = Qt : : SolidPattern ) ;
2019-01-08 04:00:56 +08:00
/*! \brief class constructor
\ param parent the parent plotter class
\ param bottomleft bottom left corner of rectangle
\ param topright top right corner of rectangle
\ param color color of line
\ param lineWidth width of line
\ param style line style
\ param fillColor filling color of rectangle
\ param fillStyle filling style of rectangle
*/
2019-01-20 23:15:10 +08:00
JKQTPGeoRectangle ( JKQTPlotter * parent , QPointF bottomleft , QPointF topright , QColor color = QColor ( " black " ) , double lineWidth = 1 , Qt : : PenStyle style = Qt : : SolidLine , QColor fillColor = QColor ( " transparent " ) , Qt : : BrushStyle fillStyle = Qt : : SolidPattern ) ;
2015-07-11 18:56:02 +08:00
2019-01-20 17:49:29 +08:00
/** \copydoc JKQTPPlotObject::getXMinMax() */
2018-12-28 05:52:00 +08:00
virtual bool getXMinMax ( double & minx , double & maxx , double & smallestGreaterZero ) override ;
2019-01-20 17:49:29 +08:00
/** \copydoc JKQTPPlotObject::getYMinMax() */
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 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
2019-02-08 00:24:46 +08:00
/*! \copydoc x
\ see see x for details */
2019-01-26 20:00:40 +08:00
inline virtual void setX ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > x = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc x
\ see see x for details */
2019-01-26 20:00:40 +08:00
inline virtual double getX ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > x ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc y
\ see see y for details */
2019-01-26 20:00:40 +08:00
inline virtual void setY ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > y = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc y
\ see see y for details */
2019-01-26 20:00:40 +08:00
inline virtual double getY ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > y ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc width
\ see see width for details */
2019-01-26 20:00:40 +08:00
inline virtual void setWidth ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > width = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc width
\ see see width for details */
2019-01-26 20:00:40 +08:00
inline virtual double getWidth ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > width ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc height
\ see see height for details */
2019-01-26 20:00:40 +08:00
inline virtual void setHeight ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > height = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc height
\ see see height for details */
2019-01-26 20:00:40 +08:00
inline virtual double getHeight ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > height ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc angle
\ see see angle for details */
2019-01-26 20:00:40 +08:00
inline virtual void setAngle ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > angle = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc angle
\ see see angle for details */
2019-01-26 20:00:40 +08:00
inline virtual double getAngle ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > angle ;
}
2015-07-11 18:56:02 +08:00
2019-01-26 20:00:40 +08:00
void setBottomleftrectangle ( double x , double y , double width , double height ) ;
2015-07-11 18:56:02 +08:00
protected :
double x , y , width , height ;
/** \brief rotation angle of rectangle */
2019-01-08 04:00:56 +08:00
double angle ;
2015-07-11 18:56:02 +08:00
/** \brief returns the transformation matrix used for this rectangle */
QMatrix getMatrix ( ) ;
/** \brief returns a QPolygonF which represents the rectangle after rotation, but still in the world coordinate system, not in the screen/widget system */
QPolygonF getPolygon ( ) ;
} ;
2019-01-20 17:49:29 +08:00
/*! \brief This JKQTPPlotObject is used to draw a polygon
2015-07-11 18:56:02 +08:00
\ ingroup jkqtplotter_geoplots
\ image html plot_geopolygon . png
*/
2019-02-03 21:04:48 +08:00
class JKQTP_LIB_EXPORT JKQTPGeoPolygon : public JKQTPGeoBaseFilled {
2015-07-11 18:56:02 +08:00
Q_OBJECT
public :
/*! \brief class constructor
\ param parent the parent plotter class
2019-01-08 04:00:56 +08:00
\ param points points on the polygon
2015-07-11 18:56:02 +08:00
\ param color color of line
\ param lineWidth width of line
\ param style line style
2019-01-08 04:00:56 +08:00
\ param fillColor color of the filling
\ param fillStyle style of the filling
2015-07-11 18:56:02 +08:00
*/
2019-01-20 17:49:29 +08:00
JKQTPGeoPolygon ( JKQTBasePlotter * parent , const QVector < QPointF > & points , QColor color = QColor ( " black " ) , double lineWidth = 1 , Qt : : PenStyle style = Qt : : SolidLine , QColor fillColor = QColor ( " transparent " ) , Qt : : BrushStyle fillStyle = Qt : : SolidPattern ) ;
2019-01-08 04:00:56 +08:00
/*! \brief class constructor
\ param parent the parent plotter class
\ param points points on the polygon
\ param color color of line
\ param lineWidth width of line
\ param style line style
\ param fillColor color of the filling
\ param fillStyle style of the filling
*/
2019-01-20 23:15:10 +08:00
JKQTPGeoPolygon ( JKQTPlotter * parent , const QVector < QPointF > & points , QColor color = QColor ( " black " ) , double lineWidth = 1 , Qt : : PenStyle style = Qt : : SolidLine , QColor fillColor = QColor ( " transparent " ) , Qt : : BrushStyle fillStyle = Qt : : SolidPattern ) ;
2019-01-08 04:00:56 +08:00
2015-08-02 19:36:54 +08:00
/*! \brief class constructor
\ param parent the parent plotter class
\ param color color of line
\ param lineWidth width of line
\ param style line style
2019-01-08 04:00:56 +08:00
\ param fillColor color of the filling
\ param fillStyle style of the filling
2015-08-02 19:36:54 +08:00
*/
2019-01-20 17:49:29 +08:00
JKQTPGeoPolygon ( JKQTBasePlotter * parent , QColor color = QColor ( " black " ) , double lineWidth = 1 , Qt : : PenStyle style = Qt : : SolidLine , QColor fillColor = QColor ( " transparent " ) , Qt : : BrushStyle fillStyle = Qt : : SolidPattern ) ;
2019-01-08 04:00:56 +08:00
/*! \brief class constructor
\ param parent the parent plotter class
\ param color color of line
\ param lineWidth width of line
\ param style line style
\ param fillColor color of the filling
\ param fillStyle style of the filling
*/
2019-01-20 23:15:10 +08:00
JKQTPGeoPolygon ( JKQTPlotter * parent , QColor color = QColor ( " black " ) , double lineWidth = 1 , Qt : : PenStyle style = Qt : : SolidLine , QColor fillColor = QColor ( " transparent " ) , Qt : : BrushStyle fillStyle = Qt : : SolidPattern ) ;
2015-07-11 18:56:02 +08:00
2019-01-20 17:49:29 +08:00
/** \copydoc JKQTPPlotObject::getXMinMax() */
2018-12-28 05:52:00 +08:00
virtual bool getXMinMax ( double & minx , double & maxx , double & smallestGreaterZero ) override ;
2019-01-20 17:49:29 +08:00
/** \copydoc JKQTPPlotObject::getYMinMax() */
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 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
2019-02-08 00:24:46 +08:00
/*! \copydoc points
\ see see points for details */
2019-01-26 20:00:40 +08:00
inline virtual void setPoints ( const QVector < QPointF > & __value )
2019-01-10 04:23:24 +08:00
{
this - > points = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc points
\ see see points for details */
2019-01-26 20:00:40 +08:00
inline virtual QVector < QPointF > getPoints ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > points ;
}
2015-07-11 18:56:02 +08:00
/** \brief append a point to the polygon */
inline void appendPoint ( const QPointF & p ) {
points . append ( p ) ;
2018-12-28 05:52:00 +08:00
}
2015-07-11 18:56:02 +08:00
/** \brief append a point to the polygon */
inline void appendPoint ( const double x , const double y ) {
points . append ( QPointF ( x , y ) ) ;
2018-12-28 05:52:00 +08:00
}
2015-07-11 18:56:02 +08:00
protected :
QVector < QPointF > points ;
} ;
2019-01-20 17:49:29 +08:00
/*! \brief This JKQTPPlotObject is used to draw an ellipse
2015-07-11 18:56:02 +08:00
\ ingroup jkqtplotter_geoplots
\ image html plot_geoellipse . png
\ see < a href = " http://www.codeguru.com/cpp/g-m/gdi/article.php/c131 " > http : //www.codeguru.com/cpp/g-m/gdi/article.php/c131</a> and
< a href = " http://en.wikipedia.org/wiki/Ellipse#General_parametric_form " > http : //en.wikipedia.org/wiki/Ellipse#General_parametric_form</a>
*/
2019-02-03 21:04:48 +08:00
class JKQTP_LIB_EXPORT JKQTPGeoEllipse : public JKQTPGeoRectangle {
2015-07-11 18:56:02 +08:00
Q_OBJECT
public :
/*! \brief class constructor
\ param parent the parent plotter class
\ param x x - coordinate of center of ellipse
\ param y y - coordinate of center of ellipse
\ param width width of ellipse ( 2 * half axis )
\ param height of ellipse ( 2 * half axis )
\ param color color of line
\ param lineWidth width of line
\ param style line style
\ param fillColor filling color of ellipse
\ param fillStyle filling style of ellipse
*/
2019-01-20 17:49:29 +08:00
JKQTPGeoEllipse ( JKQTBasePlotter * parent , double x , double y , double width , double height , QColor color = QColor ( " black " ) , double lineWidth = 1 , Qt : : PenStyle style = Qt : : SolidLine , QColor fillColor = QColor ( " transparent " ) , Qt : : BrushStyle fillStyle = Qt : : SolidPattern ) ;
2015-07-11 18:56:02 +08:00
2015-08-02 19:36:54 +08:00
/*! \brief class constructor
\ param parent the parent plotter class
\ param x x - coordinate of center of ellipse
\ param y y - coordinate of center of ellipse
\ param width width of ellipse ( 2 * half axis )
\ param height of ellipse ( 2 * half axis )
\ param color color of line
\ param lineWidth width of line
\ param style line style
\ param fillColor filling color of ellipse
\ param fillStyle filling style of ellipse
*/
2019-01-20 23:15:10 +08:00
JKQTPGeoEllipse ( JKQTPlotter * parent , double x , double y , double width , double height , QColor color = QColor ( " black " ) , double lineWidth = 1 , Qt : : PenStyle style = Qt : : SolidLine , QColor fillColor = QColor ( " transparent " ) , Qt : : BrushStyle fillStyle = Qt : : SolidPattern ) ;
2019-01-08 04:00:56 +08:00
/*! \brief class constructor
\ param parent the parent plotter class
\ param x x - coordinate of center of rectangle
\ param y y - coordinate of center of rectangle
\ param width width of rectangle
\ param height of rectangle
\ param angle rotation angle of the rectangle
\ param color color of line
\ param lineWidth width of line
\ param style line style
\ param fillColor filling color of rectangle
\ param fillStyle filling style of rectangle
*/
2019-01-20 17:49:29 +08:00
JKQTPGeoEllipse ( JKQTBasePlotter * parent , double x , double y , double width , double height , double angle , QColor color = QColor ( " black " ) , double lineWidth = 1 , Qt : : PenStyle style = Qt : : SolidLine , QColor fillColor = QColor ( " transparent " ) , Qt : : BrushStyle fillStyle = Qt : : SolidPattern ) ;
2019-01-08 04:00:56 +08:00
/*! \brief class constructor
\ param parent the parent plotter class
\ param x x - coordinate of center of rectangle
\ param y y - coordinate of center of rectangle
\ param width width of rectangle
\ param height of rectangle
\ param angle rotation angle of the rectangle
\ param color color of line
\ param lineWidth width of line
\ param style line style
\ param fillColor filling color of rectangle
\ param fillStyle filling style of rectangle
*/
2019-01-20 23:15:10 +08:00
JKQTPGeoEllipse ( JKQTPlotter * parent , double x , double y , double width , double height , double angle , QColor color = QColor ( " black " ) , double lineWidth = 1 , Qt : : PenStyle style = Qt : : SolidLine , QColor fillColor = QColor ( " transparent " ) , Qt : : BrushStyle fillStyle = Qt : : SolidPattern ) ;
2019-01-08 04:00:56 +08:00
/*! \brief class constructor
\ param parent the parent plotter class
\ param bottomleft bottom left corner of rectangle
\ param topright top right corner of rectangle
\ param color color of line
\ param lineWidth width of line
\ param style line style
\ param fillColor filling color of rectangle
\ param fillStyle filling style of rectangle
*/
2019-01-20 17:49:29 +08:00
JKQTPGeoEllipse ( JKQTBasePlotter * parent , QPointF bottomleft , QPointF topright , QColor color = QColor ( " black " ) , double lineWidth = 1 , Qt : : PenStyle style = Qt : : SolidLine , QColor fillColor = QColor ( " transparent " ) , Qt : : BrushStyle fillStyle = Qt : : SolidPattern ) ;
2019-01-08 04:00:56 +08:00
/*! \brief class constructor
\ param parent the parent plotter class
\ param bottomleft bottom left corner of rectangle
\ param topright top right corner of rectangle
\ param color color of line
\ param lineWidth width of line
\ param style line style
\ param fillColor filling color of rectangle
\ param fillStyle filling style of rectangle
*/
2019-01-20 23:15:10 +08:00
JKQTPGeoEllipse ( JKQTPlotter * parent , QPointF bottomleft , QPointF topright , QColor color = QColor ( " black " ) , double lineWidth = 1 , Qt : : PenStyle style = Qt : : SolidLine , QColor fillColor = QColor ( " transparent " ) , Qt : : BrushStyle fillStyle = Qt : : SolidPattern ) ;
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
2019-02-08 00:24:46 +08:00
/*! \copydoc controlPoints
\ see see controlPoints for details */
2019-01-26 20:00:40 +08:00
inline virtual void setControlPoints ( const unsigned int & __value )
2019-01-10 04:23:24 +08:00
{
this - > controlPoints = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc controlPoints
\ see see controlPoints for details */
2019-01-26 20:00:40 +08:00
inline virtual unsigned int getControlPoints ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > controlPoints ;
}
2015-07-11 18:56:02 +08:00
protected :
/** \brief number of steps/control points to draw the ellipse */
unsigned int controlPoints ;
} ;
2019-01-20 17:49:29 +08:00
/*! \brief This JKQTPPlotObject is used to draw an arc
2015-07-11 18:56:02 +08:00
\ ingroup jkqtplotter_geoplots
\ image html plot_geoarc . png
*/
2019-02-03 21:04:48 +08:00
class JKQTP_LIB_EXPORT JKQTPGeoArc : public JKQTPGeoBaseLine {
2015-07-11 18:56:02 +08:00
Q_OBJECT
public :
/*! \brief class constructor
\ param parent the parent plotter class
\ param x x - coordinate of center of ellipse
\ param y y - coordinate of center of ellipse
\ param width width of ellipse ( 2 * half axis )
\ param height of ellipse ( 2 * half axis )
\ param color color of line
\ param lineWidth width of line
\ param style line style
*/
2019-01-20 17:49:29 +08:00
JKQTPGeoArc ( JKQTBasePlotter * parent , double x , double y , double width , double height , double angleStart , double angleStop , QColor color = QColor ( " black " ) , double lineWidth = 1 , Qt : : PenStyle style = Qt : : SolidLine ) ;
2015-08-02 19:36:54 +08:00
/*! \brief class constructor
\ param parent the parent plotter class
\ param x x - coordinate of center of ellipse
\ param y y - coordinate of center of ellipse
\ param width width of ellipse ( 2 * half axis )
\ param height of ellipse ( 2 * half axis )
\ param color color of line
\ param lineWidth width of line
\ param style line style
*/
2019-01-20 23:15:10 +08:00
JKQTPGeoArc ( JKQTPlotter * parent , double x , double y , double width , double height , double angleStart , double angleStop , QColor color = QColor ( " black " ) , double lineWidth = 1 , Qt : : PenStyle style = Qt : : SolidLine ) ;
2015-07-11 18:56:02 +08:00
2019-01-20 17:49:29 +08:00
/** \copydoc JKQTPPlotObject::getXMinMax() */
2018-12-28 05:52:00 +08:00
virtual bool getXMinMax ( double & minx , double & maxx , double & smallestGreaterZero ) override ;
2019-01-20 17:49:29 +08:00
/** \copydoc JKQTPPlotObject::getYMinMax() */
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 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
2019-02-08 00:24:46 +08:00
/*! \copydoc controlPoints
\ see see controlPoints for details */
2019-01-26 20:00:40 +08:00
inline virtual void setControlPoints ( const unsigned int & __value )
2019-01-10 04:23:24 +08:00
{
this - > controlPoints = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc controlPoints
\ see see controlPoints for details */
2019-01-26 20:00:40 +08:00
inline virtual unsigned int getControlPoints ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > controlPoints ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc angleStart
\ see see angleStart for details */
2019-01-26 20:00:40 +08:00
inline virtual void setAngleStart ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > angleStart = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc angleStart
\ see see angleStart for details */
2019-01-26 20:00:40 +08:00
inline virtual double getAngleStart ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > angleStart ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc angleStop
\ see see angleStop for details */
2019-01-26 20:00:40 +08:00
inline virtual void setAngleStop ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > angleStop = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc angleStop
\ see see angleStop for details */
2019-01-26 20:00:40 +08:00
inline virtual double getAngleStop ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > angleStop ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc x
\ see see x for details */
2019-01-26 20:00:40 +08:00
inline virtual void setX ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > x = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc x
\ see see x for details */
2019-01-26 20:00:40 +08:00
inline virtual double getX ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > x ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc y
\ see see y for details */
2019-01-26 20:00:40 +08:00
inline virtual void setY ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > y = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc y
\ see see y for details */
2019-01-26 20:00:40 +08:00
inline virtual double getY ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > y ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc width
\ see see width for details */
2019-01-26 20:00:40 +08:00
inline virtual void setWidth ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > width = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc width
\ see see width for details */
2019-01-26 20:00:40 +08:00
inline virtual double getWidth ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > width ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc height
\ see see height for details */
2019-01-26 20:00:40 +08:00
inline virtual void setHeight ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > height = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc height
\ see see height for details */
2019-01-26 20:00:40 +08:00
inline virtual double getHeight ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > height ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc angle
\ see see angle for details */
2019-01-26 20:00:40 +08:00
inline virtual void setAngle ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > angle = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc angle
\ see see angle for details */
2019-01-26 20:00:40 +08:00
inline virtual double getAngle ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > angle ;
}
2015-07-11 18:56:02 +08:00
protected :
double x , y , width , height ;
/** \brief rotation angle of rectangle */
2019-01-08 04:00:56 +08:00
double angle ;
2015-07-11 18:56:02 +08:00
/** \brief if we only draw an arc, this is the starting angle in degrees */
double angleStart ;
/** \brief if we only draw an arc, this is the ending angle in degrees */
double angleStop ;
/** \brief closing mode for arcs: secand or pie */
double angle_start ;
/** \brief if we only draw an arc, this is the ending angle */
double angle_end ;
/** \brief closing mode for arcs: secand or pie */
/** \brief returns the transformation matrix used for this rectangle */
QMatrix getMatrix ( ) ;
/** \brief returns a QPolygonF which represents the rectangle after rotation, but still in the world coordinate system, not in the screen/widget system */
QPolygonF getPolygon ( ) ;
/** \brief number of steps/control points to draw the ellipse */
unsigned int controlPoints ;
} ;
2019-01-20 17:49:29 +08:00
/*! \brief This JKQTPPlotObject is used to draw a pie
2015-07-11 18:56:02 +08:00
\ ingroup jkqtplotter_geoplots
\ image html plot_geopie . png
*/
2019-02-03 21:04:48 +08:00
class JKQTP_LIB_EXPORT JKQTPGeoPie : public JKQTPGeoEllipse {
2015-07-11 18:56:02 +08:00
Q_OBJECT
public :
/*! \brief class constructor
\ param parent the parent plotter class
\ param x x - coordinate of center of ellipse
\ param y y - coordinate of center of ellipse
\ param width width of ellipse ( 2 * half axis )
\ param height of ellipse ( 2 * half axis )
\ param color color of line
\ param lineWidth width of line
\ param style line style
\ param fillColor filling color of ellipse
\ param fillStyle filling style of ellipse
*/
2019-01-20 17:49:29 +08:00
JKQTPGeoPie ( JKQTBasePlotter * parent , double x , double y , double width , double height , double angleStart , double angleStop , QColor color = QColor ( " black " ) , double lineWidth = 1 , Qt : : PenStyle style = Qt : : SolidLine , QColor fillColor = QColor ( " transparent " ) , Qt : : BrushStyle fillStyle = Qt : : SolidPattern ) ;
2015-08-02 19:36:54 +08:00
/*! \brief class constructor
\ param parent the parent plotter class
\ param x x - coordinate of center of ellipse
\ param y y - coordinate of center of ellipse
\ param width width of ellipse ( 2 * half axis )
\ param height of ellipse ( 2 * half axis )
\ param color color of line
\ param lineWidth width of line
\ param style line style
\ param fillColor filling color of ellipse
\ param fillStyle filling style of ellipse
*/
2019-01-20 23:15:10 +08:00
JKQTPGeoPie ( JKQTPlotter * parent , double x , double y , double width , double height , double angleStart , double angleStop , QColor color = QColor ( " black " ) , double lineWidth = 1 , Qt : : PenStyle style = Qt : : SolidLine , QColor fillColor = QColor ( " transparent " ) , Qt : : BrushStyle fillStyle = Qt : : SolidPattern ) ;
2015-07-11 18:56:02 +08:00
2019-01-20 17:49:29 +08:00
/** \copydoc JKQTPPlotObject::getXMinMax() */
2018-12-28 05:52:00 +08:00
virtual bool getXMinMax ( double & minx , double & maxx , double & smallestGreaterZero ) override ;
2019-01-20 17:49:29 +08:00
/** \copydoc JKQTPPlotObject::getYMinMax() */
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 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
2019-02-08 00:24:46 +08:00
/*! \copydoc angleStart
\ see see angleStart for details */
2019-01-26 20:00:40 +08:00
inline virtual void setAngleStart ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > angleStart = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc angleStart
\ see see angleStart for details */
2019-01-26 20:00:40 +08:00
inline virtual double getAngleStart ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > angleStart ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc angleStop
\ see see angleStop for details */
2019-01-26 20:00:40 +08:00
inline virtual void setAngleStop ( double __value )
2019-01-10 04:23:24 +08:00
{
this - > angleStop = __value ;
}
2019-02-08 00:24:46 +08:00
/*! \copydoc angleStop
\ see see angleStop for details */
2019-01-26 20:00:40 +08:00
inline virtual double getAngleStop ( ) const
2019-01-10 04:23:24 +08:00
{
return this - > angleStop ;
}
2015-07-11 18:56:02 +08:00
protected :
/** \brief if we only draw an arc, this is the starting angle */
double angleStart ;
/** \brief if we only draw an arc, this is the ending angle */
double angleStop ;
} ;
2019-01-20 17:49:29 +08:00
/*! \brief This JKQTPPlotObject is used to draw a chord
2015-07-11 18:56:02 +08:00
\ ingroup jkqtplotter_geoplots
\ image html plot_geochord . png
*/
2019-02-03 21:04:48 +08:00
class JKQTP_LIB_EXPORT JKQTPGeoChord : public JKQTPGeoPie {
2015-07-11 18:56:02 +08:00
Q_OBJECT
public :
/*! \brief class constructor
\ param parent the parent plotter class
\ param x x - coordinate of center of ellipse
\ param y y - coordinate of center of ellipse
\ param width width of ellipse ( 2 * half axis )
\ param height of ellipse ( 2 * half axis )
\ param color color of line
\ param lineWidth width of line
\ param style line style
\ param fillColor filling color of ellipse
\ param fillStyle filling style of ellipse
*/
2019-01-20 17:49:29 +08:00
JKQTPGeoChord ( JKQTBasePlotter * parent , double x , double y , double width , double height , double angleStart , double angleStop , QColor color = QColor ( " black " ) , double lineWidth = 1 , Qt : : PenStyle style = Qt : : SolidLine , QColor fillColor = QColor ( " transparent " ) , Qt : : BrushStyle fillStyle = Qt : : SolidPattern ) ;
2015-08-02 19:36:54 +08:00
/*! \brief class constructor
\ param parent the parent plotter class
\ param x x - coordinate of center of ellipse
\ param y y - coordinate of center of ellipse
\ param width width of ellipse ( 2 * half axis )
\ param height of ellipse ( 2 * half axis )
\ param color color of line
\ param lineWidth width of line
\ param style line style
\ param fillColor filling color of ellipse
\ param fillStyle filling style of ellipse
*/
2019-01-20 23:15:10 +08:00
JKQTPGeoChord ( JKQTPlotter * parent , double x , double y , double width , double height , double angleStart , double angleStop , QColor color = QColor ( " black " ) , double lineWidth = 1 , Qt : : PenStyle style = Qt : : SolidLine , QColor fillColor = QColor ( " transparent " ) , Qt : : BrushStyle fillStyle = Qt : : SolidPattern ) ;
2015-07-11 18:56:02 +08:00
2019-01-20 17:49:29 +08:00
/** \copydoc JKQTPPlotObject::getXMinMax() */
2018-12-28 05:52:00 +08:00
virtual bool getXMinMax ( double & minx , double & maxx , double & smallestGreaterZero ) override ;
2019-01-20 17:49:29 +08:00
/** \copydoc JKQTPPlotObject::getYMinMax() */
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 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
} ;
2018-12-19 00:13:18 +08:00
# endif // jkqtpgraphsgeometric_H_INCLUDED