mirror of
https://github.com/daveallie/crosspoint-reader.git
synced 2026-02-04 14:47:37 +03:00
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
This commit is contained in:
parent
ea5b2c06df
commit
72c2cea089
@ -6,6 +6,7 @@
|
||||
#include <SDCardManager.h>
|
||||
#include <Serialization.h>
|
||||
|
||||
#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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user