Center text on display.

This commit is contained in:
Blaz Kristan 2021-08-20 19:37:05 +02:00
parent 771a544d0f
commit 0e200e0c34

View File

@ -313,6 +313,12 @@ class FourLineDisplayUsermod : public Usermod {
(static_cast<U8X8*>(u8x8))->setPowerSave(save); (static_cast<U8X8*>(u8x8))->setPowerSave(save);
} }
void center(String &line, uint8_t width) {
int len = line.length();
if (len<width) for (byte i=(width-len)/2; i>0; i--) line = ' ' + line;
for (byte i=line.length(); i<width; i++) line += ' ';
}
/** /**
* Redraw the screen (but only if things have changed * Redraw the screen (but only if things have changed
* or if forceRedraw). * or if forceRedraw).
@ -399,13 +405,14 @@ class FourLineDisplayUsermod : public Usermod {
knownEffectIntensity = effectIntensity; knownEffectIntensity = effectIntensity;
// Do the actual drawing // Do the actual drawing
String line;
// First row with Wifi name // First row with Wifi name
drawGlyph(0, 0, 80, u8x8_font_open_iconic_embedded_1x1); // home icon drawGlyph(0, 0, 80, u8x8_font_open_iconic_embedded_1x1); // home icon
String ssidString = knownSsid.substring(0, getCols() > 1 ? getCols() - 2 : 0); line = knownSsid.substring(0, getCols() > 1 ? getCols() - 2 : 0);
drawString(1, 0, ssidString.c_str()); center(line, getCols()-2);
drawString(1, 0, line.c_str());
// Print `~` char to indicate that SSID is longer, than our display // Print `~` char to indicate that SSID is longer, than our display
if (knownSsid.length() > getCols()) { if (knownSsid.length() > getCols()-1) {
drawString(getCols() - 1, 0, "~"); drawString(getCols() - 1, 0, "~");
} }
@ -416,12 +423,12 @@ class FourLineDisplayUsermod : public Usermod {
drawString(1, lineHeight, apPass); drawString(1, lineHeight, apPass);
} else { } else {
// alternate IP address and server name // alternate IP address and server name
String secondLine = knownIp.toString(); line = knownIp.toString();
if (showName && strcmp(serverDescription, "WLED") != 0) { if (showName && strcmp(serverDescription, "WLED") != 0) {
secondLine = serverDescription; line = serverDescription;
} }
for (uint8_t i=secondLine.length(); i<getCols()-1; i++) secondLine += ' '; center(line, getCols()-1);
drawString(1, lineHeight, secondLine.c_str()); drawString(1, lineHeight, line.c_str());
} }
// draw third and fourth row // draw third and fourth row