diff --git a/apps/curve_view.cpp b/apps/curve_view.cpp index 0e3c5f101..74f674ee7 100644 --- a/apps/curve_view.cpp +++ b/apps/curve_view.cpp @@ -7,9 +7,14 @@ constexpr KDColor CurveView::k_axisColor; -CurveView::CurveView(CurveViewWindow * curveViewWindow) : +CurveView::CurveView(CurveViewWindow * curveViewWindow, float topMarginFactor, + float rightMarginFactor, float bottomMarginFactor, float leftMarginFactor) : View(), - m_curveViewWindow(curveViewWindow) + m_curveViewWindow(curveViewWindow), + m_topMarginFactor(topMarginFactor), + m_bottomMarginFactor(bottomMarginFactor), + m_leftMarginFactor(leftMarginFactor), + m_rightMarginFactor(rightMarginFactor) { } @@ -24,15 +29,17 @@ void CurveView::reload() { float CurveView::min(Axis axis) const { assert(axis == Axis::Horizontal || axis == Axis::Vertical); float range = axis == Axis::Horizontal ? m_curveViewWindow->xMax() - m_curveViewWindow->xMin() : m_curveViewWindow->yMax() - m_curveViewWindow->yMin(); - float absoluteMin = (axis == Axis::Horizontal ? m_curveViewWindow->xMin(): m_curveViewWindow->yMin()); - return absoluteMin - k_marginFactor*range; + float absoluteMin = axis == Axis::Horizontal ? m_curveViewWindow->xMin(): m_curveViewWindow->yMin(); + float marginFactor = axis == Axis::Horizontal ? m_leftMarginFactor : m_bottomMarginFactor; + return absoluteMin - marginFactor*range; } float CurveView::max(Axis axis) const { assert(axis == Axis::Horizontal || axis == Axis::Vertical); float range = axis == Axis::Horizontal ? m_curveViewWindow->xMax() - m_curveViewWindow->xMin() : m_curveViewWindow->yMax() - m_curveViewWindow->yMin(); float absoluteMax = (axis == Axis::Horizontal ? m_curveViewWindow->xMax() : m_curveViewWindow->yMax()); - return absoluteMax + k_marginFactor*range; + float marginFactor = axis == Axis::Horizontal ? m_rightMarginFactor : m_topMarginFactor; + return absoluteMax + marginFactor*range; } float CurveView::gridUnit(Axis axis) const { diff --git a/apps/curve_view.h b/apps/curve_view.h index d0013a8e8..552cf3b27 100644 --- a/apps/curve_view.h +++ b/apps/curve_view.h @@ -13,7 +13,8 @@ public: Horizontal = 0, Vertical = 1 }; - CurveView(CurveViewWindow * curveViewWindow = nullptr); + CurveView(CurveViewWindow * curveViewWindow = nullptr, float topMarginFactor = 0.0f, + float rightMarginFactor = 0.0f, float bottomMarginFactor = 0.0f, float leftMarginFactor = 0.0f); void reload(); protected: constexpr static KDColor k_axisColor = KDColor::RGB24(0x000000); @@ -42,7 +43,6 @@ protected: void computeLabels(Axis axis); void drawLabels(KDContext * ctx, KDRect rect, Axis axis, bool shiftOrigin) const; private: - constexpr static float k_marginFactor = 0.2f; int numberOfLabels(Axis axis) const; virtual float evaluateModelWithParameter(Model * curve, float t) const; /* Recursively join two dots (dichotomy). The method stops when the @@ -55,6 +55,10 @@ private: * anti alising. */ void stampAtLocation(KDContext * ctx, KDRect rect, float pxf, float pyf, KDColor color) const; CurveViewWindow * m_curveViewWindow; + float m_topMarginFactor; + float m_bottomMarginFactor; + float m_leftMarginFactor; + float m_rightMarginFactor; }; #endif diff --git a/apps/probability/law_curve_view.cpp b/apps/probability/law_curve_view.cpp index 437aa8248..7161f31cb 100644 --- a/apps/probability/law_curve_view.cpp +++ b/apps/probability/law_curve_view.cpp @@ -5,7 +5,7 @@ namespace Probability { LawCurveView::LawCurveView() : - CurveView(), + CurveView(nullptr, 0.2f, 0.1f, 0.2f, 0.1f), m_law(nullptr), m_calculation(nullptr) { diff --git a/apps/statistics/box_view.cpp b/apps/statistics/box_view.cpp index 02e33f6d6..3c36c82ef 100644 --- a/apps/statistics/box_view.cpp +++ b/apps/statistics/box_view.cpp @@ -5,7 +5,7 @@ namespace Statistics { BoxView::BoxView(Data * data) : - CurveView(&m_boxWindow), + CurveView(&m_boxWindow, 0.0f, 0.2f, 0.4f, 0.2f), m_data(data), m_boxWindow(BoxWindow(data)), m_anyQuantileSelected(true), diff --git a/apps/statistics/data.cpp b/apps/statistics/data.cpp index 971459337..0cc3e3592 100644 --- a/apps/statistics/data.cpp +++ b/apps/statistics/data.cpp @@ -145,7 +145,7 @@ float Data::xMax() { } float Data::yMin() { - return -k_marginFactor*m_yMax; + return 0.0f; } float Data::yMax() { diff --git a/apps/statistics/data.h b/apps/statistics/data.h index f4a5870e1..ef837575c 100644 --- a/apps/statistics/data.h +++ b/apps/statistics/data.h @@ -54,7 +54,6 @@ public: constexpr static int k_maxNumberOfPairs = 500; private: constexpr static int k_maxNumberOfBarsPerWindow = 300; - constexpr static float k_marginFactor = 0.2f; float sumOfValuesBetween(float x1, float x2); bool scrollToSelectedBar(); void initBarParameters(); diff --git a/apps/statistics/histogram_view.cpp b/apps/statistics/histogram_view.cpp index a5153d55f..d9e2600fd 100644 --- a/apps/statistics/histogram_view.cpp +++ b/apps/statistics/histogram_view.cpp @@ -5,7 +5,7 @@ namespace Statistics { HistogramView::HistogramView(Data * data) : - CurveView(data), + CurveView(data, 0.2f, 0.1f, 0.4f, 0.1f), m_data(data), m_selectedBins(true), m_bannerView(BannerView(data))