diff --git a/lib/GfxRenderer/GfxRenderer.cpp b/lib/GfxRenderer/GfxRenderer.cpp index 707fcbd..c6a7cc3 100644 --- a/lib/GfxRenderer/GfxRenderer.cpp +++ b/lib/GfxRenderer/GfxRenderer.cpp @@ -162,8 +162,14 @@ int GfxRenderer::getLineHeight(const int fontId) const { return fontMap.at(fontId).getData(REGULAR)->advanceY; } +uint8_t *GfxRenderer::getFrameBuffer() const { + return einkDisplay.getFrameBuffer(); +} + void GfxRenderer::swapBuffers() const { einkDisplay.swapBuffers(); } +void GfxRenderer::grayscaleRevert() const { einkDisplay.grayscaleRevert(); } + void GfxRenderer::copyGrayscaleLsbBuffers() const { einkDisplay.copyGrayscaleLsbBuffers(einkDisplay.getFrameBuffer()); } void GfxRenderer::copyGrayscaleMsbBuffers() const { einkDisplay.copyGrayscaleMsbBuffers(einkDisplay.getFrameBuffer()); } diff --git a/lib/GfxRenderer/GfxRenderer.h b/lib/GfxRenderer/GfxRenderer.h index 7482cb9..d7b5925 100644 --- a/lib/GfxRenderer/GfxRenderer.h +++ b/lib/GfxRenderer/GfxRenderer.h @@ -46,7 +46,9 @@ class GfxRenderer { int getLineHeight(int fontId) const; // Low level functions + uint8_t* getFrameBuffer() const; void swapBuffers() const; + void grayscaleRevert() const; void copyGrayscaleLsbBuffers() const; void copyGrayscaleMsbBuffers() const; void displayGrayBuffer() const; diff --git a/open-x4-sdk b/open-x4-sdk index a126d4b..7e0dce9 160000 --- a/open-x4-sdk +++ b/open-x4-sdk @@ -1 +1 @@ -Subproject commit a126d4b0bf66cd2895d11748774f7ec2c366cc4c +Subproject commit 7e0dce916706da7d80ec225fade191aea6b87fb6 diff --git a/src/screens/EpubReaderScreen.cpp b/src/screens/EpubReaderScreen.cpp index e0a93d7..373628a 100644 --- a/src/screens/EpubReaderScreen.cpp +++ b/src/screens/EpubReaderScreen.cpp @@ -162,7 +162,10 @@ void EpubReaderScreen::renderScreen() { constexpr int y = 50; const int w = textWidth + margin * 2; const int h = renderer.getLineHeight(READER_FONT_ID) + margin * 2; + renderer.grayscaleRevert(); + uint8_t *fb1 = renderer.getFrameBuffer(); renderer.swapBuffers(); + memcpy(fb1, renderer.getFrameBuffer(), EInkDisplay::BUFFER_SIZE); renderer.fillRect(x, y, w, h, 0); renderer.drawText(READER_FONT_ID, x + margin, y + margin, "Indexing..."); renderer.drawRect(x + 5, y + 5, w - 10, h - 10);