[apps/shared] k_numberOfColumnsPerSeries is a FloatPairStore attribute

This commit is contained in:
Léa Saviot
2018-05-24 13:51:11 +02:00
parent 2b185261b7
commit 24d7593276
5 changed files with 12 additions and 13 deletions

View File

@@ -78,7 +78,7 @@ uint32_t FloatPairStore::storeChecksum() {
* pairs. However, the two values of a pair are not stored consecutively. We
* thus compute the checksum on all pairs and ensure to set the pair at 0
* when removing them. */
size_t dataLengthInBytes = k_numberOfSeries*k_maxNumberOfPairs*2*sizeof(double);
size_t dataLengthInBytes = k_numberOfSeries*k_maxNumberOfPairs*k_numberOfColumnsPerSeries*sizeof(double);
assert((dataLengthInBytes & 0x3) == 0); // Assert that dataLengthInBytes is a multiple of 4
return Ion::crc32((uint32_t *)m_data, dataLengthInBytes/sizeof(uint32_t));
}

View File

@@ -9,6 +9,7 @@ namespace Shared {
class FloatPairStore {
public:
constexpr static int k_numberOfSeries = 3;
constexpr static int k_numberOfColumnsPerSeries = 2;
constexpr static int k_maxNumberOfPairs = 100;
FloatPairStore() :
m_numberOfPairs{},
@@ -35,7 +36,7 @@ public:
protected:
virtual double defaultValue(int series, int i, int j);
int m_numberOfPairs[k_numberOfSeries];
double m_data[k_numberOfSeries][2][k_maxNumberOfPairs];
double m_data[k_numberOfSeries][k_numberOfColumnsPerSeries][k_maxNumberOfPairs];
};
}

View File

@@ -39,7 +39,7 @@ bool StoreController::textFieldDidFinishEditing(TextField * textField, const cha
}
int StoreController::numberOfColumns() {
return k_numberOfColumnsPerSeries * FloatPairStore::k_numberOfSeries;
return FloatPairStore::k_numberOfColumnsPerSeries * FloatPairStore::k_numberOfSeries;
}
KDCoordinate StoreController::columnWidth(int i) {
@@ -110,7 +110,7 @@ bool StoreController::handleEvent(Ion::Events::Event event) {
assert(selectedColumn() >= 0 && selectedColumn() < numberOfColumns());
int series = seriesAtColumn(selectedColumn());
if ((event == Ion::Events::OK || event == Ion::Events::EXE) && selectedRow() == 0) {
m_storeParameterController.selectXColumn(selectedColumn()%k_numberOfColumnsPerSeries == 0);
m_storeParameterController.selectXColumn(selectedColumn()%FloatPairStore::k_numberOfColumnsPerSeries == 0);
m_storeParameterController.selectSeries(series);
StackViewController * stack = ((StackViewController *)parentResponder()->parentResponder());
stack->push(&m_storeParameterController);
@@ -146,12 +146,12 @@ bool StoreController::cellAtLocationIsEditable(int columnIndex, int rowIndex) {
}
bool StoreController::setDataAtLocation(double floatBody, int columnIndex, int rowIndex) {
m_store->set(floatBody, seriesAtColumn(columnIndex), columnIndex%k_numberOfColumnsPerSeries, rowIndex-1);
m_store->set(floatBody, seriesAtColumn(columnIndex), columnIndex%FloatPairStore::k_numberOfColumnsPerSeries, rowIndex-1);
return true;
}
double StoreController::dataAtLocation(int columnIndex, int rowIndex) {
return m_store->get(seriesAtColumn(columnIndex), columnIndex%k_numberOfColumnsPerSeries, rowIndex-1);
return m_store->get(seriesAtColumn(columnIndex), columnIndex%FloatPairStore::k_numberOfColumnsPerSeries, rowIndex-1);
}
int StoreController::numberOfElements() {
@@ -184,7 +184,7 @@ void StoreController::unloadView(View * view) {
}
bool StoreController::cellShouldBeTransparent(int i, int j) {
int seriesIndex = i/k_numberOfColumnsPerSeries;
int seriesIndex = i/FloatPairStore::k_numberOfColumnsPerSeries;
return j > 1 + m_store->numberOfPairsOfSeries(seriesIndex);
}

View File

@@ -36,10 +36,8 @@ public:
protected:
static constexpr KDCoordinate k_cellWidth = 80; //TODO
static constexpr KDCoordinate k_margin = 8;
constexpr static int k_numberOfColumnsPerSeries = 2;
constexpr static int k_maxNumberOfEditableCells = 22 * FloatPairStore::k_numberOfSeries;
constexpr static int k_numberOfTitleCells = k_numberOfColumnsPerSeries * FloatPairStore::k_numberOfSeries;
// TODO Put finer number of cells
constexpr static int k_numberOfTitleCells = FloatPairStore::k_numberOfColumnsPerSeries * FloatPairStore::k_numberOfSeries; // TODO Put finer number of cells
static constexpr int k_titleCellType = 0;
static constexpr int k_editableCellType = 1;
Responder * tabController() const override;
@@ -52,7 +50,7 @@ protected:
int maxNumberOfElements() const override;
virtual HighlightCell * titleCells(int index) = 0;
char m_draftTextBuffer[TextField::maxBufferSize()];
int seriesAtColumn(int column) const { return column / k_numberOfColumnsPerSeries; }
int seriesAtColumn(int column) const { return column / FloatPairStore::k_numberOfColumnsPerSeries; }
HideableEvenOddEditableTextCell * m_editableCells[k_maxNumberOfEditableCells];
FloatPairStore * m_store;
StoreParameterController m_storeParameterController;

View File

@@ -22,8 +22,8 @@ void StoreController::willDisplayCellAtLocation(HighlightCell * cell, int i, int
return;
}
Shared::BufferFunctionTitleCell * mytitleCell = (Shared::BufferFunctionTitleCell *)cell;
int seriesIndex = i/k_numberOfColumnsPerSeries;
bool valuesColumn = i%k_numberOfColumnsPerSeries == 0;
int seriesIndex = i/Store::k_numberOfColumnsPerSeries;
bool valuesColumn = i%Store::k_numberOfColumnsPerSeries == 0;
assert(seriesIndex >= 0 && seriesIndex < FloatPairStore::k_numberOfSeries);
if (valuesColumn) {
I18n::Message valuesMessages[] = {I18n::Message::Values1, I18n::Message::Values2, I18n::Message::Values3};