diff --git a/apps/probability/law/binomial_law.cpp b/apps/probability/law/binomial_law.cpp index dc7108c0c..e5988c6b6 100644 --- a/apps/probability/law/binomial_law.cpp +++ b/apps/probability/law/binomial_law.cpp @@ -22,13 +22,13 @@ I18n::Message BinomialLaw::parameterDefinitionAtIndex(int index) { } } -float BinomialLaw::xMin() { +float BinomialLaw::xMin() const { float min = 0.0f; float max = m_parameter1 > 0.0f ? m_parameter1 : 1.0f; return min - k_displayLeftMarginRatio * (max - min); } -float BinomialLaw::xMax() { +float BinomialLaw::xMax() const { float min = 0.0f; float max = m_parameter1; if (max <= min) { @@ -37,7 +37,7 @@ float BinomialLaw::xMax() { return max + k_displayRightMarginRatio*(max - min); } -float BinomialLaw::yMax() { +float BinomialLaw::yMax() const { int maxAbscissa = m_parameter2 < 1.0f ? (m_parameter1+1)*m_parameter2 : m_parameter1; float result = evaluateAtAbscissa(maxAbscissa); if (result <= 0.0f || std::isnan(result)) { diff --git a/apps/probability/law/binomial_law.h b/apps/probability/law/binomial_law.h index a92a1882a..4d488ea3d 100644 --- a/apps/probability/law/binomial_law.h +++ b/apps/probability/law/binomial_law.h @@ -11,9 +11,9 @@ public: I18n::Message title() override { return I18n::Message::BinomialLaw; } Type type() const override { return Type::Binomial; } bool isContinuous() const override { return false; } - float xMin() override; - float xMax() override; - float yMax() override; + float xMin() const override; + float xMax() const override; + float yMax() const override; I18n::Message parameterNameAtIndex(int index) override; I18n::Message parameterDefinitionAtIndex(int index) override; float evaluateAtAbscissa(float x) const override { diff --git a/apps/probability/law/exponential_law.cpp b/apps/probability/law/exponential_law.cpp index 43da100f3..c2d46fbc3 100644 --- a/apps/probability/law/exponential_law.cpp +++ b/apps/probability/law/exponential_law.cpp @@ -4,11 +4,11 @@ namespace Probability { -float ExponentialLaw::xMin() { +float ExponentialLaw::xMin() const { return - k_displayLeftMarginRatio * xMax(); } -float ExponentialLaw::xMax() { +float ExponentialLaw::xMax() const { assert(m_parameter1 != 0.0f); float result = 5.0f/m_parameter1; if (result <= 0.0f) { @@ -17,7 +17,7 @@ float ExponentialLaw::xMax() { return result * (1.0f + k_displayRightMarginRatio); } -float ExponentialLaw::yMax() { +float ExponentialLaw::yMax() const { float result = m_parameter1; if (result <= 0.0f || std::isnan(result)) { result = 1.0f; diff --git a/apps/probability/law/exponential_law.h b/apps/probability/law/exponential_law.h index 0b9443d03..b3062d58e 100644 --- a/apps/probability/law/exponential_law.h +++ b/apps/probability/law/exponential_law.h @@ -12,9 +12,9 @@ public: I18n::Message title() override { return I18n::Message::ExponentialLaw; } Type type() const override { return Type::Exponential; } bool isContinuous() const override { return true; } - float xMin() override; - float xMax() override; - float yMax() override; + float xMin() const override; + float xMax() const override; + float yMax() const override; I18n::Message parameterNameAtIndex(int index) override { assert(index == 0); return I18n::Message::Lambda; diff --git a/apps/probability/law/law.cpp b/apps/probability/law/law.cpp index d4c3c39fb..5c551ec44 100644 --- a/apps/probability/law/law.cpp +++ b/apps/probability/law/law.cpp @@ -126,7 +126,7 @@ double Law::evaluateAtDiscreteAbscissa(int k) const { return 0.0; } -float Law::yMin() { +float Law::yMin() const { return -k_displayBottomMarginRatio * yMax(); } diff --git a/apps/probability/law/law.h b/apps/probability/law/law.h index 84c9c05c2..d580421e0 100644 --- a/apps/probability/law/law.h +++ b/apps/probability/law/law.h @@ -44,7 +44,7 @@ protected: constexpr static float k_displayRightMarginRatio = 0.05f; private: constexpr static float k_displayBottomMarginRatio = 0.2f; - float yMin() override; + float yMin() const override; }; } diff --git a/apps/probability/law/normal_law.cpp b/apps/probability/law/normal_law.cpp index c02cbbcaf..a9036394f 100644 --- a/apps/probability/law/normal_law.cpp +++ b/apps/probability/law/normal_law.cpp @@ -7,7 +7,7 @@ namespace Probability { -float NormalLaw::yMax() { +float NormalLaw::yMax() const { float maxAbscissa = m_parameter1; float result = evaluateAtAbscissa(maxAbscissa); if (std::isnan(result) || result <= 0.0f) { diff --git a/apps/probability/law/normal_law.h b/apps/probability/law/normal_law.h index e75cae0db..d5ea508a2 100644 --- a/apps/probability/law/normal_law.h +++ b/apps/probability/law/normal_law.h @@ -11,9 +11,9 @@ public: I18n::Message title() override { return I18n::Message::NormalLaw; } Type type() const override { return Type::Normal; } bool isContinuous() const override { return true; } - float xMin() override { return xExtremum(true); } - float xMax() override { return xExtremum(false); } - float yMax() override; + float xMin() const override { return xExtremum(true); } + float xMax() const override { return xExtremum(false); } + float yMax() const override; I18n::Message parameterNameAtIndex(int index) override; I18n::Message parameterDefinitionAtIndex(int index) override; float evaluateAtAbscissa(float x) const override; diff --git a/apps/probability/law/poisson_law.cpp b/apps/probability/law/poisson_law.cpp index 30394ddbc..75a792752 100644 --- a/apps/probability/law/poisson_law.cpp +++ b/apps/probability/law/poisson_law.cpp @@ -5,16 +5,16 @@ namespace Probability { -float PoissonLaw::xMin() { +float PoissonLaw::xMin() const { return -k_displayLeftMarginRatio * xMax(); } -float PoissonLaw::xMax() { +float PoissonLaw::xMax() const { assert(m_parameter1 != 0); return (m_parameter1 + 5.0f * std::sqrt(m_parameter1)) * (1.0f + k_displayRightMarginRatio); } -float PoissonLaw::yMax() { +float PoissonLaw::yMax() const { int maxAbscissa = (int)m_parameter1; assert(maxAbscissa >= 0.0f); float result = evaluateAtAbscissa(maxAbscissa); diff --git a/apps/probability/law/poisson_law.h b/apps/probability/law/poisson_law.h index da995a8f7..2ffa08eb4 100644 --- a/apps/probability/law/poisson_law.h +++ b/apps/probability/law/poisson_law.h @@ -11,9 +11,9 @@ public: I18n::Message title() override { return I18n::Message::PoissonLaw; } Type type() const override { return Type::Poisson; } bool isContinuous() const override { return false; } - float xMin() override; - float xMax() override; - float yMax() override; + float xMin() const override; + float xMax() const override; + float yMax() const override; I18n::Message parameterNameAtIndex(int index) override { assert(index == 0); return I18n::Message::Lambda; diff --git a/apps/probability/law/uniform_law.cpp b/apps/probability/law/uniform_law.cpp index 8f271fbc6..742af5c22 100644 --- a/apps/probability/law/uniform_law.cpp +++ b/apps/probability/law/uniform_law.cpp @@ -24,7 +24,7 @@ I18n::Message UniformLaw::parameterDefinitionAtIndex(int index) { } } -float UniformLaw::xMin() { +float UniformLaw::xMin() const { assert(m_parameter2 >= m_parameter1); if (m_parameter2 - m_parameter1 < FLT_EPSILON) { return m_parameter1 - 1.0f; @@ -32,14 +32,14 @@ float UniformLaw::xMin() { return m_parameter1 - 0.6f * (m_parameter2 - m_parameter1); } -float UniformLaw::xMax() { +float UniformLaw::xMax() const { if (m_parameter2 - m_parameter1 < FLT_EPSILON) { return m_parameter1 + 1.0f; } return m_parameter2 + 0.6f * (m_parameter2 - m_parameter1); } -float UniformLaw::yMax() { +float UniformLaw::yMax() const { float result = m_parameter2 - m_parameter1 < FLT_EPSILON ? k_diracMaximum : 1.0f/(m_parameter2-m_parameter1); if (result <= 0.0f || std::isnan(result) || std::isinf(result)) { result = 1.0f; diff --git a/apps/probability/law/uniform_law.h b/apps/probability/law/uniform_law.h index a2ab7160c..83b696ea7 100644 --- a/apps/probability/law/uniform_law.h +++ b/apps/probability/law/uniform_law.h @@ -11,9 +11,9 @@ public: I18n::Message title() override { return I18n::Message::UniformLaw; } Type type() const override { return Type::Uniform; } bool isContinuous() const override { return true; } - float xMin() override; - float xMax() override; - float yMax() override; + float xMin() const override; + float xMax() const override; + float yMax() const override; I18n::Message parameterNameAtIndex(int index) override; I18n::Message parameterDefinitionAtIndex(int index) override; float evaluateAtAbscissa(float x) const override; diff --git a/apps/shared/curve_view_range.cpp b/apps/shared/curve_view_range.cpp index c3807a254..9b671ee09 100644 --- a/apps/shared/curve_view_range.cpp +++ b/apps/shared/curve_view_range.cpp @@ -15,7 +15,7 @@ uint32_t CurveViewRange::rangeChecksum() { return Ion::crc32Word((uint32_t *)data, dataLengthInBytes/sizeof(uint32_t)); } -float CurveViewRange::computeGridUnit(Axis axis, float range) { +float CurveViewRange::computeGridUnit(Axis axis, float range) const { int a = 0; int b = 0; float maxNumberOfUnits = (axis == Axis::X) ? k_maxNumberOfXGridUnits : k_maxNumberOfYGridUnits; diff --git a/apps/shared/curve_view_range.h b/apps/shared/curve_view_range.h index 9a487037b..c5358b151 100644 --- a/apps/shared/curve_view_range.h +++ b/apps/shared/curve_view_range.h @@ -13,13 +13,13 @@ public: }; virtual uint32_t rangeChecksum(); - virtual float xMin() = 0; - virtual float xMax() = 0; - virtual float yMin() = 0; - virtual float yMax() = 0; - virtual float xGridUnit() { return computeGridUnit(Axis::X, xMax() - xMin()); } - virtual float yGridUnit() { return 0.0f; } - float computeGridUnit(Axis axis, float range); + virtual float xMin() const = 0; + virtual float xMax() const = 0; + virtual float yMin() const = 0; + virtual float yMax() const = 0; + virtual float xGridUnit() const { return computeGridUnit(Axis::X, xMax() - xMin()); } + virtual float yGridUnit() const { return 0.0f; } + float computeGridUnit(Axis axis, float range) const; constexpr static float k_maxNumberOfXGridUnits = 18.0f; constexpr static float k_maxNumberOfYGridUnits = 13.0f; private: diff --git a/apps/shared/interactive_curve_view_range.h b/apps/shared/interactive_curve_view_range.h index fc695ccd7..6375b0775 100644 --- a/apps/shared/interactive_curve_view_range.h +++ b/apps/shared/interactive_curve_view_range.h @@ -67,7 +67,7 @@ static_assert(Ion::Display::WidthInTenthOfMillimeter == 576, "Use the new screen static_assert(Ion::Display::HeightInTenthOfMillimeter == 432, "Use the new screen height to compute Shared::InteractiveCurveViewRange::NormalizedYHalfRange"); typedef void (InteractiveCurveViewRange::*ParameterSetterPointer)(float); -typedef float (InteractiveCurveViewRange::*ParameterGetterPointer)(); +typedef float (InteractiveCurveViewRange::*ParameterGetterPointer)() const; typedef void (InteractiveCurveViewRange::*RangeMethodPointer)(); } diff --git a/apps/shared/memoized_curve_view_range.h b/apps/shared/memoized_curve_view_range.h index a2cd9d5f0..58c207561 100644 --- a/apps/shared/memoized_curve_view_range.h +++ b/apps/shared/memoized_curve_view_range.h @@ -9,12 +9,12 @@ class MemoizedCurveViewRange : public CurveViewRange { public: MemoizedCurveViewRange(); //CurveViewWindow - float xMin() override { return m_xMin; } - float xMax() override { return m_xMax; } - float yMin() override { return m_yMin; } - float yMax() override { return m_yMax; } - float xGridUnit() override { return m_xGridUnit; } - float yGridUnit() override { return m_yGridUnit; } + float xMin() const override { return m_xMin; } + float xMax() const override { return m_xMax; } + float yMin() const override { return m_yMin; } + float yMax() const override { return m_yMax; } + float xGridUnit() const override { return m_xGridUnit; } + float yGridUnit() const override { return m_yGridUnit; } virtual void setXMin(float f); virtual void setXMax(float f); virtual void setYMin(float f); diff --git a/apps/statistics/box_range.cpp b/apps/statistics/box_range.cpp index 9a4c8deb2..2ca6b0082 100644 --- a/apps/statistics/box_range.cpp +++ b/apps/statistics/box_range.cpp @@ -7,14 +7,14 @@ BoxRange::BoxRange(Store * store) : { } -float BoxRange::xMin() { +float BoxRange::xMin() const { float min = m_store->minValueForAllSeries(); float max = m_store->maxValueForAllSeries(); max = min >= max ? min + 1 : max; return min - k_displayLeftMarginRatio*(max-min); } -float BoxRange::xMax() { +float BoxRange::xMax() const { float min = m_store->minValueForAllSeries(); float max = m_store->maxValueForAllSeries(); max = min >= max ? min + 1 : max; diff --git a/apps/statistics/box_range.h b/apps/statistics/box_range.h index b43f31114..250203839 100644 --- a/apps/statistics/box_range.h +++ b/apps/statistics/box_range.h @@ -9,10 +9,10 @@ namespace Statistics { class BoxRange : public Shared::CurveViewRange { public: BoxRange(Store * store); - float xMin() override; - float xMax() override; - float yMin() override { return -k_displayBottomMarginRatio; } - float yMax() override { return 1.0f+k_displayTopMarginRatio; } + float xMin() const override; + float xMax() const override; + float yMin() const override { return -k_displayBottomMarginRatio; } + float yMax() const override { return 1.0f+k_displayTopMarginRatio; } private: constexpr static float k_displayTopMarginRatio = 0.05f; constexpr static float k_displayRightMarginRatio = 0.2f;