diff --git a/open-x4-sdk b/open-x4-sdk index 5f4a46ea..4d4c6678 160000 --- a/open-x4-sdk +++ b/open-x4-sdk @@ -1 +1 @@ -Subproject commit 5f4a46ea3a3adeca8dd29aeb8fc023a82afdffdd +Subproject commit 4d4c66787ff655adc93a1f37811610552a73aa1c diff --git a/src/activities/reader/EpubReaderActivity.cpp b/src/activities/reader/EpubReaderActivity.cpp index 96f42a4c..f8f5cf8f 100644 --- a/src/activities/reader/EpubReaderActivity.cpp +++ b/src/activities/reader/EpubReaderActivity.cpp @@ -330,9 +330,7 @@ void EpubReaderActivity::onEnter() { bookFontFamilyOverride = currentBook.fontFamilyOverride; bookSdFontFamilyOverride = currentBook.sdFontFamilyOverride; bookFontSizeOverride = currentBook.fontSizeOverride; - bookBionicReadingOverride = (currentBook.bionicReadingOverride >= 0) - ? static_cast(currentBook.bionicReadingOverride) - : static_cast(SETTINGS.bionicReading); + bookBionicReadingOverride = currentBook.bionicReadingOverride; bookParagraphAlignmentOverride = currentBook.paragraphAlignmentOverride; bookTextAntiAliasingOverride = currentBook.textAntiAliasingOverride; bookHyphenationOverride = currentBook.hyphenationOverride; @@ -1375,11 +1373,11 @@ void EpubReaderActivity::applyBookReaderOverrides( normalizedFontFamilyOverride = -1; } - const bool bionicAsBool = bionicReadingOverride > 0; if (bookEmbeddedStyleOverride == embeddedStyleOverride && bookImageRenderingOverride == imageRenderingOverride && bookFontFamilyOverride == normalizedFontFamilyOverride && bookSdFontFamilyOverride == normalizedSdFontFamilyOverride && bookFontSizeOverride == fontSizeOverride && - bookBionicReadingOverride == bionicAsBool && bookParagraphAlignmentOverride == paragraphAlignmentOverride && + bookBionicReadingOverride == bionicReadingOverride && + bookParagraphAlignmentOverride == paragraphAlignmentOverride && bookTextAntiAliasingOverride == textAntiAliasingOverride && bookHyphenationOverride == hyphenationOverride) { return; } @@ -1389,7 +1387,7 @@ void EpubReaderActivity::applyBookReaderOverrides( bookFontFamilyOverride = normalizedFontFamilyOverride; bookSdFontFamilyOverride = normalizedSdFontFamilyOverride; bookFontSizeOverride = fontSizeOverride; - bookBionicReadingOverride = bionicAsBool; + bookBionicReadingOverride = bionicReadingOverride; bookParagraphAlignmentOverride = paragraphAlignmentOverride; bookTextAntiAliasingOverride = textAntiAliasingOverride; bookHyphenationOverride = hyphenationOverride; @@ -1414,6 +1412,13 @@ bool EpubReaderActivity::getEffectiveEmbeddedStyle() const { return SETTINGS.embeddedStyle != 0; } +bool EpubReaderActivity::getEffectiveBionicReading() const { + if (bookBionicReadingOverride >= 0) { + return bookBionicReadingOverride > 0; + } + return SETTINGS.bionicReading; +} + uint8_t EpubReaderActivity::getEffectiveImageRendering() const { if (bookImageRenderingOverride >= 0) { return static_cast(bookImageRenderingOverride); @@ -1805,7 +1810,7 @@ void EpubReaderActivity::render(RenderLock&& lock) { if (!section->loadSectionFile(getEffectiveReaderFontId(), getEffectiveReaderLineCompression(), SETTINGS.extraParagraphSpacing, getEffectiveParagraphAlignment(), viewportWidth, - viewportHeight, getEffectiveHyphenation(), embeddedStyle, bookBionicReadingOverride, + viewportHeight, getEffectiveHyphenation(), embeddedStyle, getEffectiveBionicReading(), imageRendering)) { LOG_DBG("ERS", "Cache not found, building..."); lastRenderStats.cacheRebuilt = true; @@ -1828,7 +1833,7 @@ void EpubReaderActivity::render(RenderLock&& lock) { if (!section->createSectionFile(getEffectiveReaderFontId(), getEffectiveReaderLineCompression(), SETTINGS.extraParagraphSpacing, getEffectiveParagraphAlignment(), viewportWidth, viewportHeight, getEffectiveHyphenation(), embeddedStyle, - bookBionicReadingOverride, imageRendering, progressFn)) { + getEffectiveBionicReading(), imageRendering, progressFn)) { LOG_ERR("ERS", "Failed to persist page data to SD"); section.reset(); return; @@ -1850,11 +1855,11 @@ void EpubReaderActivity::render(RenderLock&& lock) { if (!section->createSectionFile(getEffectiveReaderFontId(), getEffectiveReaderLineCompression(), SETTINGS.extraParagraphSpacing, getEffectiveParagraphAlignment(), viewportWidth, viewportHeight, getEffectiveHyphenation(), embeddedStyle, - bookBionicReadingOverride, imageRendering, progressFn)) { + getEffectiveBionicReading(), imageRendering, progressFn)) { LOG_ERR("ERS", "Failed to rebuild CSS section cache; keeping fallback"); section->loadSectionFile(getEffectiveReaderFontId(), getEffectiveReaderLineCompression(), SETTINGS.extraParagraphSpacing, getEffectiveParagraphAlignment(), viewportWidth, - viewportHeight, getEffectiveHyphenation(), embeddedStyle, bookBionicReadingOverride, + viewportHeight, getEffectiveHyphenation(), embeddedStyle, getEffectiveBionicReading(), imageRendering); } } else { @@ -1975,7 +1980,7 @@ void EpubReaderActivity::silentIndexNextChapterIfNeeded(const uint16_t viewportW Section nextSection(epub, nextSpineIndex, renderer); if (nextSection.loadSectionFile(getEffectiveReaderFontId(), getEffectiveReaderLineCompression(), SETTINGS.extraParagraphSpacing, SETTINGS.paragraphAlignment, viewportWidth, - viewportHeight, getEffectiveHyphenation(), embeddedStyle, bookBionicReadingOverride, + viewportHeight, getEffectiveHyphenation(), embeddedStyle, getEffectiveBionicReading(), imageRendering)) { return; } @@ -1986,7 +1991,7 @@ void EpubReaderActivity::silentIndexNextChapterIfNeeded(const uint16_t viewportW if (!nextSection.createSectionFile(getEffectiveReaderFontId(), getEffectiveReaderLineCompression(), SETTINGS.extraParagraphSpacing, SETTINGS.paragraphAlignment, viewportWidth, viewportHeight, getEffectiveHyphenation(), embeddedStyle, - bookBionicReadingOverride, imageRendering)) { + getEffectiveBionicReading(), imageRendering)) { LOG_ERR("ERS", "Failed silent indexing for chapter: %d", nextSpineIndex); } } @@ -2610,8 +2615,8 @@ void EpubReaderActivity::openQuickOverrides() { startActivityForResult( std::make_unique( renderer, mappedInput, bookEmbeddedStyleOverride, bookImageRenderingOverride, bookFontFamilyOverride, - bookSdFontFamilyOverride, bookFontSizeOverride, static_cast(bookBionicReadingOverride ? 1 : 0), - bookParagraphAlignmentOverride, bookTextAntiAliasingOverride, bookHyphenationOverride), + bookSdFontFamilyOverride, bookFontSizeOverride, bookBionicReadingOverride, bookParagraphAlignmentOverride, + bookTextAntiAliasingOverride, bookHyphenationOverride), [this](const ActivityResult& result) { const auto& menu = std::get(result.data); applyBookReaderOverrides(menu.embeddedStyleOverride, menu.imageRenderingOverride, menu.fontFamilyOverride, @@ -2637,7 +2642,7 @@ void EpubReaderActivity::openReaderMenu() { std::make_unique( renderer, mappedInput, epub->getTitle(), currentPage, totalPages, bookProgressPercent, SETTINGS.orientation, !currentPageFootnotes.empty(), bookEmbeddedStyleOverride, bookImageRenderingOverride, bookFontFamilyOverride, - bookSdFontFamilyOverride, bookFontSizeOverride, SETTINGS.textDarkness, bookBionicReadingOverride, + bookSdFontFamilyOverride, bookFontSizeOverride, SETTINGS.textDarkness, getEffectiveBionicReading(), bookParagraphAlignmentOverride, !bookmarkStore.isEmpty(), isCurrentPageStarred), [this](const ActivityResult& result) { const auto& menu = std::get(result.data); @@ -2781,7 +2786,7 @@ void EpubReaderActivity::onButtonAction(const CrossPointSettings::BUTTON_ACTION case BA::BTN_TOGGLE_BIONIC_READING: if (epub) { applyBookReaderOverrides(bookEmbeddedStyleOverride, bookImageRenderingOverride, bookFontFamilyOverride, - bookSdFontFamilyOverride, bookFontSizeOverride, !bookBionicReadingOverride, + bookSdFontFamilyOverride, bookFontSizeOverride, !getEffectiveBionicReading(), bookParagraphAlignmentOverride); requestUpdate(); } diff --git a/src/activities/reader/EpubReaderActivity.h b/src/activities/reader/EpubReaderActivity.h index 247c59bb..01ac3aef 100644 --- a/src/activities/reader/EpubReaderActivity.h +++ b/src/activities/reader/EpubReaderActivity.h @@ -233,7 +233,7 @@ class EpubReaderActivity final : public Activity { int8_t bookFontFamilyOverride = -1; std::string bookSdFontFamilyOverride; int8_t bookFontSizeOverride = -1; - bool bookBionicReadingOverride = false; + int8_t bookBionicReadingOverride = -1; int8_t bookParagraphAlignmentOverride = -1; int8_t bookTextAntiAliasingOverride = -1; int8_t bookHyphenationOverride = -1;