From c1d228b4773fc3fc0dd1023aa5ba1449fbfc08a7 Mon Sep 17 00:00:00 2001 From: Johannes Wendel Date: Thu, 8 Nov 2018 17:35:21 +0100 Subject: [PATCH] changed display write method --- FlippR-Driver/src/output/Display.cpp | 25 ++++++++++++++++++------- FlippR-Driver/src/output/Display.h | 2 ++ 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/FlippR-Driver/src/output/Display.cpp b/FlippR-Driver/src/output/Display.cpp index 97c56d8..c834736 100644 --- a/FlippR-Driver/src/output/Display.cpp +++ b/FlippR-Driver/src/output/Display.cpp @@ -31,17 +31,28 @@ template void Display::write_score(int score) { auto score_string = std::to_string(score); - auto score_length = score_string.length(); - if (score_length > DigitCount) + if (score_string.length() > DigitCount) { CLOG(DEBUG, OUTPUT_LOGGER) << "Score too long for display"; - this->content = score_string.substr(score_length-DigitCount,score_length); - return; } - std::string spaces; - std::generate_n(spaces.begin(), DigitCount-score_length, []{return " ";}); - this->content = spaces + score_string; + auto score_c_string = this->fit_string(score_string).c_str(); + + std::copy(std::begin(score_c_string), std::end(score_c_string), std::begin(this->content)); +} + +template +std::string Display::fit_string(std::string& score_string) +{ + auto score_length = score_string.length(); + for (int i = 0; i < DigitCount; i++) + { + score_string = " " + score_string; + } + + score_length = score_string.length(); + + return score_string.substr(score_length-DigitCount, score_length); } template diff --git a/FlippR-Driver/src/output/Display.h b/FlippR-Driver/src/output/Display.h index 9c68153..ca9f2f3 100644 --- a/FlippR-Driver/src/output/Display.h +++ b/FlippR-Driver/src/output/Display.h @@ -34,6 +34,8 @@ public: private: int address; int id; + + std::string fit_string(std::string& score_string); }; } /* namespace output */