G.U.L.L.S. rebuilt to use PlatformIO
This commit is contained in:
89
include/GIFMatrix.h
Normal file
89
include/GIFMatrix.h
Normal file
@@ -0,0 +1,89 @@
|
||||
#ifndef GIFMATRIX_H
|
||||
#define GIFMATRIX_H
|
||||
|
||||
#include "SD.h"
|
||||
#include "MatrixAnimation.h"
|
||||
|
||||
class GIFMatrix : public MatrixAnimation {
|
||||
public:
|
||||
GIFMatrix(LEDHAL2D* _matrix, char* _refName, long _updateTime, File* _dataFile) :
|
||||
MatrixAnimation(_matrix, _refName, _updateTime), dataFile(_dataFile) {
|
||||
STANDARDHEADER[0] = 0x47;
|
||||
STANDARDHEADER[1] = 0x49;
|
||||
STANDARDHEADER[2] = 0x46;
|
||||
STANDARDHEADER[3] = 0x38;
|
||||
STANDARDHEADER[4] = 0x39;
|
||||
STANDARDHEADER[5] = 0x61;
|
||||
|
||||
if(!headerOK()) {
|
||||
// I can't throw exceptions, need to do something here...
|
||||
}
|
||||
|
||||
decodeLogicalDescriptor();
|
||||
|
||||
preImageDataBytes = 6 + 7 + (globalColorTableExists ? globalColorTableSize * 3 : 0);
|
||||
|
||||
lastCode = _dataFile->read();
|
||||
}
|
||||
|
||||
void initialize() {
|
||||
// Reinitialization needs to be tested, this may not work correctly
|
||||
dataFile->seek(preImageDataBytes);
|
||||
resetTimer();
|
||||
}
|
||||
|
||||
void execute();
|
||||
bool headerOK();
|
||||
void decodeLogicalDescriptor();
|
||||
void decodeGlobalColorTable();
|
||||
void decodeGraphicControlExtension();
|
||||
void decodeApplicationExtension();
|
||||
void decodeImageDescriptor();
|
||||
void buildCodeTable();
|
||||
void drawForArray(CRGB* colorTable, uint16_t* indexes, uint16_t startingXPosition, uint16_t imageWidth);
|
||||
uint16_t readWord();
|
||||
|
||||
private:
|
||||
File*
|
||||
dataFile;
|
||||
uint16_t
|
||||
preImageDataBytes,
|
||||
currentXPosition,
|
||||
currentYPosition,
|
||||
gifCanvasWidth,
|
||||
gitCanvasHeight,
|
||||
currentImageLeft,
|
||||
currentImageTop,
|
||||
currentImageWidth,
|
||||
currentImageHeight,
|
||||
currentCCCode,
|
||||
currentEOICode;
|
||||
uint16_t**
|
||||
currentCodeTable;
|
||||
long
|
||||
delayTime;
|
||||
uint8_t
|
||||
lastCode,
|
||||
originalColorResolution,
|
||||
globalColorTableSize,
|
||||
globalColorTableBackgroundColorIndex,
|
||||
disposalMethodValue,
|
||||
userInputFlag,
|
||||
transparentColorFlag,
|
||||
transparentColorIndex,
|
||||
localColorTableSize,
|
||||
currentMinimumCodeSize;
|
||||
bool
|
||||
globalColorTableExists,
|
||||
globalColorTableSorted,
|
||||
localColorTableExists,
|
||||
interlaceFlag,
|
||||
localColorTableSorted;
|
||||
CRGB*
|
||||
globalColorTable,
|
||||
localColorTable;
|
||||
byte
|
||||
STANDARDHEADER[6];
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user