mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-18 16:27:34 +01:00
[apps/shared] k_numberOfColumnsPerSeries is a FloatPairStore attribute
This commit is contained in:
@@ -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));
|
||||
}
|
||||
|
||||
@@ -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];
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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};
|
||||
|
||||
Reference in New Issue
Block a user