From ad71d0997b25d611057786843b2f486ab694a515 Mon Sep 17 00:00:00 2001 From: Yohan Boujon Date: Fri, 1 Dec 2023 14:33:21 +0100 Subject: [PATCH] Fixed TextBox not well aligned. (Not tested on real hw.) --- embedded/lib/Display/Components/Box.hpp | 5 ++--- embedded/lib/Display/Components/Components.cpp | 15 ++++----------- embedded/lib/Display/Components/SpriteBox.cpp | 8 ++++---- embedded/lib/Display/Components/SpriteBox.hpp | 2 +- embedded/lib/Display/Components/TextBox.cpp | 8 ++++---- embedded/lib/Display/Components/TextBox.hpp | 2 +- 6 files changed, 16 insertions(+), 24 deletions(-) diff --git a/embedded/lib/Display/Components/Box.hpp b/embedded/lib/Display/Components/Box.hpp index e577eb8..a68cc2c 100644 --- a/embedded/lib/Display/Components/Box.hpp +++ b/embedded/lib/Display/Components/Box.hpp @@ -51,10 +51,9 @@ namespace Display * ! Maybe a font will be added to arguments next... * * @param size the total size of the elements from a styleheight - * @param size_pos all the above sizes from each components in a same style height - * @param offsetY an offset in Y, given by the 'Components' + * @param size_pos all the above sizes from each components in a same style height plus its height padding */ - virtual void Display(size_t size, size_t size_pos, u8g2_uint_t offsetY){}; + virtual void Display(u8g2_uint_t size, u8g2_uint_t size_pos){}; /** * @brief Will update by recalculating the 'Box' constants diff --git a/embedded/lib/Display/Components/Components.cpp b/embedded/lib/Display/Components/Components.cpp index 9ed0356..07fc7d7 100644 --- a/embedded/lib/Display/Components/Components.cpp +++ b/embedded/lib/Display/Components/Components.cpp @@ -27,23 +27,16 @@ void Components::Update(size_t index, String text) void Components::Display() { - size_t totalSize(0); - u8g2_uint_t verticalPadding(0); + u8g2_uint_t totalSize(0); for (auto it = _boxes.begin(); it != _boxes.end(); it++) { const auto size_boxes = GetSize((*it)->getStyleHeight()); - (*it)->Display(size_boxes, totalSize, verticalPadding); + (*it)->Display(size_boxes, totalSize); // Index and verticalPadding only incrementing for the same style. (eg : it and it+1 as the same style.) if (it + 1 != _boxes.end() && ((*(it+1))->getStyleHeight() == (*it)->getStyleHeight())) - { - verticalPadding += (*it)->getPadding(); - totalSize += (*it)->getHeight(); - } + totalSize += (*it)->getHeight() + (2*(*it)->getPadding()); else - { - verticalPadding = 0; totalSize = 0; - } } } @@ -52,6 +45,6 @@ size_t Components::GetSize(StyleHeight sh) size_t returnSize(0); // returnSize is equal to FONT_SIZE + vertical padding * boxes with style sh for(auto& box : _boxes) - returnSize += (box->getStyleHeight() == sh ? (box->getHeight()+box->getPadding()) : 0); + returnSize += (box->getStyleHeight() == sh ? (box->getHeight()+(2*box->getPadding())) : 0); return returnSize; } \ No newline at end of file diff --git a/embedded/lib/Display/Components/SpriteBox.cpp b/embedded/lib/Display/Components/SpriteBox.cpp index d125156..44d32bb 100644 --- a/embedded/lib/Display/Components/SpriteBox.cpp +++ b/embedded/lib/Display/Components/SpriteBox.cpp @@ -39,19 +39,19 @@ void SpriteBox::Calculate() } } -void SpriteBox::Display(size_t size, size_t size_pos, u8g2_uint_t offsetY) +void SpriteBox::Display(u8g2_uint_t size, u8g2_uint_t size_pos) { const auto centeredOffset = (Screen::GetInstance().getHeight() - size); switch(this->_styleHeight) { case StyleHeight::CENTERED: // idk must be the size of all the above - Screen::GetInstance().getScreen().drawXBM(_x, static_cast((centeredOffset / 2)) + size_pos + offsetY,_width,_height,_sprite); + Screen::GetInstance().getScreen().drawXBM(_x, static_cast((centeredOffset / 2)) + size_pos,_width,_height,_sprite); break; case StyleHeight::BOTTOM: - Screen::GetInstance().getScreen().drawXBM(_x, centeredOffset + size_pos + offsetY,_width,_height,_sprite); + Screen::GetInstance().getScreen().drawXBM(_x, centeredOffset + size_pos,_width,_height,_sprite); break; default: - Screen::GetInstance().getScreen().drawXBM(_x, size_pos + offsetY,_width,_height,_sprite); + Screen::GetInstance().getScreen().drawXBM(_x, size_pos,_width,_height,_sprite); } } \ No newline at end of file diff --git a/embedded/lib/Display/Components/SpriteBox.hpp b/embedded/lib/Display/Components/SpriteBox.hpp index 357231c..1471114 100644 --- a/embedded/lib/Display/Components/SpriteBox.hpp +++ b/embedded/lib/Display/Components/SpriteBox.hpp @@ -15,7 +15,7 @@ namespace Display * @param sprite array from an .xbm format */ SpriteBox(unsigned char *sprite, uint16_t width, uint16_t height, StyleWidth sw, StyleHeight sh); - void Display(size_t size, size_t size_pos, u8g2_uint_t offsetY) override; + void Display(u8g2_uint_t size, u8g2_uint_t size_pos) override; /** * @brief Updates sprite diff --git a/embedded/lib/Display/Components/TextBox.cpp b/embedded/lib/Display/Components/TextBox.cpp index ef7d11f..c0fc3e1 100644 --- a/embedded/lib/Display/Components/TextBox.cpp +++ b/embedded/lib/Display/Components/TextBox.cpp @@ -40,18 +40,18 @@ void TextBox::Calculate() } } -void TextBox::Display(size_t size, size_t size_pos, u8g2_uint_t offsetY) +void TextBox::Display(u8g2_uint_t size, u8g2_uint_t size_pos) { const auto centeredOffset = (Screen::GetInstance().getHeight() - size); switch (this->_styleHeight) { case StyleHeight::CENTERED: - Screen::GetInstance().getScreen().drawButtonUTF8(_paddingWidth + _x, static_cast((centeredOffset / 2)) + size_pos + offsetY, _style, _textWidth, this->_paddingHeight, _paddingWidth, _text.c_str()); + Screen::GetInstance().getScreen().drawButtonUTF8(_paddingWidth + _x, static_cast((centeredOffset / 2)) + size_pos + _height, _style, _textWidth, this->_paddingHeight, _paddingWidth, _text.c_str()); break; case StyleHeight::BOTTOM: - Screen::GetInstance().getScreen().drawButtonUTF8(_paddingWidth + _x, centeredOffset + size_pos + offsetY, _style, _textWidth, this->_paddingHeight, _paddingWidth, _text.c_str()); + Screen::GetInstance().getScreen().drawButtonUTF8(_paddingWidth + _x, centeredOffset + size_pos + _height, _style, _textWidth, this->_paddingHeight, _paddingWidth, _text.c_str()); break; default: - Screen::GetInstance().getScreen().drawButtonUTF8(_paddingWidth + _x, size_pos + offsetY, _style, _textWidth, this->_paddingHeight, _paddingWidth, _text.c_str()); + Screen::GetInstance().getScreen().drawButtonUTF8(_paddingWidth + _x, size_pos + _height, _style, _textWidth, this->_paddingHeight, _paddingWidth, _text.c_str()); } } \ No newline at end of file diff --git a/embedded/lib/Display/Components/TextBox.hpp b/embedded/lib/Display/Components/TextBox.hpp index 5200a54..5955990 100644 --- a/embedded/lib/Display/Components/TextBox.hpp +++ b/embedded/lib/Display/Components/TextBox.hpp @@ -25,7 +25,7 @@ namespace Display * @param takeWholeLine if true, the button takes the whole line */ TextBox(String str, StyleWidth sw, StyleHeight sh, u8g2_uint_t style, u8g2_uint_t w_padding = 0, u8g2_uint_t h_padding = 0, bool takeWholeLine = false); - void Display(size_t size, size_t size_pos, u8g2_uint_t offsetY) override; + void Display(u8g2_uint_t size, u8g2_uint_t size_pos) override; /** * @brief Updates String data