feat: restore book cover/thumbnail prerender on first open

- Add isValidThumbnailBmp(), generateInvalidFormatCoverBmp(), and
  generateInvalidFormatThumbBmp() methods to Epub class for validating
  BMP files and generating X-pattern marker images when cover extraction
  fails (e.g., progressive JPG).
- Restore prerender block in EpubReaderActivity::onEnter() that checks
  for missing cover BMPs (fit + cropped) and thumbnail BMPs at each
  PRERENDER_THUMB_HEIGHTS size, showing a "Preparing book..." popup
  with progress. Falls back to PlaceholderCoverGenerator, then to
  invalid-format marker BMPs as last resort.

Made-with: Cursor
This commit is contained in:
cottongin
2026-03-07 21:22:19 -05:00
parent 22c189281c
commit a5ca15df4f
3 changed files with 225 additions and 0 deletions

View File

@@ -56,6 +56,9 @@ class Epub {
std::string getThumbBmpPath() const;
std::string getThumbBmpPath(int height) const;
bool generateThumbBmp(int height) const;
bool generateInvalidFormatCoverBmp(bool cropped = false) const;
bool generateInvalidFormatThumbBmp(int height) const;
static bool isValidThumbnailBmp(const std::string& bmpPath);
uint8_t* readItemContentsToBytes(const std::string& itemHref, size_t* size = nullptr,
bool trailingNullByte = false) const;
bool readItemContentsToStream(const std::string& itemHref, Print& out, size_t chunkSize) const;