/* Copyright (c) 2008-2018 Jan W. Krieger () 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 . */ #include "jkqtplottertools/jkqtp_imexport.h" #include "jkqtplotter/jkqtpgraphsbase.h" #ifndef jkqtpgraphsfilledcurve_H #define jkqtpgraphsfilledcurve_H /*! \brief This implements filled curve plots where the area is filled between the plot line and the x-Axis. \ingroup jkqtplotter_plots \image html plot_filledcurvexplots.png */ class LIB_EXPORT JKQTPfilledCurveXGraph: public JKQTPxyGraph { Q_OBJECT public: /** \brief class constructor */ JKQTPfilledCurveXGraph(JKQtBasePlotter* parent=nullptr); /** \brief class constructor */ JKQTPfilledCurveXGraph(JKQtPlotter* parent); /** \brief plots the graph to the plotter object specified as parent */ virtual void draw(JKQTPEnhancedPainter& painter) override; /** \brief plots a key marker inside the specified rectangle \a rect */ virtual void drawKeyMarker(JKQTPEnhancedPainter& painter, QRectF& rect) override; /** \brief returns the color to be used for the key label */ virtual QColor getKeyLabelColor() override; /*! \brief sets the property color to the specified \a __value. \details Description of the parameter color is:
\copybrief color.
\see color for more information */ inline virtual void set_color(const QColor & __value) { this->color = __value; } /*! \brief returns the property color. \details Description of the parameter color is:
\copybrief color.
\see color for more information */ inline virtual QColor get_color() const { return this->color; } /*! \brief sets the property fillColor to the specified \a __value. \details Description of the parameter fillColor is:
\copybrief fillColor.
\see fillColor for more information */ inline virtual void set_fillColor(const QColor & __value) { this->fillColor = __value; } /*! \brief returns the property fillColor. \details Description of the parameter fillColor is:
\copybrief fillColor.
\see fillColor for more information */ inline virtual QColor get_fillColor() const { return this->fillColor; } /*! \brief sets the property style to the specified \a __value. \details Description of the parameter style is:
\copybrief style.
\see style for more information */ inline virtual void set_style(const Qt::PenStyle & __value) { this->style = __value; } /*! \brief returns the property style. \details Description of the parameter style is:
\copybrief style.
\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. \details Description of the parameter lineWidth is:
\copybrief lineWidth.
\see lineWidth for more information */ inline virtual void set_lineWidth(double __value) { this->lineWidth = __value; } /*! \brief returns the property lineWidth. \details Description of the parameter lineWidth is:
\copybrief lineWidth.
\see lineWidth for more information */ inline virtual double get_lineWidth() const { return this->lineWidth; } /*! \brief sets the property baseline to the specified \a __value. \details Description of the parameter baseline is:
\copybrief baseline.
\see baseline for more information */ inline virtual void set_baseline(double __value) { this->baseline = __value; } /*! \brief returns the property baseline. \details Description of the parameter baseline is:
\copybrief baseline.
\see baseline for more information */ inline virtual double get_baseline() const { return this->baseline; } /*! \brief sets the property drawLine to the specified \a __value. \details Description of the parameter drawLine is:
\copybrief drawLine.
\see drawLine for more information */ inline virtual void set_drawLine(bool __value) { this->drawLine = __value; } /*! \brief returns the property drawLine. \details Description of the parameter drawLine is:
\copybrief drawLine.
\see drawLine for more information */ inline virtual bool get_drawLine() const { return this->drawLine; } /*! \brief sets the property fillStyle to the specified \a __value. \details Description of the parameter fillStyle is:
\copybrief fillStyle.
\see fillStyle for more information */ inline virtual void set_fillStyle(const Qt::BrushStyle & __value) { this->fillStyle = __value; } /*! \brief returns the property fillStyle. \details Description of the parameter fillStyle is:
\copybrief fillStyle.
\see fillStyle for more information */ inline virtual Qt::BrushStyle get_fillStyle() const { return this->fillStyle; } /*! \brief sets the property drawSelectionLine to the specified \a __value. \details Description of the parameter drawSelectionLine is:
\copybrief drawSelectionLine.
\see drawSelectionLine for more information */ inline virtual void set_drawSelectionLine(bool __value) { this->drawSelectionLine = __value; } /*! \brief returns the property drawSelectionLine. \details Description of the parameter drawSelectionLine is:
\copybrief drawSelectionLine.
\see drawSelectionLine for more information */ inline virtual bool get_drawSelectionLine() const { return this->drawSelectionLine; } /*! \brief sets the property selectionLineColor to the specified \a __value. \details Description of the parameter selectionLineColor is:
\copybrief selectionLineColor.
\see selectionLineColor for more information */ inline virtual void set_selectionLineColor(const QColor & __value) { this->selectionLineColor = __value; } /*! \brief returns the property selectionLineColor. \details Description of the parameter selectionLineColor is:
\copybrief selectionLineColor.
\see selectionLineColor for more information */ inline virtual QColor get_selectionLineColor() const { return this->selectionLineColor; } 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; /** \brief which plot style to use from the parent plotter (via JKQtPlotterBase::getPlotStyle() and JKQtPlotterBase::getNextStyle() ) */ int parentPlotStyle; /** \brief color of the graph */ QColor color; /** \brief color of the graph fill */ QColor fillColor; /** \brief fill styl for the curve */ Qt::BrushStyle fillStyle; /** \brief linestyle of the graph lines */ Qt::PenStyle style; /** \brief width (pixels) of the graph */ double lineWidth; /** \brief indicates whether to draw a line or not */ bool drawLine; /** \brief baseline of the plot (NOTE: 0 is interpreted as until plot border in log-mode!!!) */ double baseline; QBrush getBrush(JKQTPEnhancedPainter& painter) const; QPen getLinePen(JKQTPEnhancedPainter& painter) const; }; /*! \brief This implements filled curve plots with y errors where the area is filled between the plot line and the x-Axis. \ingroup jkqtplotter_plots \image html plot_filledcurvexerrorplots.png */ class LIB_EXPORT JKQTPfilledCurveXErrorGraph: public JKQTPfilledCurveXGraph, public JKQTPyGraphErrors { Q_OBJECT public: /** \brief class constructor */ JKQTPfilledCurveXErrorGraph(JKQtBasePlotter* parent=nullptr); /** \brief class constructor */ JKQTPfilledCurveXErrorGraph(JKQtPlotter* parent); /** \copydoc JKQTPgraph::usesColumn() */ virtual bool usesColumn(int c) const override; protected: /** \brief this function is used to plot error inidcators before plotting the graphs. */ virtual void drawErrorsAfter(JKQTPEnhancedPainter& painter) override; }; /*! \brief This implements filled curve plots where the area is filled between the plot line and y-Axis \ingroup jkqtplotter_plots \image html plot_filledcurveyplots.png */ class LIB_EXPORT JKQTPfilledCurveYGraph: public JKQTPfilledCurveXGraph { Q_OBJECT public: /** \brief class constructor */ JKQTPfilledCurveYGraph(JKQtBasePlotter* parent=nullptr); /** \brief class constructor */ JKQTPfilledCurveYGraph(JKQtPlotter* parent); /** \brief plots the graph to the plotter object specified as parent */ virtual void draw(JKQTPEnhancedPainter& painter) override; }; /*! \brief This implements filled curve plots with y errors where the area is filled between the plot line and the x-Axis. \ingroup jkqtplotter_plots \image html plot_filledcurveyerrorplots.png */ class LIB_EXPORT JKQTPfilledCurveYErrorGraph: public JKQTPfilledCurveYGraph, public JKQTPxGraphErrors { Q_OBJECT public: /** \brief class constructor */ JKQTPfilledCurveYErrorGraph(JKQtBasePlotter* parent=nullptr); JKQTPfilledCurveYErrorGraph(JKQtPlotter* parent); /** \copydoc JKQTPgraph::usesColumn() */ virtual bool usesColumn(int c) const override; protected: /** \brief this function is used to plot error inidcators before plotting the graphs. */ virtual void drawErrorsAfter(JKQTPEnhancedPainter& painter) override; }; /*! \brief This implements filled curve plots where the area is filled between two data columns for each x-value \ingroup jkqtplotter_plots With set_drawlines(false): \image html JKQTPfilledVerticalRangeGraph.png With set_drawlines(true): \image html JKQTPfilledVerticalRangeGraph_WithLines.png */ class LIB_EXPORT JKQTPfilledVerticalRangeGraph: public JKQTPxyGraph { Q_OBJECT public: /** \brief class constructor */ JKQTPfilledVerticalRangeGraph(JKQtBasePlotter* parent=nullptr); /** \brief class constructor */ JKQTPfilledVerticalRangeGraph(JKQtPlotter* parent); /** \brief get the maximum and minimum y-value of the graph * * The result is given in the two parameters which are call-by-reference parameters! */ virtual bool getYMinMax(double& miny, double& maxy, double& smallestGreaterZero) override; /** \copydoc JKQTPgraph::usesColumn() */ virtual bool usesColumn(int column) const override; /** \brief plots the graph to the plotter object specified as parent */ virtual void draw(JKQTPEnhancedPainter& painter) override; /** \brief plots a key marker inside the specified rectangle \a rect */ virtual void drawKeyMarker(JKQTPEnhancedPainter& painter, QRectF& rect) override; /** \brief returns the color to be used for the key label */ virtual QColor getKeyLabelColor() override; /*! \brief sets the property yColumn2 to the specified \a __value. \details Description of the parameter yColumn2 is:
\copybrief yColumn2.
\see yColumn2 for more information */ inline virtual void set_yColumn2(int __value) { this->yColumn2 = __value; } /*! \brief returns the property yColumn2. \details Description of the parameter yColumn2 is:
\copybrief yColumn2.
\see yColumn2 for more information */ inline virtual int get_yColumn2() const { return this->yColumn2; } /*! \brief sets the property yColumn2 to the specified \a __value, where __value is static_cast'ed from size_t to int. \details Description of the parameter yColumn2 is:
\copybrief yColumn2.
\see yColumn2 for more information */ inline virtual void set_yColumn2 (size_t __value) { this->yColumn2 = static_cast(__value); } /*! \brief sets the property color to the specified \a __value. \details Description of the parameter color is:
\copybrief color.
\see color for more information */ inline virtual void set_color(const QColor & __value) { this->color = __value; } /*! \brief returns the property color. \details Description of the parameter color is:
\copybrief color.
\see color for more information */ inline virtual QColor get_color() const { return this->color; } /*! \brief sets the property fillColor to the specified \a __value. \details Description of the parameter fillColor is:
\copybrief fillColor.
\see fillColor for more information */ inline virtual void set_fillColor(const QColor & __value) { this->fillColor = __value; } /*! \brief returns the property fillColor. \details Description of the parameter fillColor is:
\copybrief fillColor.
\see fillColor for more information */ inline virtual QColor get_fillColor() const { return this->fillColor; } /*! \brief sets the property style to the specified \a __value. \details Description of the parameter style is:
\copybrief style.
\see style for more information */ inline virtual void set_style(const Qt::PenStyle & __value) { this->style = __value; } /*! \brief returns the property style. \details Description of the parameter style is:
\copybrief style.
\see style for more information */ inline virtual Qt::PenStyle get_style() const { return this->style; } /*! \brief sets the property drawLine to the specified \a __value. \details Description of the parameter drawLine is:
\copybrief drawLine.
\see drawLine for more information */ inline virtual void set_drawLine(bool __value) { this->drawLine = __value; } /*! \brief returns the property drawLine. \details Description of the parameter drawLine is:
\copybrief drawLine.
\see drawLine for more information */ inline virtual bool get_drawLine() const { return this->drawLine; } /*! \brief sets the property fillStyle to the specified \a __value. \details Description of the parameter fillStyle is:
\copybrief fillStyle.
\see fillStyle for more information */ inline virtual void set_fillStyle(const Qt::BrushStyle & __value) { this->fillStyle = __value; } /*! \brief returns the property fillStyle. \details Description of the parameter fillStyle is:
\copybrief fillStyle.
\see fillStyle for more information */ inline virtual Qt::BrushStyle get_fillStyle() const { return this->fillStyle; } /*! \brief sets the property drawSelectionLine to the specified \a __value. \details Description of the parameter drawSelectionLine is:
\copybrief drawSelectionLine.
\see drawSelectionLine for more information */ inline virtual void set_drawSelectionLine(bool __value) { this->drawSelectionLine = __value; } /*! \brief returns the property drawSelectionLine. \details Description of the parameter drawSelectionLine is:
\copybrief drawSelectionLine.
\see drawSelectionLine for more information */ inline virtual bool get_drawSelectionLine() const { return this->drawSelectionLine; } /*! \brief sets the property selectionLineColor to the specified \a __value. \details Description of the parameter selectionLineColor is:
\copybrief selectionLineColor.
\see selectionLineColor for more information */ inline virtual void set_selectionLineColor(const QColor & __value) { this->selectionLineColor = __value; } /*! \brief returns the property selectionLineColor. \details Description of the parameter selectionLineColor is:
\copybrief selectionLineColor.
\see selectionLineColor for more information */ inline virtual QColor get_selectionLineColor() const { return this->selectionLineColor; } protected: /** \brief the column that contains the second y-component of the range */ int yColumn2; /** \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; /** \brief which plot style to use from the parent plotter (via JKQtPlotterBase::getPlotStyle() and JKQtPlotterBase::getNextStyle() ) */ int parentPlotStyle; /** \brief color of the graph */ QColor color; /** \brief color of the graph fill */ QColor fillColor; /** \brief fill styl for the curve */ Qt::BrushStyle fillStyle; /** \brief linestyle of the graph lines */ Qt::PenStyle style; /** \brief width (pixels) of the graph */ double lineWidth; /** \brief indicates whether to draw a line or not */ bool drawLine; QBrush getBrush(JKQTPEnhancedPainter& painter) const; QPen getLinePen(JKQTPEnhancedPainter& painter) const; }; #endif // jkqtpgraphsfilledcurve_H