Refactor function BitStreamReader()

Changed from struct to class.

Removed explicit use of the "this" pointer for consistency with
the rest of the library.
This commit is contained in:
Scott Allen 2020-08-28 19:39:30 -04:00
parent aaf4159274
commit 1264edc748
2 changed files with 13 additions and 12 deletions

View File

@ -856,17 +856,18 @@ void Arduboy2Base::drawSlowXYBitmap
} }
} }
// Helper for drawCompressed() // Helper for drawCompressed()
struct Arduboy2Base::BitStreamReader class Arduboy2Base::BitStreamReader
{ {
private:
const uint8_t *source; const uint8_t *source;
uint16_t sourceIndex; uint16_t sourceIndex;
uint8_t bitBuffer; uint8_t bitBuffer;
uint8_t byteBuffer; uint8_t byteBuffer;
BitStreamReader(const uint8_t *source) public:
: source(source), sourceIndex(), bitBuffer(), byteBuffer() BitStreamReader(const uint8_t *bitmap)
: source(bitmap), sourceIndex(), bitBuffer(), byteBuffer()
{ {
} }
@ -875,17 +876,17 @@ struct Arduboy2Base::BitStreamReader
uint16_t result = 0; uint16_t result = 0;
for (uint16_t i = 0; i < bitCount; i++) for (uint16_t i = 0; i < bitCount; i++)
{ {
if (this->bitBuffer == 0) if (bitBuffer == 0)
{ {
this->bitBuffer = 0x1; bitBuffer = 0x1;
this->byteBuffer = pgm_read_byte(&this->source[this->sourceIndex]); byteBuffer = pgm_read_byte(&source[sourceIndex]);
++this->sourceIndex; ++sourceIndex;
} }
if ((this->byteBuffer & this->bitBuffer) != 0) if ((byteBuffer & bitBuffer) != 0)
result |= (1 << i); result |= (1 << i);
this->bitBuffer <<= 1; bitBuffer <<= 1;
} }
return result; return result;
} }
@ -894,7 +895,7 @@ struct Arduboy2Base::BitStreamReader
void Arduboy2Base::drawCompressed(int16_t sx, int16_t sy, const uint8_t *bitmap, uint8_t color) void Arduboy2Base::drawCompressed(int16_t sx, int16_t sy, const uint8_t *bitmap, uint8_t color)
{ {
// set up decompress state // set up decompress state
BitStreamReader cs = BitStreamReader(bitmap); BitStreamReader cs(bitmap);
// read header // read header
int width = (int)cs.readBits(8) + 1; int width = (int)cs.readBits(8) + 1;

View File

@ -1376,7 +1376,7 @@ class Arduboy2Base : public Arduboy2Core
uint8_t sides, int16_t delta, uint8_t color = WHITE); uint8_t sides, int16_t delta, uint8_t color = WHITE);
// helper for drawCompressed() // helper for drawCompressed()
struct BitStreamReader; class BitStreamReader;
// swap the values of two int16_t variables passed by reference // swap the values of two int16_t variables passed by reference
void swapInt16(int16_t& a, int16_t& b); void swapInt16(int16_t& a, int16_t& b);