mirror of
https://github.com/daveallie/crosspoint-reader.git
synced 2026-02-06 07:37:37 +03:00
Display book cover image as background in the Continue Reading card on the home screen, improving visual identification of the current book. Key changes: - Add thumbnail generation (thumb.bmp) for EPUB and XTC/XTCH files - Uses same dithering/scaling algorithms as sleep screen covers - Target size: 240x400 (half screen) for optimal Continue Reading card fit - Add JpegToBmpConverter::jpegFileToBmpStreamWithSize() for custom target sizes - Add GfxRenderer::copyStoredBwBuffer() and freeStoredBwBuffer() for framebuffer caching to maintain fast navigation performance - Add UTF-8 safe string truncation for Korean/CJK text in title/author display - Draw white boxes behind title/author text for readability over cover image - Increase HomeActivityTask stack size to 4096 for cover image rendering - Add bounds checking in XTC thumbnail generation to prevent buffer overflow |
||
|---|---|---|
| .. | ||
| 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>