From 72c2cea08934a3f894e79902303aa032d24a1d4f Mon Sep 17 00:00:00 2001 From: Martin Brook Date: Fri, 30 Jan 2026 17:48:18 +0000 Subject: [PATCH] refactor: use shared drawPixelWithRenderMode in renderFromCache Address review comment #4: - Replace hand-rolled pixel rendering logic in renderFromCache() with shared drawPixelWithRenderMode() from DitherUtils.h - This also hoists getRenderMode() out of the per-pixel call since drawPixelWithRenderMode handles it internally --- lib/Epub/Epub/blocks/ImageBlock.cpp | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/lib/Epub/Epub/blocks/ImageBlock.cpp b/lib/Epub/Epub/blocks/ImageBlock.cpp index 9c89fbb6..b420978b 100644 --- a/lib/Epub/Epub/blocks/ImageBlock.cpp +++ b/lib/Epub/Epub/blocks/ImageBlock.cpp @@ -6,6 +6,7 @@ #include #include +#include "../converters/DitherUtils.h" #include "../converters/ImageDecoderFactory.h" // Cache file format: @@ -79,20 +80,12 @@ static bool renderFromCache(GfxRenderer& renderer, const std::string& cachePath, } int destY = y + row; - GfxRenderer::RenderMode renderMode = renderer.getRenderMode(); for (int col = 0; col < cachedWidth; col++) { int byteIdx = col / 4; int bitShift = 6 - (col % 4) * 2; // MSB first within byte uint8_t pixelValue = (rowBuffer[byteIdx] >> bitShift) & 0x03; - // Draw based on render mode (same logic as GfxRenderer::drawBitmap) - if (renderMode == GfxRenderer::BW && pixelValue < 3) { - renderer.drawPixel(x + col, destY, true); - } else if (renderMode == GfxRenderer::GRAYSCALE_MSB && (pixelValue == 1 || pixelValue == 2)) { - renderer.drawPixel(x + col, destY, false); - } else if (renderMode == GfxRenderer::GRAYSCALE_LSB && pixelValue == 1) { - renderer.drawPixel(x + col, destY, false); - } + drawPixelWithRenderMode(renderer, x + col, destY, pixelValue); } }