diff --git a/apps/statistics/Makefile b/apps/statistics/Makefile index 35ed9e716..6ae268ba0 100644 --- a/apps/statistics/Makefile +++ b/apps/statistics/Makefile @@ -5,6 +5,7 @@ app_objs += $(addprefix apps/statistics/,\ data.o\ data_controller.o\ histogram_controller.o\ + histogram_view.o\ ) app_images += apps/statistics/stat_icon.png diff --git a/apps/statistics/histogram_view.cpp b/apps/statistics/histogram_view.cpp new file mode 100644 index 000000000..fcf84417a --- /dev/null +++ b/apps/statistics/histogram_view.cpp @@ -0,0 +1,36 @@ +#include "histogram_view.h" +#include + +namespace Statistics { + +HistogramView::HistogramView(Data * data) : + CurveView(data), + m_data(data) +{ +} + +void HistogramView::reload() { + markRectAsDirty(bounds()); + computeLabels(Axis::Horizontal); +} + +void HistogramView::drawRect(KDContext * ctx, KDRect rect) const { + ctx->fillRect(rect, KDColorWhite); + drawAxes(Axis::Horizontal, ctx, rect); + drawAxes(Axis::Vertical, ctx, rect); + drawLabels(Axis::Horizontal, true, ctx, rect); + drawHistogram(nullptr, KDColorBlack, ctx, rect); +} + +char * HistogramView::label(Axis axis, int index) const { + if (axis == Axis::Vertical) { + return nullptr; + } + return (char *)m_labels[index]; +} + +float HistogramView::evaluateCurveAtAbscissa(void * curve, float t) const { + return m_data->sizeAtValue(t); +} + +} diff --git a/apps/statistics/histogram_view.h b/apps/statistics/histogram_view.h new file mode 100644 index 000000000..042f54509 --- /dev/null +++ b/apps/statistics/histogram_view.h @@ -0,0 +1,26 @@ +#ifndef STATISTICS_HISTOGRAM_VIEW_H +#define STATISTICS_HISTOGRAM_VIEW_H + +#include +#include "data.h" +#include "../constant.h" +#include "../curve_view.h" + +namespace Statistics { + +class HistogramView : public CurveView { +public: + HistogramView(Data * m_data); + void reload(); + void drawRect(KDContext * ctx, KDRect rect) const override; +private: + char * label(Axis axis, int index) const override; + float evaluateCurveAtAbscissa(void * curve, float t) const override; + Data * m_data; + char m_labels[k_maxNumberOfXLabels][Constant::FloatBufferSizeInScientificMode]; +}; + +} + + +#endif