mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-18 16:27:34 +01:00
[apps] Remove arg parameter in Shared::Function::nameWithArgument and Shared::CartesianFunction::derivativeNameWithArgument
This commit is contained in:
committed by
Léa Saviot
parent
b1b309c0c4
commit
b665e841ad
@@ -23,7 +23,7 @@ void GraphControllerHelper::reloadDerivativeInBannerViewForCursorOnFunction(Shar
|
||||
constexpr size_t bufferSize = FunctionBannerDelegate::k_maxNumberOfCharacters+PrintFloat::bufferSizeForFloatsWithPrecision(Preferences::LargeNumberOfSignificantDigits);
|
||||
char buffer[bufferSize];
|
||||
const char * space = " ";
|
||||
int numberOfChar = function->derivativeNameWithArgument(buffer, bufferSize, CartesianFunction::Symbol());
|
||||
int numberOfChar = function->derivativeNameWithArgument(buffer, bufferSize);
|
||||
const char * legend = "=";
|
||||
assert(numberOfChar <= bufferSize);
|
||||
numberOfChar += strlcpy(buffer+numberOfChar, legend, bufferSize-numberOfChar);
|
||||
|
||||
@@ -40,7 +40,7 @@ Layout IntegralGraphController::createFunctionLayout(ExpiringPointer<Shared::Fun
|
||||
constexpr size_t bufferSize = SymbolAbstract::k_maxNameSize+5; // f(x)dx
|
||||
char buffer[bufferSize];
|
||||
const char * dx = "dx";
|
||||
int numberOfChars = function->nameWithArgument(buffer, bufferSize-strlen(dx), CartesianFunction::Symbol());
|
||||
int numberOfChars = function->nameWithArgument(buffer, bufferSize-strlen(dx));
|
||||
assert(numberOfChars <= bufferSize);
|
||||
strlcpy(buffer+numberOfChars, dx, bufferSize-numberOfChars);
|
||||
return LayoutHelper::String(buffer, strlen(buffer), KDFont::SmallFont);
|
||||
|
||||
@@ -25,12 +25,12 @@ void IntersectionGraphController::reloadBannerView() {
|
||||
const char * legend = "=";
|
||||
// 'f(x)=g(x)=', keep 2 chars for '='
|
||||
ExpiringPointer<CartesianFunction> f = functionStore()->modelForRecord(m_record);
|
||||
int numberOfChar = f->nameWithArgument(buffer, bufferSize-2, CartesianFunction::Symbol());
|
||||
int numberOfChar = f->nameWithArgument(buffer, bufferSize-2);
|
||||
assert(numberOfChar <= bufferSize);
|
||||
numberOfChar += strlcpy(buffer+numberOfChar, legend, bufferSize-numberOfChar);
|
||||
// keep 1 char for '=';
|
||||
ExpiringPointer<CartesianFunction> g = functionStore()->modelForRecord(m_intersectedRecord);
|
||||
numberOfChar += g->nameWithArgument(buffer+numberOfChar, bufferSize-numberOfChar-1, CartesianFunction::Symbol());
|
||||
numberOfChar += g->nameWithArgument(buffer+numberOfChar, bufferSize-numberOfChar-1);
|
||||
assert(numberOfChar <= bufferSize);
|
||||
numberOfChar += strlcpy(buffer+numberOfChar, legend, bufferSize-numberOfChar);
|
||||
numberOfChar += PoincareHelpers::ConvertFloatToText<double>(m_cursor->y(), buffer+numberOfChar, bufferSize-numberOfChar, Poincare::Preferences::MediumNumberOfSignificantDigits);
|
||||
|
||||
@@ -187,7 +187,7 @@ void ListController::willDisplayExpressionCellAtIndex(HighlightCell * cell, int
|
||||
void ListController::setFunctionNameInTextField(ExpiringPointer<Function> function, TextField * textField) {
|
||||
assert(textField != nullptr);
|
||||
char bufferName[BufferTextView::k_maxNumberOfChar];
|
||||
function->nameWithArgument(bufferName, BufferTextView::k_maxNumberOfChar, modelStore()->symbol());
|
||||
function->nameWithArgument(bufferName, BufferTextView::k_maxNumberOfChar);
|
||||
textField->setText(bufferName);
|
||||
}
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ DerivativeParameterController::DerivativeParameterController(ValuesController *
|
||||
}
|
||||
|
||||
void DerivativeParameterController::viewWillAppear() {
|
||||
functionStore()->modelForRecord(m_record)->derivativeNameWithArgument(m_pageTitle, k_maxNumberOfCharsInTitle, Shared::CartesianFunction::Symbol());
|
||||
functionStore()->modelForRecord(m_record)->derivativeNameWithArgument(m_pageTitle, k_maxNumberOfCharsInTitle);
|
||||
}
|
||||
|
||||
const char * DerivativeParameterController::title() {
|
||||
|
||||
@@ -49,9 +49,9 @@ void ValuesController::willDisplayCellAtLocation(HighlightCell * cell, int i, in
|
||||
* after the isDerivativeColumn call, else it will expire. */
|
||||
Shared::ExpiringPointer<CartesianFunction> function = functionStore()->modelForRecord(recordAtColumn(i));
|
||||
if (isDerivative) {
|
||||
function->derivativeNameWithArgument(bufferName, bufferNameSize, CartesianFunction::Symbol());
|
||||
function->derivativeNameWithArgument(bufferName, bufferNameSize);
|
||||
} else {
|
||||
function->nameWithArgument(bufferName, bufferNameSize, CartesianFunction::Symbol());
|
||||
function->nameWithArgument(bufferName, bufferNameSize);
|
||||
}
|
||||
myFunctionCell->setText(bufferName);
|
||||
myFunctionCell->setColor(function->color());
|
||||
|
||||
@@ -65,10 +65,10 @@ CartesianFunction CartesianFunction::NewModel(Ion::Storage::Record::ErrorStatus
|
||||
return CartesianFunction(Ion::Storage::sharedStorage()->recordBaseNamedWithExtension(baseName, Ion::Storage::funcExtension));
|
||||
}
|
||||
|
||||
int CartesianFunction::derivativeNameWithArgument(char * buffer, size_t bufferSize, CodePoint arg) {
|
||||
int CartesianFunction::derivativeNameWithArgument(char * buffer, size_t bufferSize) {
|
||||
// Fill buffer with f(x). Keep size for derivative sign.
|
||||
int derivativeSize = UTF8Decoder::CharSizeOfCodePoint('\'');
|
||||
int numberOfChars = nameWithArgument(buffer, bufferSize - derivativeSize, arg);
|
||||
int numberOfChars = nameWithArgument(buffer, bufferSize - derivativeSize);
|
||||
assert(numberOfChars + derivativeSize < (int)bufferSize);
|
||||
char * firstParenthesis = const_cast<char *>(UTF8Helper::CodePointSearch(buffer, '('));
|
||||
if (!UTF8Helper::CodePointIs(firstParenthesis, '(')) {
|
||||
|
||||
@@ -21,7 +21,7 @@ public:
|
||||
// Derivative
|
||||
bool displayDerivative() const;
|
||||
void setDisplayDerivative(bool display);
|
||||
int derivativeNameWithArgument(char * buffer, size_t bufferSize, CodePoint arg);
|
||||
int derivativeNameWithArgument(char * buffer, size_t bufferSize);
|
||||
double approximateDerivative(double x, Poincare::Context * context) const;
|
||||
// Integral
|
||||
double sumBetweenBounds(double start, double end, Poincare::Context * context) const override;
|
||||
|
||||
@@ -64,14 +64,15 @@ void Function::setActive(bool active) {
|
||||
recordData()->setActive(active);
|
||||
}
|
||||
|
||||
int Function::nameWithArgument(char * buffer, size_t bufferSize, CodePoint arg) {
|
||||
assert(UTF8Decoder::CharSizeOfCodePoint(arg) == 1);
|
||||
int Function::nameWithArgument(char * buffer, size_t bufferSize) {
|
||||
const char * functionName = fullName();
|
||||
size_t baseNameLength = SymbolAbstract::TruncateExtension(buffer, functionName, bufferSize - k_parenthesedArgumentLength);
|
||||
assert(baseNameLength <= bufferSize);
|
||||
size_t result = baseNameLength + strlcpy(&buffer[baseNameLength], k_parenthesedArgument, bufferSize-baseNameLength);
|
||||
if (baseNameLength + 1 < bufferSize) {
|
||||
UTF8Decoder::CodePointToChars(arg, buffer+baseNameLength+1, bufferSize - (baseNameLength+1));
|
||||
int bufferRemainingSize = bufferSize - (baseNameLength+1);
|
||||
if (bufferRemainingSize > 0) {
|
||||
assert(UTF8Decoder::CharSizeOfCodePoint(symbol()) == 1);
|
||||
UTF8Decoder::CodePointToChars(symbol(), buffer+baseNameLength+1, bufferRemainingSize);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ public:
|
||||
void setActive(bool active);
|
||||
|
||||
// Name
|
||||
int nameWithArgument(char * buffer, size_t bufferSize, CodePoint arg);
|
||||
int nameWithArgument(char * buffer, size_t bufferSize);
|
||||
|
||||
// Evaluation
|
||||
virtual float evaluateAtAbscissa(float x, Poincare::Context * context) const {
|
||||
|
||||
@@ -7,13 +7,12 @@ using namespace Poincare;
|
||||
namespace Shared {
|
||||
|
||||
void FunctionBannerDelegate::reloadBannerViewForCursorOnFunction(CurveViewCursor * cursor, Ion::Storage::Record record, FunctionStore * functionStore) {
|
||||
CodePoint symbol = functionStore->symbol();
|
||||
ExpiringPointer<Function> function = functionStore->modelForRecord(record);
|
||||
constexpr int bufferSize = k_maxNumberOfCharacters+PrintFloat::bufferSizeForFloatsWithPrecision(Preferences::LargeNumberOfSignificantDigits);
|
||||
char buffer[bufferSize];
|
||||
const char * space = " ";
|
||||
int numberOfChar = 0;
|
||||
buffer[numberOfChar++] = symbol;
|
||||
buffer[numberOfChar++] = function->symbol();
|
||||
assert(numberOfChar <= bufferSize);
|
||||
strlcpy(buffer + numberOfChar, "=", bufferSize - numberOfChar);
|
||||
bannerView()->abscissaSymbol()->setText(buffer);
|
||||
@@ -25,7 +24,7 @@ void FunctionBannerDelegate::reloadBannerViewForCursorOnFunction(CurveViewCursor
|
||||
strlcpy(buffer+numberOfChar, space, bufferSize - numberOfChar);
|
||||
bannerView()->abscissaValue()->setText(buffer);
|
||||
|
||||
numberOfChar = function->nameWithArgument(buffer, bufferSize, symbol);
|
||||
numberOfChar = function->nameWithArgument(buffer, bufferSize);
|
||||
assert(numberOfChar <= bufferSize);
|
||||
numberOfChar += strlcpy(buffer+numberOfChar, "=", bufferSize-numberOfChar);
|
||||
numberOfChar += PoincareHelpers::ConvertFloatToText<double>(cursor->y(), buffer+numberOfChar, bufferSize-numberOfChar, precision);
|
||||
|
||||
@@ -9,8 +9,7 @@ const char * ValuesFunctionParameterController::title() {
|
||||
}
|
||||
|
||||
void ValuesFunctionParameterController::viewWillAppear() {
|
||||
CodePoint symbol = FunctionApp::app()->functionStore()->symbol();
|
||||
FunctionApp::app()->functionStore()->modelForRecord(m_record)->nameWithArgument(m_pageTitle, Function::k_maxNameWithArgumentSize, symbol);
|
||||
FunctionApp::app()->functionStore()->modelForRecord(m_record)->nameWithArgument(m_pageTitle, Function::k_maxNameWithArgumentSize);
|
||||
}
|
||||
|
||||
void ValuesFunctionParameterController::didBecomeFirstResponder() {
|
||||
|
||||
@@ -113,8 +113,8 @@ void VariableBoxController::willDisplayCellForIndex(HighlightCell * cell, int in
|
||||
CartesianFunction f(record);
|
||||
symbolLength = f.nameWithArgument(
|
||||
symbolName,
|
||||
Shared::Function::k_maxNameWithArgumentSize,
|
||||
Shared::CartesianFunction::Symbol());
|
||||
Shared::Function::k_maxNameWithArgumentSize
|
||||
);
|
||||
}
|
||||
Layout symbolLayout = LayoutHelper::String(symbolName, symbolLength);
|
||||
myCell->setLayout(symbolLayout);
|
||||
|
||||
Reference in New Issue
Block a user