Fri, 08 Jul 2022 13:24:45 +0200
Removed old experiment to calculate flameout and whirlpool ibu's. Changed Tinseth calculation to use a time window so you can select the ibu contribution during a specified time. Added ibu_method Tinset++. Added calculation extensions for Tinseth++, this calculates the flameout and whirlpool effects on all hops. During cooling is to be done.
/* * RangedSlider.h is part bmsapp. * * Original written for Brewtarget, and is Copyright the following * authors 2009-2020 * - Matt Young <mfsy@yahoo.com> * - Mik Firestone <mikfire@gmail.com> * - Philip G. Lee <rocketman768@gmail.com> * * bmsapp is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * bmsapp 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ #ifndef RANGEDSLIDER_H #define RANGEDSLIDER_H #include <QWidget> #include <QSize> #include <QString> #include <QBrush> #include <QPen> class QPaintEvent; class QMouseEvent; /** * @brief Widget to display a number with an optional range on a type of read-only slider. * @author Philip G. Lee */ class RangedSlider : public QWidget { Q_OBJECT public: RangedSlider(QWidget* parent=0); Q_PROPERTY( double value READ value WRITE setValue ) double value() const { return _val; } double minval() const { return _prefMin; } double maxval() const { return _prefMax; } //! \brief Set the background brush for the widget. void setBackgroundBrush( QBrush const& brush ); //! \brief Set the brush for the marker. void setMarkerBrush( QBrush const& brush ); //! \brief Set the text displayed above the marker. void setMarkerText( QString const& text ); //! \brief If true, the marker text will always be updated to the value given by \c setValue(). void setMarkerTextIsValue(bool val); //! \brief Set the \c precision for displaying values. void setPrecision(int precision); public slots: /** * @brief Set the value for the indicator. */ void setValue(double value); /** * @brief Set the range of values considered to be *best* and calculate * the real widget display. * * @param range range.first and range.second are the min and max * values for the preferred range resp. */ void setRange(QPair<double,double> range); /** * @brief Convenience method for setting the widget range */ void setRange( double min, double max ); protected: //! \brief Reimplemented from QWidget. virtual void paintEvent(QPaintEvent* event); //! \brief Reimplemented from QWidget for popup on mouseover. virtual void mouseMoveEvent(QMouseEvent* event); //! \brief Reimplemented from QWidget. virtual void moveEvent(QMoveEvent *event); private: /** * Minimum value the widget displays */ double _min; /** * Maximum value the widget displays */ double _max; /** * Minimum value for the "best" sub-range */ double _prefMin; /** * Maximum value for the "best" sub-range */ double _prefMax; double _val; QString _markerText; int _prec; QString _tooltipText; QBrush _bgBrush; QBrush _prefRangeBrush; QPen _prefRangePen; QBrush _markerBrush; bool _markerTextIsValue; /** * The font used for showing the indicator above the "needle" on the slider. Often this is just showing the same as * the value - eg OG, FG, ABV - but sometimes it's something else - eg descriptive text such as "slightly hoppy" for * the IBU/GU reading. */ QFont const indicatorTextFont; }; #endif