Browse Source
Merge pull request #247 from jquatier/ui-text-width
UI Text Width - minor improvement
pull/248/head
ripplebiz
1 year ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with
30 additions and
8 deletions
-
examples/companion_radio/UITask.cpp
-
examples/simple_repeater/UITask.cpp
-
examples/simple_room_server/UITask.cpp
-
src/helpers/ui/DisplayDriver.h
-
src/helpers/ui/GxEPDDisplay.cpp
-
src/helpers/ui/GxEPDDisplay.h
-
src/helpers/ui/SSD1306Display.cpp
-
src/helpers/ui/SSD1306Display.h
-
src/helpers/ui/ST7789Display.cpp
-
src/helpers/ui/ST7789Display.h
|
|
@ -144,7 +144,7 @@ void UITask::renderCurrScreen() { |
|
|
// version info
|
|
|
// version info
|
|
|
_display->setColor(DisplayDriver::LIGHT); |
|
|
_display->setColor(DisplayDriver::LIGHT); |
|
|
_display->setTextSize(1); |
|
|
_display->setTextSize(1); |
|
|
int textWidth = strlen(_version_info) * 5; // Assuming each character is 5 pixels wide
|
|
|
uint16_t textWidth = _display->getTextWidth(_version_info); |
|
|
_display->setCursor((_display->width() - textWidth) / 2, 22); |
|
|
_display->setCursor((_display->width() - textWidth) / 2, 22); |
|
|
_display->print(_version_info); |
|
|
_display->print(_version_info); |
|
|
} else { // home screen
|
|
|
} else { // home screen
|
|
|
|
|
|
@ -51,14 +51,14 @@ void UITask::renderCurrScreen() { |
|
|
// version info
|
|
|
// version info
|
|
|
_display->setColor(DisplayDriver::LIGHT); |
|
|
_display->setColor(DisplayDriver::LIGHT); |
|
|
_display->setTextSize(1); |
|
|
_display->setTextSize(1); |
|
|
int versionWidth = strlen(_version_info) * 6; |
|
|
uint16_t versionWidth = _display->getTextWidth(_version_info); |
|
|
_display->setCursor((_display->width() - versionWidth) / 2, 22); |
|
|
_display->setCursor((_display->width() - versionWidth) / 2, 22); |
|
|
_display->print(_version_info); |
|
|
_display->print(_version_info); |
|
|
|
|
|
|
|
|
// node type
|
|
|
// node type
|
|
|
const char* node_type = "< Repeater >"; |
|
|
const char* node_type = "< Repeater >"; |
|
|
int nodeTypeWidth = strlen(node_type) * 6; |
|
|
uint16_t typeWidth = _display->getTextWidth(node_type); |
|
|
_display->setCursor((_display->width() - nodeTypeWidth) / 2, 35); |
|
|
_display->setCursor((_display->width() - typeWidth) / 2, 35); |
|
|
_display->print(node_type); |
|
|
_display->print(node_type); |
|
|
} else { // home screen
|
|
|
} else { // home screen
|
|
|
// node name
|
|
|
// node name
|
|
|
|
|
|
@ -51,14 +51,14 @@ void UITask::renderCurrScreen() { |
|
|
// version info
|
|
|
// version info
|
|
|
_display->setColor(DisplayDriver::LIGHT); |
|
|
_display->setColor(DisplayDriver::LIGHT); |
|
|
_display->setTextSize(1); |
|
|
_display->setTextSize(1); |
|
|
int versionWidth = strlen(_version_info) * 6; |
|
|
uint16_t versionWidth = _display->getTextWidth(_version_info); |
|
|
_display->setCursor((_display->width() - versionWidth) / 2, 22); |
|
|
_display->setCursor((_display->width() - versionWidth) / 2, 22); |
|
|
_display->print(_version_info); |
|
|
_display->print(_version_info); |
|
|
|
|
|
|
|
|
// node type
|
|
|
// node type
|
|
|
const char* node_type = "< Room Server >"; |
|
|
const char* node_type = "< Repeater >"; |
|
|
int nodeTypeWidth = strlen(node_type) * 6; |
|
|
uint16_t typeWidth = _display->getTextWidth(node_type); |
|
|
_display->setCursor((_display->width() - nodeTypeWidth) / 2, 35); |
|
|
_display->setCursor((_display->width() - typeWidth) / 2, 35); |
|
|
_display->print(node_type); |
|
|
_display->print(node_type); |
|
|
} else { // home screen
|
|
|
} else { // home screen
|
|
|
// node name
|
|
|
// node name
|
|
|
|
|
|
@ -24,5 +24,6 @@ public: |
|
|
virtual void fillRect(int x, int y, int w, int h) = 0; |
|
|
virtual void fillRect(int x, int y, int w, int h) = 0; |
|
|
virtual void drawRect(int x, int y, int w, int h) = 0; |
|
|
virtual void drawRect(int x, int y, int w, int h) = 0; |
|
|
virtual void drawXbm(int x, int y, const uint8_t* bits, int w, int h) = 0; |
|
|
virtual void drawXbm(int x, int y, const uint8_t* bits, int w, int h) = 0; |
|
|
|
|
|
virtual uint16_t getTextWidth(const char* str) = 0; |
|
|
virtual void endFrame() = 0; |
|
|
virtual void endFrame() = 0; |
|
|
}; |
|
|
}; |
|
|
|
|
|
@ -94,6 +94,13 @@ void GxEPDDisplay::drawXbm(int x, int y, const uint8_t* bits, int w, int h) { |
|
|
display.drawBitmap(x*1.5, (y*1.5) + 10, bits, w, h, GxEPD_BLACK); |
|
|
display.drawBitmap(x*1.5, (y*1.5) + 10, bits, w, h, GxEPD_BLACK); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
uint16_t GxEPDDisplay::getTextWidth(const char* str) { |
|
|
|
|
|
int16_t x1, y1; |
|
|
|
|
|
uint16_t w, h; |
|
|
|
|
|
display.getTextBounds(str, 0, 0, &x1, &y1, &w, &h); |
|
|
|
|
|
return w; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
void GxEPDDisplay::endFrame() { |
|
|
void GxEPDDisplay::endFrame() { |
|
|
display.display(true); |
|
|
display.display(true); |
|
|
} |
|
|
} |
|
|
|
|
|
@ -47,5 +47,6 @@ public: |
|
|
void fillRect(int x, int y, int w, int h) override; |
|
|
void fillRect(int x, int y, int w, int h) override; |
|
|
void drawRect(int x, int y, int w, int h) override; |
|
|
void drawRect(int x, int y, int w, int h) override; |
|
|
void drawXbm(int x, int y, const uint8_t* bits, int w, int h) override; |
|
|
void drawXbm(int x, int y, const uint8_t* bits, int w, int h) override; |
|
|
|
|
|
uint16_t getTextWidth(const char* str) override; |
|
|
void endFrame() override; |
|
|
void endFrame() override; |
|
|
}; |
|
|
}; |
|
|
|
|
|
@ -62,6 +62,13 @@ void SSD1306Display::drawXbm(int x, int y, const uint8_t* bits, int w, int h) { |
|
|
display.drawBitmap(x, y, bits, w, h, SSD1306_WHITE); |
|
|
display.drawBitmap(x, y, bits, w, h, SSD1306_WHITE); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
uint16_t SSD1306Display::getTextWidth(const char* str) { |
|
|
|
|
|
int16_t x1, y1; |
|
|
|
|
|
uint16_t w, h; |
|
|
|
|
|
display.getTextBounds(str, 0, 0, &x1, &y1, &w, &h); |
|
|
|
|
|
return w; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
void SSD1306Display::endFrame() { |
|
|
void SSD1306Display::endFrame() { |
|
|
display.display(); |
|
|
display.display(); |
|
|
} |
|
|
} |
|
|
|
|
|
@ -36,5 +36,6 @@ public: |
|
|
void fillRect(int x, int y, int w, int h) override; |
|
|
void fillRect(int x, int y, int w, int h) override; |
|
|
void drawRect(int x, int y, int w, int h) override; |
|
|
void drawRect(int x, int y, int w, int h) override; |
|
|
void drawXbm(int x, int y, const uint8_t* bits, int w, int h) override; |
|
|
void drawXbm(int x, int y, const uint8_t* bits, int w, int h) override; |
|
|
|
|
|
uint16_t getTextWidth(const char* str) override; |
|
|
void endFrame() override; |
|
|
void endFrame() override; |
|
|
}; |
|
|
}; |
|
|
|
|
|
@ -107,6 +107,10 @@ void ST7789Display::drawXbm(int x, int y, const uint8_t* bits, int w, int h) { |
|
|
display.drawBitmap(x+X_OFFSET, y, w, h, bits); |
|
|
display.drawBitmap(x+X_OFFSET, y, w, h, bits); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
uint16_t ST7789Display::getTextWidth(const char* str) { |
|
|
|
|
|
return display.getStringWidth(str); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
void ST7789Display::endFrame() { |
|
|
void ST7789Display::endFrame() { |
|
|
display.display(); |
|
|
display.display(); |
|
|
} |
|
|
} |
|
|
|
|
|
@ -31,5 +31,6 @@ public: |
|
|
void fillRect(int x, int y, int w, int h) override; |
|
|
void fillRect(int x, int y, int w, int h) override; |
|
|
void drawRect(int x, int y, int w, int h) override; |
|
|
void drawRect(int x, int y, int w, int h) override; |
|
|
void drawXbm(int x, int y, const uint8_t* bits, int w, int h) override; |
|
|
void drawXbm(int x, int y, const uint8_t* bits, int w, int h) override; |
|
|
|
|
|
uint16_t getTextWidth(const char* str) override; |
|
|
void endFrame() override; |
|
|
void endFrame() override; |
|
|
}; |
|
|
}; |
|
|
|