Fix leader zero suppression (again)

This commit is contained in:
Ben V. Brown
2020-01-18 12:44:08 +11:00
parent 78450d8171
commit 03d3a20f9d

View File

@@ -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)];
}