diff --git a/src/activities/boot_sleep/SleepActivity.cpp b/src/activities/boot_sleep/SleepActivity.cpp index f12bb31e..2ff386f8 100644 --- a/src/activities/boot_sleep/SleepActivity.cpp +++ b/src/activities/boot_sleep/SleepActivity.cpp @@ -101,11 +101,12 @@ bool renderPngSleepScreen(const std::string& filename, GfxRenderer& renderer, co return false; } - if (!overlayInfo.title.empty() || !overlayInfo.author.empty() || !overlayInfo.progressText.empty()) { + if (!overlayInfo.progressText.empty()) { const int lineHeight12 = renderer.getLineHeight(BOOKERLY_12_FONT_ID); const int lineHeight10 = renderer.getLineHeight(UI_10_FONT_ID); constexpr int lineSpacing = 3; constexpr int sectionSpacing = 10; + const int maxTextWidth = pageWidth - 20; int textBlockHeight = 0; if (!overlayInfo.title.empty()) { @@ -129,7 +130,8 @@ bool renderPngSleepScreen(const std::string& filename, GfxRenderer& renderer, co const int overlayY = pageHeight - textBlockHeight - (lineHeight12 / 3) - (lineHeight10 * 2 / 3); int y = overlayY + (lineHeight12 / 3); if (!overlayInfo.title.empty()) { - renderer.drawText(BOOKERLY_12_FONT_ID, 10, y, overlayInfo.title.c_str(), true); + const std::string title = renderer.truncatedText(BOOKERLY_12_FONT_ID, overlayInfo.title.c_str(), maxTextWidth); + renderer.drawText(BOOKERLY_12_FONT_ID, 10, y, title.c_str(), true); y += lineHeight12; if (!overlayInfo.author.empty()) { y += lineSpacing; @@ -138,14 +140,17 @@ bool renderPngSleepScreen(const std::string& filename, GfxRenderer& renderer, co } } if (!overlayInfo.author.empty()) { - renderer.drawText(UI_10_FONT_ID, 10, y, overlayInfo.author.c_str(), true); + const std::string author = renderer.truncatedText(UI_10_FONT_ID, overlayInfo.author.c_str(), maxTextWidth); + renderer.drawText(UI_10_FONT_ID, 10, y, author.c_str(), true); y += lineHeight10; if (!overlayInfo.progressText.empty()) { y += sectionSpacing; } } if (!overlayInfo.progressText.empty()) { - renderer.drawText(UI_10_FONT_ID, 10, y, overlayInfo.progressText.c_str(), true); + const std::string progress = + renderer.truncatedText(UI_10_FONT_ID, overlayInfo.progressText.c_str(), maxTextWidth); + renderer.drawText(UI_10_FONT_ID, 10, y, progress.c_str(), true); } } @@ -353,8 +358,8 @@ void SleepActivity::renderCustomSleepScreen() const { explicitSleepFile.close(); const BookOverlayInfo resolvedOverlayInfo = shouldLoadOverlayInfo ? getBookOverlayInfo(APP_STATE.openEpubPath) : overlayInfo; + LOG_DBG("SLP", "Loading explicit custom sleep image: /sleep.png"); if (renderPngSleepScreen("/sleep.png", renderer, resolvedOverlayInfo)) { - LOG_DBG("SLP", "Loading explicit custom sleep image: /sleep.png"); return; } } @@ -585,7 +590,8 @@ void SleepActivity::renderBitmapSleepScreen(const Bitmap& bitmap, const BookOver const bool hasTitle = !overlayInfo.title.empty(); const bool hasProgress = !overlayInfo.progressText.empty(); const bool hasAuthor = !overlayInfo.author.empty(); - if (!hasTitle && !hasAuthor && !hasProgress) { + // If there is no overlay progress text, do not draw the overlay background block. + if (!hasProgress) { return; }