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