From 03d3a20f9d868e4e1aa9c71e9c6fa7903a4a9ca4 Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sat, 18 Jan 2020 12:44:08 +1100 Subject: [PATCH] Fix leader zero suppression (again) --- workspace/TS100/Core/Src/OLED.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/workspace/TS100/Core/Src/OLED.cpp b/workspace/TS100/Core/Src/OLED.cpp index ebcd880a..9af58d77 100644 --- a/workspace/TS100/Core/Src/OLED.cpp +++ b/workspace/TS100/Core/Src/OLED.cpp @@ -163,10 +163,10 @@ uint8_t OLED::getFont() { else return 0; } -inline void stripLeaderZeros(char *buffer) { +inline void stripLeaderZeros(char *buffer, uint8_t places) { //Removing the leading zero's by swapping them to SymbolSpace // Stop 1 short so that we dont blank entire number if its zero - for (int i = 0; i < 6; i++) { + for (int i = 0; i < (places-1); i++) { if (buffer[i] == 2) { buffer[i] = SymbolSpace[0]; } else { @@ -204,7 +204,7 @@ void OLED::printNumber(uint16_t number, uint8_t places, bool noLeaderZeros) { buffer[0] = 2 + number % 10; if (noLeaderZeros) - stripLeaderZeros(buffer); + stripLeaderZeros(buffer, places); print(buffer); } @@ -286,14 +286,14 @@ void OLED::drawAreaSwapped(int16_t x, int8_t y, uint8_t wide, uint8_t height, if (y == 0) { // Splat first line of data - for (uint8_t xx = visibleStart; xx < visibleEnd; xx+=2) { + for (uint8_t xx = visibleStart; xx < visibleEnd; xx += 2) { firstStripPtr[xx + x] = ptr[xx + 1]; firstStripPtr[xx + x + 1] = ptr[xx]; } } if (y == 8 || height == 16) { // Splat the second line - for (uint8_t xx = visibleStart; xx < visibleEnd; xx+=2) { + for (uint8_t xx = visibleStart; xx < visibleEnd; xx += 2) { secondStripPtr[x + xx] = ptr[xx + 1 + (height == 16 ? wide : 0)]; secondStripPtr[x + xx + 1] = ptr[xx + (height == 16 ? wide : 0)]; }