+#ifndef FASTLED_ANIMATION_H
+#define FASTLED_ANIMATION_H
+
+#include <Arduino.h>
+#include <FastLED.h>
+
+class Animation {
+private:
+ uint8_t ledCount; // Number of LEDs in the strip (max 254)
+ uint16_t frameCount; // Number of frames in this animation (max 65535)
+ prog_uint8_t* frameData; // Pointer to the begining of the frame data
+
+ uint16_t frameIndex; // Current animation frame
+ prog_uint8_t* currentFrameData; // Pointer to the current position in the frame data
+
+ uint8_t colorTableEntries; // Number of entries in the color table, minus 1 (max 255)
+ struct CRGB* colorTable; // Pointer to color table, if used by the encoder
+
+ void drawIndexed_RLE(struct CRGB strip[]);
+
+public:
+ // Initialize the animation with no data. This is intended for the case
+ // where the animation will be re-initialized from a memory structure in ROM
+ // after the sketch starts.
+ Animation();
+
+ // Initialize the animation
+ // @param frameCount Number of frames in this animation
+ // @param frameData Pointer to the frame data. Format of this data is indexed RLE
+ // @param ledCount Number of LEDs in the strip
+ Animation(uint16_t frameCount,
+ const prog_uint8_t* frameData,
+ const uint8_t ledCount);
+
+ // Re-initialize the animation with new information
+ // @param frameCount Number of frames in this animation
+ // @param frameData Pointer to the frame data. Format of this data is indexed RLE
+ // @param ledCount Number of LEDs in the strip
+ void init(uint16_t frameCount,
+ const prog_uint8_t* frameData,
+ const uint8_t ledCount);
+
+ // Reset the animation, causing it to start over from frame 0.
+ void reset();
+
+ // Draw the next frame of the animation
+ // @param strip[] LED strip to draw to.
+ void draw(struct CRGB strip[]);
+};
+
+#endif // FASTLED_ANIMATION_H