Pre-scaling (critical fix):
- Add pre-scaling to fit display dimensions (480x800) before dithering
to prevent post-downsampling artifacts that destroy dithering patterns
- Use fixed-point (16.16) math for sub-pixel accurate scaling
- Implement area averaging for smooth downsampling
Dithering improvements:
- Add Atkinson dithering (75% error diffusion) for cleaner results
- Add Floyd-Steinberg dithering option with serpentine scanning
- Keep clustered-dot halftone and Bayer as compile-time options
Image adjustments:
- Add brightness, contrast, and gamma adjustments for better visibility
- Adjust RGB to grayscale conversion (25-50-25) to reduce blue darkness
Other changes:
- Fix MCU block indexing bug for correct picojpeg buffer access
- Pre-generate cover BMP when EPUB is loaded for faster sleep screen
## Summary
* Builds on top of
https://github.com/daveallie/crosspoint-reader/pull/16 - adresses
https://github.com/daveallie/crosspoint-reader/discussions/14
* This PR adds the ability for the user to supply a custom `sleep.bmp`
image at the root of the SD card that will be shown instead of the
default sleep screen if present.
* Supports:
* Different BPPs:
* 1bit
* 2bit
* 8bit
* 24bit
* 32bit (with alpha-channel ignored)
* Grayscale rendering
---------
Co-authored-by: Sam Davis <sam@sjd.co>