mirror of
https://github.com/daveallie/crosspoint-reader.git
synced 2026-02-04 14:47:37 +03:00
## Summary * **What is the goal of this PR?** (e.g., Fixes a bug in the user authentication module, Display the book cover image in the **"Continue Reading"** card on the home screen, with fast navigation using framebuffer caching. * **What changes are included?** - Display book cover image in the "Continue Reading" card on home screen - Load cover from cached BMP (same as sleep screen cover) - Add framebuffer store/restore functions (`copyStoredBwBuffer`, `freeStoredBwBuffer`) for fast navigation after initial render - Fix `drawBitmap` scaling bug: apply scale to offset only, not to base coordinates - Add white text boxes behind title/author/continue reading label for readability on cover - Support both EPUB and XTC file cover images - Increase HomeActivity task stack size from 2048 to 4096 for cover image rendering ## Additional Context * Add any other information that might be helpful for the reviewer (e.g., performance implications, potential risks, specific areas to focus on). - Performance: First render loads cover from SD card (~800ms), subsequent navigation uses cached framebuffer (~instant) - Memory: Framebuffer cache uses ~48KB (6 chunks × 8KB) while on home screen, freed on exit - Fallback: If cover image is not available, falls back to standard text-only display - The `drawBitmap` fix corrects a bug where screenY = (y + offset) scale was incorrectly scaling the base coordinates. Now correctly uses screenY = y + (offset scale) |
||
|---|---|---|
| .. | ||
| Xtc | ||
| README | ||
| Xtc.cpp | ||
| Xtc.h | ||
# XTC/XTCH Library XTC ebook format support for CrossPoint Reader. ## Supported Formats | Format | Extension | Description | |--------|-----------|----------------------------------------------| | XTC | `.xtc` | Container with XTG pages (1-bit monochrome) | | XTCH | `.xtch` | Container with XTH pages (2-bit grayscale) | ## Format Overview XTC/XTCH are container formats designed for ESP32 e-paper displays. They store pre-rendered bitmap pages optimized for the XTeink X4 e-reader (480x800 resolution). ### Container Structure (XTC/XTCH) - 56-byte header with metadata offsets - Optional metadata (title, author, etc.) - Page index table (16 bytes per page) - Page data (XTG or XTH format) ### Page Formats #### XTG (1-bit monochrome) - Row-major storage, 8 pixels per byte - MSB first (bit 7 = leftmost pixel) - 0 = Black, 1 = White #### XTH (2-bit grayscale) - Two bit planes stored sequentially - Column-major order (right to left) - 8 vertical pixels per byte - Grayscale: 0=White, 1=Dark Grey, 2=Light Grey, 3=Black ## Reference Original format info: <https://gist.github.com/CrazyCoder/b125f26d6987c0620058249f59f1327d>