[apps/shared] XYBannerView contains a TextField

This commit is contained in:
Ruben Dashyan
2019-03-04 14:40:45 +01:00
committed by Émilie Feral
parent 633dfaf043
commit 3d71397949
4 changed files with 35 additions and 21 deletions

View File

@@ -124,7 +124,6 @@ void GraphController::reloadBannerView() {
m_bannerView.dotNameView()->setText(buffer);
// Set "x=..." or "xmean=..."
numberOfChar = 0;
legend = "x=";
double x = m_cursor->x();
// Display a specific legend if the mean dot is selected
@@ -133,14 +132,15 @@ void GraphController::reloadBannerView() {
legend = "x\xCC\x85=";
x = m_store->meanOfColumn(*m_selectedSeriesIndex, 0);
}
numberOfChar += strlcpy(buffer, legend, bufferSize);
numberOfChar += PoincareHelpers::ConvertFloatToText<double>(x, buffer+numberOfChar, PrintFloat::bufferSizeForFloatsWithPrecision(Constant::MediumNumberOfSignificantDigits), Constant::MediumNumberOfSignificantDigits);
m_bannerView.abscissaSymbol()->setText(legend);
numberOfChar = PoincareHelpers::ConvertFloatToText<double>(x, buffer, PrintFloat::bufferSizeForFloatsWithPrecision(Constant::MediumNumberOfSignificantDigits), Constant::MediumNumberOfSignificantDigits);
assert(UTF8Decoder::CharSizeOfCodePoint(' ') == 1);
for (int i = numberOfChar; i < k_maxLegendLength; i++) {
buffer[numberOfChar++] = ' ';
}
buffer[k_maxLegendLength] = 0;
m_bannerView.abscissaView()->setText(buffer);
m_bannerView.abscissaValue()->setText(buffer);
// Set "y=..." or "ymean=..."
numberOfChar = 0;

View File

@@ -11,20 +11,17 @@ void FunctionBannerDelegate::reloadBannerViewForCursorOnFunction(CurveViewCursor
constexpr int bufferSize = k_maxNumberOfCharacters+PrintFloat::bufferSizeForFloatsWithPrecision(Constant::LargeNumberOfSignificantDigits);
char buffer[bufferSize];
const char * space = " ";
const char * legend = "0=";
int legendLength = strlen(legend);
int numberOfChar = 0;
strlcpy(buffer, legend, bufferSize);
numberOfChar += legendLength;
buffer[0] = symbol;
numberOfChar += PoincareHelpers::ConvertFloatToText<double>(cursor->x(), buffer+numberOfChar, PrintFloat::bufferSizeForFloatsWithPrecision(Constant::MediumNumberOfSignificantDigits), Constant::MediumNumberOfSignificantDigits);
strlcpy(buffer+numberOfChar, space, bufferSize - numberOfChar);
bannerView()->abscissaView()->setText(buffer);
buffer[numberOfChar++] = symbol;
strlcpy(buffer + numberOfChar, "=", bufferSize - numberOfChar);
bannerView()->abscissaSymbol()->setText(buffer);
numberOfChar = 0;
numberOfChar += function->nameWithArgument(buffer, bufferSize, symbol);
legend = "=";
numberOfChar += strlcpy(buffer+numberOfChar, legend, bufferSize-numberOfChar);
numberOfChar = PoincareHelpers::ConvertFloatToText<double>(cursor->x(), buffer, PrintFloat::bufferSizeForFloatsWithPrecision(Constant::MediumNumberOfSignificantDigits), Constant::MediumNumberOfSignificantDigits);
strlcpy(buffer+numberOfChar, space, bufferSize - numberOfChar);
bannerView()->abscissaValue()->setText(buffer);
numberOfChar = function->nameWithArgument(buffer, bufferSize, symbol);
numberOfChar += strlcpy(buffer+numberOfChar, "=", bufferSize-numberOfChar);
numberOfChar += PoincareHelpers::ConvertFloatToText<double>(cursor->y(), buffer+numberOfChar, bufferSize-numberOfChar, Constant::MediumNumberOfSignificantDigits);
strlcpy(buffer+numberOfChar, space, bufferSize-numberOfChar);
bannerView()->ordinateView()->setText(buffer);

View File

@@ -8,14 +8,28 @@ XYBannerView::XYBannerView(
InputEventHandlerDelegate * inputEventHandlerDelegate,
TextFieldDelegate * textFieldDelegate
) :
m_abscissaView(Font(), 0.5f, 0.5f, TextColor(), BackgroundColor()),
m_abscissaSymbol(Font(), 1.0f, 0.5f, TextColor(), BackgroundColor()),
m_abscissaValue(
parentResponder,
m_draftTextBuffer,
m_draftTextBuffer,
TextField::maxBufferSize(),
inputEventHandlerDelegate,
textFieldDelegate,
false,
Font(),
0.0f, 0.5f,
TextColor(),
BackgroundColor()
),
m_ordinateView(Font(), 0.5f, 0.5f, TextColor(), BackgroundColor())
{
m_draftTextBuffer[0] = 0;
}
View * XYBannerView::subviewAtIndex(int index) {
assert(0 <= index && index < numberOfSubviews());
View * subviews[] = {&m_abscissaView, &m_ordinateView};
View * subviews[] = {&m_abscissaSymbol, &m_abscissaValue, &m_ordinateView};
return subviews[index];
}

View File

@@ -12,15 +12,18 @@ public:
InputEventHandlerDelegate * inputEventHandlerDelegate,
TextFieldDelegate * textFieldDelegate
);
BufferTextView * abscissaView() { return &m_abscissaView; }
BufferTextView * abscissaSymbol() { return &m_abscissaSymbol; }
TextField * abscissaValue() { return &m_abscissaValue; }
BufferTextView * ordinateView() { return &m_ordinateView; }
static constexpr int k_numberOfSubviews = 2;
static constexpr int k_numberOfSubviews = 3;
protected:
View * subviewAtIndex(int index) override;
private:
int numberOfSubviews() const override { return k_numberOfSubviews; }
BufferTextView m_abscissaView;
BufferTextView m_abscissaSymbol;
TextField m_abscissaValue;
BufferTextView m_ordinateView;
char m_draftTextBuffer[TextField::maxBufferSize()];
};
}