From e64062c2c864c1d2a3bafbd9bb54ca152e030426 Mon Sep 17 00:00:00 2001 From: j2 Date: Wed, 14 Oct 2026 23:47:08 -0500 Subject: [PATCH] Clean up dialogue detection, add dialogue and non-dialogue text coloring settings --- README.md | 14 +++- book-processing/attribution.py | 39 ++++++++-- docs/reader-preview.gif | Bin 0 -> 183342 bytes firmware/include/Board.h | 9 ++- firmware/include/Palette.h | 21 ++++++ firmware/include/Settings.h | 3 +- firmware/src/Board.cpp | 132 ++++++++++++++++++++++++++++----- firmware/src/Settings.cpp | 13 +++- firmware/src/main.cpp | 93 ++++++++++++++++++++--- 9 files changed, 280 insertions(+), 44 deletions(-) create mode 100644 docs/reader-preview.gif diff --git a/README.md b/README.md index 5f40ec6..e68d696 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # T-Display S3 Pro RSVP Reader +![Animated preview of the RSVP reader display](docs/reader-preview.gif) + An offline RSVP reader for the LilyGO T-Display S3 Pro. It renders one word at a time on a black, landscape display and never starts Wi-Fi or Bluetooth. Detected dialogue appears grey when Colors is on; other words appear white. @@ -136,10 +138,14 @@ section. Its versioned, delta-encoded records preserve italic and bold EPUB markup—including semantic tags, CSS classes, and inline CSS—reading-timing metadata, and a word color flag. Quoted dialogue and wholly italic or uppercase punctuated clauses receive the `Other` flag; speaker attribution is not used -during conversion. With coloring enabled, the device shows those words in grey -and other words in white. The reader menu has a persisted **Colors: On/Off** -setting. The fingerprint covers the source `.txt` bytes, before the device -applies display-only punctuation normalization. During conversion, the +during conversion. Flagged dialogue defaults to gray, and other words default +to white. The **Colors** submenu stores separate +Text and Dialogue colors, selected from white, gray, and the nine hues in +`docs/history/PLAN.md`. Text color applies to non-dialogue words and the reader +header and footer; Dialogue color applies to flagged dialogue words. Its live +preview shows “text” and italic “dialogue”. The fingerprint covers the source +`.txt` bytes, before the device applies display-only punctuation normalization. +During conversion, the desktop-only English vocabulary classifier marks each unfamiliar word. It combines a dictionary with word-frequency data and recognizes normal English inflections, contractions, possessives, and hyphenated compounds. The first diff --git a/book-processing/attribution.py b/book-processing/attribution.py index 3bddd63..a9bb28e 100644 --- a/book-processing/attribution.py +++ b/book-processing/attribution.py @@ -51,7 +51,7 @@ def identify_dialogue(paragraph, word_start, italic_word_indexes, paragraph_inde def _styled_dialogue_word_indexes(paragraph, word_start, italic_word_indexes): - """Find words in wholly italic or uppercase punctuated clauses.""" + """Find italic or uppercase punctuated clauses, bridging one italic gap.""" words = list(WORD.finditer(paragraph)) clauses = {} @@ -62,9 +62,12 @@ def _styled_dialogue_word_indexes(paragraph, word_start, italic_word_indexes): clause = clauses.setdefault( clause_number, {"italic": True, "uppercase": True, "last_start": match.start(), - "first_start": match.start(), "word_indexes": []}, + "first_start": match.start(), "word_indexes": [], + "italic_flags": []}, + ) + clause["italic_flags"].append( + word_start + word_number in italic_word_indexes ) - clause["italic"] &= word_start + word_number in italic_word_indexes clause["uppercase"] &= bool(letters) and letters.isupper() clause["last_start"] = match.start() clause["word_indexes"].append(word_start + word_number) @@ -77,7 +80,16 @@ def _styled_dialogue_word_indexes(paragraph, word_start, italic_word_indexes): punctuated = CLAUSE_PUNCTUATION.search( paragraph, clause["last_start"], boundary_end ) is not None - if punctuated and (clause["italic"] or clause["uppercase"]): + italic_flags = clause["italic_flags"] + italic_clause = all(italic_flags) + if not italic_clause and italic_flags.count(False) == 1: + gap = italic_flags.index(False) + italic_clause = ( + 0 < gap < len(italic_flags) - 1 + and all(italic_flags[:gap]) + and all(italic_flags[gap + 1:]) + ) + if punctuated and (italic_clause or clause["uppercase"]): dialogue_indexes.update(clause["word_indexes"]) return dialogue_indexes @@ -100,19 +112,30 @@ def dialogue_word_indexes(text, style_records): paragraph, word_start, italic_indexes )) single_quotes = list(PAIRED_SINGLE_QUOTES.finditer(paragraph)) - continuation_quote = in_double_quote and paragraph.startswith('"') for word_number, match in enumerate(words): quoted_word = False for position in range(match.start(), match.end()): character = paragraph[position] if character == '"': quoted_word = True - if continuation_quote and position == 0: - continuation_quote = False - else: + is_opening_mark = position == match.start() + is_closing_mark = position == match.end() - 1 + if is_opening_mark and is_closing_mark: in_double_quote = not in_double_quote + elif is_opening_mark: + in_double_quote = True + elif is_closing_mark: + if in_double_quote: + in_double_quote = False + else: + dialogue_indexes.update( + word_start + leading_word + for leading_word in range(word_number + 1) + ) elif in_double_quote: quoted_word = True + if in_double_quote: + quoted_word = True if quoted_word or any( match.start() < quote.end() and match.end() > quote.start() for quote in single_quotes diff --git a/docs/reader-preview.gif b/docs/reader-preview.gif new file mode 100644 index 0000000000000000000000000000000000000000..a620ffc58a6a3119a1adcb871e7ba8f4fb9d8127 GIT binary patch literal 183342 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 z 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 literal 0 HcmV?d00001 diff --git a/firmware/include/Board.h b/firmware/include/Board.h index a1a8409..e5b51d6 100644 --- a/firmware/include/Board.h +++ b/firmware/include/Board.h @@ -12,9 +12,14 @@ class Board { uint32_t wordCount, uint8_t progressPercent); void drawWord(const String& word, uint16_t wpm, uint8_t styleFlags = 0, uint8_t wordColorFlag = 0); + void setReadingColors(uint16_t textColor, uint16_t dialogueColor); void drawChapterTitle(const String& chapter, uint16_t wpm); void drawTheEnd(uint16_t wpm); - void drawMenu(uint8_t selectedOption, bool colorsEnabled); + void drawMenu(uint8_t selectedOption); + void drawColorsMenu(uint8_t selectedOption, uint8_t textColor, + uint8_t dialogueColor); + void drawColorPicker(bool dialogueSetting, uint8_t selectedColor, + uint16_t textColor, uint16_t dialogueColor); void drawPicker(const String& title, const String& value); void drawFontStylePicker(uint8_t style, uint8_t size); void drawFontSizePicker(uint8_t style, uint8_t size); @@ -46,6 +51,8 @@ class Board { uint8_t preferredBrightness_ = 5; uint8_t fontStyle_ = 0; uint8_t fontSize_ = 20; + uint16_t textColor_ = 0xFFFF; + uint16_t dialogueColor_ = 0xB596; bool landscape_ = false; bool powerMonitorAvailable_ = false; bool statusDrawn_ = false; diff --git a/firmware/include/Palette.h b/firmware/include/Palette.h index 7b0d8a9..bf97016 100644 --- a/firmware/include/Palette.h +++ b/firmware/include/Palette.h @@ -11,6 +11,7 @@ constexpr uint16_t rgb565(uint8_t red, uint8_t green, uint8_t blue) { } constexpr uint16_t kOtherGrey = rgb565(176, 176, 176); +constexpr uint16_t kWhite = rgb565(255, 255, 255); constexpr uint16_t kHues[] = {0, 30, 60, 120, 180, 225, 270, 300, 330}; constexpr uint16_t kColors[] = { @@ -18,6 +19,26 @@ constexpr uint16_t kColors[] = { rgb565(128, 255, 128), rgb565(128, 255, 255), rgb565(128, 159, 255), rgb565(191, 128, 255), rgb565(255, 128, 255), rgb565(255, 128, 191), }; +constexpr const char* kHueNames[] = { + "Red", "Orange", "Yellow", "Green", "Cyan", "Blue", + "Violet", "Magenta", "Pink", +}; + +// The color picker includes the two existing neutral choices before the hue +// palette documented in docs/history/PLAN.md. +constexpr uint8_t kChoiceCount = 11; + +inline uint16_t colorForChoice(uint8_t choice) { + if (choice == 0) return kWhite; + if (choice == 1) return kOtherGrey; + return choice < kChoiceCount ? kColors[choice - 2] : kWhite; +} + +inline const char* nameForChoice(uint8_t choice) { + if (choice == 0) return "White"; + if (choice == 1) return "Gray"; + return choice < kChoiceCount ? kHueNames[choice - 2] : "White"; +} inline int indexForHue(uint16_t hue) { for (size_t index = 0; index < sizeof(kHues) / sizeof(kHues[0]); ++index) { diff --git a/firmware/include/Settings.h b/firmware/include/Settings.h index 6c19bd8..72ff29e 100644 --- a/firmware/include/Settings.h +++ b/firmware/include/Settings.h @@ -9,7 +9,8 @@ struct SavedState { uint8_t brightness = 5; uint8_t fontStyle = 0; uint8_t fontSize = 20; - bool colorsEnabled = true; + uint8_t textColor = 0; + uint8_t dialogueColor = 1; }; class Settings { diff --git a/firmware/src/Board.cpp b/firmware/src/Board.cpp index 1e25a36..cab1601 100644 --- a/firmware/src/Board.cpp +++ b/firmware/src/Board.cpp @@ -173,7 +173,7 @@ void Board::drawStatus(uint16_t wpm) { constexpr int16_t kBatteryTipWidth = 3; setUiFont(fontStyle_); - display_->setTextColor(TFT_WHITE); + display_->setTextColor(textColor_); display_->setTextDatum(ML_DATUM); const String wpmLabel = String(wpm) + " WPM"; display_->drawString(wpmLabel, kMargin, kStatusHeight / 2); @@ -184,11 +184,14 @@ void Board::drawStatus(uint16_t wpm) { const String label = percentage < 0 ? "--" : String(percentage) + "%"; display_->setTextDatum(MR_DATUM); display_->drawString(label, batteryX - 5, kStatusHeight / 2); - display_->drawRoundRect(batteryX, batteryY, kBatteryWidth, kBatteryHeight, 2, TFT_WHITE); - display_->fillRect(batteryX + kBatteryWidth, batteryY + 4, kBatteryTipWidth, 4, TFT_WHITE); + display_->drawRoundRect(batteryX, batteryY, kBatteryWidth, kBatteryHeight, 2, + textColor_); + display_->fillRect(batteryX + kBatteryWidth, batteryY + 4, kBatteryTipWidth, 4, + textColor_); if (percentage > 0) { const int16_t fillWidth = (kBatteryWidth - 4) * percentage / 100; - display_->fillRect(batteryX + 2, batteryY + 2, fillWidth, kBatteryHeight - 4, TFT_WHITE); + display_->fillRect(batteryX + 2, batteryY + 2, fillWidth, + kBatteryHeight - 4, textColor_); } const int16_t left = kMargin + display_->textWidth(wpmLabel) + 8; @@ -225,7 +228,7 @@ void Board::drawFooter() { display_->fillRect(0, display_->height() - kFooterHeight, display_->width(), kFooterHeight, TFT_BLACK); setUiFont(fontStyle_); - display_->setTextColor(TFT_WHITE); + display_->setTextColor(textColor_); const String details = String(wordCount_) + " words - " + String(progressPercent_) + "%"; const String separator = " - "; @@ -242,6 +245,15 @@ void Board::drawFooter() { displayedProgressPercent_ = progressPercent_; } +void Board::setReadingColors(uint16_t textColor, uint16_t dialogueColor) { + if (textColor_ == textColor && dialogueColor_ == dialogueColor) return; + textColor_ = textColor; + dialogueColor_ = dialogueColor; + statusDrawn_ = false; + footerDrawn_ = false; + displayedProgressPercent_ = 255; +} + void Board::drawWord(const String& word, uint16_t wpm, uint8_t styleFlags, uint8_t wordColorFlag) { if (display_ == nullptr) return; @@ -272,7 +284,7 @@ void Board::drawWord(const String& word, uint16_t wpm, uint8_t styleFlags, renderedSize -= config::kFontSizeStep; setReaderFont(fontStyle_, renderedSize, styleFlags); } - display_->setTextColor(wordColorFlag == 1 ? palette::kOtherGrey : TFT_WHITE); + display_->setTextColor(wordColorFlag == 1 ? dialogueColor_ : textColor_); display_->setTextDatum(MC_DATUM); const int16_t centerX = display_->width() / 2; @@ -310,7 +322,7 @@ void Board::drawChapterTitle(const String& chapter, uint16_t wpm) { void Board::drawTheEnd(uint16_t wpm) { drawWord("The End", wpm); } -void Board::drawMenu(uint8_t selectedOption, bool colorsEnabled) { +void Board::drawMenu(uint8_t selectedOption) { if (display_ == nullptr) return; if (landscape_) { @@ -323,7 +335,7 @@ void Board::drawMenu(uint8_t selectedOption, bool colorsEnabled) { displayedProgressPercent_ = 255; previousWordBounds_.valid = false; setUiFont(fontStyle_); - display_->setTextColor(TFT_WHITE); + display_->setTextColor(textColor_); display_->setTextDatum(TC_DATUM); display_->drawString("MENU", display_->width() / 2, 18); @@ -331,21 +343,22 @@ void Board::drawMenu(uint8_t selectedOption, bool colorsEnabled) { constexpr int16_t kFirstRowY = 54; constexpr int16_t kRowSpacing = 56; const char* labels[] = {"Back", "Book selection", "Chapter selection", - "Brightness", "Font", - colorsEnabled ? "Colors: On" : "Colors: Off"}; + "Brightness", "Font", "Colors"}; display_->setTextDatum(ML_DATUM); for (uint8_t index = 0; index < 6; ++index) { const int16_t y = kFirstRowY + index * kRowSpacing; if (index == selectedOption) { - display_->fillRoundRect(10, y, display_->width() - 20, kRowHeight, 5, TFT_WHITE); + display_->fillRoundRect(10, y, display_->width() - 20, kRowHeight, 5, + textColor_); display_->setTextColor(TFT_BLACK); } else { - display_->drawRoundRect(10, y, display_->width() - 20, kRowHeight, 5, TFT_WHITE); - display_->setTextColor(TFT_WHITE); + display_->drawRoundRect(10, y, display_->width() - 20, kRowHeight, 5, + textColor_); + display_->setTextColor(textColor_); } display_->drawString(labels[index], 24, y + kRowHeight / 2); } - display_->setTextColor(TFT_WHITE); + display_->setTextColor(textColor_); display_->setTextDatum(BC_DATUM); display_->drawString("PREV/NEXT choose", display_->width() / 2, display_->height() - 36); @@ -353,6 +366,85 @@ void Board::drawMenu(uint8_t selectedOption, bool colorsEnabled) { display_->height() - 8); } +void Board::drawColorsMenu(uint8_t selectedOption, uint8_t textColor, + uint8_t dialogueColor) { + if (display_ == nullptr) return; + if (landscape_) { + display_->setRotation(0); + landscape_ = false; + } + display_->fillScreen(TFT_BLACK); + statusDrawn_ = false; + footerDrawn_ = false; + previousWordBounds_.valid = false; + setUiFont(fontStyle_); + display_->setTextColor(textColor_); + display_->setTextDatum(TC_DATUM); + display_->drawString("COLORS", display_->width() / 2, 18); + + const char* labels[] = {"Text", "Dialogue", "Back"}; + const uint8_t choices[] = {textColor, dialogueColor, 0}; + constexpr int16_t kRowHeight = 48; + constexpr int16_t kFirstRowY = 64; + constexpr int16_t kRowSpacing = 58; + display_->setTextDatum(ML_DATUM); + for (uint8_t index = 0; index < 3; ++index) { + const int16_t y = kFirstRowY + index * kRowSpacing; + if (index == selectedOption) { + display_->fillRoundRect(10, y, display_->width() - 20, kRowHeight, 5, + textColor_); + display_->setTextColor(TFT_BLACK); + } else { + display_->drawRoundRect(10, y, display_->width() - 20, kRowHeight, 5, + textColor_); + display_->setTextColor(textColor_); + } + const String label = index < 2 + ? String(labels[index]) + ": " + + palette::nameForChoice(choices[index]) + : String(labels[index]); + display_->drawString(label, 24, y + kRowHeight / 2); + } + display_->setTextColor(textColor_); + display_->setTextDatum(BC_DATUM); + display_->drawString("PREV/NEXT choose", display_->width() / 2, + display_->height() - 36); + display_->drawString("BOOT select", display_->width() / 2, + display_->height() - 8); +} + +void Board::drawColorPicker(bool dialogueSetting, uint8_t selectedColor, + uint16_t textColor, uint16_t dialogueColor) { + if (display_ == nullptr) return; + setLandscape(); + display_->fillScreen(TFT_BLACK); + statusDrawn_ = false; + footerDrawn_ = false; + previousWordBounds_.valid = false; + setUiFont(fontStyle_); + display_->setTextColor(textColor_); + display_->setTextDatum(TC_DATUM); + display_->drawString(dialogueSetting ? "DIALOGUE COLOR" : "TEXT COLOR", + display_->width() / 2, 12); + display_->setTextColor(palette::colorForChoice(selectedColor)); + display_->drawString(palette::nameForChoice(selectedColor), + display_->width() / 2, 54); + + setReaderFont(fontStyle_, fontSize_, dialogueSetting ? kItalicStyle : 0); + display_->setTextDatum(MC_DATUM); + display_->setTextColor(dialogueSetting ? dialogueColor : textColor); + display_->drawString(dialogueSetting ? "dialogue" : "text", + display_->width() / 2, 118); + + setUiFont(fontStyle_); + display_->setTextColor(textColor_); + display_->setTextDatum(BC_DATUM); + display_->drawString("PREV/NEXT color", display_->width() / 2, + display_->height() - 36); + display_->drawString("BOOT save", display_->width() / 2, + display_->height() - 8); +} + void Board::drawPicker(const String& title, const String& value) { if (display_ == nullptr) return; setLandscape(); @@ -361,7 +453,7 @@ void Board::drawPicker(const String& title, const String& value) { statusDrawn_ = false; previousWordBounds_.valid = false; setUiFont(fontStyle_); - display_->setTextColor(TFT_WHITE); + display_->setTextColor(textColor_); display_->setTextDatum(TC_DATUM); display_->drawString(title, display_->width() / 2, 16); @@ -375,6 +467,7 @@ void Board::drawPicker(const String& title, const String& value) { display_->width() / 2, display_->height() / 2 - 8); setUiFont(fontStyle_); + display_->setTextColor(textColor_); display_->setTextDatum(BC_DATUM); display_->drawString("PREV/NEXT choose", display_->width() / 2, display_->height() - 36); @@ -390,18 +483,21 @@ void Board::drawFontStylePicker(uint8_t style, uint8_t size) { statusDrawn_ = false; previousWordBounds_.valid = false; setUiFont(style); - display_->setTextColor(TFT_WHITE); + display_->setTextColor(textColor_); display_->setTextDatum(TC_DATUM); display_->drawString("FONT STYLE", display_->width() / 2, 16); const char* names[] = {"Sans-serif", "Serif", "Monospace"}; setReaderFont(style, size); + display_->setTextColor(textColor_); display_->setTextDatum(MC_DATUM); display_->drawString("Sample", display_->width() / 2, display_->height() / 2 - 8); setUiFont(style); + display_->setTextColor(textColor_); display_->setTextDatum(TC_DATUM); display_->drawString(names[constrain(style, 0, 2)], display_->width() / 2, 48); + display_->setTextColor(textColor_); display_->setTextDatum(BC_DATUM); display_->drawString("PREV/NEXT choose", display_->width() / 2, display_->height() - 36); @@ -417,16 +513,18 @@ void Board::drawFontSizePicker(uint8_t style, uint8_t size) { statusDrawn_ = false; previousWordBounds_.valid = false; setUiFont(style); - display_->setTextColor(TFT_WHITE); + display_->setTextColor(textColor_); display_->setTextDatum(TC_DATUM); display_->drawString("FONT SIZE", display_->width() / 2, 16); setReaderFont(style, size); + display_->setTextColor(textColor_); display_->setTextDatum(MC_DATUM); display_->drawString("size", display_->width() / 2, display_->height() / 2 - 8); setUiFont(style); + display_->setTextColor(textColor_); display_->setTextDatum(BC_DATUM); display_->drawString("PREV/NEXT choose", display_->width() / 2, display_->height() - 36); diff --git a/firmware/src/Settings.cpp b/firmware/src/Settings.cpp index 95b8ff7..7acd2e7 100644 --- a/firmware/src/Settings.cpp +++ b/firmware/src/Settings.cpp @@ -18,7 +18,8 @@ SavedState Settings::load() const { state.brightness = preferences.getUChar("brightness", 5); state.fontStyle = preferences.getUChar("font_style", 0); state.fontSize = preferences.getUChar("font_size", 20); - state.colorsEnabled = preferences.getBool("colors", true); + state.textColor = preferences.getUChar("text_color", 0); + state.dialogueColor = preferences.getUChar("dialogue_color", 1); preferences.end(); return state; } @@ -46,9 +47,13 @@ void Settings::save(const SavedState& state) const { if (!preferences.isKey("font_size") || preferences.getUChar("font_size") != state.fontSize) { preferences.putUChar("font_size", state.fontSize); } - if (!preferences.isKey("colors") || - preferences.getBool("colors") != state.colorsEnabled) { - preferences.putBool("colors", state.colorsEnabled); + if (!preferences.isKey("text_color") || + preferences.getUChar("text_color") != state.textColor) { + preferences.putUChar("text_color", state.textColor); + } + if (!preferences.isKey("dialogue_color") || + preferences.getUChar("dialogue_color") != state.dialogueColor) { + preferences.putUChar("dialogue_color", state.dialogueColor); } preferences.end(); } diff --git a/firmware/src/main.cpp b/firmware/src/main.cpp index bce621b..dbbe2c1 100644 --- a/firmware/src/main.cpp +++ b/firmware/src/main.cpp @@ -9,6 +9,7 @@ #include "Board.h" #include "Config.h" #include "Library.h" +#include "Palette.h" #include "Reader.h" #include "Settings.h" @@ -35,6 +36,9 @@ enum class Screen { kBrightnessPicker, kFontStylePicker, kFontSizePicker, + kColorsMenu, + kTextColorPicker, + kDialogueColorPicker, }; enum class ReaderView { @@ -49,7 +53,9 @@ String pendingChapterPath; uint8_t pendingBrightness = config::kNormalBrightness; uint8_t pendingFontStyle = config::kDefaultFontStyle; uint8_t pendingFontSize = config::kDefaultFontSize; +uint8_t pendingColor = 0; uint8_t menuSelection = 0; +uint8_t colorsMenuSelection = 0; struct Button { explicit Button(uint8_t buttonPin) : pin(buttonPin) {} @@ -97,14 +103,18 @@ void setReadingContext(uint8_t progressPercent) { void showCurrentWord() { setReadingContext(reader.progressPercent()); + board.setReadingColors(palette::colorForChoice(state.textColor), + palette::colorForChoice(state.dialogueColor)); board.drawWord(reader.currentWord(), state.wpm, reader.currentStyleFlags(), - state.colorsEnabled ? reader.currentColorFlag() : 0); + reader.currentColorFlag()); } void wakeDisplay(); void configureTouchLandscape(); void showReaderScreen() { + board.setReadingColors(palette::colorForChoice(state.textColor), + palette::colorForChoice(state.dialogueColor)); switch (readerView) { case ReaderView::kChapterTitle: setReadingContext(0); @@ -161,6 +171,19 @@ void drawPicker() { case Screen::kFontSizePicker: board.drawFontSizePicker(pendingFontStyle, pendingFontSize); break; + case Screen::kColorsMenu: + board.drawColorsMenu(colorsMenuSelection, state.textColor, state.dialogueColor); + break; + case Screen::kTextColorPicker: + case Screen::kDialogueColorPicker: + board.drawColorPicker(screen == Screen::kDialogueColorPicker, pendingColor, + palette::colorForChoice( + screen == Screen::kTextColorPicker ? pendingColor + : state.textColor), + palette::colorForChoice( + screen == Screen::kDialogueColorPicker ? pendingColor + : state.dialogueColor)); + break; default: break; } @@ -173,7 +196,22 @@ void openMenu() { menuSelection = 0; screen = Screen::kMenu; wakeDisplay(); - board.drawMenu(menuSelection, state.colorsEnabled); + board.drawMenu(menuSelection); +} + +void openColorsMenu() { + colorsMenuSelection = 0; + screen = Screen::kColorsMenu; + configureTouchLandscape(); + drawPicker(); +} + +void openColorPicker(Screen picker) { + screen = picker; + pendingColor = picker == Screen::kTextColorPicker ? state.textColor + : state.dialogueColor; + configureTouchLandscape(); + drawPicker(); } void openPicker(Screen picker) { @@ -210,6 +248,11 @@ void changePicker(int direction) { static_cast(pendingFontSize) + direction * config::kFontSizeStep, config::kMinimumFontSize, config::kMaximumFontSize); break; + case Screen::kTextColorPicker: + case Screen::kDialogueColorPicker: + pendingColor = (pendingColor + palette::kChoiceCount + direction) % + palette::kChoiceCount; + break; default: return; } @@ -217,6 +260,22 @@ void changePicker(int direction) { } void applyPicker() { + if (screen == Screen::kTextColorPicker) { + state.textColor = pendingColor; + persistState(); + screen = Screen::kColorsMenu; + colorsMenuSelection = 1; + drawPicker(); + return; + } + if (screen == Screen::kDialogueColorPicker) { + state.dialogueColor = pendingColor; + persistState(); + screen = Screen::kColorsMenu; + colorsMenuSelection = 2; + drawPicker(); + return; + } if (screen == Screen::kFontStylePicker) { screen = Screen::kFontSizePicker; drawPicker(); @@ -333,14 +392,20 @@ void confirmMenuSelection() { case 2: openPicker(Screen::kChapterPicker); break; case 3: openPicker(Screen::kBrightnessPicker); break; case 4: openPicker(Screen::kFontStylePicker); break; - case 5: - state.colorsEnabled = !state.colorsEnabled; - persistState(); - board.drawMenu(menuSelection, state.colorsEnabled); - break; + case 5: openColorsMenu(); break; } return; } + if (screen == Screen::kColorsMenu) { + if (colorsMenuSelection == 2) { + screen = Screen::kMenu; + board.drawMenu(menuSelection); + return; + } + openColorPicker(colorsMenuSelection == 0 ? Screen::kTextColorPicker + : Screen::kDialogueColorPicker); + return; + } applyPicker(); } @@ -397,7 +462,12 @@ void handleInput() { wakeDisplay(); if (screen == Screen::kMenu) { menuSelection = (menuSelection + 5) % 6; - board.drawMenu(menuSelection, state.colorsEnabled); + board.drawMenu(menuSelection); + return; + } + if (screen == Screen::kColorsMenu) { + colorsMenuSelection = (colorsMenuSelection + 2) % 3; + drawPicker(); return; } if (screen != Screen::kReader) { @@ -417,7 +487,12 @@ void handleInput() { wakeDisplay(); if (screen == Screen::kMenu) { menuSelection = (menuSelection + 1) % 6; - board.drawMenu(menuSelection, state.colorsEnabled); + board.drawMenu(menuSelection); + return; + } + if (screen == Screen::kColorsMenu) { + colorsMenuSelection = (colorsMenuSelection + 1) % 3; + drawPicker(); return; } if (screen != Screen::kReader) {