From bd74ab97182e590d789ed81a962f1c1dae7f9504 Mon Sep 17 00:00:00 2001 From: Arthur Date: Wed, 13 May 2020 11:23:59 +0200 Subject: [PATCH] [poincare/sequence_layout] Modified the height of sigma and product signs Because of their previous even height, those symbols were not aligned with fractions. Now that they have an uneven size, they line up correctly. --- poincare/include/poincare/sequence_layout.h | 2 +- poincare/src/sum_layout.cpp | 43 ++++++++++----------- 2 files changed, 21 insertions(+), 24 deletions(-) diff --git a/poincare/include/poincare/sequence_layout.h b/poincare/include/poincare/sequence_layout.h index 730931d3d..b16427163 100644 --- a/poincare/include/poincare/sequence_layout.h +++ b/poincare/include/poincare/sequence_layout.h @@ -8,7 +8,7 @@ namespace Poincare { class SequenceLayoutNode : public LayoutNode { public: - constexpr static KDCoordinate k_symbolHeight = 30; + constexpr static KDCoordinate k_symbolHeight = 29; constexpr static KDCoordinate k_symbolWidth = 22; using LayoutNode::LayoutNode; diff --git a/poincare/src/sum_layout.cpp b/poincare/src/sum_layout.cpp index 0c1051955..74cdee9d2 100644 --- a/poincare/src/sum_layout.cpp +++ b/poincare/src/sum_layout.cpp @@ -9,21 +9,21 @@ namespace Poincare { // Stores a single branch of the sigma symbol // Data is stored so that every two line a white pixel must be added. This way the branch's slope is respected constexpr static int k_significantPixelWidth = 6; -const uint8_t symbolPixelOneBranch[(SumLayoutNode::k_symbolHeight/2-1)*k_significantPixelWidth] = { - 0xF8, 0x2E, 0x9E, 0xFF, 0xFF, 0xFF, - 0xFF, 0xD5, 0x15, 0xDB, 0xFF, 0xFF, - 0xFF, 0x95, 0x35, 0xFA, 0xFF, 0xFF, - 0xFF, 0xFE, 0x4C, 0x7A, 0xFF, 0xFF, - 0xFF, 0xE9, 0x1B, 0xC0, 0xFF, 0xFF, - 0xFF, 0xFF, 0xB7, 0x1F, 0xEE, 0xFF, - 0xFF, 0xFF, 0x6F, 0x56, 0xFF, 0xFF, - 0xFF, 0xFF, 0xF7, 0x2E, 0x9F, 0xFF, - 0xFF, 0xFF, 0xD3, 0x16, 0xDB, 0xFF, - 0xFF, 0xFF, 0xFF, 0x93, 0x37, 0xFA, - 0xFF, 0xFF, 0xFE, 0x4B, 0x7B, 0xFF, - 0xFF, 0xFF, 0xFF, 0xE8, 0x1A, 0xC0, - 0xFF, 0xFF, 0xFF, 0xB6, 0x20, 0xEF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x6D, 0x57, +const uint8_t symbolPixelOneBranch[((SumLayoutNode::k_symbolHeight-1)/2)*k_significantPixelWidth] = { + 0xF1, 0x21, 0xB2, 0xFF, 0xFF, 0xFF, + 0xFF, 0xC5, 0x18, 0xE7, 0xFF, 0xFF, + 0xFF, 0x7F, 0x46, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFC, 0x39, 0x8E, 0xFF, 0xFF, + 0xFF, 0xDF, 0x15, 0xD0, 0xFF, 0xFF, + 0xFF, 0xFF, 0xA4, 0x2A, 0xF6, 0xFF, + 0xFF, 0xFF, 0x5A, 0x69, 0xFF, 0xFF, + 0xFF, 0xFF, 0xF1, 0x21, 0xB2, 0xFF, + 0xFF, 0xFF, 0xC5, 0x18, 0xE7, 0xFF, + 0xFF, 0xFF, 0xFF, 0x7F, 0x46, 0xFE, + 0xFF, 0xFF, 0xFC, 0x3A, 0x8E, 0xFF, + 0xFF, 0xFF, 0xFF, 0xDF, 0x15, 0xD0, + 0xFF, 0xFF, 0xFF, 0xA0, 0x20, 0xF6, + 0xFF, 0xFF, 0XFF, 0xFF, 0xAB, 0x28, }; int SumLayoutNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { @@ -35,15 +35,12 @@ void SumLayoutNode::render(KDContext * ctx, KDPoint p, KDColor expressionColor, uint8_t symbolPixel[k_symbolHeight * k_symbolWidth]; int whiteOffset; - // Taking care of the first line which is a straight line - // First pixel is antialized - symbolPixel[0] = 0x70; - // The rest of the bar is black - for (int j = 1; j < k_symbolWidth; j++) { + // Taking care of the first line which is a black straight line + for (int j = 0; j < k_symbolWidth; j++) { symbolPixel[j] = 0x00; } - static_assert(k_symbolHeight%2 == 0, "sum_layout : k_symbolHeight is not even"); - for (int i = 1; i < k_symbolHeight/2; i++) { + static_assert(k_symbolHeight%2 != 0, "sum_layout : k_symbolHeight is even"); + for (int i = 1; i < (k_symbolHeight + 1)/2; i++) { // Adding the white offset whiteOffset = (i-1)/2; for (int j = 0; j < whiteOffset; j++) { @@ -62,7 +59,7 @@ void SumLayoutNode::render(KDContext * ctx, KDPoint p, KDColor expressionColor, } // Create real size sigma symbol by flipping the previous array - for (int i = k_symbolHeight/2; i < k_symbolHeight; i++) { + for (int i = k_symbolHeight/2 + 1; i < k_symbolHeight; i++) { for (int j = 0; j < k_symbolWidth; j++) { symbolPixel[i*k_symbolWidth + j] = symbolPixel[(k_symbolHeight-i-1)*k_symbolWidth +j]; }