// // Created by rhetenor on 10.10.18. // #include "utility/config.h" #include #include namespace flippR_driver { namespace output { namespace items { namespace detail { template Display::Display(uint8_t address, uint8_t id) : address(address), id(id) { CLOG(INFO, OUTPUT_LOGGER) << "Created display with id " << id << " and address " << address << "."; } template uint8_t Display::get_id() const { return this->id; } template void Display::write_score(uint score) { auto score_string = std::to_string(score); std::copy(score_string.begin(), score_string.end(), std::begin(this->content)); } template std::string Display::fit_string(std::string& score_string) { auto score_length = score_string.length(); if (score_length > DigitCount) { CLOG(DEBUG, OUTPUT_LOGGER) << "Score too long for display"; std::string full_display; // TODO mach mal schöner hier wird 9999 angezeigt wenn die zahl zu groß is return full_display.insert(0, DigitCount, '9'); } score_string.insert(0, DigitCount-score_length, '\0'); return score_string; } template void Display::write_content( std::array content) { this->content = content; } template std::vector Display::get_content() const { // todo: expensive? return std::vector(content.begin(), content.end()); } } } } }