#ifndef IMAGE_H #define IMAGE_H #include #include "flipdot.h" #define COLUMNS 75 #define ROWS 16 enum UpdateReturn { wait, finished, nochange, updating }; class Image { private: Flipdot flipdot; //buffer is 16 bit because of 16 Rows uint16_t frontBuffer[COLUMNS]; //1 is bright dot / set dot. 0 is black / cleared uint16_t backBuffer[COLUMNS]; bool flag_updating; //when true, display flip is in progress. frontBuffer does not match backBuffer uint8_t update_counter; //used for keeping track of progress for updating int countz=0; unsigned long lastUpdateMillis; //time when last dots where started flipping unsigned long updateDelay; uint8_t orderArray[COLUMNS]; void serialPrintInt(uint16_t source); public: Image(); void init(); UpdateReturn updateByColumn(bool clearFirst, bool optimizeClear, bool optimizeSet); uint8_t getW(); //returns Columns uint8_t getH(); //returns Rows void resetOrder(bool ascending); void shuffleOrder(uint8_t iterations); void setBuffer_solid(bool set); void setBufferColumn(uint8_t _colnum, uint16_t _rowdata); void setBuffer_random(uint8_t randomness); void loop_testDots(); void loop_drawClearTest(); unsigned long updateDuration; //for statistics and debugging. time it took for one update (max) }; #endif