I just learned that unintialized variables in C can lead to lots of unexpected and hard-to-debug behaviour... :-/

This commit is contained in:
Fabian Schlenz 2019-06-12 06:30:26 +02:00
parent 2072877159
commit 477edd1597
2 changed files with 8 additions and 6 deletions

View File

@ -43,12 +43,12 @@ protected:
uint8_t currentFrame = 0; uint8_t currentFrame = 0;
uint8_t* animation_data; uint8_t* animation_data;
CRGB* colors; CRGB* colors;
CRGB* fgColor; CRGB* fgColor = NULL;
CRGB* bgColor = new CRGB(0x000000); CRGB* bgColor = new CRGB(0x000000);
int8_t xOffset = 0; int8_t xOffset = 0;
int8_t yOffset = 0; int8_t yOffset = 0;
uint8_t startFrame; uint8_t startFrame = 0;
uint8_t endFrame; uint8_t endFrame = 0;
virtual CRGB* getColor(uint8_t color_index); virtual CRGB* getColor(uint8_t color_index);
void drawFrame(Window* w, uint8_t frame_index); void drawFrame(Window* w, uint8_t frame_index);

View File

@ -139,7 +139,9 @@ bool Animation::advance() {
} }
void Animation::drawPixel(Window* win, int index, CRGB* color) { void Animation::drawPixel(Window* win, int index, CRGB* color) {
win->setPixel(this->xOffset + (index % this->data->w), this->yOffset + (index / this->data->h), color); uint8_t x = this->xOffset + (index % this->data->w);
uint8_t y = this->yOffset + (index / this->data->h);
win->setPixel(x, y, color);
} }
uint16_t Animation::getFrameDelay(int frame) { uint16_t Animation::getFrameDelay(int frame) {
@ -149,6 +151,6 @@ uint16_t Animation::getFrameDelay(int frame) {
CRGB* Animation::getColor(uint8_t index) { CRGB* Animation::getColor(uint8_t index) {
if (index==1) return this->bgColor; if (index==1) return this->bgColor;
else if (this->fgColor) return this->fgColor; else if (this->fgColor != NULL) return this->fgColor;
else return &this->colors[index - 2]; else return &(this->colors[index - 2]);
} }