[apps/statistics] Make data model inherit from curve view window

Change-Id: Iabf36299d20b17d9ac6fb4ae3a6166513f9a50c7
This commit is contained in:
Émilie Feral
2016-12-20 14:20:57 +01:00
parent 0be1c43f72
commit cda9582a7c
2 changed files with 64 additions and 1 deletions

View File

@@ -1,4 +1,5 @@
#include "data.h"
#include <float.h>
namespace Statistics {
@@ -45,4 +46,56 @@ void Data::deletePairAtIndex(int index) {
m_sizes[m_numberOfPairs] = 1;
}
int Data::sizeOfValuesBetweenBounds(float lowerBound, float upperBound) const {
int result = 0;
for (int k = 0; k < m_numberOfPairs; k++) {
if (m_values[k] < upperBound && lowerBound <= m_values[k]) {
result += m_sizes[k];
}
}
return result;
}
float Data::xMin() {
float valueMin = FLT_MAX;
for (int k = 0; k < m_numberOfPairs; k++) {
if (m_values[k] < valueMin) {
valueMin = m_values[k];
}
}
return valueMin;
}
float Data::xMax() {
float valueMax = -FLT_MAX;
for (int k = 0; k < m_numberOfPairs; k++) {
if (m_values[k] > valueMax) {
valueMax = m_values[k];
}
}
float valueMin = xMin();
if (valueMax - valueMin > k_maxRangeValue) {
valueMax = valueMin + 10.0f;
}
return valueMax;
}
float Data::yMin() {
return 0.0f;
}
float Data::yMax() {
float sizeMax = -FLT_MAX;
for (int k = 0; k < m_numberOfPairs; k++) {
if (m_sizes[k] > sizeMax) {
sizeMax = m_sizes[k];
}
}
return sizeMax;
}
float Data::xGridUnit() {
return computeGridUnit(Axis::X);
}
}

View File

@@ -1,9 +1,11 @@
#ifndef STATISTICS_DATA_H
#define STATISTICS_DATA_H
#include "../curve_view_window.h"
namespace Statistics {
class Data {
class Data : public CurveViewWindow {
public:
Data();
// Delete the implicit copy constructor: the object is heavy
@@ -14,9 +16,17 @@ public:
void setValueAtIndex(float value, int index);
void setSizeAtIndex(int size, int index);
void deletePairAtIndex(int index);
int sizeOfValuesBetweenBounds(float lowerBound, float upperBound) const;
float xMin() override;
// if the range of value is to wide, value max returns valueMin + 10
float xMax() override;
float yMin() override;
float yMax() override;
float xGridUnit() override;
// TODO: decide the max number of elements after optimization
constexpr static int k_maxNumberOfPairs = 500;
private:
constexpr static int k_maxRangeValue = 320;
int m_sizes[k_maxNumberOfPairs];
float m_values[k_maxNumberOfPairs];
int m_numberOfPairs;