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* animation_data;
CRGB* colors;
CRGB* fgColor;
CRGB* fgColor = NULL;
CRGB* bgColor = new CRGB(0x000000);
int8_t xOffset = 0;
int8_t yOffset = 0;
uint8_t startFrame;
uint8_t endFrame;
uint8_t startFrame = 0;
uint8_t endFrame = 0;
virtual CRGB* getColor(uint8_t color_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) {
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) {
@ -149,6 +151,6 @@ uint16_t Animation::getFrameDelay(int frame) {
CRGB* Animation::getColor(uint8_t index) {
if (index==1) return this->bgColor;
else if (this->fgColor) return this->fgColor;
else return &this->colors[index - 2];
else if (this->fgColor != NULL) return this->fgColor;
else return &(this->colors[index - 2]);
}