"Almost equal to" sign in banner views

This commit is contained in:
Ruben Dashyan
2019-09-23 14:48:08 +02:00
committed by EmilieNumworks
parent 20abac86f4
commit bd5a247858
5 changed files with 15 additions and 15 deletions

View File

@@ -1,6 +1,7 @@
#include "graph_controller_helper.h"
#include "../../shared/function_banner_delegate.h"
#include "../app.h"
#include <ion/unicode/utf8_decoder.h>
#include "../../shared/poincare_helpers.h"
#include <poincare/preferences.h>
@@ -34,9 +35,8 @@ void GraphControllerHelper::reloadDerivativeInBannerViewForCursorOnFunction(Shar
char buffer[bufferSize];
const char * space = " ";
int numberOfChar = function->derivativeNameWithArgument(buffer, bufferSize);
const char * legend = "=";
assert(numberOfChar <= bufferSize);
numberOfChar += strlcpy(buffer+numberOfChar, legend, bufferSize-numberOfChar);
numberOfChar += UTF8Decoder::CodePointToChars(UCodePointAlmostEqualTo, buffer+numberOfChar, bufferSize-numberOfChar);
double y = function->approximateDerivative(cursor->x(), App::app()->localContext());
numberOfChar += PoincareHelpers::ConvertFloatToText<double>(y, buffer + numberOfChar, bufferSize-numberOfChar, Preferences::ShortNumberOfSignificantDigits);
assert(numberOfChar <= bufferSize);

View File

@@ -1,7 +1,7 @@
#include "intersection_graph_controller.h"
#include <ion/unicode/utf8_decoder.h>
#include "../../shared/poincare_helpers.h"
#include <poincare/preferences.h>
#include <poincare/serialization_helper.h>
using namespace Shared;
@@ -22,17 +22,15 @@ void IntersectionGraphController::reloadBannerView() {
constexpr size_t bufferSize = FunctionBannerDelegate::k_maxNumberOfCharacters+Poincare::PrintFloat::bufferSizeForFloatsWithPrecision(Poincare::Preferences::LargeNumberOfSignificantDigits);
char buffer[bufferSize];
const char * space = " ";
const char * legend = "=";
// 'f(x)=g(x)=', keep 2 chars for '='
// 'f(x)=g(x)≈'
ExpiringPointer<ContinuousFunction> f = functionStore()->modelForRecord(m_record);
int numberOfChar = f->nameWithArgument(buffer, bufferSize-2);
int numberOfChar = f->nameWithArgument(buffer, bufferSize - UTF8Decoder::CharSizeOfCodePoint('=') - UTF8Decoder::CharSizeOfCodePoint(UCodePointAlmostEqualTo));
assert(numberOfChar <= bufferSize);
numberOfChar += strlcpy(buffer+numberOfChar, legend, bufferSize-numberOfChar);
// keep 1 char for '=';
numberOfChar += strlcpy(buffer+numberOfChar, "=", bufferSize-numberOfChar);
ExpiringPointer<ContinuousFunction> g = functionStore()->modelForRecord(m_intersectedRecord);
numberOfChar += g->nameWithArgument(buffer+numberOfChar, bufferSize-numberOfChar-1);
numberOfChar += g->nameWithArgument(buffer + numberOfChar, bufferSize - numberOfChar - UTF8Decoder::CharSizeOfCodePoint(UCodePointAlmostEqualTo));
assert(numberOfChar <= bufferSize);
numberOfChar += strlcpy(buffer+numberOfChar, legend, bufferSize-numberOfChar);
numberOfChar += UTF8Decoder::CodePointToChars(UCodePointAlmostEqualTo, buffer+numberOfChar, bufferSize-numberOfChar);
numberOfChar += PoincareHelpers::ConvertFloatToText<double>(m_cursor->y(), buffer+numberOfChar, bufferSize-numberOfChar, Poincare::Preferences::MediumNumberOfSignificantDigits);
assert(numberOfChar <= bufferSize);
strlcpy(buffer+numberOfChar, space, bufferSize-numberOfChar);

View File

@@ -1,6 +1,7 @@
#include "tangent_graph_controller.h"
#include "../app.h"
#include "../../apps_container.h"
#include <ion/unicode/utf8_decoder.h>
#include "../../shared/poincare_helpers.h"
#include <poincare/preferences.h>
@@ -72,15 +73,15 @@ void TangentGraphController::reloadBannerView() {
Poincare::Context * context = textFieldDelegateApp()->localContext();
constexpr int precision = Preferences::MediumNumberOfSignificantDigits;
const char * legend = "a=";
int legendLength = strlcpy(buffer, legend, bufferSize);
int legendLength = strlcpy(buffer, "a", bufferSize);
legendLength += UTF8Decoder::CodePointToChars(UCodePointAlmostEqualTo, buffer+legendLength, bufferSize-legendLength);
ExpiringPointer<ContinuousFunction> function = App::app()->functionStore()->modelForRecord(m_record);
double y = function->approximateDerivative(m_cursor->x(), context);
PoincareHelpers::ConvertFloatToText<double>(y, buffer + legendLength, PrintFloat::bufferSizeForFloatsWithPrecision(precision), precision);
m_bannerView->aView()->setText(buffer);
legend = "b=";
legendLength = strlcpy(buffer, legend, bufferSize);
legendLength = strlcpy(buffer, "b", bufferSize);
legendLength += UTF8Decoder::CodePointToChars(UCodePointAlmostEqualTo, buffer+legendLength, bufferSize-legendLength);
Shared::TextFieldDelegateApp * myApp = textFieldDelegateApp();
assert(function->plotType() == Shared::ContinuousFunction::PlotType::Cartesian);
y = -y*m_cursor->x()+function->evaluate2DAtParameter(m_cursor->x(), myApp->localContext()).x2();

View File

@@ -27,7 +27,7 @@ void FunctionBannerDelegate::reloadBannerViewForCursorOnFunction(CurveViewCursor
numberOfChar = function->nameWithArgument(buffer, bufferSize);
assert(numberOfChar <= bufferSize);
numberOfChar += strlcpy(buffer+numberOfChar, "=", bufferSize-numberOfChar);
numberOfChar += UTF8Decoder::CodePointToChars(UCodePointAlmostEqualTo, buffer+numberOfChar, bufferSize-numberOfChar);
numberOfChar += function->printValue(cursor->t(), cursor->x(),cursor->y(), buffer+numberOfChar, bufferSize-numberOfChar, precision, context);
assert(numberOfChar <= bufferSize);
strlcpy(buffer+numberOfChar, space, bufferSize-numberOfChar);

View File

@@ -39,6 +39,7 @@ static constexpr CodePoint UCodePointRightwardsArrow = 0x2192; // →
static constexpr CodePoint UCodePointNArySummation = 0x2211; // ∑
static constexpr CodePoint UCodePointSquareRoot = 0x221a; // √
static constexpr CodePoint UCodePointIntegral = 0x222b; // ∫
static constexpr CodePoint UCodePointAlmostEqualTo = 0x2248; // ≈
static constexpr CodePoint UCodePointMathematicalBoldSmallI = 0x1d422; // 𝐢
#endif