[nostalgia/core] Cleanup reading of SubSheet::pixels
This commit is contained in:
@@ -180,6 +180,22 @@ struct TileSheet {
|
||||
return getPixel(bpp, idx);
|
||||
}
|
||||
|
||||
constexpr auto walkPixels(int8_t bpp, auto callback) const noexcept {
|
||||
if (bpp == 4) {
|
||||
for (std::size_t i = 0; i < pixels.size(); ++i) {
|
||||
const auto colorIdx1 = pixels[i] & 0xF;
|
||||
const auto colorIdx2 = pixels[i] >> 4;
|
||||
callback(i * 2 + 0, colorIdx1);
|
||||
callback(i * 2 + 1, colorIdx2);
|
||||
}
|
||||
} else {
|
||||
for (std::size_t i = 0; i < pixels.size(); ++i) {
|
||||
const auto p = pixels[i];
|
||||
callback(i, p);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
constexpr void setPixel(int8_t bpp, uint64_t idx, uint8_t palIdx) noexcept {
|
||||
auto &pixel = this->pixels[idx / 2];
|
||||
if (bpp == 4) {
|
||||
|
||||
Reference in New Issue
Block a user