mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 00:37:25 +01:00
[apps/statistics] Fix banner view
Scientific mode, Data: 10 - 1 20 - 5 30 - 4 40 - 3 50 - 1 Display the histogram, there are problems in the banner view
This commit is contained in:
committed by
EmilieNumworks
parent
50bbae5e06
commit
78bdd0e04b
@@ -90,6 +90,20 @@ Responder * HistogramController::tabController() const {
|
||||
return (parentResponder()->parentResponder()->parentResponder()->parentResponder());
|
||||
}
|
||||
|
||||
void pad(char * buffer, int bufferSize, int * currentNumberOfChar, int maxGlyphLengthWithPadding) {
|
||||
assert(*currentNumberOfChar <= bufferSize);
|
||||
size_t currentGlyphLength = UTF8Helper::StringGlyphLength(buffer, *currentNumberOfChar);
|
||||
bool addedPadding = false;
|
||||
while (currentGlyphLength < maxGlyphLengthWithPadding && *currentNumberOfChar < bufferSize) {
|
||||
*currentNumberOfChar = *currentNumberOfChar + UTF8Decoder::CodePointToChars(' ', buffer + *currentNumberOfChar, bufferSize - *currentNumberOfChar);
|
||||
addedPadding = true;
|
||||
currentGlyphLength++;
|
||||
}
|
||||
if (addedPadding) {
|
||||
buffer[*currentNumberOfChar-1] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void HistogramController::reloadBannerView() {
|
||||
if (selectedSeriesIndex() < 0) {
|
||||
return;
|
||||
@@ -107,7 +121,7 @@ void HistogramController::reloadBannerView() {
|
||||
// Add lower bound
|
||||
if (selectedSeriesIndex() >= 0) {
|
||||
double lowerBound = m_store->startOfBarAtIndex(selectedSeriesIndex(), *m_selectedBarIndex);
|
||||
numberOfChar += PoincareHelpers::ConvertFloatToText<double>(lowerBound, buffer+numberOfChar, PrintFloat::bufferSizeForFloatsWithPrecision(Constant::LargeNumberOfSignificantDigits), Constant::LargeNumberOfSignificantDigits);
|
||||
numberOfChar += PoincareHelpers::ConvertFloatToText<double>(lowerBound, buffer+numberOfChar, bufferSize-numberOfChar, Constant::LargeNumberOfSignificantDigits);
|
||||
}
|
||||
|
||||
numberOfChar+= UTF8Decoder::CodePointToChars(';', buffer + numberOfChar, bufferSize - numberOfChar);
|
||||
@@ -115,15 +129,12 @@ void HistogramController::reloadBannerView() {
|
||||
// Add upper bound
|
||||
if (selectedSeriesIndex() >= 0) {
|
||||
double upperBound = m_store->endOfBarAtIndex(selectedSeriesIndex(), *m_selectedBarIndex);
|
||||
numberOfChar += PoincareHelpers::ConvertFloatToText<double>(upperBound, buffer+numberOfChar, PrintFloat::bufferSizeForFloatsWithPrecision(Constant::LargeNumberOfSignificantDigits), Constant::LargeNumberOfSignificantDigits);
|
||||
numberOfChar += PoincareHelpers::ConvertFloatToText<double>(upperBound, buffer+numberOfChar, bufferSize-numberOfChar, Constant::LargeNumberOfSignificantDigits);
|
||||
}
|
||||
numberOfChar+= UTF8Decoder::CodePointToChars('[', buffer + numberOfChar, bufferSize - numberOfChar);
|
||||
|
||||
// Padding
|
||||
for (int i = numberOfChar; i < k_maxIntervalLegendLength; i++) {
|
||||
numberOfChar+= UTF8Decoder::CodePointToChars(' ', buffer + numberOfChar, bufferSize - numberOfChar);
|
||||
}
|
||||
buffer[k_maxIntervalLegendLength] = 0;
|
||||
pad(buffer, bufferSize, &numberOfChar, k_maxIntervalLegendLength);
|
||||
m_view.bannerView()->intervalView()->setText(buffer);
|
||||
|
||||
// Add Size Data
|
||||
@@ -135,13 +146,10 @@ void HistogramController::reloadBannerView() {
|
||||
double size = 0;
|
||||
if (selectedSeriesIndex() >= 0) {
|
||||
size = m_store->heightOfBarAtIndex(selectedSeriesIndex(), *m_selectedBarIndex);
|
||||
numberOfChar += PoincareHelpers::ConvertFloatToText<double>(size, buffer+numberOfChar, PrintFloat::bufferSizeForFloatsWithPrecision(Constant::LargeNumberOfSignificantDigits), Constant::LargeNumberOfSignificantDigits);
|
||||
numberOfChar += PoincareHelpers::ConvertFloatToText<double>(size, buffer+numberOfChar, bufferSize-numberOfChar, Constant::LargeNumberOfSignificantDigits);
|
||||
}
|
||||
// Padding
|
||||
for (int i = numberOfChar; i < k_maxLegendLength; i++) {
|
||||
numberOfChar+= UTF8Decoder::CodePointToChars(' ', buffer + numberOfChar, bufferSize - numberOfChar);
|
||||
}
|
||||
buffer[k_maxLegendLength] = 0;
|
||||
pad(buffer, bufferSize, &numberOfChar, k_maxLegendLength);
|
||||
m_view.bannerView()->sizeView()->setText(buffer);
|
||||
|
||||
// Add Frequency Data
|
||||
@@ -152,13 +160,10 @@ void HistogramController::reloadBannerView() {
|
||||
numberOfChar += legendLength;
|
||||
if (selectedSeriesIndex() >= 0) {
|
||||
double frequency = size/m_store->sumOfOccurrences(selectedSeriesIndex());
|
||||
numberOfChar += PoincareHelpers::ConvertFloatToText<double>(frequency, buffer+numberOfChar, PrintFloat::bufferSizeForFloatsWithPrecision(Constant::LargeNumberOfSignificantDigits), Constant::LargeNumberOfSignificantDigits);
|
||||
numberOfChar += PoincareHelpers::ConvertFloatToText<double>(frequency, buffer+numberOfChar, bufferSize - numberOfChar, Constant::LargeNumberOfSignificantDigits);
|
||||
}
|
||||
// Padding
|
||||
for (int i = numberOfChar; i < k_maxLegendLength; i++) {
|
||||
numberOfChar+= UTF8Decoder::CodePointToChars(' ', buffer + numberOfChar, bufferSize - numberOfChar);
|
||||
}
|
||||
buffer[k_maxLegendLength] = 0;
|
||||
pad(buffer, bufferSize, &numberOfChar, k_maxLegendLength);
|
||||
m_view.bannerView()->frequencyView()->setText(buffer);
|
||||
|
||||
m_view.bannerView()->reload();
|
||||
|
||||
Reference in New Issue
Block a user